2017-09-18 9 views
-1

見つける隣人 - Pythonの

次は私が緑のノードの隣人を見つけるために使用しているグラフです。 緑色のノードは、new = [12,13,14,15,16,17,18,19,20,21,22,23,24,25]と呼ばれる別のセットにあります。 最初の緑色ノード12にアクセスすると、それは.But 21が他の緑の隣人を持っているので、私は彼らが緑のノードが赤いものを満たすまで12 .Thisが繰り返されるべきノードの隣人の私のリストにあることが必要がある2人の隣人1521を持っています。最終的に、ノード12の近隣のセットは、[0,15,21,14,16,134,23,19,3]でなければなりません。誰かが私を助けてこれを見つけることができますか?あなたがすべてであなたのグラフがどのように機能するかを指定していないので、

+0

はそれが有用であると思います人々は簡単に実験することができます...(または、グラフを持っているところに到達するのにnetworkxを使って今まで使ってきたコードですが、現在はアルゴリズムの面で問題が発生しています) –

+0

しかしこれは2つの異なるタイプのノード。緑と赤。 – 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

ありがとう、ポケ!しかし、あなたは "node.directNeighborsのnのために"という意味ですか? – ccc

+1

私は、どのノードにも全ての直接の隣人のリストを返す 'directNeighbors'というプロパティがあると仮定しています。例えば、ノード「12」については、これはノード「15」および「21」である。 – poke

関連する問題