pub fn prim(g: &Graph) -> MstResultExpand description
Prim — daraxtni bitta tugundan boshlab “o’stirish”.
G’oya: MST ni bitta tugundan boshlaymiz va har qadamda daraxtni tashqi dunyoga bog’laydigan eng arzon qirrani qo’shamiz. Nomzod qirralarni min-heapda saqlaymiz.
- Time: O(E log V), Space: O(V + E).
- Zich graflarda (E ≈ V²) Kruskaldan tezroq.
§Misol
use rust_algorithms::graph::{Graph, kruskal, prim};
let mut g = Graph::new_undirected(5);
for (a, b, w) in [(0, 1, 2), (0, 3, 6), (1, 2, 3), (1, 3, 8), (1, 4, 5), (2, 4, 7), (3, 4, 9)] {
g.add_edge(a, b, w);
}
let (prim_w, _) = prim(&g).unwrap();
let (kruskal_w, _) = kruskal(&g).unwrap();
assert_eq!(prim_w, kruskal_w); // ikkalasi ham 16