if 的理解

来源:互联网 发布:maczip解压软件下载 编辑:程序博客网 时间:2024/05/22 02:26

1. if 实现集合的划分

比如著名的 Prim 算法(最小生成树),从某一确定的点出发,每次新加入的点,都是在已访问过的结点(uU)和未访问过(vVU)的结点之间的边。这里的未被访问(VU)该如何实现呢?

可以使用集合(set)及其各种操作,也可以简单地使用 if + 状态进行判断:

mst = [None]*vnum                # mst 为 None 表示尚未被访问count = 0cands = PrioQueue([0, 0, 0])while count < vnum and not cands.is_empty():    w, u, v = cands.dequeue()    if mst[v]:        continue    mst[v] = ((u, v), w)    for vi, w in graph.out_edges(v):        if !mst[vi]:            cands.enqueue((w, v, vi))
0 0