ต้นไม้ที่มีสเปนน์ต่ำสุด (MST) เชื่อมต่อจุดยอดทั้งหมดของกราฟถ่วงน้ำหนักที่เชื่อมต่อด้วย น้ำหนักขอบรวมต่ำสุด และไม่มีวัฏจักร Kruskal และ Prim เป็นสองอัลกอริทึม greedy คลาสสิก
Kruskal (จัดเรียงขอบ, union-find)
จัดเรียงขอบทั้งหมดตามน้ำหนัก; เพิ่มขอบที่ถูกที่สุดที่ไม่สร้างวัฏจักร
python
():
parent = ((n))
():
parent[x] != x:
parent[x] = parent[parent[x]]
x = parent[x]
x
mst, total = [],
w, u, v (edges):
ru, rv = find(u), find(v)
ru != rv:
parent[ru] = rv
mst.append((u, v, w)); total += w
mst, total
