해당 방식은 알고리즘은 트리 구조에서만 가능하다.
from collections import deque
def shortest_path(graph, start, end):
result = -1
visited = []
q = deque([start])
while q:
result += 1
size = len(q)
for _ in range(size):
node = q.popleft()
if node == end:
return result
visited.append(node)
q += graph[node] - set(visited)
if __name__ == '__main__':
graph = {
'A': set(['B', 'C']),
'B': set(['A', 'D', 'E']),
'C': set(['A', 'F']),
'D': set(['B']),
'E': set(['B', 'F']),
'F': set(['C', 'E'])}
print(shortest_path(graph, 'A', 'F'))
# 2