演算法基礎 第5版 第四章 最小生成樹Prim方法的Ruby實現
演算法基礎 第5版
第四章 最小生成樹Prim方法
def prim(array_w)
array_f = []
nearest = []
distance = []
n = array_w.length
(0..n - 1).each do |i|
nearest[i] = 1
distance[i] = array_w[0][i]
end
(n - 1).times do
min = Float::INFINITY
vnear = nil
(1..n - 1).each do |i|
if distance[i] > 0 && distance[i] < min
min = distance[i]
vnear = i
end
end
e = "v#{nearest[vnear]} -> v#{vnear + 1}"
array_f << e
distance[vnear] = -1
(1..n - 1).each do |i|
if distance[i] > array_w[i][vnear]
distance[i] = array_w[i][vnear]
nearest[i] = vnear + 1
end
end
end
array_f
end
infinite = Float::INFINITY
adjacency_matrix = [[0, 1, 3, infinite, infinite], [1, 0, 3, 6, infinite], [3, 3, 0, 4, 2], [infinite, 6, 4, 0, 5], [infinite, infinite, 2, 5, 0]] # 連通加權無向圖的鄰接矩陣
p prim(adjacency_matrix)
同時我也在使用Ruby完成書中的演算法樣例,期待大家多多關注,多挑毛病。
相關文章
- 最小生成樹__Prim演算法演算法
- 最小生成樹之 Prim 演算法演算法
- 最小生成樹的性質與prim演算法(C++實現)演算法C++
- 最小生成樹prim普里姆演算法演算法
- 最小生成樹——Prim演算法和Kruscal演算法演算法
- 最小生成樹-Prim演算法和Kruskal演算法演算法
- 最小生成樹:Kruskal演算法和Prim演算法演算法
- prim 樸素 最小生成樹
- Prim 最小生成樹 圖解圖解
- 最小生成樹,Prim演算法與Kruskal演算法,408方向,思路與實現分析演算法
- 【JAVA演算法】圖論演算法 --求最小生成樹Prim演算法Java演算法圖論
- 圖論之帶權圖「最小生成樹之Prim」圖論
- 圖論之帶權圖「最小生成樹prim的優化」圖論優化
- 如何在 Java 中實現最小生成樹演算法Java演算法
- 最小生成樹的演算法演算法
- 圖論之帶權圖「最小生成樹prim的最佳化」圖論
- 資料結構------最短路徑Dijkstra和最小生成樹Prim資料結構
- 最小生成樹__Kurskal演算法演算法
- 最小生成樹---普里姆演算法(Prim演算法)和克魯斯卡爾演算法(Kruskal演算法)演算法
- 最小生成樹(MinSpanTree)的Kruskal演算法演算法
- 演算法基礎 第5版 第三章 旅行推銷員問題的Ruby實現演算法
- 【演算法學習】最小生成樹演算法
- 演算法-圖論-最小生成樹演算法圖論
- 圖論中的最小生成樹演算法圖論演算法
- C++實現Prim演算法C++演算法
- 最小生成樹
- 淺談三種求最小生成樹的方法
- 圖的最小生成樹
- Boruvka求最小生成樹(菠蘿演算法)演算法
- 資料結構筆記(一)——C語言實現鄰接矩陣儲存的無向圖,判斷是否為連通圖,並且實現最小生成樹Prim演算法資料結構筆記C語言矩陣演算法
- 最小度限制生成樹
- 【模板】最小生成樹
- 前端必會演算法 - 最小生成樹問題前端演算法
- 【圖論】最小生成樹圖論
- 【模板】最小生成樹-kruskal
- 最小生成樹專項
- 圖論 最小生成樹圖論
- 演算法 最小高度樹演算法