**實現
var max =
1000000
;var pointset =
;var distance =[[
0,4,
7, max, max],[
4,0,
8,6, max],[
7,8,
0,5, max]
,[max,6,
5,0,
7],[max, max, max,7,
0]];
var a =
newnode
("a");
var b =
newnode
("b");
var c =
newnode
("c");
var d =
newnode
("d");
var e =
newnode
("e");
pointset.
push
(a);
pointset.
push
(b);
pointset.
push
(c);
pointset.
push
(d);
pointset.
push
(e);
function
getindex
(str)
return-1
;}//需要傳入點的集合,邊的集合,當前已經連線進入的集合
// 此方法,根據當前已經有的節點,來進行判斷,獲取到距離最短的點
function
getmindisnode
(pointset, distance, nowpointset)}}
fromnode.neighbor.
push
(mindisnode)
; mindisnode.neighbor.
push
(fromnode)
;return mindisnode;
}function
prim
(pointset, distance, start)}}
prim
(pointset, distance, pointset[2]
);console.
log(pointset)
;
**實現
var max =
1000000
;var pointset =
;var distance =[[
0,4,
7, max, max],[
4,0,
8,6, max],[
7,8,
0,5, max]
,[max,6,
5,0,
7],[max, max, max,7,
0]];
function
node
(value)
var a =
newnode
("a");
var b =
newnode
("b");
var c =
newnode
("c");
var d =
newnode
("d");
var e =
newnode
("e");
pointset.
push
(a);
pointset.
push
(b);
pointset.
push
(c);
pointset.
push
(d);
pointset.
push
(e);
function
canlink
(resultlist, tempbegin, tempend)
if(resultlist[i]
.indexof
(tempend)
>-1
)}//兩個點都是新的點(都不在任何部落裡)——可以連線,產生新的部落
// begin在a部落,end沒有部落 —— a部落擴張乙個村莊
// end在a部落,begin沒有部落 ——a部落擴張乙個村莊
// begin在a部落,end在b部落 ——將ab兩個部落合併
// begin和end在同乙個部落,——不可以連線
if(beginin !=
null
&& endin !=
null
&& beginin == endin)
return
true;}
function
link
(resultlist, tempbegin, tempend)
if(resultlist[i]
.indexof
(tempend)
>-1
)}if(beginin ==
null
&& endin ==
null
)else
if(beginin !=
null
&& endin ==
null
)else
if(beginin ==
null
&& endin !=
null
)else
if(beginin !=
null
&& endin !=
null
&& beginin != endin)
tempbegin.neighbor.
push
(tempend)
; tempend.neighbor.
push
(tempbegin);}
function
kruskal
(pointset, distance)}}
link
(resultlist, begin, end);if
(resultlist.length ==
1&& resultlist[0]
.length == pointset.length)}}
kruskal
(pointset, distance)
;console.
log(pointset)
;
最小生成樹(普利姆演算法 克魯斯卡爾演算法)
給定乙個帶權的無向連通圖,如何選取一棵生成樹,使樹上所有邊上權的總和為最小,這叫最小生成樹.求最小生成樹的演算法 1 克魯斯卡爾演算法 圖的存貯結構採用邊集陣列,且權值相等的邊在陣列中排列次序可以是任意的.該方法對於邊相對比較多的不是很實用,浪費時間.2 普里姆演算法 圖的存貯結構採用鄰接矩陣.此方...
最小生成樹(普利姆演算法 克魯斯卡爾演算法)
演算法 給定乙個帶權的無向連通圖,如何選取一棵生成樹,使樹上所有邊上權的總和為最小,這叫最小生成樹.求最小生成樹的演算法 1 克魯斯卡爾演算法 圖的存貯結構採用邊集陣列,且權值相等的邊在陣列中排列次序可以是任意的.該方法對於邊相對比較多的不是很實用,浪費時間.2 普里姆演算法 圖的存貯結構採用鄰接矩...
最小生成樹(普利姆演算法 克魯斯卡爾演算法)
給定乙個帶權的無向連通圖,如何選取一棵生成樹,使樹上所有邊上權的總和為最小,這叫最小生成樹.求最小生成樹的演算法 1 克魯斯卡爾演算法 圖的存貯結構採用邊集陣列,且權值相等的邊在陣列中排列次序可以是任意的.該方法對於邊相對比較多的不是很實用,浪費時間.2 普里姆演算法 圖的存貯結構採用鄰接矩陣.此方...