有向グラフを表す辞書があります。例えば...
myDict = {'foo': ['hello', 'stack'], 'bar' : ['over', 'flow']}
これは、'foo'ノードが'hello'と'stack'を指し、'bar'ノードが'over'と'flow'を指すことを意味します。
また、任意の 2 つのノード間の最短パスを見つけるために幅優先検索を実行するためのコードも作成しました...
from collections import deque
def breadthFirstSearch(graph, start, end):
q = deque()
path = (start, )
q.append(path)
visited = set([start])
while q:
path = q.popleft()
last_node = path[-1]
if last_node == end:
return path
for node in graph[last_node]:
if node not in visited:
visited.add(node)
q.append(path + (node,))
print 'There is no path from ' + start + ' to ' + end + '.'
return None
私の質問は次のとおりです。この幅優先検索を変更して、最大の最短パスとそのパスの開始ノードと終了ノードが得られるようにすることは可能ですか?