prim 算法 最小生成 樹

 public  void prim(Graph1 graph1){
        int k ;
        int j;
        //初始化
        lowCost[0] = 0;
        adjVtex[0] = 0;
        //初始化 以節點 0 爲 初始 節點 初始化lowCost[]
        for(int i = 1;i<graph1.curSize;i++){
            lowCost[i] = graph1.relation[0][i];
            adjVtex[i] = 0;
        }

        for(int i = 0;i<graph1.curSize;i++){
            int min = Integer.MAX_VALUE;
             k = 0;
             j = 1;
            //遍歷 找到最小生成樹 的下一個距離最小 的節點
            while(j<graph1.curSize) {
                if(lowCost[j]!=0 && lowCost[j]<min ){

                    min = lowCost[j];
                    k = j;
                }

                 j++;
            }
            //打印最小邊
                    System.out.println("("+adjVtex[k]+","+k+")");
            //代表 k 加入 最小生成樹節點集
            lowCost[k] = 0;

            // 在新加入 節點後 更新lowCost[]
                    for( j = 1;j<graph1.curSize;j++){
                if(lowCost[j]!=0 && graph1.relation[k][j]<lowCost[j]){
                    lowCost[j] = graph1.relation[k][j];
                    adjVtex[j] = k;
                }
            }

        }
    }
發佈了101 篇原創文章 · 獲贊 11 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章