思路:用字典来实现图,key值为节点,每个key对应的value值为一个队列,存储该节点的所有邻居节点。
# 广度优先搜索
from collections import deque
def research ():
# 字典模拟图结构,假设从“you”出发,朋友关系网里找卖家,没有就在朋友的朋友的关系网里找。。。
graph = dict ()
graph[ "you" ] = [ "alice" , "bob" , "claire" ]
graph[ "bob" ] = [ "anuj" , "peggy" ]
graph[ "alice" ] = [ "peggy" ]
graph[ "claire" ] = [ "thom" , "jonny" ]
graph[ "anuj" ] = []
graph[ "peggy" ] = []
graph[ "thom" ] = []
graph[ "jonny" ] = []
# 创建一个队列,将首节点的邻居加入搜索队列
que = deque()
que += graph[ "you" ]
# 用于标记是否被检查
researched = []
while que:
# 队列不为空,取出第一个人
person = que.popleft()
if person not in researched:
if person_is_seller(person):
print (person + " is a seller" )
return True
else :
# 当前搜索的人不是卖家,添加进已检查队列
researched.append(person)
que += graph[person]
return False
def person_is_seller ( name ):
# 假设名字最后一个字母为m的人就是卖家
return name[ - 1 ] == "m"
版权声明:本文为zuofanxiu原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。