Обоснование венгерского метода (Кун-Мункрес)


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) матрицу A.

Теперь базовое решение формируется из выбора набора (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.