图,最短路径算法(广度优先搜索算法,狄克斯特拉算法)

(代码使用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:
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值