Khác biệt giữa bản sửa đổi của “Thuật toán Kruskal”

Nội dung được xóa Nội dung được thêm vào
Huynl (thảo luận | đóng góp)
Huynl (thảo luận | đóng góp)
Thông tin sai
Dòng 57:
 
*Có thể đạt được thời gian này bằng phương pháp sau: [[thuật toán sắp xếp|sắp xếp]] tất cả các cạnh theo trọng số trong thời gian ''O''(''E'' log ''E''). Điều này cho phép thực hiện bước "xóa cạnh nhỏ nhất trong ''S''" trong thời gian hằng số. Sau đó sử dụng [[cấu trúc dữ liệu cho các tập hợp không giao nhau]] để lưu trữ thông tin đỉnh nào nằm ở cây nào trong ''F''. Ta cần thực hiện O(''E'') thao tác, hai thao tác 'tìm' và không quá một thao tác 'hợp' cho mỗi cạnh. Ngay cả những thuật toán đơn giản cho bài toán này, chẳng hạn hợp bằng trọng số cũng có thể thực hiện O(''E'') thao tác trong thời gian ''O''(''E'' log ''V''). Vì vậy tổng thời gian là ''O''(''E'' log ''E'') = ''O''(''E'' log ''V'').
 
*Độ phức tạp của thuật toán Kruskal được đánh giá như sau. Trước tiên, ta sắp xếp các cạnh của G theo thứ tự có chiều dài tăng dần; việc sắp xếp này có độ phức tạp O(x^2), với x là số cạnh của G. Người ta chứng minh được rằng việc chọn không tạo nên chu trình với i cạnh đã chọn trước đó có độ phức tạp là O(n^2). Do x. n(n -1)/2, thuật toán Kruskal có độ phức tạp là O(x^2)
 
== Cải tiến thuật toán ==