2010-11-18 12 views
2

コードは、有向グラフの2つのノード間のパスを決定することです。 Thisコードです:Pythonのグラフ理論エッセイのコードからの質問

def find_path(graph, start, end, path=[]): 
     path = path + [start] 
     if start == end: 
      return path 
     if not graph.has_key(start): 
      return None 
     for node in graph[start]: 
      if node not in path: 
       newpath = find_path(graph, node, end, path) 
       if newpath: return newpath 
     return None 

は、Pythonに新たなので、I 2が小さくて些細な疑問を持っています。あなたが気にしないことを願っています。

Q1。コードの2番目の最後の行にあるif newpath:は何を意味していますか?

Q2。このコードは、すべての有向グラフで可能なパスを示していますか?

ありがとうございました。

答えて

3

Q1:find_pathの呼び出しが実際に何かを返すかどうかをチェックします。真であると解釈されるものを調べるには、言語のドキュメントを参照してください。また、用語の型がブール値ではない場合は、falseを返してください。 (この場合、Noneはfalseと評価されます)。

Q2:いいえ:この関数は、最初から最後まで正確に1つのパスを与えます。

+0

ありがとうございますuser507787あなたはそれがどのような道になるのかを教えてくれますか?それが鍵の最初に出会った価値から可能な道でしょうか? – Pupil

+0

WikipediaのDepth-First-SearchとBreadth-First-Searchで読むことができます。上記のコードで実装されているアルゴリズムはDFSです。つまり、すべてのノードでエッジのトラバースを注文すると、関連するシーケンス(m0、m1、m2、...)を持つパスが見つかります開始時などには、シーケンスが辞書順に最小となるような方法で、最初の最初の行を開始します。 – user507787

+0

よろしくお願いします。ありがとう:) – Pupil