Узагальнення алгоритму Угорщини до загальних непрямих графіків?


14

Угорський алгоритм - це комбінаторний алгоритм оптимізації, який вирішує задачу співвідношення максимальної ваги за двома частинами в поліноміальний час та передбачає подальший розвиток важливого первинно-подвійного методу . Алгоритм був розроблений та опублікований Гарольдом Куном у 1955 році, який дав назву "Угорський алгоритм", оскільки алгоритм був заснований на попередніх роботах двох угорських математиків: Денеса Кьоніга та Дженő Егерварі. Манкрес переглянув алгоритм у 1957 році і зауважив, що він дійсно є багаточасним. Відтоді алгоритм також відомий як алгоритм Куна-Манкреса.

Хоча угорська містить основну ідею первинно-подвійного методу, він вирішує проблему співвідношення максимальної ваги двостороннього співвідношення безпосередньо, не використовуючи механізмів лінійного програмування (LP). Так, відповідаючи на наступне запитання , Юкка Суомела прокоментував це

Звичайно, ви можете вирішити будь-який LP за допомогою вирішувача LP загального призначення, але спеціалізовані алгоритми, як правило, мають значно кращі показники. [...] Ви також можете часто уникати таких питань, як використання точних раціональних чисел проти чисел з плаваючою комою; все можна легко зробити цілими числами.

Іншими словами, вам не потрібно турбуватися про те, як округлити раціональну / плаваючу крапку з розв'язувача LP, щоб отримати максимальну вагу, ідеальну відповідність даному двосторонньому графіку.

Моє запитання таке:

Чи є узагальнення угорського алгоритму, який працює на загальний непрямий графік без використання LP-механізмів, аналогічно духу оригінального угорського алгоритму?

Я б віддав перевагу сучасній та легкій для читання експозиції замість якоїсь оригінальної складної роботи. Але будь-який вказівник буде дуже вдячний!

Заздалегідь дякую та з Різдвом Христовим !!!


Оновлення: Arman нижче відповідає на це питання. Я просто хочу зазначити, що ще одним приємним джерелом вивчення алгоритму цвітіння Едмонда (для зваженого випадку) є глава 11 комбінаторної оптимізації Корте та Вігена . Книга Google фактично показує майже всі частини, які мені потрібні для розуміння алгоритму.


2
Як щодо алгоритму відповідності Edmonds? en.wikipedia.org/wiki/Edmonds%27s_matching_algorithm
Арман

1
@Arman - Про це я теж думав. Дякуємо за посилання, у Вікіпедії є напрочуд детальна експозиція алгоритму цвітіння Едмонда.
Авраам Флексман

2
До речі, алгоритм узгодження Едмондса також заснований на методі Primal-Dual.
Арман

1
Дякую Арман. Посилання на вікіпедію також вказує на книгу "Ловаш, Ласло; Пламмер, Майкл (1986). Теорія відповідності" для зваженої версії алгоритму Едмонда. Я дійсно повинен перевірити цю книгу. Дуже дякую за ваші коментарі! Можливо, якщо хтось із вас на високому рівні може пояснити, як алгоритм узагальнює угорський алгоритм, ви, безумовно, можете відповісти на це.
Dai Le

1
Я думаю, що це досить гарна відповідь, як є :). Арман, ти повинен додати його як такого
Суреш Венкат

Відповіді:


16

Алгоритм узгодження Едмондса (також його називають алгоритмом Blossom) вирішує максимальну відповідність на загальних графіках. Насправді це узагальнення методу змінних шляхів. (Я не впевнений у назві методу, але це має бути методом Кеніга-Холла.) В основному він знаходить шляхи розширення (див. Сторінку вікіпедії: http://en.wikipedia.org/wiki/Edmonds%27s_matching_algorithm ) для розширення поточне узгодження та зупиняється, якщо більше шляхів збільшення не існує. У загальних графіках єдина проблема виникає в непарних циклах. У алгоритмі відповідності Едмондса непарні цикли стискаються (цвітуть) і витрачаються назад, щоб мати рішення.

Існує також відповідність між алгоритмом Blossom та методом Primal Dual. Непарні цикли викликають дробові крайні точки. Тому ми додаємо так звані нерівності цвітіння для кожного непарного циклу.

Проблеми з мінімальним зваженим ідеальним співвідношенням та максимальною вагою можуть також вирішуватися за допомогою цього підходу.

Докладніше про алгоритм див. На веб-сайті http://en.wikipedia.org/wiki/Edmonds%27s_matching_algorithm http://www.cs.berkeley.edu/~karp/greatalgo/lecture05.pdf

Про математичне формулювання та відповідний первинно-подвійний метод див. Http://webdocs.cs.ualberta.ca/~mreza/courses/CombOpt09/lecture4.pdf


9

Два роки тому, досліджуючи алгоритм цвітіння (не зваженого), я знайшов два чудові набори нот - одну Тарджаном та другу Цвіком. Вони зробили незважений випадок здається досить простим, і я зміг реалізувати це в Mathematica за допомогою рекурсії. Це працює досить добре.

Нотатки, які я вважаю корисними, є

http://www.cs.tau.ac.il/~zwick/grad-algo-06/match.pdf та http://www.cs.dartmouth.edu/~ac/Teach/CS105-Winter05/Handouts/ tarjan-blossom.pdf

Вони переганяють все до дуже простих термінів, які дозволяють мислити рекурсивно, а потім, як зазначалося, програмувати рекурсивно.

Я думаю, що все має працювати у зваженому випадку, який я зараз намагаюся реалізувати.


І у мене є демо - версії , які можна дивитися на тих , хто з безкоштовним програмним забезпеченням: перший показує цвісти красиво .... < demonstrations.wolfram.com / ... > < demonstrations.wolfram.com/TheHungarianMaximumMatchingAlgorithm > < demonstrations.wolfram.com/ РозміщенняDominoesOnACheckerboard >
Стен Вагон

І я щойно запрограмував невзгоджений цвіт, як дано в Корте / Виген. Я бачу, що до його коду можливі кілька прискорень (наприклад, почніть з максимальної відповідності, а не нічого), але приємно, що його процедурний код надається у формі, яку можна легко перевести на робочий код. Далі: зважений цвіт, який набагато важче.
Стен Вагон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.