pub fn kruskal(g: &Graph) -> MstResultExpand description
Kruskal — qirralarni arzonidan boshlab tanlash (ochko’z algoritm).
G’oya:
- Barcha qirralarni og’irligi bo’yicha tartiblaymiz;
- Har birini navbatma-navbat olamiz: agar u sikl hosil qilmasa — MST ga qo’shamiz.
- “Sikl hosil qiladimi?” savoliga
DisjointSetdeyarli O(1) da javob beradi.
- Time: O(E log E) — asosiy vaqt tartiblashga ketadi. Space: O(V).
- Siyrak graflarda Primdan qulayroq.
Qaytadi: (umumiy_ogirlik, qirralar). Graf bog’liq bo’lmasa — None
(bu holda natija “o’rmon” bo’ladi, daraxt emas).
§Misol
use rust_algorithms::graph::{Graph, kruskal};
let mut g = Graph::new_undirected(4);
g.add_edge(0, 1, 10);
g.add_edge(0, 2, 6);
g.add_edge(0, 3, 5);
g.add_edge(1, 3, 15);
g.add_edge(2, 3, 4);
let (ogirlik, qirralar) = kruskal(&g).unwrap();
assert_eq!(ogirlik, 19); // 4 + 5 + 10
assert_eq!(qirralar.len(), 3); // V − 1