prime算法

prime算法的基本思想

1.清空生成樹,任取一個頂點加入生成樹

2.在那些一個端點在生成樹裏,另一個端點不在生成樹裏的邊中,選取一條權最小的邊,將它和另一個端點加進生成樹

3.重複步驟2,直到所有的頂點都進入了生成樹爲止,此時的生成樹就是最小生成樹

int prime(int cur)
{
    int index;
    int sum = 0;
    memset(visit, false, sizeof(visit));
    visit[cur] = true;
    for(int i = 0; i < m; i ++){
        dist[i] = graph[cur][i];    
    }

    for(int i = 1; i < m; i ++){

        int mincost = INF;
        for(int j = 0; j < m; j ++){
            if(!visit[j] && dist[j] < mincost){
                mincost = dist[j];
                index = j;    
            }    
        }

        visit[index] = true;
        sum += mincost;

        for(int j = 0; j < m; j ++){
            if(!visit[j] && dist[j] > graph[index][j]){
                dist[j] = graph[index][j];
            }    
        }    
    } 
    return sum;    
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章