Введение

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

Подъем на холм

Наиболее простая форма локального поиска основана на выборе изменения, которое максимально уменьшает стоимость решения. Этот метод, называемый методом подъёма на холм, выполняется следующим образом: сначала выбирается случайное присваивание, затем изменяется значение, чтобы максимально улучшить качество полученного присваивания. Если после заданного числа изменений решение не найдено, выбирается новое случайное присваивание. Алгоритмы подъёма на холм могут покинуть плато только за счёт изменений, не влияющих на качество присваивания. В результате они могут застрять на плато, где качество присваивания достигает локального максимума. GSAT (greedy sat) был первым алгоритмом локального поиска для задачи выполнимости и является разновидностью метода подъёма на холм.

Метод взвешивания или прорыва ограничений

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

Табу поиск

Недостатком восхождения на холм с ходами, не приводящими к уменьшению стоимости, является то, что алгоритм может зацикливаться на наборах назначений с одинаковой стоимостью. Поиск с запретами (Tabu Search) решает эту проблему, поддерживая список "запрещенных" назначений, называемый списком табу. Как правило, список табу содержит только самые недавние изменения. Более точно, он содержит последнюю пару "переменная-значение", где переменной было недавно присвоено данное значение. Этот список обновляется при каждом изменении назначения. Если переменной присваивается значение, пара "переменная-значение" добавляется в список, а самая старая пара удаляется. Таким образом, список содержит только самые последние назначения для каждой переменной. Если пара "переменная-значение" находится в списке табу, то изменение текущего назначения путем присвоения переменной этого значения запрещено. Алгоритм может выбирать только лучший ход среди тех, которые не запрещены. Это предотвращает зацикливание на одном и том же решении, если только количество ходов в цикле не превышает длину списка табу.

Случайная прогулка

Алгоритм случайного блуждания иногда движется как жадный алгоритм, но иногда движется случайным образом. Это зависит от параметра , который является действительным числом между 0 и 1. На каждом шаге, с вероятностью алгоритм действует как жадный алгоритм, стремясь максимально уменьшить стоимость назначения. Однако с вероятностью решение изменяется другим способом, включающим в себя некоторую долю случайности.

WalkSAT

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

Симулированное отжигание

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

Локальный поиск на велосипедном фургоне

Локальный поиск обычно применяется ко всем переменным, улучшая полное назначение для них. Однако локальный поиск также может выполняться на подмножестве переменных, используя другой механизм для остальных переменных. Предлагаемый алгоритм работает с цикличным разрезом – множеством переменных, удаление которых из задачи делает её ациклической. Для любого назначения переменных циклического разреза, оставшаяся задача имеет лес в качестве примитивного графа. Как следствие, её можно эффективно решить. Для управления локальным поиском вместо алгоритма проверки выполнимости на лесной части задачи используется алгоритм, определяющий минимальное количество нарушаемых ограничений. Это минимальное число находится путем вычисления стоимости каждого назначения переменной. Эта стоимость представляет собой минимальное количество ограничений, нарушаемых назначением переменных в поддереве, укорененном в данной переменной, при её текущем значении. Эту стоимость можно вычислить следующим образом. Если обозначает стоимость назначения, а – дочерние элементы , то выполняется следующая формула. В этой формуле равно 0 или 1 в зависимости от того, нарушает ли назначение ограничение между и . Стоимость для переменных в циклическом разрезе равна нулю, и предполагается, что эти переменные могут принимать только заданное значение. При этих предположениях вышеуказанная формула позволяет вычислить стоимость всех оценок переменных, итеративно продвигаясь снизу вверх от листьев к корням леса. Стоимость оценок переменных может быть использована локальным поиском для вычисления стоимости решения. Стоимость значений корней леса действительно является минимальным количеством нарушенных ограничений в лесу для этих заданных значений. Эти стоимости, следовательно, могут быть использованы для оценки стоимости назначения переменным циклического разреза и для оценки стоимости аналогичных назначений переменным циклического разреза.