JS實現最小生成樹(普里姆演算法)

2021-10-11 21:32:18 字數 1180 閱讀 2017

圖中有五個節點abcde,該演算法實現在這張圖中找到最短的路徑將abcde串聯在一起。

核心就是先拿到圖中的乙個點,作為乙個子圖,然後判斷它的鄰居中離誰最近,就前往它的鄰居,並把最近的點加入子圖中,然後再判斷剩餘點離子圖最近的點。

例如從a開始,它有bcd三個鄰居,到d的距離最近,然後到達d,此時子圖為[a,d] 再然後尋找到達[a,d]最近的點為b,如此遞迴。最終結果為[a,d,b,e,c]。

**如下:

function node(value) 

/* 最小生成樹

*/function prim(nodes,sides)

var hords = [nodes[0]];

while (hords.length < nodes.length)

/*新增乙個點到部落

*/function _addnodetohard()

/**選乙個距離當前部落最近的點

返回*/

function _chooosenear()

for (let index = 0; index < nodes.length; index++)

var temp = _getmindistohard(n);

if(temp.dis < res.dis)

//得到dis距離 target點

}return res;}/*

* */

function _getmindistohard(node) ;

for (let index = 0; index < hords.length; index++) {

var target = hords[index];//拿到當前點

//計算node到target的距離

var row = nodes.indexof(node);

var col = nodes.indexof(target);

var dis = sides[row][col];

if(dis執行截圖:

最小生成樹(普里姆演算法)

關於什麼是prim 普里姆演算法 在實際生活中,我們常常碰到類似這種一類問題 如果要在n個城市之間建立通訊聯絡網,則連通n個城市僅僅須要n 1條線路。這時。我們須要考慮這樣乙個問題。怎樣在最節省經費前提 下建立這個通訊網.換句話說,我們須要在這n個城市中找出乙個包括全部城市的連通子圖,使得 其全部邊...

最小生成樹 普里姆演算法

普利姆演算法 最小生成樹 把所有頂點分為 2 個集合 乙個表示已經選中的頂點集合 另乙個表示未選中的頂點集合 例如 a,b,c,d,e 五個頂點 1.任意選擇乙個頂點 放在 已經選中的頂點集合中 假如 選a 2.將a 與未選中頂點集合中 選擇 一頂點 條件 權值最小的乙個頂點 如何權值相同 則任意選...

最小生成樹 普里姆演算法

當我們要求解n個連線城市之間的路線問題,就需要我們進行乙個計算。而在連通網上面,我們稱這類問題為最小代價生成樹 最小生成樹 問題。今天我們主要討論的是用普里姆演算法實現最小生成樹。如圖所示,a圖是乙個有權值的連通圖。要對其進行最小生成樹求解,假設初始點為v1,尋找與1有關係而且權值最小的頂點 圖源嚴...