演算法分析與設計 作業1

2021-10-03 09:44:50 字數 829 閱讀 8816

問題:舉乙個例項,畫出採用prim演算法構造最小生成樹的過程

1、首先選定頂點1加入最小生成樹集合

2、以頂點1作為最小生成樹集合,尋找到其餘頂點構成的未選集合中權值最小的一條邊,此處尋找到頂點2,並將頂點2加入集合。

3、以頂點2、3作為最小生成樹集合,尋找至其餘頂點構成集合權值最小的邊,此處找到頂點6

……6、以此類推,加入最後乙個頂點4,最小生成樹集合包含了所有頂點,找到了該演算法下的一種最小生成樹(最小生成樹不唯一

void

prim()

}//尋找頂點1至其餘未選頂點集合權值最小的邊,頂點值返回到p

vis[p]=1

; dis[p]

=111

; c++

;//標記已加入生成樹集合的頂點個數

printf

("%d "

, p)

;//輸出找到的頂點p

while

(c < n)

}//尋找可通路頂點集合中的最小值,找到下乙個生成樹頂點

for(

int j =

2; j <= n; j++)}

vis[p]=1

;//標記訪問

dis[p]

=111

;//對應p頂點在可通路集合中的值放大,不參與篩選計算

c++;printf

("%d "

, p);}

}

演算法設計與分析作業(1)

1.dijkstra求單源最短路徑 先進行存圖操作,將帶權有向圖用鄰接矩陣來表示 for int i 0 i u v dist map u v dist 用dis陣列來儲存0點到其他每乙個點的最短距離,初始時dis i map 0 i 接下來進行鬆弛操作,找出最短距離 首先0點為q集合中的點,0 1...

演算法設計與分析 作業1

1 舉乙個例項,畫出採用prim演算法構成最小生成樹的過程 2 舉乙個例項,畫出採用kruskal演算法構成最小生成樹的過程 1 prim演算法 隨意選取起點,在前一步的基礎上尋找最小權值,直到連通n個頂點。2 kruskal演算法 把所有的邊按照權值先從小到大排列,接著按照順序選取每條邊,如果這條...

演算法設計與分析 1

實驗題目 生成兩個隨機的圖,乙個有向圖乙個無向圖。有向圖兩千條邊左右,無向圖一千條邊左右,邊的數量是大概的。100個頂點。要求能算出每個頂點的度。要求每次圖是隨機生成的,並且有良好的結構。今後的實驗都基於這個圖結構。任意語言和環境。建議鍊錶描述。然後基於這個圖實現乙個廣度優先搜尋。參考文獻 c 中的...