Czy są jakieś algorytmy wykrywania społeczności dla grafów dwustronnych (sieci 2-trybowe) zaimplementowane w igraph, networkX, R lub Python itp.? W szczególności, czy istnieje takie wdrożenie, w którym można by ograniczyć wykrywanie społeczności tylko w jednym z dwóch trybów?
python
graph-theory
adamo
źródło
źródło
Odpowiedzi:
Wyrażenie „wykrywanie społeczności” jest luźno zdefiniowane jako podział wierzchołków wykresu na „społeczności” tak, że każdy ma członków bardziej gęsto powiązanych ze sobą niż z członkami innych „społeczności”.
Naszym pierwszym zadaniem jest ustalenie, co to powinno znaczyć w przypadku grafu dwustronnego, który z definicji składa się z dwóch „trybów”, tak że elementy jednego trybu są powiązane tylko z elementami drugiego trybu. Można to wyrazić, przynajmniej dla prostych wykresów, jako posiadające macierz przylegania o specjalnej strukturze bloków:
Wydaje mi się, że najbardziej trafna interpretacja „ograniczenia wykrywania zbiorowości tylko w jednym z dwóch trybów” zastosowałaby wspomniane algorytmy do „rzutowanych” wykresów odpowiadających blokom , tj. Pierwszego trybu z macierzą przyległości i drugi tryb z macierzą przyległości . Zauważ, że nawet jeśli oryginalny dwuczęściowy wykres jest prosty (tak, że jest binarny), rzutowane wykresy będą na ogół wielogramograficzne. Na szczęście igraph ma dla nas metodę skonstruowania ich . B B T B T B AZA2) BBT BTB A
Mamy również tyle szczęścia, że algorytmy wykrywania społeczności igraph i powiązane zostały „zaktualizowane, aby obsługiwać ważone wykresy” (takie jak wykresy wielogramowe).
S. Fortunato (2010) bada kryteria wykrywania społeczności ( wykrywanie społeczności na wykresach ) i ich zastosowanie w sieciach dwustronnych i wieloczęściowych. Interpretacja, którą sugeruję powyżej, jest wyrażona na stronie 8:
źródło