(代码使用python3.6)
1.广度优先搜索算法
用途:求得通过节点最少的路径
问题:找出名字以m结尾的人,并求出you到这个人的最短路径
数据
代码实现:
from collections import deque
#无权最短路径算法:广度优先搜索算法,求得通过点最少的路径
graph={}
graph["you"]=["alice","bob","claire"]
graph["bob"]=["anuj","peggy"]
graph["alice"]=["peggy"]
graph["claire"]=["anuj","jonny"]
graph["anuj"]=["thom"]
graph["peggy"]=[]
graph["thom"]=[]
graph["jonny"]=[]
filter={}
sign=""
def test(query):
global sign
if(len(query)==0):
print("没有找到这个人")
else:
person=query.popleft()
#取出的人加入过滤器,避免重复
filter[person]=0
# 判断是否为m结尾
if(person[-1]=='m'):
print( person+": now you see me !")
sign=person
return person
else:
# 把这个人的邻居加入队列中,使用过滤器做判断,避免把拿出的人在放进去
for i in graph[person]:
if not i in filter: