Алгоритм Max-Cut, який не повинен працювати, незрозуміло чому


21

Гаразд, це може здатися питанням домашнього завдання, і в певному сенсі це так. Як домашнє завдання в класі бакалаврських алгоритмів я подав наступну класику:

Давши непрямий графік G=(V,E) , задайте алгоритм, який знаходить зріз (S,S¯) такий, що δ(S,S¯)|E|/2 , де δ(S,S¯) - кількість ребер, що перетинають зріз. Час складності має бути O(V+E) .

Я чомусь отримав багато наступного рішення. Зараз це використовує занадто багато часу, тому справа не в оцінці, але мені стало цікаво. Це не "здається" правильним, але всі мої спроби контрприкладів зазнали невдачі. Ось:

  1. Встановіть S
  2. Нехай v - вершина максимальної міри в графі
  3. Додати v до S
  4. Видаліть усі ребра, розташовані поруч із v
  5. Якщо δ(S,S¯)<|E|/2 повернення до 2

Зауважимо, що E на кроці 5 посилається на початковий графік. Також зауважте, що якби ми пропустили крок 4, це, очевидно, було б неправильно (наприклад, об'єднання трикутника з двома ізольованими ребрами).

Тепер будь-який простий доказ має таку проблему - можливо, коли ми додаємо нову вершину v ми фактично видаляємо |S|країв зрізу, додаючи d(v) нові ребра (де d(v) позначає графік із видаленими краями). Вся справа в тому, що якщо це шкодить нашій причині, це означає, що ця вершина v "раніше" мала ще більш високий ступінь, тож вона повинна була бути обрана раніше.

Це добре відомі алгоритми? Чи є для цього простий контрприклад?


2
Це схоже на 2-наближення для вершинного покриву. Правильний жадібний алгоритм, на який я думаю, вибирав би вершину з більшою кількістю сусідів у частині, це те, що в іншій частині і переміщують її, доки не буде такої вершини, і не важко показати, що на той момент відповідь принаймні . Але правильність цього алгоритму залежить від того, що: ми дивимось на різницю між кількістю сусідів для вершини у двох сторонах розрізу, а не лише в максимальній ступені. Крім того , правильний алгоритм переміщує вершини в обох напрямках, а не тільки від ··· S до S . |E|/2S¯S
Каве

3
@Kaveh Я думаю, що ОП знає алгоритм, який ви описуєте (він призначив його як домашнє завдання). Його питання полягає в тому, чи досягає алгоритм, який він описує.
Сашо Ніколов

2
@ MohammadAl-Turkistany дивіться коментар Ніколова.
vb le

1
Також зауважте, що наближення 16/17 є NP-жорстким, а не 1/2. GW дають ~ 0,878 наближення, використовуючи SDP в їх насінному документі.
Йонатан

1
@Yonatan Дивіться це запитання cstheory.stackexchange.com/questions/3846/…
Mohammad Al-

Відповіді:


13

Моя раніше претензія не брати до уваги скорочення розміруп2/4вже присутні в графіку. Здається наступна конструкція (емпірично - я створив запитання на math.stackexchange.com для суворого доказу) вO(12c+6n2/4дріб.O(1logc)

Алгоритм погано спрацьовує на об'єднаннях декількох від'єднаних, різного розміру повних графіків. Позначимо повний графік на вершинах як K n . Розглянемо поведінку алгоритму на K n : він неодноразово додає довільну вершину, яка ще не є S до S - всі такі вершини однакові і тому порядок не має значення. Встановлення кількості вершин, ще не доданих S алгоритмом | ˉ S | = k , розмір розрізу в цей момент дорівнює k ( n - k ) .nKnKnSSS|S¯|=kk(nk)

Поміркуйте, що станеться, якщо ми запустимо алгоритм на декілька роз'єднаних графів із константами x i між 0 та 1. Якщо k i - кількість елементів, які ще не знаходяться в S у i- му повному графіку, алгоритм буде неодноразово додавати вершина на S від повного графа з найвищим k i , розриваючи зв'язки довільно. Це спричинить додавання вершин на "круглі" версії до S : алгоритм додає вершину з усіх повних графіків з найвищим k = k i , а потім із усіх повних графіків з kKxinxikiSiSkiSk=kiв раунді, вона буде робити це для кожного раунду відтоді. (з k i оновлено після попереднього раунду) тощо. Після того, як повний графік має вершину, додану до Ski=k1kiS

Нехай - кількість повних графіків. Нехай 0 < x i1 з 0 i c - 1 є модифікатором розміру для i -го повного графіка. Ми впорядковуємо ці модифікатори розмірів від великих до малих і встановлюємо x 0 = 1 . Тепер у нас є , що якщо є з ' графіками з точно K елементами ще не доданий в S , то розмір розрізу в той час Σ з ' - 1 я = 0 доc0<xi10ic1ix0=1ckS . Загальна кількість ребер становить | Е | = c - 1 i = 0 x i n ( x i n - 1 )i=0c1k(xink)=kni=0c1(xi)ck2|E|=i=0c1xin(xin1)2n22i=0c1xi2 .

Зауважимо, що - квадратична функція в k, отже, має максимум. Тому у нас буде кілька локально максимальних скорочень. Наприклад, якщо c = 1, наш максимальний зріз знаходиться при k = nkni=0c1xick2kc=1 розміромn2k=n2 . Ми будемо вибиратиті1так щох1=1/2-ε, що означаєщо другий повний граф не змінюватиме розмір цього локально максимального розрізу придо=пn24x1x1=1/2ε . Після цього ми отримаємо нове локально максимальне скорочення придо=3/+8п-ε'і тому ми вибираємох2=3/8п-е"е,е',ε"малі постійні). Ми будемо ігноруватиεs на даний момент і просто припустимощо ми можемо вибратие1=+1/+2- ми повинні забезпечитие1п=пk=n2k=3/8nεx2=3/8nεε,ε,εεx1=1/2, але це не вплине на кінцеві результати, якщоnдосить великий.x1n=n21n

Ми хочемо знайти локальні максимуми наших скорочень. Диференціюємо до k , отримуючи n c - 1 i = 0 ( x i ) - 2 c k . Дорівнює 0 дає k = nkni=0c1(xi)ck2kni=0c1(xi)2ck0, що дає зріз розміромn2k=n2ci=0c1xi.n24c(i=0c1xi)2

Нехай б до визначено в попередньому пункті , якщо з ' = I . Ми гарантуємо, що формула дотримується, вимагаючи, щоб x i n < k i - всі повні графіки i з i > i були меншими, ніж k i цього локального максимального розрізу, і, отже, не збільшувати розмір розрізу. Це означає, що у цих k i є скорочення ckikc=ixin<kiii>ikicki є які є більшими за всі інші розрізи, знайдені алгоритмом.

Заповнюючи , отримуємо повторення x i = 1xin<ki(плюс деякі невеликіε) приx0=1. Розв’язуючи це, виходитьxi= ( 2 ixi=12ci=0c1xiεx0=1 :див. Моє запитання на math.stackexchange.comщодо походження від @Daniel Fisher. Підключіть це доn2xi=(2ii)4iі, використовуючи наше розуміння рецидиву, дає нам надрізи розміруn2n24c(i=0c1xi)2n24c(2c(2cc)4c)2=n2c((2cc)4c)2limcc((2cc)4c)2=1π ).

Кількість ребер приблизно . За відомими властивостями маємо . Подання дає щонайменше який є асимптотично як1n22i=0c1xi2=n22i=0c1((2ii)4i)2 n214i(2ii)4i n2n22i=0c1(14i)2=n28i=0c11icn28logcc переходить до нескінченність.

Таким чином, у нас асимптотично дорівнює оскільки переходить до нескінченності, показуючи, що алгоритм може зворотні скорочення, які довільно низькі частки.8δ(S,S¯)|E| c| Е|8πlogcc|E|


3
З невеликою модифікацією ваша конструкція дає . Виправлення і вибрав досить велике . Нехай . З’єднайте кожні дві вершини в з ребром; потім додатково з'єднайте кожні дві вершини у wp . Загальна кількість ребер приблизно . Алгоритм знаходить розріз, який обрізає приблизно ребра (до термінів нижчого порядку в ). ε N V = { 1 ,1/4εN{ 1 , ... , ε N } V ε 2 ( е п ) 2 / 2 + ε 2( п 2 / 2 ) = ε 2 н 2 ε 2 н 2 / 4 εV={1,,N}{1,,εN}Vε2(εn)2/2+ε2(n2/2)=ε2n2ε2n2/4ε
Юрій

Думаю, я перепишу свою відповідь, щоб просто включити підсумкові результати (з більш детальною інформацією) незабаром, оскільки зараз це трохи безлад.
Олексій десять Брінк

1
Щодо суми , оскільки кожен доданок є , сума є гармонічним рядом, який підсумовує , і в цілому отримуємо . Θ(1/(i+1))Θ(logc)Θ(n2logc)n22i=0c1((2ii)4i)2Θ(1/(i+1))Θ(logc)Θ(n2logc)
Yuval Filmus

12

Поміркувавши і поцікавившись, ось контрприклад люб’язності Амі Пас :

Нехай є парним, а - графіком, який є об'єднанням із збігом вершин (тобто збігом з ребрами).G K n n + 2 n / 2 + 1nGKnn+2n/2+1

Як алгоритм працює на цьому графіку? Він просто бере вершини з частини кліки у довільному порядку. Після взяття вершин з клайки, зріз має розмір . Це максимально для , що дає розріз розміру , тоді як кількість ребер у графіку дорівнює .k ( n - k ) k = n / 2 n 2kk(nk)k=n/2n24n22+1

Зазначений алгоритм буде продовжувати додавати вершини від кліки, зменшуючи кількість ребер, що перетинають зріз, поки те, що залишилося від кліки, не буде лише одним краєм. У цей момент він не може отримати нічого кращого, ніж .n2+2


1
Гарний контрприклад.
Каве

це все ще дуже наближається до хоча. добре було б побачити приклад, коли алгоритм гірше|E|/2
Сашо Ніколов
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.