Transcript Document

Приближенные алгоритмы
Комбинаторные алгоритмы
1
Объект исследования
NP-трудные задачи
оптимизации
2
Оптимизационная задача
Оптимизационная задача Π есть либо задача
минимизации, либо задача максимизации и
состоит из
• множества ΩΠ индивидуальных задач;
• для каждой I  ΩΠ конечного множества SolΠ
допустимых решений индивидуальной задачи I ;
• функции hΠ , сопоставляющей каждой
индивидуальной задаче I  ΩΠ и каждому
допустимому решению σ  SolΠ некоторое
рациональное число y(I, σ), называемое
величиной решения σ.
3
Оптимальное решение
• Если Π ― задача минимизации, то оптимальным
решением индивидуальной задачи I  ΩΠ
является такое допустимое решение σ*  SolΠ ,
что для всех σ  SolΠ выполнено неравенство
y(I, σ*) ≤ y(I, σ).
• Для обозначения величины y(I, σ*) оптимального
решения индивидуальной задачи I будет
использоваться символ OPT(I).
4
NP-трудная задача
• Задача Π является NP-трудной, если к ней
сводится некоторая NP-полная задача.
• Существование точного полиномиального
алгоритма для NP-трудной задачи влечет P
= NP.
Почти все интересные дискретные
оптимизационные задачи ― NP-трудны.
5
Что делать с NP-трудными
задачами?
• Решать точно «переборными» алгоритмами
• Решать приближенно
– с апостериорной оценкой точности
– с априорной оценкой точности
Мы будем строить приближенные
полиномиальные алгоритмы
с априорной оценкой точности.
6
Приближенный алгоритм
Полиномиальный алгоритм A называется
ρ-приближенным алгоритмом для
задачи минимизации Π, если для каждой
индивидуальной задачи I  ΩΠ ,
A(I) ≤ ρOPT(I).
7
Полиномиальная приближенная
схема (PTAS)
Семейство приближенных алгоритмов для
задачи Π, {Aε}ε называется
полиномиальной приближенной схемой,
если алгоритм Aε ― (1+ε)-приближенный
алгоритм и время его работы ограничено
полиномом от размера входа при
фиксированном ε.
8
Вполне полиномиальная
приближенная схема (FPTAS)
Семейство приближенных алгоритмов для
задачи Π, {Aε}ε называется вполне
полиномиальной приближенной схемой,
если алгоритм Aε ― (1+ε)-приближенный
алгоритм и время его работы ограничено
полиномом от размера входа и 1/ε.
9
Алгоритм
• Как построить приближенный алгоритм?
– Изучение комбинаторной структуры задачи.
– Изучение свойств оптимального решения.
– Поиск алгоритмической техники, которая
использует эти свойства.
• Обобщение и расширение техники и
опыта, накопленного при построении
полиномиальных алгоритмов.
10
Задача линейного программирования
z  x   c1 x1    c n x n  min
a 11 x1    a 1 n x n  b1

a m 1 x1    a mn x n  b m
x i  0 for i  1,  , n .
11
Полиномиально разрешимые задачи
• Задача об остовном дереве минимального
веса
• Задача о максимальном потоке
• Задача о максимальном паросочетании
• Задача о k-факторе минимального веса
●●●
12
Вопрос о качестве алгоритма
• Как оценить качество алгоритма?
• Сравнить стоимость получаемых решений
со стоимостью оптимального решения.
• Найти стоимость оптимального решения
также сложно, как и само оптимальное
решение.
13
Как оценить качество алгоритма?
• Найти «хорошую» полиномиально
вычислимую нижнюю оценку на
стоимость оптимального решения.
14
Задача «Вершинное покрытие
наименьшей мощности»
• Дано: Связный граф G = (V, E).
• Найти вершинное покрытие наименьшей
мощности.
15
Максимальное паросочетание
Дан граф G = (V, E), подмножество ребер M  E
называется паросочетанием, если никакие два ребра из M
не смежны, то есть не имеют общей граничной точки.
• Паросочетание максимальное по включению.
• Паросочетание максимальное по мощности.
Размер паросочетания максимального по включению
является нижней границей на стоимость оптимального
решения задачи «Вершинное покрытие наименьшей
мощности».
16
Алгоритм «Простой»
1. Найти в графе G произвольное
паросочетание M максимальное по
включению.
2. Выдать множество вершин,
попавших в паросочетание M.
17
Оценка качества алгоритма «Простой»
Теорема 4.1
Алгоритм «Простой» является 2-приближенным
алгоритмом для задачи «Вершинное покрытие
наименьшей мощности».
18
Качество анализа, нижней оценки,
…
•
Можно ли за полиномиальное время получать
решение с гарантированной оценкой лучше чем 2?
– Можно ли улучшить анализ качества алгоритма
«Простой»?
– Можно ли построить алгоритм, который всегда
находит решение с оценкой лучше чем 2 от
предложенной нижней границы?
– Существует ли другой алгоритм с
гарантированной оценкой лучше чем 2?
19
Точность оценки
20
Качество анализа, нижней оценки,
…
•
Можно ли за полиномиальное время получать
решение с гарантированной оценкой лучше чем 2?
– Можно ли улучшить анализ качества алгоритма
«Простой»? Ответ нет.
– Можно ли построить алгоритм, который всегда
находит решение с оценкой лучше чем 2 от
предложенной нижней границы?
– Существует ли другой алгоритм с
гарантированной оценкой лучше чем 2?
21
Сравнение нижней оценки и
оптимального решения
22
Качество анализа, нижней оценки,
…
•
Можно ли за полиномиальное время получать
решение с гарантированной оценкой лучше чем 2?
– Можно ли улучшить анализ качества алгоритма
«Простой»? Ответ нет.
– Можно ли построить алгоритм, который всегда
находит решение с оценкой лучше чем 2 от
предложенной нижней границы? Ответ нет.
– Существует ли другой алгоритм с
гарантированной оценкой лучше чем 2?
23
Задача «Покрытие»
• Дано: Совокупность U из n элементов, и
набор подмножеств U, S = {S1,…, Sk}, и
веса(стоимости) подмножеств c: S → Q+.
• Найти покрытие наименьшего веса.
• S'  S является покрытием, если любой
элемент из U принадлежит хотя бы
одному элементу из S' .
24
Кратность
• Пусть fi – кратность элемента ei, то есть
число множеств из S, в которые он входит.
• Пусть f = maxi=1,…,n fi.
25
Жадная стратегия
• Пусть C будет множество элементов уже
покрытое на предыдущих итерациях. Тогда
αi = c(Si)/|Si – C| называется эффективностью
множества Si и равна средней стоимости, с
которой покрывается новый элемент.
• Назовем ценой элемента e среднюю стоимость с
которой он был покрыт.
• Эквивалентно, когда множество S выбрано, мы
можем понимать, что его стоимость равномерно
распределена среди вновь покрытых элементов.
26
Алгоритм Хватала
0) Input (U, S, c: S → Q+)
1) C  , Sol  
2) While C  U do:
Найти Si S – Sol, у которого
αi=c(Si)/|Si – C| минимально.
Sol  Sol {Si}
C  С  Si (Si – самое эффективное)
price(e) = αi для всех e Si – C
3) Output (Sol)
27
Анализ алгоритма Хватала
• Упорядочим элементы из U в порядке, в
котором они были покрыты алгоритмом.
• Пусть это будет e1,…,en.
• Лемма 4.2
Для каждого k {1,…,n},
price(ek)  OPT/(n–k+1).
28
Доказательство леммы 2.1
C
S–C
OPT
OPT
OPT
OPT
e1,…,ei –1
ei,…,ek,…,en
29
Доказательство леммы 2.1
a1
b1
Общая эффективность не
больше чем OPT/(n – i + 1)
 OPT/(n – k + 1)

a2
b2
 
an
bn

a1    a n
b1    b n

an
bn
Существует Sj S – C
с αj  OPT/(n – k + 1).
price(ek)  OPT/(n–k+1).
ei,…,ek,…,en
30
Оценка качества алгоритма Хватала
Теорема 4.3
Алгоритм Хватала является Hn-приближенным
алгоритмом для задачи «Покрытие множествами»,
где Hn=1+1/2+1/3+…+1/n.
Доказательство:
n
 cS   
i
S i C
k 1
1
1

price  e k    1      OPT
2
n

31
Точность оценки
1+ ε
●●●
1/n 1/(n–1) 1/(n–2)
1/2
1
32
Задача «Вершинное покрытие»
• Дано: Граф G = (V, E), веса вершин w: V → Q+.
• Найти вершинное покрытие наименьшего
веса.
33
Пропорционально-степенная
функция
• Назовем функцию, соответствующую весам
вершин, пропорционально-степенной,
если существует константа с > 0, такая что
вес каждой вершины vV равен с deg(v).
34
Нижняя оценка
• Лемма 4.4
Пусть w: V → Q+ пропорциональностепенная функция. Тогда w(V)  2 OPT.
35
Доказательство
• Пусть с > 0: w(v) = с deg(v).
• Пусть U ― оптимальное вершинное покрытие.
 deg v  
E
OPT  w U   c E
 deg v   2 E
w V   2 c E  2 OPT
vU
vV
36
Наибольшая пропорциональностепенная функция
• Пусть w: V → Q+ произвольная функция.
• Определим наибольшую пропорциональностепенную функцию относительно w в графе G
следующим образом:
– Удалим из графа все вершины степени 0. Среди
оставшихся вершин вычислим c= min{w(v)/deg(v)}.
– Тогда t(v) = c deg(v) есть искомая функция
• Определим через w′(v) = w(v) – t(v) остаточную
функцию весов.
37
Алгоритм «Уровневый»
0) Input (G = (V, E), w: V → Q+)
1)
Sol  , i  0, w′(v)  w(v),
V0  V – D0 (D0 ={v  V |deg(v)=0}) (удаляем вершины степени 0)
2)
While Vi   do:
c  min{w(v)/deg(v)}
t(v)  c deg(v)
(находим наибольшую пропорциональностепенную функцию относительно w′)
w′(v)  w′(v) – ti(v) (вычисляем остаточную функцию весов)
Sol  Sol  Wi (Wi ={v  Vi |w′(v)=0}) (пополняем решение)
Vi+1  Vi – Wi
(удаляем вершины, вошедшие в решение)
i i+1
Vi  Vi – Di (Di ={v  Gi |deg(v)=0}) (удаляем вершины
степени 0)
3)
Output (Sol)
38
Пример
6
2
4
4
1
4
6
t(v) = 1 deg(v)
39
Пример
Sol
3
1
0
2
0
1
2
40
Пример
Sol
3
1
2
1
2
t(v) = (2/3) deg(v)
41
Пример
Sol
5/3
2/3
1/3
0
42
Пример
Sol
5/3
2/3
t(v) = (2/3) deg(v)
1/3
43
Пример
Sol
4
1
6
4
15
6
2
4
4
1
4
6
44
Оценка качества алгоритма
«Уровневый»
Теорема 4.5
Алгоритм «Уровневый» является
2-приближенным алгоритмом для
задачи «Вершинное покрытие».
45
Схема работы алгоритма
Пусть t0,…tk-1 функции
на графах G0,…Gk-1 .
Gk
Gk-1
Wk-1
Dk
Dk-1
●●●
G1
G0
Sol
W1
D1
W0
D0
C*∩Gi – вершинное покрытие Gi
46
Доказательство
• Пусть C ― полученное вершинное покрытие.
• Пусть C* ― оптимальное вершинное покрытие.
v W j
w v  
 t v 
w v  
v Dj
i
i j
 t v 
i
i j
C*∩Gi – вершинное покрытие Gi
Лемма 4.4
ti C  G i   2 ti C *  G i 
w C  
k 1
k 1
 t C  G   2  t C *  G   2 w C * 
i
i0
i
i
i0
i
47
Точность оценки
w 1
w 1
w 1
w 1
w 1
w 1
w 1
w 1
48
Задача «Кратчайшая суперстрока»
• Дано: Конечный алфавит Σ и множество из n
строк S = {s1,…,sn}  Σ+.
• Найти кратчайшую суперстроку s, которая
содержит каждую строку si, как подстроку.
• Без ограничения общности будем считать, что
никакая строка si не содержит другую строку sj,
i  j, как подстроку.
49
Задача «Кратчайшая суперстрока»
как задача «Покрытие»
k>0
si
sj
πijk
M ={πijk | πijk – допустимая}
πM : set(π)={sS | s – подстрока π}
Ucover Sstring
Scover {set(πijk) | πijk – допустимая}
c(set(π)) = | π |
50
Нижняя оценка
• Лемма 4.6
OPTstring  OPTcover  2 OPTstring
51
OPTcover  2 OPTstring
s
sb1
se1
sb2
se2
π1
sb3
se3
π2
π3
52
Алгоритм Ли
1)
2)
3)
4)
По индивидуальной задаче «Кратчайшая суперстрока»
строим индивидуальную задачу «Покрытие».
Алгоритмом Хватала находим покрытие.
Пусть оно состоит из множеств set(π1),…, set(πk).
Соединяем строки π1,…,πk в любом порядке. Назовем
полученную строку s.
Output (s)
53
Оценка качества алгоритма Ли
Теорема 4.7
Алгоритм Ли является 2Hn -приближенным
алгоритмом для задачи «Кратчайшая
суперстрока», где n – число строк в
исходном примере.
54