Kruskal
Thuật toán sẽ xây dựng tập cạnh T của cây khung nhỏ nhất H=<V, T> theo từng bước như sau:
Sắp xếp các cạnh của đồ thị G theo thứ tự tăng dần của trọng số cạnh; Xuất phát từ tập cạnh T = Ø, ở mỗi bước, ta sẽ lần lượt duyệt trong danh sách các cạnh đã được sắp xếp, từ cạnh có trọng số nhỏ đến cạnh có trọng số lớn để tìm ra cạnh mà khi bổ sung nó vào T không tạo thành chu trình trong tập các cạnh đã được bổ sung vào T trước đó; Thuật toán sẽ kết thúc khi ta thu được tập T gồm n-1 cạnh.
Giả mã
void Kruskal(void)
{
T = Ø; //rỗng
while ( |T| < (n-1) && ( E ≠ Ø ) ) //rỗng
{
Chọn cạnh e ϵ E là cạnh có độ dài nhỏ nhất; // thuộc
E = E \ {e};
if (T ∪ {e}: không tạo nên chu trình ) // hợp
T = T ∪ {e}; // hợp
}
if ( |T| < n-1)
Đồ thị không liên thông;
}
Bạn đang đọc truyện trên: AzTruyen.Top