Lesson 35 — Cây khung nhỏ nhất (MST): Kruskal & Prim
Ba module tương tác cho Minimum Spanning Tree:
Kruskal (sort cạnh + Union-Find từ chối chu trình),
Prim (grow cây từ một đỉnh bằng min-heap),
và so sánh song song — cùng đồ thị, hai thuật toán, cùng MST weight.
1. Kruskal — sort cạnh + Union-Find O(E log E)
Cạnh được sort tăng dần. Mỗi bước lấy cạnh nhẹ nhất còn lại: nếu hai đầu khác thành phần → thêm vào MST + union; nếu cùng thành phần → bỏ (tạo chu trình).
chưa xét
đang xét
trong MST
bị từ chối (chu trình)
Cạnh đã sort (tăng dần):
Thành phần (Union-Find):
Bấm "Bước tiếp" để bắt đầu.
Tổng trọng số MST: 0
2. Prim — grow cây từ một đỉnh + min-heap O(E log V)
Bắt đầu từ đỉnh 0. Heap chứa các cạnh biên (nối cây ↔ đỉnh ngoài). Mỗi bước pop cạnh nhẹ nhất: nếu đỉnh đích đã trong cây → bỏ (lỗi thời); nếu ngoài → thêm đỉnh + cạnh vào cây, push cạnh biên mới.
đỉnh ngoài
đỉnh trong cây
cạnh cây
cạnh đang xét
Min-heap (cạnh biên, sắp theo trọng số):
Bấm "Bước tiếp" để bắt đầu.
Tổng trọng số MST: 0
3. Kruskal vs Prim — cùng đồ thị, cùng weight so sánh
Chạy cả hai trên cùng đồ thị. Thứ tự thêm cạnh có thể khác, nhưng tổng trọng số MST luôn bằng nhau (MST weight là duy nhất).
Kruskal
Thứ tự thêm: —
Weight: —
Prim (từ đỉnh 0)
Thứ tự thêm: —
Weight: —
Bấm "Chạy cả hai" để so sánh.