Обґрунтування угорського методу (Kuhn-Munkres)


14

Я написав реалізацію алгоритму Куна-Манкреса для задачі щодо мінімальної ваги двосторонньої ідеальної відповідності на основі записів лекцій, які я знайшов тут і там в Інтернеті. Це працює дуже добре навіть на тисячах вершин. І я згоден, що теорія, що стоїть за цим, справді прекрасна. І все ж мені все ще цікаво, чому мені довелося піти настільки довго. Я вважаю, що ці конспекти лекцій не пояснюють, чому ми не можемо просто взяти первинну лінійну програму і передати її до симплексного методу. Звичайно, я підозрюю, що це питання передбачуваної продуктивності, але оскільки я цього не бачив прямо, я не надто впевнений. Крайні точки первісного політопа виявляються в 0-1, тому, схоже, ми можемо подати його безпосередньо до реалізації симплексу, навіть не формулюючи подвійне. Або я спрощений?

Відповіді:


16

(Перейшов з коментаря.)

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

Йдеться не лише про теоретичні асимптотичні гарантії продуктивності, а й про практичну ефективність у реальному світі. Такі алгоритми, як угорський метод, можуть бути надзвичайно спрощеними, і їх порівняно легко правильно та ефективно реалізувати.

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


14

Хоча ця відповідь є правильною у загальному розумінні, також корисно спробувати зрозуміти, що конкретно йде не так, коли застосовується простого симплексу до проблеми призначення. Розглянемо задачу присвоєння NxN з квадратною матрицею витрат c_ij. Відповідний LP має N ^ 2 змінних x_ij для вирішення. Розглядаючи ці x_ij як квадратну матрицю X, можливе рішення вимагає, щоб X була матрицею перестановки, яка виконується обмеженнями 2N-1 в нашому LP (на перший погляд може здатися, що є 2N обмежень, по одному для кожного рядка та по одному для кожного стовпця, але вони не всі незалежні, і ми відкидаємо один із них). Обмеження LP таким чином утворюють (2N-1) x (N ^ 2) матрицю А.

Тепер базове рішення формується з вибору набору (2N-1) основних змінних. Однак для цього базового рішення також є здійсненним, лише N з цих змінних може мати значення 1, а інші (N-1) - 0. Отже, кожен здійсненний розчин є виродженим. Проблема цього виродження полягає в тому, що будь-яку з (N-1) базових змінних, що дорівнює 0, можна замінити будь-якою з (N ^ 2-2N + 1) небазових змінних, так званим "виродженим стрижнем", без вплив на значення цільової функції [ви просто поміняєте одну змінну 0 на іншу]. Коли N велике, алгоритм первинного симплексу витрачає багато часу, роблячи вироджені повороти, які не покращують рішення. У цьому полягає суть того, чому алгоритм наївного первинного симплексу не використовується безпосередньо для вирішення проблеми призначення.

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