2012-03-15 27 views
4

我有这个问题,我需要它的帮助,这是我的代码:派系在python

 cliques=[clique for clique in nx.find_cliques(GC) if len(clique)>2]  

     for clique in cliques: 
     if len (clique)==3: 
     GC.remove_edge() 
     print "Clique to appear: ",clique 
     #draw the graph   
     nx.draw(GC) 
     plt.show() 

首先我搜索我的图表找到拉帮结派,我测试后,如果长度为3的集团,如果它真的我想删除一条边所以我可以消除完整图(3)。 我该怎么做?

感谢

+0

您的示例没有有效的缩进。发布Python代码时,请确保您发布有效缩进的示例。 – 2012-03-15 03:15:47

+0

所有使用'size> = 3'的派系将包含'complete_graph(3)'。你不关心剩下的事情? – Avaris 2012-03-15 03:22:46

+0

我想全部complete_graph(3) – Python 2012-03-15 03:45:49

回答

0
if len(clique)==3: 
    GC.remove_edge(*clique[0:2]) 

或(相当于)

if len(clique)==3: 
    GC.remove_edge(clique[0], clique[1]) 

但我可能失去了一些东西很重要,因为这似乎是显而易见的,我不是专家 - 我只是读networkx文档(这说一个派系是一个节点列表,并且remove_edge需要两个节点)。

+0

我试过了,但它不起作用,无论如何感谢 – Python 2012-03-15 03:43:25

+0

它怎么不起作用? – 2012-03-15 03:46:22

+0

这是我的了: 回溯(最近通话最后一个): 文件 “C:Graph1.py”,线路119, GC.remove_edge(集​​团[0],集团[1]) 文件“ C:\ Python27 \ lib \ site-packages \ networkx-1.6-py2.7.egg \ networkx \ classes \ graph.py“,第859行,在remove_edge中 raise NetworkXError(”边缘%s-%s不在图表“%(u,v)) NetworkXError:边缘2-11不在图中 – Python 2012-03-15 03:52:08

4

我认为这里最棘手的问题是处理共享边缘。每次删除边缘时,您都不想搜索派系,但您需要记住您已经移除的边缘。

看着the documentation,我们发现find_cliques函数是一个生成器。

This implementation is a generator of lists each of which contains the members of a maximal clique

这是否意味着您可以生成一个集团,删除一条边,然后再产生下一个集团,我们的发电机就会知道,我们已经删除的边缘?

用另一个问题回答这个问题:为什么不在每次分解一个派系时就从发生器中跳出?

edge_removed = True 
while edge_removed: 
    edge_removed = False 
    for clique in nx.find_cliques(GC): 
     if len (clique)>=3: 
      GC.remove_edge(clique[0], clique[1]) 
      edge_removed = True 
      break # Gotta restart the generator now... 

你要记住,你与拉帮结派做任何事情必须非常消耗资源的,因为即使只是检测图拉帮结派是NP完全的潜力。

+0

查看[源代码](http://networkx.lanl.gov/_modules/networkx/algorithms/clique。 html#find_cliques),如果我没有弄错,生成器就工作在静态值上。它不会知道你改变了图表。但'find_cliques'返回的派系可能会共享边缘。 – Avaris 2012-03-15 04:37:14

+0

+1现在看起来不错(除了小的缩进问题:))。 – Avaris 2012-03-15 04:55:01

+0

感谢这对我们非常有帮助 – Python 2012-03-15 05:11:09