加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python实现广度优先搜索

发布时间:2020-12-20 10:16:29 所属栏目:Python 来源:网络整理
导读:from collections import deque #解决从你的人际关系网中找到芒果销售商的问题 # 使用字典表示映射关系 graph = {} graph[ "you"] = [ "alice", "bob", "claire"] graph[ "bob"] = [ "anuj", "peggy"] graph[ "alice"] = [ "peggy"] graph[ "claire"] = [ "t
from collections import deque

#解决从你的人际关系网中找到芒果销售商的问题
#使用字典表示映射关系
graph = {}
graph["you"] = ["alice","bob","claire"]
graph["bob"] = ["anuj","peggy"]
graph["alice"] = ["peggy"]
graph["claire"] = ["thom","jonny"]
graph["anuj"] = []
graph["peggy"] = []
graph["thom"] = []
graph["jonny"] = []

#判断是否是要查找的目标
def is_target_node(name):
return name[-1] == ‘m‘

#实现广度优先搜索算法
def search(name):
search_queue = deque() #创建一个队列
search_queue += graph[name]
searched = [] #记录用于检查过的人
while search_queue: #只要队列不为空
person = search_queue.popleft() #就取出其中的第一个人
if not person in searched: #这个人没有被检查过
if is_target_node(person): #判断这个人是否是要查找的销售商
print(person + " is target node!")
return True
else:
search_queue += graph[person] #如果这个人不是,就将这个人的朋友压入队列
searched.append(person) #将这个人追加到已检查过的字典中
return False

#调用方法
search("you")

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读