Tập độc lập tối đa của đồ thị Bipartite


19

Tôi đang cố gắng tìm Tập hợp độc lập tối đa của đồ thị Biparite.

Tôi đã tìm thấy những điều sau đây trong một số ghi chú "Ngày 13 tháng 5 năm 1998 - Đại học Washington - CSE 521 - Ứng dụng của lưu lượng mạng" :

Vấn đề:

Cho một đồ thị hai phía , tìm một bộ độc lập mà là càng lớn càng tốt, nơi và . Một tập hợp độc lập nếu không có cạnh giữa các phần tử của tập hợp.G=(U,V,E)UVUUVVE

Giải pháp:

Xây dựng biểu đồ luồng trên các đỉnh . Với mỗi cạnh có cạnh công suất vô hạn từ đến . Với mỗi , có một cạnh công suất đơn vị từ đến và với mỗi , có một cạnh công suất đơn vị từ đến .UV{s,t}(u,v)EuvuUsuvVvt

Tìm công suất cắt hữu hạn , với và . Hãy và . Tập hợp là độc lập do không có các cạnh dung lượng vô hạn vượt qua đường cắt. Kích thước của vết cắt là. Điều này, để làm cho tập độc lập càng lớn càng tốt, chúng tôi thực hiện cắt càng nhỏ càng tốt.(S,T)sStTU=USV=VTUV|UU|+|VV|=|U|+|V||UV|

Vì vậy, hãy lấy điều này làm biểu đồ:

A - B - C
    |
D - E - F

Chúng ta có thể chia biểu đồ này thành một biểu đồ lưỡng cực như sau (U,V)=({A,C,E},{B,D,F})

Chúng ta có thể nhìn thấy bằng cách tìm kiếm brute force rằng duy nhất tối đa độc lập Set là . Hãy thử và làm việc thông qua các giải pháp trên:A,C,D,F

Vì vậy, ma trận kề mạng được xây dựng sẽ là:

stABCDEFs00101010t00010101A1000000B01000C1000000D0100000E10000F0100000

Đây là nơi tôi bị mắc kẹt, công suất hữu hạn nhỏ nhất tôi thấy là một thứ tầm thường: với công suất 3.(S,T)=({s},{t,A,B,C,D,E,F})

Sử dụng cắt này dẫn đến một giải pháp không chính xác của:

U=US={}
V=VT={B,D,F}
UV={B,D,F}

Trong khi đó, chúng tôi mong đợi ? Bất cứ ai có thể nhận ra nơi tôi đã sai trong lý luận / làm việc của tôi?UV={A,C,D,F}


(S, T) = ({s, A, B, C}, {t, D, E, F}) có dung lượng 2

1
@Brian có một cạnh dung lượng vô hạn từ B đến E trên đường cắt của bạn, vì vậy nó là dung lượng vô hạn.
Andrew Tomazos

Nếu tôi hiểu điều này một cách chính xác, dựa trên giải pháp vũ lực, bạn cần một vết cắt trong đó S chứa A và C và T chứa D và F, làm cho vết cắt của bạn là {s, A, C}, {t, D, F} . Bây giờ, làm thế nào để bạn xây dựng cắt?
njzk2

Ngoài ra, nó trông giống như Ford-Fulkerson, trong đó các cạnh có công suất một.
njzk2

Tra cứu thuật toán Hungary.
Patrik Vörös

Câu trả lời:


14

Phần bù của một tập độc lập tối đa là một đỉnh đỉnh tối thiểu.

Để tìm một đỉnh đỉnh tối thiểu trong đồ thị lưỡng cực, xem định lý của König .


2
Điều này (có thể) giải quyết vấn đề nhưng không trả lời câu hỏi.
Raphael

2
@Raphael: Tôi đồng ý nếu bạn xóa từ "có thể". :)
Jukka Suomela

1
Oh, tôi chắc chắn nó giải quyết các vấn đề, nhưng tôi không chắc liệu nó giúp Andrew giải quyết vấn đề của mình.
Raphael

3
Tôi đã giải quyết nó như bạn đề xuất: HopcroftKarp -> kết hợp tối đa -> Konigs Có -> Vỏ tối thiểu của Vertex -> Bổ sung -> Bộ độc lập tối đa. Tôi vẫn muốn biết tại sao phương pháp dòng chảy được mô tả trong câu hỏi của tôi dường như không hoạt động.
Andrew Tomazos

5

Giải pháp đưa ra rõ ràng là không chính xác, như bạn chứng minh với ví dụ mẫu. Lưu ý rằng đồ thị U + V là một thành phần được kết nối bởi các cạnh có dung lượng vô hạn. Do đó, mỗi lần cắt hợp lệ sẽ phải chứa tất cả A, B, C, D, E, F ở cùng một phía.

Cố gắng truy ngược lại giải pháp đến từ đâu: http://www.cs.washington.edu/education/cifts/cse521/01sp/flownotes.pdf trích dẫn Network Flows, bởi Ahuja, Magnanti và Orlin cho một số vấn đề. Cuốn sách này không có bản quyền và có thể tải xuống từ http://archive.org/details/networkflows00ahuj nhưng dường như nó không chứa vấn đề và giải pháp này (tìm kiếm mọi sự xuất hiện của "bipartite").

Lưu ý rằng đoạn giải thích của giải pháp không chỉ ra rằng phần cắt nhỏ nhất của đồ thị mà nó xây dựng tương ứng với tập độc lập tối đa . Nó chỉ cho thấy một cách để có được một bộ độc lập.

Tuy nhiên, bạn có thể thấy những gì thuật toán đang cố gắng làm. Đây là những gì tập độc lập tối đa thực tế tương ứng với các mặt cắt của nó, t:

Đồ thị

Cạnh khả năng vô hạn phá vỡ thuật toán được nhấn mạnh.

Tôi không chắc làm thế nào để sửa thuật toán theo ý định. Có lẽ chi phí của một cạnh vô hạn nên bằng 0 nếu nó đi ngược lại (nghĩa là nó đi từ S đến T, nhưng giao nhau từ phía t sang phía s)? Nhưng nó vẫn dễ dàng tìm thấy min-cut / max-Flow với tính phi tuyến này? Ngoài ra, nghĩ cách chuyển từ giải pháp của @Jukka Suomela sang thuật toán từ câu hỏi, có một khó khăn khi chúng ta đi từ khớp tối đa đến nắp đỉnh tối thiểu: trong khi việc tìm kiếm khớp tối đa có thể được thực hiện bằng luồng tối đa thuật toán giống như, làm thế nào để bạn phục hồi nắp đỉnh tối thiểu từ nó bằng thuật toán giống như dòng chảy? Theo mô tả ở đây, sau khi kết hợp tối đa được tìm thấy, các cạnh giữa U và V trở thành hướng để tìm nắp đỉnh tối thiểu. Vì vậy, một lần nữa, điều này không cho thấy rằng một ứng dụng đơn giản của min-cut / max-Flow là tất cả những gì cần thiết để giải quyết vấn đề này.


2

Các thuật toán đã cho là chính xác. Mạng lưu lượng được xây dựng cần phải được định hướng và giá trị của đường cắt - chỉ xem xét các cạnh đi ra khỏi đỉnh được đặt .STS


1
Tôi đồng ý với bạn, nhưng bạn có thể vui lòng thêm chi tiết không, ví dụ, bằng chứng chính xác hoàn toàn về thuật toán dòng chảy và cách thuật toán áp dụng trên ví dụ của OP?
xskxzr

Các lưu ý trong này không có một bằng chứng ngắn gọn về tính chính xác. cs.washington.edu/education/cifts/cse521/01sp/flownotes.pdf Ví dụ, nếu bạn nhìn vào hình của Evgeni Sergeev ở trên, tất cả các cạnh sẽ được hướng xuống dưới. Sau đó, hai cạnh duy nhất của S là (s, e) và (b, t), cạnh đỏ được tô đậm sẽ đi vào S và không được tính vào giá trị cắt.
yu25x

0

Việc cắt nên trên dòng chảy thực tế, không phải trên năng lực. Vì luồng từ s là hữu hạn, mọi phép cắt {S, T} sẽ là hữu hạn. Phần còn lại là một giải thích ở trên.


1
Bạn có chắc không? Các vết cắt thường dựa trên năng lực và, trong mọi trường hợp, chúng ta đã biết rằng vết cắt tối thiểu là hữu hạn nên các vết cắt là vô hạn dường như không phải là vấn đề.
David Richerby

0

UV

Sau đó, trong biểu đồ mới , bạn sẽ có một phần cắt nhỏ là 2, cung cấp cho bạn câu trả lời .G{A,C,D,F}

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.