最短路徑VS最小生成樹

2021-09-24 02:47:16 字數 553 閱讀 4712

圖的最小生成樹與最短路徑沒有太大的關聯。

相同點:都使用了貪心的演算法。

區別:最小生成樹首先是樹(n個定點的圖只有n-1條邊),其次保證任意兩個頂點之間可達,最後保證樹的邊權值和最小。

注意:但是不能保證任意兩點之間是最短路徑。

1,prime演算法就是從0條邊不斷生成n條邊的過程,

先隨機選一點(訪問為置1)作為開始,第一步找出與此點距離最小的邊(注意:此邊一定是在最終的生成樹裡面,此邊不一定是圖中 的最小邊);

此時生成樹中有一條邊,兩個頂點(其中乙個以訪問過);

找與新節點相連的最小的邊;

dis[i]為圖中目前找到的最小邊並且是與i結點相連的;

共n 個定點,最小生成樹需要(n-1)條邊,每次只能找出一條邊,需(n-1)次。

為什麼要跟新dis?因為選擇生成樹的邊時是根據dis來選的而且要選最小的,所以必須保證

dis[i]的最小性

為什麼在此處跟新dis?因為在此之前所有的邊已確定是生成樹中的邊,所以只需保證與當前唯一需要找邊的結點的dis最小即可。

待續…最小生成樹vs最短路徑演算法大集合

最短路徑 最小生成樹

題目描述 n個城市,標號從0到n 1,m條道路,第k條道路 k從0開始 的長度為2 k,求編號為0的城市到其他城市的最短距離 輸入描述 第一行兩個正整數n 2 n 100 m m 500 表示有n個城市,m條道路 接下來m行兩個整數,表示相連的兩個城市的編號 輸出描述 n 1行,表示0號城市到其他城...

最短路徑 最小生成樹

今天覆習的時候,剛好複習的這一塊,所以就簡單做乙個備忘,寫的潦草還望大家不要介意呀 1 dijistra演算法 思路 根據點集合將其分為兩個集合,一種是已經訪問過的點s集合 代表從源點到該集合中的點的距離最小 另一種是未訪問過的u集合,然後每次從u集合中選擇節點,使得源點到改點的距離最小,並新增進s...

最短路徑,最短路徑樹和最小生成樹

首先介紹這三個概念,很多人都聽過最短路徑了,但是最短路徑樹卻很少聽過,關於最短路徑樹的介紹也不太多。而最短路徑樹和最小生成樹更是完全不同的兩個概念。最短路徑就是從乙個指定的頂點出發,計算從該頂點出發到其他所有頂點的最短路徑。通常用dijkstra演算法,floyd演算法求解。最短路徑樹spt sho...