Tìm mức cắt tối thiểu của đồ thị vô hướng


25

Đây là một câu hỏi từ một bài kiểm tra trước đây tôi đang cố gắng giải:

Đối với đồ thị vô hướng có trọng số dương , tôi đang cố gắng tìm mức cắt tối thiểu. Tôi không biết các cách khác để làm điều đó ngoài việc sử dụng định lý cắt cực tiểu dòng cực đại. Nhưng đồ thị là vô hướng, vậy tôi nên chỉ đạo nó như thế nào? Tôi đã nghĩ đến việc định hướng các cạnh ở cả hai đầu, nhưng sau đó đỉnh nào sẽ là nguồn và đỉnh nào sẽ là chìm? Hoặc có một cách khác để tìm cắt giảm tối thiểu?Gw(e)0


1
Nếu bạn không có nguồn và mục tiêu trong biểu đồ ban đầu, tôi đoán bạn sẽ phải thử nhiều lựa chọn. (Đối với bất kỳ và , phần cắt tối thiểu có thể không tách rời hai phần.)tSt
Raphael

Bạn đang cố gắng tìm min-cut cho các nút nguồn và nút chìm nhất định hoặc min-cut của biểu đồ?
Peter

@Peter: Phần cắt tối thiểu của đồ thị.
Jozef

Câu trả lời:


13

Có rất nhiều thuật toán để tìm ra phần cắt nhỏ của đồ thị không có hướng. Thuật toán của Karger là một thuật toán ngẫu nhiên đơn giản nhưng hiệu quả.

Nói tóm lại, thuật toán hoạt động bằng cách chọn các cạnh một cách ngẫu nhiên và ký hợp đồng với các vòng lặp tự loại bỏ. Quá trình dừng lại khi có hai nút còn lại và hai nút đại diện cho một vết cắt. Để tăng xác suất thành công, thuật toán ngẫu nhiên được chạy nhiều lần. Trong khi thực hiện các bước chạy, người ta theo dõi vết cắt nhỏ nhất được tìm thấy cho đến nay.

Xem mục Wikipedia để biết thêm chi tiết. Để có thể giới thiệu tốt hơn, hãy xem chương đầu tiên của Xác suất và Tính toán: Thuật toán ngẫu nhiên và Phân tích xác suất của Michael Mitzenmacher và Eli Upfal.


Đây có phải là một thuật toán gần đúng?
Strin

@Strin Đó là một thuật toán ngẫu nhiên tìm thấy mức cắt tối thiểu với xác suất cao.
Juho

1
Tôi không nghĩ Karger là thích hợp để tìm kiếm một trọng lượng tối thiểu. Việc xác định xác suất mà nó tìm thấy mức cắt tối thiểu phụ thuộc vào việc nó tìm thấy mức cắt giảm tối thiểu; Karger's rất khó tìm thấy một vết cắt tối thiểu với nhiều cạnh nhẹ.
Sumudu Fernando

8

(bạn,v,wetôight)(bạn,v,wetôight)(v,bạn,wetôight)

... nhưng sau đó đỉnh nào sẽ là nguồn và đỉnh nào sẽ là chìm?

Không quan trọng.


1
Tại sao điều này không quan trọng?
Mã hóa Wombat

1

Thuật toán Ford-Fulkerson sẽ làm việc cho bạn. Bạn có thể tạo hai đỉnh viz giả. nguồn và chìm.

Cũng có một cái nhìn về thuật toán Edmonds-Karp . Có hai biến thể của nó:

  1. Một phiên bản chọn con đường ngắn nhất
  2. Khác chọn một con đường với công suất tối đa

, trái ngược với Ford-Fulkerson, chọn một con đường tùy ý.

Đây là một nguồn tài nguyên tốt.


Chào mừng bạn đến với cs.stackexchange! Nó có thể giúp OP nếu bạn có thể giải thích thêm về cách các đỉnh giả được kết nối với biểu đồ hiện có. Và những gì sẽ là trọng lượng cạnh của các cạnh mới.
Paresh
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.