def rightMostPath(graph, root, target, path = None):
if path == None:
path = []
path.append(root)
if root == target:
return path
if root not in graph.keys():
return None
for v in graph[root]:
if v not in path:
ep = rightMostPath(graph, v, target, path)
if ep:
return ep
return None
if __name__ == '__main__':
graph = {0: [1], 1: [0, 2, 3], 2: [1], 3: [1]}
R = rightMostPath(graph, 0, 3)
print(R)
この単純なグラフを描いた後、経路が[0,1,3]であることが明らかな場合、上記のコードは答えが[0,1,2,3]として返されます。私は、これが起こる原因を知りたかったのは、Pythonでグラフ構造のこのタイプのパス検索を指し示す場所を指していたからです。このpythonパス検索で正しいパスが見つかるようにするにはどうすればよいですか?
主な問題は、ソリューションパス*に**ルート**を追加することです。失敗した場合は削除しないでください。 ** path **はどこからでも渡されるので、更新しているマスターコピーです。 – Prune
...失敗したときにルートからパスを削除するか、正常に戻るまで論理パスを追加しないでください。 – Prune
私はそれを修正したと思う。あなたが**返すNone **の各スポットの直前に** path.remove(root)**行を追加してください。私は今、そのケースの予想される出力を得て、論理的な流れはこれらの老化の目にDFSのように見えます。 – Prune