Максимальний незалежний набір двоканального графіка


19

Я намагаюся знайти максимальний незалежний набір графіку Біпаріта.

У деяких записках "13 травня 1998 р. - Вашингтонський університет - CSE 521 - Застосування мережевого потоку" я виявив наступне :

Проблема:

З огляду на двочастковий граф , знайти незалежне безліч , який є якомога більше, де і . Набір незалежний, якщо між елементами множини немає ребраG=(U,V,E)UVUUVVE

Рішення:

Побудуйте графік потоку на вершинах . Для кожного ребра існує край нескінченної ємності від до . Для кожного існує край одиничної ємності від до , а для кожного є край одиничної ємності від до .UV{s,t}(u,v)EuvuUsuvVvt

Знайти кінцеве скорочення потужності , з і . Нехай і . Набір незалежний, оскільки не існує нескінченних країв ємності, що перетинають зріз. Розмір зрізу дорівнює. Це, щоб зробити незалежний набір якомога більшим, робимо розріз якомога меншим.(S,T)sStTU=USV=VTUV|UU|+|VV|=|U|+|V||UV|

Тож давайте розглянемо це як графік:

A - B - C
    |
D - E - F

Ми можемо розділити це на двобічний графік так (U,V)=({A,C,E},{B,D,F})

Ми можемо бачити пошук перебору , що єдиний максимум незалежного безліч . Давайте спробуємо опрацювати рішення вище:A,C,D,F

Отже, побудована матриця суміжності потокової мережі буде такою:

stABCDEFs00101010t00010101A1000000B01000C1000000D0100000E10000F0100000

Ось, де я застряг, найменша обмежена кінцева ємність, яку я бачу, є тривіальною: місткістю 3.(S,T)=({s},{t,A,B,C,D,E,F})

Використання цього розрізу призводить до неправильного вирішення:

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

Тоді як ми очікували, що ? Чи може хтось помітити, де я помилився у своїх міркуваннях / роботі?UV={A,C,D,F}


(S, T) = ({s, A, B, C}, {t, D, E, F}) має ємність 2

1
@Brian є край нескінченної ємності від B до E через ваш розріз, тому це нескінченна ємність.
Андрій Томазос

якщо я правильно це розумію, виходячи з рішення грубої сили, вам потрібен розріз, де S містить A і C, а T містить D і F, завдяки чому ваш зріз буде {s, A, C}, {t, D, F} . Тепер, як ви конструюєте розріз?
njzk2

Крім того, це виглядає як Ford-Fulkerson, у якого краї мають місткість до одиниці.
njzk2

Знайдіть угорський алгоритм.
Патрік Вьорьос

Відповіді:


14

Доповненням максимального незалежного набору є мінімальна вершинна кришка.

Щоб знайти мінімальну кришку вершин у двопартійному графіку, див . Теорему Кеніга .


2
Це (можливо) вирішує проблему, але не дає відповіді на питання.
Рафаель

2
@Raphael: Я згоден, якщо ви видалите слово "можливо". :)
Jukka Suomela

1
О, я впевнений , що він вирішує на проблему, але я не впевнений , чи допомагає Ендрю вирішити його проблему.
Рафаель

3
Я вирішив це, як ви пропонуєте: HopcroftKarp -> максимальна відповідність -> Konigs Thereom -> Мінімальна кришка вершини -> Доповнення -> Максимальний незалежний набір. Я все ще хотів би знати, чому метод потоку, описаний у моєму запитанні, здається, не працює.
Андрій Томазос

5

Наведене рішення явно неправильне, як ви демонструєте з контрприкладом. Зауважимо, що графік U + V є з'єднаним компонентом по краях нескінченної ємності. Тому кожен дійсний зріз повинен містити всі A, B, C, D, E, F на одній стороні.

Намагаючись простежити, звідки прийшло рішення: http://www.cs.washington.edu/education/courses/cse521/01sp/flownotes.pdf цитує мережу "Потоки" від Ахуджі, Магнанті та Орліна для деяких проблем. Ця книга не захищена авторським правом і завантажується на веб-сайті http://archive.org/details/networkflows00ahuj, але, схоже, не містить цієї проблеми та рішення (пошук кожного виникнення "двостороннього").

Зауважимо, що в пункті пояснення рішення не видно, що найменший зріз графіка, який він сконструює, відповідає максимальному незалежному набору. Це тільки показує спосіб отримати в самостійний набір.

І все ж, ви можете бачити, що алгоритм намагається зробити. Ось чому відповідає фактичний максимальний незалежний набір з точки зору його s, t скорочення:

Графік

Підкреслено край нескінченної ємності, що порушує алгоритм.

Я не впевнений, як зафіксувати алгоритм до того, що було призначено. Можливо, вартість нескінченного краю повинна дорівнювати нулю, якщо вона йде назад (тобто там, де вона йде від S до T, але перетинає з t-стороні на s-сторону)? Але чи все ще легко знайти міні-скорочення / максимальний потік за допомогою цієї нелінійності? Крім того, обдумуючи спосіб переходу від рішення @Jukka Suomela до алгоритму з питання, виникає складність, коли ми переходимо від максимальної відповідності до мінімальної кришки вершини: хоча знайти максимальну відповідність можна за допомогою max-потоку як алгоритм, як ви відновите мінімальну кришку вершини з неї за допомогою потокового алгоритму? Як описано тутпісля виявлення максимальної відповідності ребра між U і V стають направленими, щоб знайти мінімальну кришку вершини. Отже, знову ж таки, це не свідчить про те, що для вирішення цієї проблеми потрібне просте застосування мінімальної скорочення / максимального потоку.


2

Даний алгоритм правильний. Мережевий потік , побудовані повинні бути спрямовані, а значення - вирізати розглядає тільки ребро , що виходить з безлічі вершин .STS


1
Я згоден з вами, але чи можете ви, будь ласка, додати більше деталей, наприклад, повне підтвердження коректності алгоритму потоку та як алгоритм застосовується на прикладі ОП?
xskxzr

Примітка у цьому має короткий доказ коректності. cs.washington.edu/education/courses/cse521/01sp/flownotes.pdf Наприклад, якщо подивитися на фігуру Євгена Сергєєва вище, краї повинні бути спрямовані вниз. Тоді єдині два ребра з S - це (s, e) та (b, t), жирний червоний край переходить у S і не повинен зараховуватися у відрізане значення.
yu25x

0

Розріз повинен бути на фактичному потоці, а не на потужностях. Оскільки потік від s кінцевий, будь-який {S, T} розріз буде кінцевим. Решта - пояснено вище.


1
Ти впевнений? Скорочення зазвичай є потужними, і, у будь-якому випадку, ми вже знаємо, що мінімальний розріз є кінцевим, тому скорочення нескінченності не здаються проблемою.
Девід Річербі

0

Я думаю, що вам не потрібно з'єднувати краї обома способами, навіть якщо початковий графік був непрямим. Оскільки для мережі потоку, вам потрібен орієнтований граф, ви могли б розглянути тільки ребра з в .UV

Тоді в цьому новому графіку ви матимете міні-розріз 2, що дає відповідь .G{A,C,D,F}

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.