【算法导论】用python实现BFS

代码如下:

color = {}
pi = {}
d = {}
G = {'S':('R','W'),
'W':('S','T', 'X'),
'R':('S','V'),
'V':('R'),
'T':('U','W', 'X'),
'X':('W','T', 'U', 'Y'),
'U':('T','X', 'Y'),
'Y':('X','V'),
}
def main():
    BFS(G, 'S')
    print(color)
    print(pi)
    print(d)
def BFS(G, s):

    global color, pi, d, Q
    for v in G:
        color[v] = 'white'
        pi[v] = 'NIL'
        d[v] = float('inf')
    color[s] = 'gray'
    pi[s] = 'NIL'
    d[s] =0
    Q = 5*['0']
    ENQUEUE(Q, s)
    while(Qhead != Qtail):
        u = DEQUEUE(Q)
        for v in G[u]:
            if color[v] == 'white':
                color[v] = 'gray'
                d[v] = d[u] + 1
                pi[v] = u
                ENQUEUE(Q, v)
        color[u] = 'black'
def ENQUEUE(Q, x):
    global Qtail
    Q[Qtail] = x
    if Qtail == len(Q) - 1:
        Qtail = 0
    else:
        Qtail = Qtail + 1
def DEQUEUE(Q):
    global Qhead
    x = Q[Qhead]
    if Qhead == len(Q) - 1:
        Qhead = 0
    else:
        Qhead = Qhead + 1
    return x

Qhead = 0

在这里插入图片描述
图示

在这里插入图片描述
算法导论(第三版)的BFS伪代码

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值