Оглавление
Венгерский алгоритм
-
Обзор венгерского алгоритма
- Венгерский алгоритм – это алгоритм для решения задачи о назначении, который был разработан в 1955 году.
- Задача о назначении заключается в распределении заданий между работниками с учетом затрат на выполнение каждого задания.
- Алгоритм был разработан для решения задачи о назначении в условиях, когда количество заданий превышает количество работников.
-
Алгоритм венгерского алгоритма
- Алгоритм начинается с определения набора заданий, которые могут быть выполнены каждым работником.
- Затем определяется набор работников, которые могут выполнить каждое задание.
- Потенциалы вершин графа назначений обновляются, чтобы минимизировать общую стоимость назначений.
- Алгоритм завершается, когда все задания распределены между работниками.
-
Временная сложность
- Алгоритм имеет временную сложность O(n3), когда количество рабочих мест и работников примерно равны.
- Если количество рабочих мест значительно меньше, чем количество работников, то временная сложность может быть улучшена до O(J2W).
-
Реализация на C++
- Приведен пример кода на C++, который реализует алгоритм с дополнительным рабочим для хранения отрицательной суммы всех потенциалов.
-
Интерпретация матрицы
- Существует альтернативная интерпретация алгоритма, которая работает с матрицей затрат вместо отслеживания потенциалов вершин.
- Эта интерпретация позволяет оптимизировать алгоритм для работы в O(n4) время.
- Пересказана только часть статьи. Для продолжения перейдите к чтению оригинала.
Полный текст статьи: