图---Prim

求最小生成树主要有两种基本的算法:

Prim算法和Kruskal算法。

Prim算法主要是着眼于顶点,而Kruskal算法主要是着眼于边。

下面介绍Prim算法的过程。

 

PRIM(G, s)
    for u in G.V
    u.key ← ∞            // u.key: 包含U的边中,最短的那条边长
    u.π ← NULL            // u.π : u的父节点
    
    //初始化起始点
    s.key ← 0
    Q ← G.V                // 将所有点插入优先队列Q中
    
    while Q ≠ 0            
        u ← getMin(Q)        //获取拥有最小key的点
        
        for v in G.Adj[u]           // 遍历所有与u毗邻的点
            if v ∈ Q && w(u, v) < v.key    //如果有更小的边出现,则刷新
                v.π ← u
                v.key ← w(u, v)

 


画图验证更容易理解~

 

posted @ 2015-12-26 21:08  xfei.zhang  阅读(126)  评论(0编辑  收藏  举报