栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

BFS应用:图的遍历

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

BFS应用:图的遍历

#创建图,用字典,用list是不是也行?不行
graph={}
graph['you']=['alice','bob','claire']
graph['bob']=['anju','peggy']
graph['alice']=['peggy']
graph['claire']=['thon','jonny']
graph['anju']=[]
graph['peggy']=[]
graph['thon']=[]
graph['jonny']=[]
#BFS:while队不空,出队,如果队首是要找的名字,return,否则,结点val(邻居)入队,先试试用列表吧
def isMangoSaler(node_name,name):
    if node_name==name:
        return True
    else:
        return False
def BFS(start_node):
    list_BFS=[start_node]
    while list_BFS!=[]:
        name=list_BFS.pop(0)
        if isMangoSaler(name,'thon'):
            return True
        else:
            for i in graph[name]:
                list_BFS.append(i)
    return False
print BFS('you')

《算法图解》P85,这里用list当做deque,然后用pop(0)和append出队入队,一样能用。然后加上去重。

graph['you']=['alice','bob','claire']
graph['bob']=['anju','peggy']
graph['alice']=['peggy']
graph['claire']=['thon','jonny']
graph['anju']=[]
graph['peggy']=[]
graph['thon']=[]
graph['jonny']=['you']
#BFS:while队不空,出队,如果队首是要找的名字,return,否则,结点val(邻居)入队,先试试用列表吧,
# 标记已经遍历过的结构,可以用,一个list去记录。也可以
def isMangoSaler(node_name,name):
    if node_name==name:
        return True
    else:
        return False
def BFS(start_node):
    list_visit=[]
    list_BFS=[start_node]
    while list_BFS!=[]:
        name=list_BFS.pop(0)
        if name in list_visit:
            pass
        else:
            list_visit.append(name)
            if isMangoSaler(name,'thon'):
                return True
            else:
                for i in graph[name]:
                    list_BFS.append(i)
    return False
print BFS('you')

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/302341.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号