我有一段代码,目的是查找节点的团,而这些节点是Django模型对象的ID:
import networkx as nx final_groups = [] graph = nx.Graph() for img_test in Same_Img_Test.objects.filter(id__in=test_ids, is_same=1): graph.add_edge(img_test.product_1.id, img_test.product_2.id) for x in nx.find_cliques(graph): final_groups.append(x) print x
我得到的结果是:
[1293856L, 909760L][1293856L, 909730L][1293856L, 909797L][1293856L, 909767L][1293856L, 909741L]
我的问题是:同一个ID(1293856L
)怎么会出现在多个团中?结果不应该是像这样的吗:
[1293856L, 909760L, 909730L, 909797L, 909767L, 909741L]
我做错了什么?
编辑:我原本寻找的是nx.connected_components(graph)
而不是nx.find_cliques(graph)
回答:
是的,同一个ID可以出现在多个团中(大小相同或不同)。
我认为你展示的只是大小为2的团,可能你期望的输出会在下面出现。
[1293856L, 909760L, 909730L, 909797L, 909767L, 909741L]
只有当这些ID中的每一对之间在给定图中都有边时,才会作为一个团出现。