python实现BFS算法(广度优先搜索)输出最短路径
发布日期:2021-05-10 14:50:22 浏览次数:19 分类:精选文章

本文共 2407 字,大约阅读时间需要 8 分钟。

���������������������������

��������������������������������������������� using BFS algorithm

���������BFS���������������������������������������������������������������������������������������������������������������������������������������������������BFS���������������������������������������������������������������������������������������������������������������������������

������������������������������a������������������������g���������������������

���������������������

from collections import deque
# ������������������
maps = dict()
maps['a'] = ['b', 'c']
maps['b'] = ['e']
maps['c'] = ['d', 'f']
maps['d'] = ['e']
maps['f'] = ['e']
maps['e'] = ['g']
maps['g'] = []
maps['h'] = []
# ������������������
start = 'a'
finish = 'g'
# ��������������� ���������������������
my_deque = deque()
my_deque += maps[start]
# ������������������������
searched = []
# ������������������
parents = dict()
# ���������������������������������������������
parents[start] = None
# ���������������������������������������������
path = [finish]
while my_deque:
current = my_deque.popleft()
if current not in searched:
if current == finish:
# ������������������
temp = []
current_path = [current]
if parents[current] is not None:
temp.append(parents[current])
current_path.insert(0, parents[current])
while True:
if len(temp) == 0:
break
next_node = parents.get(temp[-1], None)
if next_node is None:
if temp:
temp.insert(0, start)
break
if next_node == start:
temp.insert(0, start)
break
temp.insert(0, next_node)
current_path.insert(0, next_node)
path.reverse()
print("���������������������������������������" + ' -> '.join(path))
break
else:
# ������������������������������������
my_deque += maps.get(current, [])
# ���������������
for neighbor in maps.get(current, []):
if neighbor not in parents and neighbor != current:
parents[neighbor] = current
searched.append(current)

���������������

���������������������������������������a -> b -> e -> g

上一篇:Linux上新安装MySQL修改root账号密码的方法
下一篇:selenium+python之窗口管理

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2025年04月26日 12时42分50秒