Jump to content

Эвристика Лина – Кернигана

В комбинаторной оптимизации эвристика Лина -Кернигана является одной из лучших эвристик для решения симметричной задачи коммивояжера . [ нужна ссылка ] Он принадлежит к классу алгоритмов локального поиска , которые принимают обход ( гальтонов цикл ) как часть входных данных и пытаются улучшить его путем поиска в окрестности заданного обхода более короткого обхода, а после его нахождения повторяют процесс. от этого нового до тех пор, пока не встретим локальный минимум. Как и в случае связанных алгоритмов с 2 и 3 опциями , соответствующей мерой «расстояния» между двумя обходами является количество ребер , которые находятся в одном, но не находятся в другом; новые туры строятся путем повторной сборки частей старого тура в другом порядке, иногда меняя направление прохождения подтура. Лин-Керниган является адаптивным и не имеет фиксированного количества ребер, которые нужно заменить на шаге, но предпочитает небольшие числа, такие как 2 или 3.

Для данного экземпляра В задаче коммивояжера туры однозначно определяются набором ребер, поэтому мы можем также закодировать их как таковые. В основном цикле локального поиска у нас есть текущий тур. и ищем новый тур такая, что симметричная разность не слишком велик, а длина нового тура меньше продолжительности текущего тура. С обычно намного меньше, чем и , удобно рассматривать величину

выгода от использования при переключении с

с : насколько продлится текущий тур это чем новый тур . Наивно -opt можно рассматривать как проверку всех точно с элементы ( в но не в и еще один в но не в ) такой, что это снова тур, поиск такого набора, который имеет . Однако проще провести эти тесты в обратном порядке: сначала найдите правдоподобные с положительным выигрышем и только вторую проверку, если по сути это тур.

Определите маршрут в быть чередующимся (по отношению к ), если его ребра попеременно находятся в и не в , соответственно. Поскольку подграфы и являются - обычный , подграф будут иметь вершины степени , , и только и в каждой вершине имеется столько же ребер, инцидентных из как есть из . Отсюда (по сути, по алгоритму Хирхольцера поиска эйлеровых схем ) граф распадается на замкнутые чередующиеся следы. Наборы что может удовлетворить для какого-то тура таким образом, может быть найден путем перебора замкнутых чередующихся маршрутов в , пусть даже не каждая замкнутая попеременная тропа делает в тур; альтернативно это может оказаться отключенным -регулярный подграф.

Основная идея

[ редактировать ]

Альтернативные тропы (закрытые или открытые) строятся путем удлинения более короткой чередующейся тропы, поэтому при исследовании окрестностей текущего тура , мы исследуем дерево поиска чередующихся маршрутов. Ключевая идея алгоритма Лина-Кернигана состоит в том, чтобы удалить из этого дерева все чередующиеся маршруты, имеющие коэффициент усиления. . Это не мешает находить каждый закрытый след с положительным выигрышем благодаря следующей лемме.

Лемма. Если числа такие, что , то существует циклическая перестановка этих чисел такая, что все частичные суммы также положительны, т. е. существует некоторая такой, что

для всех .

Для закрытой попеременной трассы , можно определить если и если ; сумма тогда это выигрыш . Здесь из леммы следует, что для каждого замкнутого знакопеременного маршрута с положительным коэффициентом усиления существует хотя бы одна стартовая вершина. для которого все выигрыши частичных трасс также положительны, поэтому будет найден, когда поиск исследует ветвь чередующихся маршрутов, начинающуюся с . (До этого поиск мог учитывать и другие следы начиная с других вершин, но отступая, потому что какой-то подканал не соответствует положительному ограничению усиления.) Уменьшение количества исследуемых ветвей напрямую приводит к сокращению времени выполнения, и чем раньше ветвь можно будет обрезать, тем лучше.

Это дает следующий алгоритм для поиска всех замкнутых, чередующихся следов положительного усиления на графике.

Состояние: стопка троек , где является вершиной, - текущее количество ребер в следе, а это текущий коэффициент усиления следа.
  1. Для всех , толкать в стек.
  2. Пока стек непустой:
    1. Поп сними со стека и позволь . Текущий альтернативный маршрут теперь .
    2. Если даже тогда:
      Для каждого такой, что (их не более двух), нажмите в стек.
    3. Если вместо этого тогда странно:
      1. Если затем сообщите как замкнутый переменный след с усилением .
      2. Для каждого такой, что и (может быть из них, или их не может быть), нажмите в стек.
  3. Останавливаться

Как алгоритм перебора он имеет некоторые недостатки, поскольку он может сообщать об одном и том же следе несколько раз с разными отправными точками, но Лина-Кернигана это не волнует, поскольку он обычно прерывает перебор после обнаружения первого совпадения. Однако следует отметить, что:

  • Лин-Керниган не удовлетворен тем, что нашел замкнутый альтернативный след. положительного выигрыша, это дополнительно требует, чтобы это тур.
  • Лин-Керниган также различными способами ограничивает поиск, особенно в отношении глубины поиска (но не только в этом отношении). Вышеупомянутый неограниченный поиск все равно завершается, поскольку при в нем больше не осталось невыбранного края , но это выходит далеко за рамки того, что практически возможно исследовать.
  • В большинстве итераций хочется быстро найти лучший тур. , поэтому вместо того, чтобы фактически перечислять всех братьев и сестер в дереве поиска перед исследованием первого из них, можно лениво сгенерировать этих братьев и сестер.

Базовый алгоритм Лина – Кернигана

[ редактировать ]

Базовая форма алгоритма Лина-Кернигана не только выполняет локальный поиск, аналог приведенного выше перечисления, но также вводит два параметра, которые сужают поиск.

  • Глубина возврата — верхняя граница длины переменного следа после возврата; за пределами этой глубины алгоритм исследует не более одного способа расширения чередующегося следа. Стандартное значение заключается в том, что .
  • Глубина неосуществимости — это переменная длина пути, после которой начинает требоваться, чтобы закрытие текущего следа (независимо от выигрыша от этого) приводило к переходу на новый тур. Стандартное значение заключается в том, что .

Потому что есть чередующиеся дорожки длины , и в последнем раунде алгоритма, возможно, придется проверить их все, прежде чем прийти к выводу, что текущий тур является локально оптимальным, мы получим (стандартное значение ) как нижнюю границу показателя сложности алгоритма. Отчет Лина и Кернигана как эмпирический показатель в среднем общем времени работы их алгоритма, но у других разработчиков возникли проблемы с воспроизведением этого результата. [ 1 ] Маловероятно, что время работы в худшем случае будет полиномиальным. [ 2 ]

С точки зрения стека, как указано выше, алгоритм следующий:

Входные данные: экземпляр задачи коммивояжера и экскурсия
Результат: локально оптимальный тур.
Переменные:
стопка троек , где является вершиной, - текущее количество ребер в следе, а текущий коэффициент усиления следа,
последовательность вершин в текущем чередующемся маршруте,
лучший набор ребер обмена, найденных для текущего тура, и соответствующий выигрыш .
Инициализируйте стек как пустой.
Повторить
Набор и .
Для всех , толкать в стек.
Пока стек непустой:
Поп сними со стека и позволь .
Если даже тогда
для каждого такой, что ,
толкать в стек, если: , или и тур (проверка гамильтоничности)
еще ( странно):
Если , , и является туром (проверка гамильтоничности), тогда пусть и .
Для каждого такой, что и , толкать в стек.
Конец, если.
Позволять быть верхним элементом стека (просматривать, а не выталкивать). Если затем
если затем
набор (обновить текущий тур) и очистить стек.
еще если затем
вытащить все элементы из стека, у которого есть
конец, если
конец, если
закончиться, пока
до .
Возвращаться

Таким образом, длина рассматриваемых альтернативных маршрутов не ограничена явно, но выходит за пределы глубины обратного отслеживания. рассматривается не более одного способа расширения текущего следа, что в принципе не позволяет этим исследованиям повышать показатель сложности во время выполнения.

Ограничения

[ редактировать ]

Все замкнутые чередующиеся следы, найденные описанным выше методом, связаны, но симметричная разность двух туров быть не должно, поэтому, как правило, этот метод чередования маршрутов не может исследовать всю окрестность маршрута. . В литературе по эвристике Лина-Кернигана используется термин последовательные обмены для тех, которые описываются одним чередующимся следом. Однако наименьший непоследовательный обмен заменит 4 ребра и будет состоять из двух циклов по 4 ребра в каждом (2 ребра добавлены, 2 удалены), поэтому он длинный по сравнению с типичным обменом Лина-Кернигана, и их немного по сравнению с обменом Лина-Кернигана. полный набор 4-реберных обменов.

По крайней мере, в одной реализации Лина и Кернигана был дополнительный заключительный шаг, рассматривающий такие непоследовательные обмены 4 ребрами, прежде чем объявлять тур локально оптимальным, что означало бы, что созданные туры являются 4-опционными, если не вводить дополнительные ограничения на поиск ( что на самом деле сделали Лин и Керниган). В литературе неясно, что именно входит в собственно эвристику Лина-Кернигана и что представляет собой дальнейшие усовершенствования.

Для асимметричного TSP идея использования чередующихся маршрутов с положительным выигрышем для поиска выгодных разменов менее полезна, поскольку существует меньше способов перестановки частей тура для получения новых туров, когда невозможно изменить ориентацию фигуры. Две части можно соединить только для воспроизведения оригинального тура. Три части могут быть соединены вместе, чтобы сформировать другой тур только одним способом, и соответствующий чередующийся маршрут не расширяется до закрытого маршрута для перестановки четырех частей в новый тур. Чтобы переставить четыре фигуры, нужен непоследовательный обмен.

Проверка гамильтоновости

[ редактировать ]

Эвристика Лина-Кернигана проверяет достоверность кандидатов на тур. в двух точках: очевидно, при принятии решения о том, найден ли лучший тур, но также и в качестве ограничения для спуска по дереву поиска, что контролируется глубиной недопустимости. . Конкретно, на большей глубине при поиске вершины добавляется к альтернативному следу только в том случае, если это тур. По замыслу этот набор ребер представляет собой 2-фактор в , поэтому необходимо определить, состоит ли этот 2-фактор из одного гамильтонова цикла или вместо этого состоит из нескольких циклов.

Если наивно представить эту подзадачу как задание подпрограмме набора края в качестве входных данных, в итоге получается как временная сложность этой проверки, поскольку необходимо пройти весь обход, прежде чем определить, что это на самом деле гамильтонов цикл. Это слишком медленно для второго использования этого теста, который выполняется для каждого чередующегося следа с более чем края от . Если отслеживать дополнительную информацию, тест можно проводить за постоянное время.

Полезная степень свободы здесь заключается в том, что можно выбрать порядок, в котором шаг 2.3.2 перебирает все вершины; в частности, можно проследить за известным туром . После выбора края от , оставшийся подграф состоит из пути. Результаты теста гамильтоновости, проведенного при рассмотрении й край зависит только от того, на каком из этих путей произойдет проживает и есть ли это до или после . Следовательно, достаточно было бы изучить различных случаях в рамках выполнения шага 2.3.2 для ; насколько Что касается этого, то результатом этого теста может быть унаследованная информация, а не что-то, что нужно вычислять заново.

  1. ^ Меламед II; Сергеев С.И.; Сигал, И.Х. (1989). «Задача коммивояжера. Приближенные алгоритмы». Автоматика и телемеханика . 11 :3–26.
  2. ^ Пападимитриу, CH (1992). «Сложность эвристики Лина – Кернигана для задачи коммивояжера». SIAM Journal по вычислительной технике . 21 (3): 450–465. дои : 10.1137/0221030 .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: c65f33df094c77e2e38f5316e7c4377a__1689041700
URL1:https://arc.ask3.ru/arc/aa/c6/7a/c65f33df094c77e2e38f5316e7c4377a.html
Заголовок, (Title) документа по адресу, URL1:
Lin–Kernighan heuristic - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)