# 广度优先搜索 bfs
#图的查找方法,可回答两种问题1.从A出发有前往B的路径吗?2.从A前往B的最短路径是哪条?
# 寻找朋友中以m结尾的人
from collections import deque
# who is the person
def whoperson(name):
return name[-1] ='m'
# bfs
# deque是一个双向链表,提供了两端都可以操作的序列
def bfs(graph,name):
search_queue =deque()
search_queue + = grach[name] #将name的所有邻居都加入到队列中
searched =[]
while search_queue:
person = search_queue.popleft()
if not person in searched:
if whoperson(person):
print(person)
return True
else:
search_queue+=graph[person]
searched.append(person)
return False
'''
总结:
广度优先搜索:
1.定义一个deque,用来放节点的邻居
2.定义一个列表 [],用来放查看过的节点,在寻找过程中,每取出一个节点,先判断节点是否已经查找过,没有查找过的,查找后要加入到此列表中;
3.调用,图的构造是根据散列表的形式,即字典,列出每个节点的邻居
'''
广度优先搜索bfs
最新推荐文章于 2024-06-28 21:15:19 发布