Венгерский алгоритм

Оглавление1 Венгерский алгоритм1.1 Обзор венгерского алгоритма1.2 Алгоритм венгерского алгоритма1.3 Временная сложность1.4 Реализация на C++1.5 Интерпретация матрицы2 Венгерский алгоритм — Википедия […]

Венгерский алгоритм

  • Обзор венгерского алгоритма

    • Венгерский алгоритм – это алгоритм для решения задачи о назначении, который был разработан в 1955 году. 
    • Задача о назначении заключается в распределении заданий между работниками с учетом затрат на выполнение каждого задания. 
    • Алгоритм был разработан для решения задачи о назначении в условиях, когда количество заданий превышает количество работников. 
  • Алгоритм венгерского алгоритма

    • Алгоритм начинается с определения набора заданий, которые могут быть выполнены каждым работником. 
    • Затем определяется набор работников, которые могут выполнить каждое задание. 
    • Потенциалы вершин графа назначений обновляются, чтобы минимизировать общую стоимость назначений. 
    • Алгоритм завершается, когда все задания распределены между работниками. 
  • Временная сложность

    • Алгоритм имеет временную сложность O(n3), когда количество рабочих мест и работников примерно равны. 
    • Если количество рабочих мест значительно меньше, чем количество работников, то временная сложность может быть улучшена до O(J2W). 
  • Реализация на C++

    • Приведен пример кода на C++, который реализует алгоритм с дополнительным рабочим для хранения отрицательной суммы всех потенциалов. 
  • Интерпретация матрицы

    • Существует альтернативная интерпретация алгоритма, которая работает с матрицей затрат вместо отслеживания потенциалов вершин. 
    • Эта интерпретация позволяет оптимизировать алгоритм для работы в O(n4) время. 
    • Пересказана только часть статьи. Для продолжения перейдите к чтению оригинала. 

Полный текст статьи:

Венгерский алгоритм — Википедия

Оставьте комментарий

Прокрутить вверх