Menu
CoddyTech

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.

quiz iconTự kiểm tra

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