2017-09-18 147 views
-1

找到一个节点的邻居的邻居 - Python的

下面是我用找到绿色节点的邻居的图表。 绿色节点位于名为new = [12,13,14,15,16,17,18,19,20,21,22,23,24,25]的不同组中。 当我访问第一个绿色节点12;它有两个邻居1521。但21有另一个绿色的邻居,因此我需要他们在我的节点12的邻居列表中。这应该重复,直到绿色节点遇到红色的。因此最终,节点12的邻居组应该是[0,15,21,14,16,134,23,19,3]。有人能帮我找到这个吗?

+0

如果你提供的边缘元组或相似的,而不是照片,这样的列表,这将会是有益的人们可以轻松地进行试验,如果他们选择...(或者你迄今为止使用的代码使用networkx来达到你有一个图的点,但现在遇到算法方面的困难) –

+0

但是这是两种不同类型的节点;绿色和红色。 – ccc

+0

正确...所以你得到的代码能够适当地重现数据,所以有人可以拿起它来解决你所遇到的问题/你在这个方面采取的方法.. –

回答

1

伪代码,因为你根本不指定图形是如何工作的:

def findNeighbors (node, greens, visited = None): 
    if visited is None: 
     visited = set() 

    for n in node.directNeighbors: 
     # visit node if it’s new 
     if n not in visited: 
      visited.add(n) 

      # go recursively if the new node is green 
      if n in greens: 
       findNeighbors(n, greens, visited) 

    return visited 

greenNodes = set(new) 
twelve = findNodeByValue(12) 
result = findNeighbors(twelve, greenNodes) 
+0

谢谢,打!但是,在函数中,“for node.directNeighbors:”中的n是什么意思? – ccc

+1

我假设任何节点都有一个属性'directNeighbors',它返回所有直接邻居列表。例如,对于节点'12',这将是节点'15'和'21'。 – poke