2017-09-18 222 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