Mã giả
Bài học 4 trên 9 trong khóa học Thuật toán Kruskal: thuật toán trên đồ thị của Coddy.
kruskal(n, edges):
parent[i] = i for all i # each vertex its own set
total = 0
repeat until all edges considered:
pick the unused edge (u, v, w) with the smallest w
ru = find(u); rv = find(v)
if ru != rv: # no cycle
parent[ru] = rv # union
total += w
return total
find(x):
while parent[x] != x: x = parent[x]
return x- Chọn cạnh chưa dùng nhỏ nhất ở mỗi lượt (chọn giá trị nhỏ nhất) giúp bạn không cần sắp xếp riêng.
- find đi lên đến gốc; union gán một gốc cho gốc còn lại chỉ bằng một phép gán.
Tự làm thử
Bài học này không có thử thách code.
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Thuật toán Kruskal: thuật toán trên đồ thị
Tự luyện tập: Trình biên dịch C online