Как я могу вычислить количество внутренних ребер сообщества? - PullRequest
0 голосов
/ 23 сентября 2019

Как я могу вычислить the number of internal edges of a community, я был объявлен программой Python, чтобы идентифицировать сообщество одно значение и два значения с итерацией, как это one = 1,2,3,4,8 и two = 5,6,7

Список соседей:

4 = [2,3]
6 = [7]
3 = [2, 4, 1, 8]
7 = [5, 6]
8 = [3]
1 = [3]
5 = [7]
2 = [3, 4]

Программа:

pembangkitan : [4, 6, 3, 7, 8, 1, 5, 2]

def neighbors():
        nodes = []
        nb = []

        for i,j in g.edges(pembangkitan):
            nodes.append(i)

        for i in list(dict.fromkeys(nodes)):
            nb.append(i)
            for n in list(g.neighbors(i)):
                if n not in nb:
                    print(i,n)

neighbors()

Программа вывода:

4 2
4 3
6 7
3 2
3 1
3 8
7 5

графики

1 Ответ

0 голосов
/ 27 сентября 2019

Вы можете просто подсчитать ребра в подграфе, вызванные узлами в сообществе:

import networkx as nx

g = nx.Graph()
g.add_edges_from([(1,3), (2,3), (2,4), (3,4), (3,8), (5,7), (6,7)])

communities = [[1,2,3,4,8], [5,6,7]]

for clist in communities:
    community_graph = g.subgraph(clist)
    print(community_graph.number_of_edges(), list(community_graph.edges()))

дает вывод:

5 [(1, 3), (3, 2), (3, 4), (3, 8), (2, 4)]
2 [(5, 7), (6, 7)]
...