Phiên bản dày đặc này của thuật toán Kruskal có nổi tiếng không?


15

Khoảng một năm trước, một người bạn và tôi đã nghĩ ra một cách để thực hiện thuật toán của Kruskal cho các đồ thị dày đặc hơn so với giới hạn thông thường O(mlogm)(mà không giả sử các cạnh được sắp xếp trước). Cụ thể, chúng ta đạt được Θ(n2) trong mọi trường hợp, tương tự như Prim khi thực hiện sử dụng ma trận kề.

Tôi đã đăng một chút về thuật toán trong blog của mình , bao gồm mã C ++ và điểm chuẩn, nhưng đây là ý tưởng chung:

  • Duy trì một nút đại diện cho mỗi thành phần được kết nối. Ban đầu, tất cả các nút đại diện cho chính họ.

  • Duy trì một vectơ dist[i]sao cho, đối với mọi thành phần i, có sự cố cạnh chéo thành phần nhẹ nhất i.

  • Khi tìm cạnh nhẹ nhất vượt qua các phân vùng, chỉ cần tìm irằng giảm thiểu trọng lượng của dist[i], trong thời gian tuyến tính.

  • cicjAAi,k=min{Ai,k,Aj,k}kij

Do đó, việc ký hợp đồng của cạnh nhẹ nhất và việc tìm ra cạnh đã nói có thể được thực hiện trong thời gian tuyến tính. Chúng tôi làm điều này lần để tìm MST. Một ít sổ sách kế toán là cần thiết để thực sự tìm ra cạnh nào chúng ta muốn thêm vào MST, nhưng không làm tăng sự phức tạp. Do đó, thời gian chạy là . Việc thực hiện chỉ là một vài vòng lặp.n1Θ(n2)

Đây có phải là phiên bản của Kruskal nổi tiếng trong văn học?

Câu trả lời:


19

Ôi(n2)Ôi(n2)

  1. Thay vào đó, hãy sử dụng Primifer DijkstraTHER Jarník và sau đó sắp xếp các cạnh để có được chuỗi chèn mà Kruskal sẽ cung cấp, hoặc

  2. Sử dụng cấu trúc dữ liệu cặp gần nhất của tứ giác được mô tả trong bài báo, xem Kruskal như một quy trình phân cụm kết tụ tiêu chuẩn trong đó chúng ta hợp nhất hai cụm gần nhất thành một siêu lớp ở mỗi bước, với "gần nhất" được định nghĩa là độ dài của cạnh ngắn nhất nối hai cụm .

Giải pháp 2 tương tự như những gì bạn mô tả nhưng chi tiết về cách theo dõi khoảng cách giữa các cụm hơi khác nhau. Bạn giữ cực tiểu theo hàng của ma trận khoảng cách cụm, cho phép bạn quét danh sách cực tiểu hàng này theo thời gian tuyến tính để tìm mức tối thiểu toàn cầu, trong khi bài viết của tôi phủ lên một góc phần tư trên cùng một ma trận và theo dõi mức tối thiểu trong mỗi ma trận hình vuông tứ giác. Phương pháp của bạn đơn giản hơn, nhưng kém linh hoạt hơn đối với một số vấn đề cặp gần nhất năng động khác (điều này phụ thuộc vào thực tế là việc hợp nhất hai cụm làm cho khoảng cách của chúng với các cụm khác giảm, đúng với vấn đề này nhưng không nhất thiết cho các vấn đề khác).

Ôi(n2)Ôi(n2)Ôi(n)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.