S t

advertisement
ПРИБЛИЖЕННЫЕ АЛГОРИТМЫ
Задачи
Запишем оптимизационную задачу в виде
min
{c( S ) : v( S )  k}
S N
Например, булеву задачу о ранце
n
n
j 1
j 1
min { c j x j :  a j x j  b}
xB n
можно переписать, введя функции
c( S )   c j , v ( S )   a j
jS
и положив k = b.
Предположим v(S  {j})  v(S)  0
jS
Жадный алгоритм
Жадный алгоритм (greedy algorithm) состоит из итераций, общее
число кот.  L. На каж. итерации t по текущему решению St
строится новое решение. Предположим, что  является недоп. и
положим c() = +.
Шаг 1. Положить начальное решение S0 =  и t = 1.
c( S t 1  { j})  c( S t 1 )
Шаг 2. Найти jt  arg min
jS
v( S t 1  { j})  v ( S t 1 )
t 1
Шаг 3. Если реш. St-1 явл. доп., а зн. ц.ф. не уменьшилось (т.е. c(St1{j }) – c(St-1)  0), то положить SG = St-1 и остановить алг.
t
Шаг 4. Положить St = St-1{jt}. Если решение St доп., а зн. ц.ф. не
уменьшилось, или t=L, то положить SG = St и остановить алг.
Шаг 5. Если t=L, и не найдено ни 1 доп. реш., то остановить алг.
Шаг 6. Положить t=t+1 и перейти на шаг 2.
Пример
З. размещения: c( S )   min cij   ci , v( S ) | S | 1
jJ
iS
iS
n=|I|=4, m=|J|=6, c=(21,16,11,24)
 6 1 15 9 7 4 


 2 9 2 11 23 3 
(cij )  
3 4 6 4 2 1


 4 11 3 8 9 5 
Шаг 1. S0=, t=1 (S0  недоп.
мн.  c(S0) = +).
Шаг 2. c(1)= 63, c(2)= 66,
c(3)= 31, c(4)= 64  jt= 3.
Шаг 4. S1=S0{3}={3} – доп.
мн. Зн. c(S1)= 31 уменьш.
Шаг 6. t=t+1=2 и – на шаг 2.
Шаг 2. c(1,3) – c(3)=18, c(2,3) – c(3)=11, c(3,4) – c(3)=11.
Шаг 3. Функционал не уменьшается
 полагаем SG =S1={3} – решение, построенное жадным алг.
Стоп.
Жадный алг. должен быть адаптирован…
Для КМ  «иди в ближайший город, где еще не был»…
Локальный поиск
Для описания алг. лок. поиска (local search) перепишем з. в виде:
min {c( S ) : g ( S )  0},
SN
где g(S)  0 назовем мерой недопустимости множества S.
Так v(S)  k переписывается: g(S)=(k – v(S))+, где a+ = max{0,a}.
Для алг. лок. поиска необходимо определить:
 решение S  N,
 окрестность решения Q(S)
 функцию цели f(S).
Функция f(S) может = c(S), если S доп., или + в прот. сл.
Или можно положить f(S)=c(S)+ag(S), при нек. a > 0.
Пусть S нек. начальное решение (не обязательно доп.). Алг. лок.
поиска состоит из повторения однотипных итераций.
Локальный поиск
Итерация. Найти мн. S Q(S) : f(S ) < f(S).
Если такого мн. нет, то алг. останавливается, решение SH = S явл.
лок. оптимумом. Иначе, положить S = S и повторить итерацию.
Выбор подходящей окрестности реш. зависит от решаемой задачи.
1 из простых способов опред. окрестности – это добавление или
удаление 1 элемента. Такая окрестность содержит O(n) элементов.
Другой способ опред. окрестности, применимый в случае, когда
все доп. мн. одной мощности  это замена 1 элемента из S другим,
кот.  S. Такая окрестность имеет O(n2) решений.
Локальный поиск
Иногда решения из окрестности Q(S) отличаются от текущего
решения S 2 элементами. Например, для КМ не  ГЦ, кот.
отличался бы от другого ГЦ 1 ребром. Если же удалить 2 ребра
ГЦ, то ! другой ГЦ, содержащий оставшиеся ребра. На этом
свойстве основан 1 из алг. приближенного решения КМ на полном
графе. В алг. лок. поиска для решении симметричной КМ, если S
является гам. циклом, то окрестность этого решения
Q ( S )  {S   гамильтоно в цикл : S   S , | S   S |  n  2},
а функция цели f ( S )   ce
eS
Полученное после остановки алг. решение наз. 2-opt туром.
Поиск с запретами
Основной недостаток л.п.  остановка в точке лок. оптимума.
Метаэвристики…
Поиск с запретами (tabu search) использует историю поиска
решений. Чтобы покинуть окрестность лок. opt, разрешается
осуществлять переход к след. решению окрестности, даже если
оно хуже (по функционалу) предыдущего.
Недостаток  возм. зацикливание, когда происходит возврат к уже
просмотренному ранее решению.
Чтобы избежать зацикливания, определенные решения, или
переходы от решения к решению объявляются запрещенными
(табу). Для этого создается и хранится «список запретов» (СЗ), в
кот. помещается информация о последних решениях, или
последних изменениях решений.
Поиск с запретами
Шаг 1. Положить СЗ = .
Шаг 2. Найти нач. решение S.
Шаг 3. Пока не вып. крит. остановки, выполнить шаги 3.1–3.3.
3.1. В окрест. текущего реш. S найти подмн. не запрещ. реш.
Q(S)  Q(S).
3.2. Выбрать S=argmin{f(s) : sQ(S)}.
3.3. Заменить S на S и обновить СЗ.
При вып. крит. остановки, лучшее найденное реш. – результат
работы алг.
Для реализации алг. следует определить:
 окрестность Q(S),
 СЗ, способ задания запретов,
 критерий остановки (можно задать max число итераций)
Поиск с запретами
Пример окрестности
Q(S) = {s  V : s =(S \ {i})  {j}, i  S, j  V \ S},
получаемую заменой 1 элемента другим.
СЗ может содержать последние t исключенных элементов
{i1,…,it} и последние t добавленных элементов {j1,…,jt}.
Решение sQ(S) является запрещенным, если s={S\{ip}}{j} для
некот. p=1,…,t,
или s={S\{i}}{jq} для некот. q=1,…,t.
Имитация отжига
В методе «имитация отжига» (simulated annealing) новое решение
замещает текущее всегда, если оно лучше (по целевой функции), и
с некоторой вероятностью, зависящей от параметра, кот. принято
называть температурой, если целевая функция на нем хуже.
Вероятность перехода к худшему решению обратно
пропорциональна величине увеличения значения функционала на
новом решении и прямо пропорциональна температуре.
Для сходимости метода на каждой последующей итерации
вероятность перехода к худшему решению уменьшается. Это
обеспечивается уменьшением температуры (остыванием).
Формально схему метода можно записать, например, след. обр.
Имитация отжига
Шаг 1. Найти начальное решение S.
Шаг 2. Задать начальную температуру T и коэффициент
остывания r  (0,1).
Шаг 3. Пока температура достаточно высока (T  Tmin), выполнить
шаги 3.1–3.2.
3.1. Выполнить шаги 3.1.1–3.1.4 L раз.
3.1.1. Выбрать случайно решение S из окрестности Q(S).
3.1.2. Вычислить  = f(S ) – f(S).
3.1.3. Если   0, то положить S = S .
3.1.4. Если  > 0, то положить S = S с вероятностью e/T.
3.2. Положить T = Tr. (Уменьшить температуру.)
Шаг 4. Запомнить лучшее из найденных решений.
Конкретизация алг. зависит от специфики решаемой задачи. При
этом требуется найти нач. доп. решение, определить нач. темп. T,
скорость остывания r, число циклов L и критерий остановки.
Генетический алгоритм
Генетический алг. на каж. итер. ищет не 1 новое решение, а целую
популяцию (мн.) решений {S1,…,Sn}. Популяция развивается
случайным образом, переходя от 1 поколения к следующему.
Каж. итерация алг. состоит из след. шагов.
Оценка. Оцен. пригодность (качество) каж. члена популяции.
Выбор родителей. На осн. качеств выбираются пары решений
(родители).
Скрещивание. Каж. пара родителей используется для создания 1
или 2 новых решений (потомков).
Мутация. Некот. потомки изменяются (модифицируются) случ.
образом.
Выбор популяции. На осн. качеств особей, выбирается новая
популяция, кот. частично или полностью заменяет предыдущую,
сохраняя общее количество элементов n.
Генетический алгоритм
Оценка. Для оценки качества решения S можно использовать 1
функционал f(S) или пару функций: стоимость c(S) и степень
недопустимости g(S).
Выбор родителей. Родителей можно выбирать случайно
пропорционально их качеству. Например, решение Si может быть
выбрано в качестве родителя с вероятностью
1
f ( Si )
.
n
 f (S
j 1
j
)
Скрещивание
При скрещивании используются разл. способы комбинации 2
решений. Пусть каж. решение S представимо в виде строки
S=x1x2 … xr, где xi – символы нек. конеч. алфавита.
Приведем 3 способа комбинации подобных строк.
1-скрещивание. Задано 2 строки x1x2 … xr и y1y2 … yr, а также
целое число p{1,…,r1}. 2 потомка – это решения:
x1 … xpyp+1 … yr и y1 … ypxp+1 … xr .
2-скрещивание. Заданы 2 строки x1x2 … xr и y1y2 … yr, а также
целые числа p,q{1,…,r1}, p<q. 2 потомка – это строки
x1 … xpyp+1 … yqxq+1 … xr и y1 … ypxp+1 … xqyq+1 … yr .
Равномерное скрещивание. Задано 2 строки x1x2 … xr и
y1y2 … yr. Результат скрещивания z1z2 … zr, где каж. элемент zi
случ. выбран из пары {xi, yi}, i=1,…,r.
Мутация
Простая мутация решения z1z2 … zr  это случ. выбор номера
p{1,…,r}, а также символа m, и замена элемента zp символом m.
Эта операция приводит к решению
z1 … zp-1mzp+1 … zr.
Перекрестная мутация – это перестановка случ. выбранных
элементов zp и zq, приводящая к новому решению
z1 … zp-1zqzp+1 … zq-1zpzq+1 … zr.
Анализ точности приближенных алгоритмов
2 основных подхода:
1. Апостериорный анализ. Решается достаточно большое
количество инд. задач и вычисляется отклонение функционала
на построенных приближенным алг. решениях от opt зн. ц.ф.
или оценки оптимума.
2. Априорный анализ. Ищется гарантированная оценка
погрешности, кот. справедлива  инд. задач и  известна
заранее, т.е. до применения алг. (априори).
Аппроксимационная схема
Пусть рассматривается opt задача P.  инд. з. I  P обоз.:
W*(I)  opt зн. ц.ф.,
WA(I) – зн. ф. на решении, построенном алг. A.
Алг. A является аппроксимационной схемой для з. P, если  инд.
з. I  P и   ≥ 0 алг. A строит доп. решение з. I с гарантированной
оценкой отн. погрешности
| WA ( I )  W * ( I ) |

*
W (I )
Полиномиальные аппроксимационные схемы
Аппр. схема наз. полиномиальной (PTAS – Polynomial Time
Approximation Scheme), если  фикс. зн.  труд. алг.  полиномом
от длины входа з.
В частности, если T  O(21/  p(| I |)),
где p полином, а |I| вход. длина з. I, то такой алг. является PTAS.
Аппр. схема наз. вполне полиномиальной (FPTAS – Fully
Polynomial Time Approximation Scheme), если труд. алг. 
полиномом от длины входа и величины 1/.
WA ( I )
Для оценки погрешности используют также отношение
W *(I )
Тогда если решается з. на min, то для оценки погрешности следует
искать ВГ для этого отношения. В случае же поиска max ф.,
интерес представляет оценка величины отношения снизу.
Субоптимальные решения
Доп. решение, имеющее гарантированную оценку отн. погр.
 = const, наз. -приближенным или субоптимальным.
APX – класс задач NPO, для которых  полиномиальный алгоритм
с гарантированной оценкой
Отношение между классами
NP
Псевдополиномиальные
алгоритмы
APX
PTAS
FPTAS
P
Задача о ранце
n
n
j 1
j 1
z  max{ c j x j :  a j x j  b},
*
xZ n
c1 c j
Предположим, что aj  b и

a1 a j
Тогда жадный алг.  x H  ( b / a1 , 0, ..., 0)
T = M = O(n)
и zH = cxH
zH 1
 .
Теорема. Имеет место априорная оценка:
*
z
2
Доказательство. Если отказаться от целочисл. переменных, то
решением релаксированной з. явл. вектор с координатами x1=b/a1,
xj=0, j 2, и z LP  c1b / a1  z * . Т.к. aj  b, то b / a1   1.
Положим b / a1  b / a1   f . Из f < 1  f  b / a1  
1
z H z H c1 b / a1  1
b / a1   b / a1  
b / a1 
  *  LP 

b / a1
z
z
c1b / a1
2
b / a1   f b / a1   b / a1  2
Задача коммивояжера
Граф G = (V, E) наз. эйлеровым, если степени всех его в. четные.
Лемма. Если G = (V, E)  связный эйлеров граф и vV  произв. в.,
то  обход, начинающийся и заканчивающийся в v, в кот.  ребро
графа встречается 1 раз.
Теорема. Пусть задан полный взвешенный гр. H с мн. в. V, в кот.
веса ребер удовл.  . Пусть G=(V,E) – связный эйлеров подгр. гр.
H. Тогда гр. H содержит ГЦ длины   ce .
eE
Доказательство. Пусть m = |E| и v=v0,e1,v1,e2,…,em,vm=v – обход
всех ребер графа G, в кот. каж. р. ei=(vi-1,vi) встречается 1 раз.
Рассм. список в. в пор. их появления в обходе v0,v1,…,vm. Пусть
vik – k-я по счету в. обхода отлич. от предыдущих. Тогда посл.
v  vi1 , vi2 ,..., vin , vin1  v – ГЦ. Оценим его длину.
Задача коммивояжера
Из    длина пути между в.
f k  (vi , vi ) 
k
k 1
ik 1
c
j ik 1
ej
 cf
k
vi

k
и vik 1  циклу ≥ длины ребра
n
c
k 1
n
fk

ik 1
c
k 1 j ik 1
ej
  ce .
eE
Построим реш. КМ с помощью алг., кот. состоит из след. шагов.
Шаг 1. В исх. гр. найти остов min веса T. Пусть он содержит ребра
ET и его вес zT   ce .
eET
Шаг 2. Продублировать каж. ребро мн. ET, чтобы получить
связный эйлеров граф.
Шаг 3. Построить ГЦ из эйлерова обхода, как это было сделано
выше. Пусть длина построенного цикла равна zH.
T=M=O(n2)
Задача коммивояжера
3
1
2
4
5
Задача коммивояжера
3
1
2
4
5
Задача коммивояжера
Теорема. Справедлива оценка
zH
* – opt зн. ц.ф. КМ.
где
z

2
,
z*
Доказательство. Если из ГЦ исключить 1 ребро, то получится
цепь, кот. явл. частным случаем остова  zT  z*.
Вес построенного Эйлерова графа = 2zT.
Согласно  , длина постр. ГЦ имеет верхнюю оценку zH  2zT 
z H 2 zT

2
*
z
zT
Приведем еще 1 приближенный алг., кот. основан на
использовании min остова и совершенного паросочетания min
веса.
Задача коммивояжера
Шаг 1. В исх. гр. найти min остов (V,ET). Пусть его вес zT 
c .
eET
Шаг 2. Пусть V  мн. в. построенного дерева с нечетными
степенями. Заметим, что |V| четно (это известное свойство,
основанное на том, что  степеней в. графа четна.)
Найти совершенное пар. M min веса zM в гр. G=(V,E), где E  E,
оба конца кот.V. Тогда (V, ET M)  связ. эйлеров граф.
Шаг 3. Используя процедуру построения ГЦ, описанную выше,
находим ГЦ. Обозначим его длину zC.
e
Задача коммивояжера
3
1
2
4
5
Задача коммивояжера
C
z
3
Теорема. Имеет место неравенство * 
z
2
Доказательство. Очевидно, zT  z*. Предположим, что opt цикл
– {1,2,…,n}. Пусть в. j1,j2,…,j2k V упорядочены в порядке
увеличения номеров. Рассмотрим совершенные паросочетания
3 j3
M1 = {(j1, j2), (j3, j4), …, (j2k-1, j2k)} веса
j1
1
zM
M2 = {(j2, j3), (j4, j5), …, (j2k-2, j2k-1), (j2k, j1)}
веса z M 2
2
j2
4
j4
5
1
Задача коммивояжера
Из   
n 1
c j , j  c j , j  ...  c j
1
2
2
2 k , j1
3
  ci ,i 1  cn ,1  z
*
i 1
Т.к. zM  zM i, i = 1, 2, то
2 z M  z M  z M  c j , j  c j , j  ...  c j
1
2
1
2
1
2
*
z
3 *
C
*
z  zT  z M  z   z
2 2
2k
, j1
z
*
Download