对象出现在多个图组中

时间:2018-12-17 14:17:50

标签: django graph artificial-intelligence networkx graph-theory

我有一段代码应该查找节点组,而节点是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:同一ID(1293856L)在多个集团中如何出现? 结果不应该是这样的:

[1293856L, 909760L, 909730L, 909797L, 909767L, 909741L]

我在做什么错了?

编辑: 我要找的是nx.connected_components(graph)而不是nx.find_cliques(graph)

1 个答案:

答案 0 :(得分:0)

是的,相同的ID可以存在于多个集团中(相同大小或不同大小)。

我认为您只显示了大小为2的集团,可能是您期望的输出在下面。

[1293856L, 909760L, 909730L, 909797L, 909767L, 909741L]仅在给定图中的每对ID在它们之间有边时才作为集团之一出现。