Thuật toán Max-Cut không hoạt động, không rõ tại sao


21

OK, điều này có vẻ giống như một câu hỏi bài tập về nhà và, theo một nghĩa nào đó, nó là. Là một bài tập về nhà trong một lớp học thuật toán đại học, tôi đã đưa ra kinh điển sau:

Đưa ra một đồ thị vô hướng , đưa ra thuật toán tìm một vết cắt sao cho , trong đó là số cạnh vượt qua đường cắt. Độ phức tạp thời gian phải là .G=(V,E)(S,S¯)δ(S,S¯)|E|/2δ(S,S¯)O(V+E)

Vì một số lý do, tôi đã nhận được rất nhiều giải pháp sau đây. Bây giờ, nó sử dụng quá nhiều thời gian, vì vậy nó không phải là vấn đề chấm điểm, nhưng tôi đã tò mò. Điều đó không "có vẻ" chính xác, nhưng tất cả những nỗ lực của tôi tại quầy mẫu đã thất bại. Đây là:

  1. ĐặtS
  2. Đặt là một đỉnh bậc tối đa trong biểu đồv
  3. Thêm vàovS
  4. Xóa tất cả các cạnh liền kề vớiv
  5. Nếu trở về 2δ(S,S¯)<|E|/2

Lưu ý rằng trong bước 5 đề cập đến biểu đồ ban đầu. Cũng lưu ý rằng chúng tôi đã bỏ qua bước 4, điều này rõ ràng là sai (ví dụ: sự kết hợp của một hình tam giác với hai cạnh bị cô lập).E

Bây giờ, bất kỳ bằng chứng đơn giản nào cũng có vấn đề sau - có thể là khi chúng ta thêm một đỉnh mới chúng ta thực sự loại bỏcác cạnh từ vết cắt trong khi thêm các cạnh mới (trong đó đề cập đến biểu đồ có các cạnh bị xóa). Vấn đề là, nếu điều này gây bất lợi cho nguyên nhân của chúng ta, điều đó có nghĩa là đỉnh "được sử dụng" này có mức độ cao hơn bao giờ hết, vì vậy nó "nên được chọn" trước đó.| S | d ( v ) d ( v ) vv|S|d(v)d(v)v

Đây có phải là một thuật toán nổi tiếng? Có một số ví dụ đơn giản cho nó?


2
Nó trông tương tự như xấp xỉ 2 cho bìa đỉnh. Thuật toán tham lam chính xác tôi nghĩ sẽ chọn đỉnh với nhiều hàng xóm hơn ở phần khác và di chuyển nó cho đến khi không có đỉnh đó và không khó để chỉ ra rằng tại thời điểm đó, câu trả lời ít nhất là . Nhưng tính chính xác của thuật toán đó phụ thuộc vào thực tế rằng: chúng tôi đang xem xét sự khác biệt giữa số lượng lân cận cho đỉnh ở hai bên của vết cắt và không chỉ mức độ tối đa. Cũng di chuyển thuật toán đúng đỉnh trong cả hai hướng, không chỉ từ để . ˉ S S|E|/2S¯S
Kaveh

3
@Kaveh Tôi nghĩ OP biết thuật toán mà bạn mô tả (ông đã gán nó làm bài tập về nhà). Câu hỏi của anh là liệu thuật toán mà anh mô tả có đạt được bất kỳ xấp xỉ nào không.
Sasho Nikolov

2
@ MohammadAl-Turkistany xem bình luận của Nikolov.
vb le

1
Ngoài ra, lưu ý rằng xấp xỉ 16/17 là NP-hard, không phải 1/2. GW đưa ra xấp xỉ 0,888 bằng cách sử dụng SDP trong bài báo chuyên đề của họ.
Yonatan

Câu trả lời:


13

Khiếu nại trước đây của tôi về đã không tính đến việc cắt giảm kích thước đã có trong biểu đồ. Cấu trúc sau đây dường như có kết quả (về mặt emper - tôi đã tạo một câu hỏi tại math.stackexchange.com để chứng minh nghiêm ngặt) trong phân đoạn . n2/4O(12c+6n2/4O(1logc)

Thuật toán thực hiện kém trên các hiệp hội của một số biểu đồ hoàn chỉnh bị ngắt kết nối, có kích thước khác nhau. Chúng tôi biểu thị đồ thị hoàn chỉnh trên đỉnh là . Hãy xem xét hành vi của thuật toán trên : nó liên tục thêm một đỉnh tùy ý chưa có trong thành - tất cả các đỉnh như vậy là giống hệt nhau và vì vậy thứ tự không quan trọng. Đặt số lượng đỉnh chưa được thêm vào theo thuật toán , kích thước của vết cắt tại thời điểm đó là .K n K n S S S | ˉ S | = k k ( n - k )nKnKnSSS|S¯|=kk(nk)

Hãy xem xét điều gì xảy ra nếu chúng ta chạy thuật toán trên một số đồ thị bị ngắt kết nối với các hằng số trong khoảng từ 0 đến 1. Nếu là số phần tử chưa có trong trong biểu đồ hoàn chỉnh thứ , thì thuật toán sẽ liên tục thêm một đỉnh đến từ đồ thị hoàn chỉnh với cao nhất , phá vỡ các mối quan hệ tùy ý. Điều này sẽ tạo ra các đỉnh bổ sung dựa trên 'vòng' cho : thuật toán thêm một đỉnh từ tất cả các đồ thị hoàn chỉnh với cao nhất , sau đó từ tất cả các đồ thị hoàn chỉnh với (với x i k i S i S k i S k = k i k i = k - 1 k i SKxinxikiSiSkiSk=kiki=k1kicập nhật sau vòng trước), v.v. Khi một đồ thị hoàn chỉnh có một đỉnh được thêm vào trong một vòng, nó sẽ làm như vậy cho mỗi vòng từ đó trở đi.S

Gọi là số đồ thị hoàn chỉnh. Đặt với là công cụ sửa đổi kích thước cho biểu đồ hoàn chỉnh thứ . Chúng tôi đặt hàng các công cụ sửa đổi kích thước này từ lớn đến nhỏ và đặt . Bây giờ chúng ta có rằng nếu có các biểu đồ với chính xác các phần tử chưa được thêm vào , thì kích thước của vết cắt tại thời điểm đó là . Tổng số cạnh là .0 < x i1 0 i c - 1 i x 0 = 1 c k S c - 1 i = 0 k ( x i n - k ) = k n c - 1 i = 0 ( x i ) - c k 2 | Ec0<xi10ic1ix0=1ckSi=0c1k(xink)=kni=0c1(xi)ck2|E|=i=0c1xin(xin1)2n22i=0c1xi2

Lưu ý rằng là một hàm bậc hai trong và do đó có cực đại. Do đó, chúng tôi sẽ có một số cắt giảm tối đa cục bộ. Ví dụ: nếu mức cắt tối đa của chúng tôi là có kích thước . Chúng tôi sẽ chọn để , có nghĩa là biểu đồ hoàn chỉnh thứ hai sẽ không thay đổi kích thước của phần cắt tối đa cục bộ này tại . Sau đó, chúng tôi nhận được một mức cắt tối đa cục bộ mới tại và vì vậy chúng tôi chọn (với k c = 1 k = nkni=0c1xick2kc=1 n2k=n2 x1x1=1/2-εk=nn24x1x1=1/2εk=n2k=3/8nεx2=3/8nεε,ε,εhằng số nhỏ). Chúng tôi sẽ bỏ qua s cho thời điểm này và chỉ giả sử chúng ta có thể chọn - chúng ta nên đảm bảo , nhưng điều này sẽ không ảnh hưởng đến kết quả cuối cùng nếu là đủ lớn.εx1=1/2x1n=n21n

Chúng tôi muốn tìm cực đại địa phương của vết cắt của chúng tôi. Chúng tôi phân biệt thành , mang lại . Tương đương với cho , giúp cắt giảm kích thước .kni=0c1(xi)ck2kni=0c1(xi)2ck0k=n2ci=0c1xin24c(i=0c1xi)2

Đặt là xác định trong đoạn trước nếu . Chúng tôi sẽ đảm bảo rằng công thức được giữ bằng cách yêu cầu - tất cả các biểu đồ hoàn chỉnh với sau đó nhỏ hơn của phần cắt tối đa cục bộ này và do đó không làm tăng kích thước của phần cắt. Điều này có nghĩa là chúng ta có các vết cắt tại các này lớn hơn tất cả các vết cắt khác được tìm thấy bởi thuật toán.kikc=ixin<kiii>ikicki

Điền vào , chúng tôi nhận được tái phát (cộng với một số nhỏ ) với . Giải quyết điều này mang lại : xem câu hỏi của tôi trên math.stackexchange.com để lấy đạo hàm của @Daniel Fisher. Cắm cái này vào và sử dụng cái nhìn sâu sắc của chúng tôi về sự tái phát sẽ giúp chúng tôi cắt giảm kích thước . Sử dụng các thuộc tính của hệ số nhị thức trung tâm này , chúng ta cóxin<kixi=12ci=0c1xiεx0=1xi=(2ii)4in24c(i=0c1xi)2n24c(2c(2cc)4c)2=n2c((2cc)4c)2limcc((2cc)4c)2=1π (cũng xem câu hỏi của tôi trên math.stackexchange.com ).

Số lượng cạnh xấp xỉ . Theo các thuộc tính đã biết, chúng ta có . Đăng nhập cung cấp ít nhất có triệu chứng khi đi đến vô cực.n22i=0c1xi2=n22i=0c1((2ii)4i)214i(2ii)4in22i=0c1(14i)2=n28i=0c11in28logcc

Do đó, chúng ta có là không có triệu chứng bằng khi đi đến vô cùng, cho thấy thuật toán có thể cắt giảm trở lại là phân số thấp tùy ý của.δ(S,S¯)|E|8πlogcc|E|


3
Với một sửa đổi nhỏ, công trình của bạn cho . Khắc phục và chọn đủ lớn . Đặt . Kết nối mỗi hai đỉnh trong với một cạnh; sau đó kết nối thêm hai đỉnh trong wp . Tổng số cạnh xấp xỉ . Thuật toán tìm thấy một vết cắt cắt khoảng cạnh (lên đến các điều khoản bậc thấp hơn trong ). 1/4εNV={1,,N}{1,,εN}Vε2(εn)2/2+ε2(n2/2)=ε2n2ε2n2/4ε
Yury

Tôi nghĩ rằng tôi sẽ viết lại câu trả lời của mình để sớm đưa vào kết quả cuối cùng (với nhiều chi tiết hơn), vì bây giờ nó hơi lộn xộn.
Alex ten Brink

1
Về tổng , vì mỗi thuật ngữ là , tổng là một chuỗi hài hòa với và tổng cộng chúng ta có . n22i=0c1((2ii)4i)2Θ(1/(i+1))Θ(logc)Θ(n2logc)
Yuval Filmus

12

Sau một thời gian suy nghĩ và hỏi xung quanh, đây là một ví dụ ngược lại, lịch sự của Ami Paz :

Đặt là chẵn và là đồ thị là sự kết hợp của với khớp đỉnh (nghĩa là khớp với cạnh).nGKnn+2n/2+1

Làm thế nào để thuật toán chạy trên biểu đồ này? Nó chỉ lấy các đỉnh từ phần clique theo thứ tự tùy ý. Sau khi lấy đỉnh từ cụm, vết cắt có kích thước . Đây là mức tối đa cho , giúp cắt giảm kích thước , trong khi số cạnh trong biểu đồ là .kk(nk)k=n/2n24n22+1

Thuật toán theo quy định sẽ tiếp tục thêm các đỉnh từ cụm, giảm số cạnh vượt qua vết cắt, cho đến khi những gì còn lại từ cụm chỉ là một cạnh duy nhất. Tại thời điểm này, nó không thể có được bất cứ điều gì tốt hơn .n2+2


1
Mẫu đẹp.
Kaveh

điều này vẫn rất gần với . thật tuyệt khi thấy một ví dụ trong đó thuật toán tệ hơn|E|/2
Sasho Nikolov
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.