Giải thuật Prim (tìm cây khung cực tiểu)
Dữ liệu:
Ý tưởng
Giải thuật
Bước 1: Chọn một đỉnh bắt đầu s
Khởi tạo: Với mỗi đỉnh u: dist[u] = vô cùng parent[u] = -1
dist[s] = 0
Bước 2: Tạo tập các đỉnh chưa chọn (ban đầu gồm tất cả các đỉnh)
Bước 3: Lặp cho đến khi tập chưa chọn rỗng:
Chọn đỉnh u chưa chọn sao cho dist[u] nhỏ nhất
Đưa u vào cây khung
Với mỗi đỉnh v kề với u mà chưa được chọn: Nếu dist[v] > trọng số(u, v) thì:
Cập nhật: dist[v] = trọng số(u, v) parent[v] = u
Bước 4: Sau khi kết thúc: Tập các cạnh (parent[v], v) tạo thành cây khung cực tiểu
***Tổng trọng số = tổng dist[v] với mọi v ≠ s