Skip to main content

kruskal

Function kruskal 

Source
pub fn kruskal(g: &Graph) -> MstResult
Expand description

Kruskal — qirralarni arzonidan boshlab tanlash (ochko’z algoritm).

G’oya:

  1. Barcha qirralarni og’irligi bo’yicha tartiblaymiz;
  2. Har birini navbatma-navbat olamiz: agar u sikl hosil qilmasa — MST ga qo’shamiz.
  3. “Sikl hosil qiladimi?” savoliga DisjointSet deyarli 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