136
Алгоритмы для NP-трудных задач Лекция 2: Обзор А. Куликов Computer Science клуб при ПОМИ http://logic.pdmi.ras.ru/infclub/ А. Куликов (Computer Science клуб) 2. Обзор 1 / 33

Алгоритмы для NP-трудных задач, осень 2009: Обзор

Embed Size (px)

Citation preview

Page 1: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Алгоритмы для NP-трудных задачЛекция 2: Обзор

А. Куликов

Computer Science клуб при ПОМИhttp://logic.pdmi.ras.ru/∼infclub/

А. Куликов (Computer Science клуб) 2. Обзор 1 / 33

Page 2: Алгоритмы для NP-трудных задач, осень 2009: Обзор

План лекции

1 FPT алгоритмыПокрытие точек прямымиВершинное покрытие

2 Приближённые алгоритмыЗадача о вершинном покрытииЗадача о коммивояжёре

А. Куликов (Computer Science клуб) 2. Обзор 2 / 33

Page 3: Алгоритмы для NP-трудных задач, осень 2009: Обзор

План лекции

1 FPT алгоритмыПокрытие точек прямымиВершинное покрытие

2 Приближённые алгоритмыЗадача о вершинном покрытииЗадача о коммивояжёре

А. Куликов (Computer Science клуб) 2. Обзор 2 / 33

Page 4: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Цель первых двух лекций

Привести несколько красивых алгоритмов, не особовдаваясь в определения и доказательства. Всеформальности будут дальше в курсе.

А. Куликов (Computer Science клуб) 2. Обзор 3 / 33

Page 5: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы

План лекции

1 FPT алгоритмыПокрытие точек прямымиВершинное покрытие

2 Приближённые алгоритмыЗадача о вершинном покрытииЗадача о коммивояжёре

А. Куликов (Computer Science клуб) 2. Обзор 4 / 33

Page 6: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы

FPT алгоритмы для NP-трудных задач

Алгоритмы, находящие точное решение для даннойзадачи за время

f (k)nc ,

гдеn — размер входа,c — константа,k — некоторый параметр,f — произвольная функция.

А. Куликов (Computer Science клуб) 2. Обзор 5 / 33

Page 7: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы

Вершинное покрытие и доминирующее множество

Определение

(Параметризованная) задача о вершинном покрытии(parameterized vertex cover problem) заключается в нахождении поданному графу G = (V , E ) и числу k такого множества вершинV ′ ⊆ V , что |V ′| ≤ k и для любого ребра (u, v) ∈ E , хотя бы однаиз вершин u и v содержится в V ′.(Параметризованная) задача о доминирующем множестве(parameterzied dominating set problem) заключается в нахождениипо данному графу G = (V , E ) и числу k такого множества вершинV ′ ⊆ V , что для любой вершины u ∈ V найдётся такая вершинаv ∈ V ′, что (u, v) ∈ E .

А. Куликов (Computer Science клуб) 2. Обзор 6 / 33

Page 8: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы

Вершинное покрытие и доминирующее множество

Определение

(Параметризованная) задача о вершинном покрытии(parameterized vertex cover problem) заключается в нахождении поданному графу G = (V , E ) и числу k такого множества вершинV ′ ⊆ V , что |V ′| ≤ k и для любого ребра (u, v) ∈ E , хотя бы однаиз вершин u и v содержится в V ′.

(Параметризованная) задача о доминирующем множестве(parameterzied dominating set problem) заключается в нахождениипо данному графу G = (V , E ) и числу k такого множества вершинV ′ ⊆ V , что для любой вершины u ∈ V найдётся такая вершинаv ∈ V ′, что (u, v) ∈ E .

А. Куликов (Computer Science клуб) 2. Обзор 6 / 33

Page 9: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы

Вершинное покрытие и доминирующее множество

Определение

(Параметризованная) задача о вершинном покрытии(parameterized vertex cover problem) заключается в нахождении поданному графу G = (V , E ) и числу k такого множества вершинV ′ ⊆ V , что |V ′| ≤ k и для любого ребра (u, v) ∈ E , хотя бы однаиз вершин u и v содержится в V ′.(Параметризованная) задача о доминирующем множестве(parameterzied dominating set problem) заключается в нахождениипо данному графу G = (V , E ) и числу k такого множества вершинV ′ ⊆ V , что для любой вершины u ∈ V найдётся такая вершинаv ∈ V ′, что (u, v) ∈ E .

А. Куликов (Computer Science клуб) 2. Обзор 6 / 33

Page 10: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы

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

Наивный алгоритм для задачи о вершинном покрытии имеетвремя работы 2kn, для задачи о доминирующем множестве —nk+1.Отношение nk+1/2kn для различных значений k и n.

n = 50 n = 100 n = 150

k = 2 625 2 500 5 625

k = 3 15 625 125 000 421 875

k = 5 390 625 6 255 000 31 640 625

k = 10 1.9× 1012 9.8× 1014 3.7× 1016

k = 20 1.8× 1026 9.5× 1031 2.1× 1035

А. Куликов (Computer Science клуб) 2. Обзор 7 / 33

Page 11: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы

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

Наивный алгоритм для задачи о вершинном покрытии имеетвремя работы 2kn, для задачи о доминирующем множестве —nk+1.

Отношение nk+1/2kn для различных значений k и n.

n = 50 n = 100 n = 150

k = 2 625 2 500 5 625

k = 3 15 625 125 000 421 875

k = 5 390 625 6 255 000 31 640 625

k = 10 1.9× 1012 9.8× 1014 3.7× 1016

k = 20 1.8× 1026 9.5× 1031 2.1× 1035

А. Куликов (Computer Science клуб) 2. Обзор 7 / 33

Page 12: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы

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

Наивный алгоритм для задачи о вершинном покрытии имеетвремя работы 2kn, для задачи о доминирующем множестве —nk+1.Отношение nk+1/2kn для различных значений k и n.

n = 50 n = 100 n = 150

k = 2 625 2 500 5 625

k = 3 15 625 125 000 421 875

k = 5 390 625 6 255 000 31 640 625

k = 10 1.9× 1012 9.8× 1014 3.7× 1016

k = 20 1.8× 1026 9.5× 1031 2.1× 1035

А. Куликов (Computer Science клуб) 2. Обзор 7 / 33

Page 13: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы

Fixed parameter tractability

Определение

Параметризованной задачей (parameterized problem) L называетсяподмножество Σ* × N для некоторого конечного алфавита Σ.Входом задачи является пара (x , k), k называется параметром(parameter).Параметризованная задача L называется fixed parameter tractable(FPT), если принадлежность пары (x , k) языку L может бытьпроверена за время f (k)|x |c , где c — константа (не зависящая ниот k , ни от n), а f — произвольная функция.

А. Куликов (Computer Science клуб) 2. Обзор 8 / 33

Page 14: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы

Fixed parameter tractability

Определение

Параметризованной задачей (parameterized problem) L называетсяподмножество Σ* × N для некоторого конечного алфавита Σ.Входом задачи является пара (x , k), k называется параметром(parameter).

Параметризованная задача L называется fixed parameter tractable(FPT), если принадлежность пары (x , k) языку L может бытьпроверена за время f (k)|x |c , где c — константа (не зависящая ниот k , ни от n), а f — произвольная функция.

А. Куликов (Computer Science клуб) 2. Обзор 8 / 33

Page 15: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы

Fixed parameter tractability

Определение

Параметризованной задачей (parameterized problem) L называетсяподмножество Σ* × N для некоторого конечного алфавита Σ.Входом задачи является пара (x , k), k называется параметром(parameter).Параметризованная задача L называется fixed parameter tractable(FPT), если принадлежность пары (x , k) языку L может бытьпроверена за время f (k)|x |c , где c — константа (не зависящая ниот k , ни от n), а f — произвольная функция.

А. Куликов (Computer Science клуб) 2. Обзор 8 / 33

Page 16: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы

Ядро

Определение

Ядром (kernel, kernelization algorithm) параметризованной задачиL ⊆ Σ* × N называется алгоритм, который по входу (x , k) ∈ Σ* × Nвыдаёт за полиномиальное от |x |+ k время (x ′, k ′) ∈ Σ* × N, так что

(x , k) ∈ L тогда и только тогда, когда (x ′, k ′) ∈ L;|x ′|+ k ′ ≤ g(k), где g — произвольная вычислимая функция; gназывается размером (size) ядра.

ЗамечаниеЛегко видеть, что если у параметризованной задачи есть ядро, то онапринадлежат классу FPT. На самом деле, верно и обратное.

А. Куликов (Computer Science клуб) 2. Обзор 9 / 33

Page 17: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы

Ядро

Определение

Ядром (kernel, kernelization algorithm) параметризованной задачиL ⊆ Σ* × N называется алгоритм, который по входу (x , k) ∈ Σ* × Nвыдаёт за полиномиальное от |x |+ k время (x ′, k ′) ∈ Σ* × N, так что

(x , k) ∈ L тогда и только тогда, когда (x ′, k ′) ∈ L;

|x ′|+ k ′ ≤ g(k), где g — произвольная вычислимая функция; gназывается размером (size) ядра.

ЗамечаниеЛегко видеть, что если у параметризованной задачи есть ядро, то онапринадлежат классу FPT. На самом деле, верно и обратное.

А. Куликов (Computer Science клуб) 2. Обзор 9 / 33

Page 18: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы

Ядро

Определение

Ядром (kernel, kernelization algorithm) параметризованной задачиL ⊆ Σ* × N называется алгоритм, который по входу (x , k) ∈ Σ* × Nвыдаёт за полиномиальное от |x |+ k время (x ′, k ′) ∈ Σ* × N, так что

(x , k) ∈ L тогда и только тогда, когда (x ′, k ′) ∈ L;|x ′|+ k ′ ≤ g(k), где g — произвольная вычислимая функция; gназывается размером (size) ядра.

ЗамечаниеЛегко видеть, что если у параметризованной задачи есть ядро, то онапринадлежат классу FPT. На самом деле, верно и обратное.

А. Куликов (Computer Science клуб) 2. Обзор 9 / 33

Page 19: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы

Ядро

Определение

Ядром (kernel, kernelization algorithm) параметризованной задачиL ⊆ Σ* × N называется алгоритм, который по входу (x , k) ∈ Σ* × Nвыдаёт за полиномиальное от |x |+ k время (x ′, k ′) ∈ Σ* × N, так что

(x , k) ∈ L тогда и только тогда, когда (x ′, k ′) ∈ L;|x ′|+ k ′ ≤ g(k), где g — произвольная вычислимая функция; gназывается размером (size) ядра.

ЗамечаниеЛегко видеть, что если у параметризованной задачи есть ядро, то онапринадлежат классу FPT.

На самом деле, верно и обратное.

А. Куликов (Computer Science клуб) 2. Обзор 9 / 33

Page 20: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы

Ядро

Определение

Ядром (kernel, kernelization algorithm) параметризованной задачиL ⊆ Σ* × N называется алгоритм, который по входу (x , k) ∈ Σ* × Nвыдаёт за полиномиальное от |x |+ k время (x ′, k ′) ∈ Σ* × N, так что

(x , k) ∈ L тогда и только тогда, когда (x ′, k ′) ∈ L;|x ′|+ k ′ ≤ g(k), где g — произвольная вычислимая функция; gназывается размером (size) ядра.

ЗамечаниеЛегко видеть, что если у параметризованной задачи есть ядро, то онапринадлежат классу FPT. На самом деле, верно и обратное.

А. Куликов (Computer Science клуб) 2. Обзор 9 / 33

Page 21: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы

FPT ⇒ ядро

Итак, пусть существует алгоритм A, проверяющийпринадлежность пары (x , k) языку L за время f (k)nc (n = |x |).Если f (k) ≤ n, тогда проверим принадлежность алгоритмом A завремя f (k)nc ≤ nc+1 и вернём тривиальную пару (x ′, k ′) из или неиз языка L.Если же f (k) > n, то просто вернём (x , k).Получили ядро размера f (k).

А. Куликов (Computer Science клуб) 2. Обзор 10 / 33

Page 22: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы

FPT ⇒ ядро

Итак, пусть существует алгоритм A, проверяющийпринадлежность пары (x , k) языку L за время f (k)nc (n = |x |).

Если f (k) ≤ n, тогда проверим принадлежность алгоритмом A завремя f (k)nc ≤ nc+1 и вернём тривиальную пару (x ′, k ′) из или неиз языка L.Если же f (k) > n, то просто вернём (x , k).Получили ядро размера f (k).

А. Куликов (Computer Science клуб) 2. Обзор 10 / 33

Page 23: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы

FPT ⇒ ядро

Итак, пусть существует алгоритм A, проверяющийпринадлежность пары (x , k) языку L за время f (k)nc (n = |x |).Если f (k) ≤ n, тогда проверим принадлежность алгоритмом A завремя f (k)nc ≤ nc+1 и вернём тривиальную пару (x ′, k ′) из или неиз языка L.

Если же f (k) > n, то просто вернём (x , k).Получили ядро размера f (k).

А. Куликов (Computer Science клуб) 2. Обзор 10 / 33

Page 24: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы

FPT ⇒ ядро

Итак, пусть существует алгоритм A, проверяющийпринадлежность пары (x , k) языку L за время f (k)nc (n = |x |).Если f (k) ≤ n, тогда проверим принадлежность алгоритмом A завремя f (k)nc ≤ nc+1 и вернём тривиальную пару (x ′, k ′) из или неиз языка L.Если же f (k) > n, то просто вернём (x , k).

Получили ядро размера f (k).

А. Куликов (Computer Science клуб) 2. Обзор 10 / 33

Page 25: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы

FPT ⇒ ядро

Итак, пусть существует алгоритм A, проверяющийпринадлежность пары (x , k) языку L за время f (k)nc (n = |x |).Если f (k) ≤ n, тогда проверим принадлежность алгоритмом A завремя f (k)nc ≤ nc+1 и вернём тривиальную пару (x ′, k ′) из или неиз языка L.Если же f (k) > n, то просто вернём (x , k).Получили ядро размера f (k).

А. Куликов (Computer Science клуб) 2. Обзор 10 / 33

Page 26: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы Покрытие точек прямыми

План лекции

1 FPT алгоритмыПокрытие точек прямымиВершинное покрытие

2 Приближённые алгоритмыЗадача о вершинном покрытииЗадача о коммивояжёре

А. Куликов (Computer Science клуб) 2. Обзор 11 / 33

Page 27: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы Покрытие точек прямыми

Покрытие точек прямыми

ЗадачаПокрыть данное множество P из n точек k прямыми.

ЗамечаниеМожно считать, что каждая прямая из решения проходит хотя бычерез две точки множества P , поэтому кандидатов не более n2.

Правило упрощенияЕсли прямая проходит через множество S из более, чем k точек,(P, k) ⇒ (P ∖ S , k − 1).

Анализ

Если данное правило не применимо, а точек все ещё больше, чем k2,то решения, очевидно, нет. Получили ядро размера k2.

А. Куликов (Computer Science клуб) 2. Обзор 12 / 33

Page 28: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы Покрытие точек прямыми

Покрытие точек прямыми

ЗадачаПокрыть данное множество P из n точек k прямыми.

ЗамечаниеМожно считать, что каждая прямая из решения проходит хотя бычерез две точки множества P , поэтому кандидатов не более n2.

Правило упрощенияЕсли прямая проходит через множество S из более, чем k точек,(P, k) ⇒ (P ∖ S , k − 1).

Анализ

Если данное правило не применимо, а точек все ещё больше, чем k2,то решения, очевидно, нет. Получили ядро размера k2.

А. Куликов (Computer Science клуб) 2. Обзор 12 / 33

Page 29: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы Покрытие точек прямыми

Покрытие точек прямыми

ЗадачаПокрыть данное множество P из n точек k прямыми.

ЗамечаниеМожно считать, что каждая прямая из решения проходит хотя бычерез две точки множества P , поэтому кандидатов не более n2.

Правило упрощенияЕсли прямая проходит через множество S из более, чем k точек,(P, k) ⇒ (P ∖ S , k − 1).

Анализ

Если данное правило не применимо, а точек все ещё больше, чем k2,то решения, очевидно, нет. Получили ядро размера k2.

А. Куликов (Computer Science клуб) 2. Обзор 12 / 33

Page 30: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы Покрытие точек прямыми

Покрытие точек прямыми

ЗадачаПокрыть данное множество P из n точек k прямыми.

ЗамечаниеМожно считать, что каждая прямая из решения проходит хотя бычерез две точки множества P , поэтому кандидатов не более n2.

Правило упрощенияЕсли прямая проходит через множество S из более, чем k точек,(P, k) ⇒ (P ∖ S , k − 1).

Анализ

Если данное правило не применимо, а точек все ещё больше, чем k2,то решения, очевидно, нет. Получили ядро размера k2.

А. Куликов (Computer Science клуб) 2. Обзор 12 / 33

Page 31: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы Вершинное покрытие

План лекции

1 FPT алгоритмыПокрытие точек прямымиВершинное покрытие

2 Приближённые алгоритмыЗадача о вершинном покрытииЗадача о коммивояжёре

А. Куликов (Computer Science клуб) 2. Обзор 13 / 33

Page 32: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы Вершинное покрытие

Ядро для вершинного покрытия

Общая стратегияПривести несколько правил упрощения и показать, что если ни одноиз них ко входному графу не применимо, а его размер всё ещё большеf (k), то ответ уже очевиден.

Правила упрощения для задачи о вершинном покрытии

Правило 1. Если v — изолированная вершина, (G , k) ⇒ (G ∖ v , k).Правило 2. Если d(v) > k , (G , k) ⇒ (G ∖ v , k − 1).

А. Куликов (Computer Science клуб) 2. Обзор 14 / 33

Page 33: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы Вершинное покрытие

Ядро для вершинного покрытия

Общая стратегияПривести несколько правил упрощения и показать, что если ни одноиз них ко входному графу не применимо, а его размер всё ещё большеf (k), то ответ уже очевиден.

Правила упрощения для задачи о вершинном покрытии

Правило 1. Если v — изолированная вершина, (G , k) ⇒ (G ∖ v , k).Правило 2. Если d(v) > k , (G , k) ⇒ (G ∖ v , k − 1).

А. Куликов (Computer Science клуб) 2. Обзор 14 / 33

Page 34: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы Вершинное покрытие

Анализ

АнализДопустим, ни одно из двух правил не применимо.

Если |V (G )| > k(k + 1), то решения нет (каждая вершина должнабыть соседом хотя бы одной вершины из покрытия).В противном случае |V (G )| ≤ k(k + 1) и ядро построено.

А. Куликов (Computer Science клуб) 2. Обзор 15 / 33

Page 35: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы Вершинное покрытие

Анализ

АнализДопустим, ни одно из двух правил не применимо.

Если |V (G )| > k(k + 1), то решения нет (каждая вершина должнабыть соседом хотя бы одной вершины из покрытия).

В противном случае |V (G )| ≤ k(k + 1) и ядро построено.

А. Куликов (Computer Science клуб) 2. Обзор 15 / 33

Page 36: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы Вершинное покрытие

Анализ

АнализДопустим, ни одно из двух правил не применимо.

Если |V (G )| > k(k + 1), то решения нет (каждая вершина должнабыть соседом хотя бы одной вершины из покрытия).В противном случае |V (G )| ≤ k(k + 1) и ядро построено.

А. Куликов (Computer Science клуб) 2. Обзор 15 / 33

Page 37: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы Вершинное покрытие

Ядро

Можно рассматривать как полиномиальную по временипредобработку.Некоторые алгоритмы используют много простых правилупрощения. Анализ же размера ядра довольно сложен.В то время как есть алгоритмы, основанные на довольноэлегантных идеях (crown decomposition, лемма о подсолнухе).

А. Куликов (Computer Science клуб) 2. Обзор 16 / 33

Page 38: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы Вершинное покрытие

Ядро

Можно рассматривать как полиномиальную по временипредобработку.

Некоторые алгоритмы используют много простых правилупрощения. Анализ же размера ядра довольно сложен.В то время как есть алгоритмы, основанные на довольноэлегантных идеях (crown decomposition, лемма о подсолнухе).

А. Куликов (Computer Science клуб) 2. Обзор 16 / 33

Page 39: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы Вершинное покрытие

Ядро

Можно рассматривать как полиномиальную по временипредобработку.Некоторые алгоритмы используют много простых правилупрощения. Анализ же размера ядра довольно сложен.

В то время как есть алгоритмы, основанные на довольноэлегантных идеях (crown decomposition, лемма о подсолнухе).

А. Куликов (Computer Science клуб) 2. Обзор 16 / 33

Page 40: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы Вершинное покрытие

Ядро

Можно рассматривать как полиномиальную по временипредобработку.Некоторые алгоритмы используют много простых правилупрощения. Анализ же размера ядра довольно сложен.В то время как есть алгоритмы, основанные на довольноэлегантных идеях (crown decomposition, лемма о подсолнухе).

А. Куликов (Computer Science клуб) 2. Обзор 16 / 33

Page 41: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы Вершинное покрытие

CD-разбиение

Определение

CD-разбиением (crowndecomposition) графаназывается такое разбиениевершин на три множества C ,H, B , что

C — независимоемножество;между C и B нет рёбер;между C и H естьпаросочетание,покрывающее H.

Пример

C

H

B

А. Куликов (Computer Science клуб) 2. Обзор 17 / 33

Page 42: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы Вершинное покрытие

CD-разбиение

Определение

CD-разбиением (crowndecomposition) графаназывается такое разбиениевершин на три множества C ,H, B , что

C — независимоемножество;

между C и B нет рёбер;между C и H естьпаросочетание,покрывающее H.

Пример

C

H

B

А. Куликов (Computer Science клуб) 2. Обзор 17 / 33

Page 43: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы Вершинное покрытие

CD-разбиение

Определение

CD-разбиением (crowndecomposition) графаназывается такое разбиениевершин на три множества C ,H, B , что

C — независимоемножество;между C и B нет рёбер;

между C и H естьпаросочетание,покрывающее H.

Пример

C

H

B

А. Куликов (Computer Science клуб) 2. Обзор 17 / 33

Page 44: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы Вершинное покрытие

CD-разбиение

Определение

CD-разбиением (crowndecomposition) графаназывается такое разбиениевершин на три множества C ,H, B , что

C — независимоемножество;между C и B нет рёбер;между C и H естьпаросочетание,покрывающее H.

Пример

C

H

B

А. Куликов (Computer Science клуб) 2. Обзор 17 / 33

Page 45: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы Вершинное покрытие

CD-разбиение

Определение

CD-разбиением (crowndecomposition) графаназывается такое разбиениевершин на три множества C ,H, B , что

C — независимоемножество;между C и B нет рёбер;между C и H естьпаросочетание,покрывающее H.

Пример

C

H

B

А. Куликов (Computer Science клуб) 2. Обзор 17 / 33

Page 46: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы Вершинное покрытие

Правило упрощения для задачи о вершинном покрытии

C

H

B

Правило упрощения для задачи о вершинном покрытииПаросочетание должно быть покрыто и для этой цели нет смыслаиспользовать вершины множества C . Поэтому можно считать, что онопокрыто вершинами H, и (G , k) ⇒ (G ∖ (H ∪ C ), k − |H|).

А. Куликов (Computer Science клуб) 2. Обзор 18 / 33

Page 47: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы Вершинное покрытие

Основная лемма

ЛеммаПо данному графу G , не содержащему изолированных вершин, ипараметру k можно за полиномиальное время

либо найти паросочетание размера k + 1( ⇒ решения нет);либо найти CD-разбиение ( ⇒ упрощение);или заключить, что граф содержит не более, чем 4k вершин ( ⇒ядро).

ЛеммаЭто даёт ядро размера 4k для задачи о вершинном покрытии.

А. Куликов (Computer Science клуб) 2. Обзор 19 / 33

Page 48: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы Вершинное покрытие

Основная лемма

ЛеммаПо данному графу G , не содержащему изолированных вершин, ипараметру k можно за полиномиальное время

либо найти паросочетание размера k + 1( ⇒ решения нет);

либо найти CD-разбиение ( ⇒ упрощение);или заключить, что граф содержит не более, чем 4k вершин ( ⇒ядро).

ЛеммаЭто даёт ядро размера 4k для задачи о вершинном покрытии.

А. Куликов (Computer Science клуб) 2. Обзор 19 / 33

Page 49: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы Вершинное покрытие

Основная лемма

ЛеммаПо данному графу G , не содержащему изолированных вершин, ипараметру k можно за полиномиальное время

либо найти паросочетание размера k + 1( ⇒ решения нет);либо найти CD-разбиение ( ⇒ упрощение);

или заключить, что граф содержит не более, чем 4k вершин ( ⇒ядро).

ЛеммаЭто даёт ядро размера 4k для задачи о вершинном покрытии.

А. Куликов (Computer Science клуб) 2. Обзор 19 / 33

Page 50: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы Вершинное покрытие

Основная лемма

ЛеммаПо данному графу G , не содержащему изолированных вершин, ипараметру k можно за полиномиальное время

либо найти паросочетание размера k + 1( ⇒ решения нет);либо найти CD-разбиение ( ⇒ упрощение);или заключить, что граф содержит не более, чем 4k вершин ( ⇒ядро).

ЛеммаЭто даёт ядро размера 4k для задачи о вершинном покрытии.

А. Куликов (Computer Science клуб) 2. Обзор 19 / 33

Page 51: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы Вершинное покрытие

Основная лемма

ЛеммаПо данному графу G , не содержащему изолированных вершин, ипараметру k можно за полиномиальное время

либо найти паросочетание размера k + 1( ⇒ решения нет);либо найти CD-разбиение ( ⇒ упрощение);или заключить, что граф содержит не более, чем 4k вершин ( ⇒ядро).

ЛеммаЭто даёт ядро размера 4k для задачи о вершинном покрытии.

А. Куликов (Computer Science клуб) 2. Обзор 19 / 33

Page 52: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы Вершинное покрытие

Доказательство леммы

Найдём (жадно) максимальное по включению паросочетание вграфе G .Если его размер хотя бы k + 1, то решения, очевидно, нет.Пусть X есть множество вершин найденного паросочетания, I —оставшиеся вершины.Тогда I — независимое множество.Найдём максимальное паросочетание/минимальное вершинноепокрытие в двудольном графе между X и I .

А. Куликов (Computer Science клуб) 2. Обзор 20 / 33

Page 53: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы Вершинное покрытие

Доказательство леммы

Найдём (жадно) максимальное по включению паросочетание вграфе G .

Если его размер хотя бы k + 1, то решения, очевидно, нет.Пусть X есть множество вершин найденного паросочетания, I —оставшиеся вершины.Тогда I — независимое множество.Найдём максимальное паросочетание/минимальное вершинноепокрытие в двудольном графе между X и I .

А. Куликов (Computer Science клуб) 2. Обзор 20 / 33

Page 54: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы Вершинное покрытие

Доказательство леммы

Найдём (жадно) максимальное по включению паросочетание вграфе G .Если его размер хотя бы k + 1, то решения, очевидно, нет.

Пусть X есть множество вершин найденного паросочетания, I —оставшиеся вершины.Тогда I — независимое множество.Найдём максимальное паросочетание/минимальное вершинноепокрытие в двудольном графе между X и I .

А. Куликов (Computer Science клуб) 2. Обзор 20 / 33

Page 55: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы Вершинное покрытие

Доказательство леммы

Найдём (жадно) максимальное по включению паросочетание вграфе G .Если его размер хотя бы k + 1, то решения, очевидно, нет.Пусть X есть множество вершин найденного паросочетания, I —оставшиеся вершины.

Тогда I — независимое множество.Найдём максимальное паросочетание/минимальное вершинноепокрытие в двудольном графе между X и I .

А. Куликов (Computer Science клуб) 2. Обзор 20 / 33

Page 56: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы Вершинное покрытие

Доказательство леммы

Найдём (жадно) максимальное по включению паросочетание вграфе G .Если его размер хотя бы k + 1, то решения, очевидно, нет.Пусть X есть множество вершин найденного паросочетания, I —оставшиеся вершины.Тогда I — независимое множество.

Найдём максимальное паросочетание/минимальное вершинноепокрытие в двудольном графе между X и I .

А. Куликов (Computer Science клуб) 2. Обзор 20 / 33

Page 57: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы Вершинное покрытие

Доказательство леммы

Найдём (жадно) максимальное по включению паросочетание вграфе G .Если его размер хотя бы k + 1, то решения, очевидно, нет.Пусть X есть множество вершин найденного паросочетания, I —оставшиеся вершины.Тогда I — независимое множество.Найдём максимальное паросочетание/минимальное вершинноепокрытие в двудольном графе между X и I .

А. Куликов (Computer Science клуб) 2. Обзор 20 / 33

Page 58: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы Вершинное покрытие

Первый случай

I

X

Если найденное вершинное покрытие содержит хотя бы однувершину множества X ,

то у графа есть CD-разбиение.Если вершинное покрытие содержит только вершины множестваI , то оно содержит все вершины множества I и всего в графе неболее 4k вершин.

А. Куликов (Computer Science клуб) 2. Обзор 21 / 33

Page 59: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы Вершинное покрытие

Первый случай

I

X

H

C

Если найденное вершинное покрытие содержит хотя бы однувершину множества X , то у графа есть CD-разбиение.

Если вершинное покрытие содержит только вершины множестваI , то оно содержит все вершины множества I и всего в графе неболее 4k вершин.

А. Куликов (Computer Science клуб) 2. Обзор 21 / 33

Page 60: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы Вершинное покрытие

Первый случай

I

X

Если найденное вершинное покрытие содержит хотя бы однувершину множества X , то у графа есть CD-разбиение.Если вершинное покрытие содержит только вершины множестваI ,

то оно содержит все вершины множества I и всего в графе неболее 4k вершин.

А. Куликов (Computer Science клуб) 2. Обзор 21 / 33

Page 61: Алгоритмы для NP-трудных задач, осень 2009: Обзор

FPT алгоритмы Вершинное покрытие

Первый случай

I

X

Если найденное вершинное покрытие содержит хотя бы однувершину множества X , то у графа есть CD-разбиение.Если вершинное покрытие содержит только вершины множестваI , то оно содержит все вершины множества I и всего в графе неболее 4k вершин.

А. Куликов (Computer Science клуб) 2. Обзор 21 / 33

Page 62: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы

План лекции

1 FPT алгоритмыПокрытие точек прямымиВершинное покрытие

2 Приближённые алгоритмыЗадача о вершинном покрытииЗадача о коммивояжёре

А. Куликов (Computer Science клуб) 2. Обзор 22 / 33

Page 63: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы

Приближённые алгоритмы для NP-трудных задач

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

А. Куликов (Computer Science клуб) 2. Обзор 23 / 33

Page 64: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о вершинном покрытии

План лекции

1 FPT алгоритмыПокрытие точек прямымиВершинное покрытие

2 Приближённые алгоритмыЗадача о вершинном покрытииЗадача о коммивояжёре

А. Куликов (Computer Science клуб) 2. Обзор 24 / 33

Page 65: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о вершинном покрытии

2-приближенный алгоритм

Алгоритм

Approx-Vertex-Cover(G )

C = ∅E ′ = E [G ]

пока E ′ ̸= ∅берем произвольное ребро (u, v) ∈ E ′

C := C ∪ {u, v}удалим из E ′ все покрытые ребра

вернуть C

А. Куликов (Computer Science клуб) 2. Обзор 25 / 33

Page 66: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о вершинном покрытии

2-приближенный алгоритм

Алгоритм

Approx-Vertex-Cover(G )C = ∅

E ′ = E [G ]

пока E ′ ̸= ∅берем произвольное ребро (u, v) ∈ E ′

C := C ∪ {u, v}удалим из E ′ все покрытые ребра

вернуть C

А. Куликов (Computer Science клуб) 2. Обзор 25 / 33

Page 67: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о вершинном покрытии

2-приближенный алгоритм

Алгоритм

Approx-Vertex-Cover(G )C = ∅E ′ = E [G ]

пока E ′ ̸= ∅берем произвольное ребро (u, v) ∈ E ′

C := C ∪ {u, v}удалим из E ′ все покрытые ребра

вернуть C

А. Куликов (Computer Science клуб) 2. Обзор 25 / 33

Page 68: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о вершинном покрытии

2-приближенный алгоритм

Алгоритм

Approx-Vertex-Cover(G )C = ∅E ′ = E [G ]

пока E ′ ̸= ∅

берем произвольное ребро (u, v) ∈ E ′

C := C ∪ {u, v}удалим из E ′ все покрытые ребра

вернуть C

А. Куликов (Computer Science клуб) 2. Обзор 25 / 33

Page 69: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о вершинном покрытии

2-приближенный алгоритм

Алгоритм

Approx-Vertex-Cover(G )C = ∅E ′ = E [G ]

пока E ′ ̸= ∅берем произвольное ребро (u, v) ∈ E ′

C := C ∪ {u, v}удалим из E ′ все покрытые ребра

вернуть C

А. Куликов (Computer Science клуб) 2. Обзор 25 / 33

Page 70: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о вершинном покрытии

2-приближенный алгоритм

Алгоритм

Approx-Vertex-Cover(G )C = ∅E ′ = E [G ]

пока E ′ ̸= ∅берем произвольное ребро (u, v) ∈ E ′

C := C ∪ {u, v}

удалим из E ′ все покрытые ребра

вернуть C

А. Куликов (Computer Science клуб) 2. Обзор 25 / 33

Page 71: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о вершинном покрытии

2-приближенный алгоритм

Алгоритм

Approx-Vertex-Cover(G )C = ∅E ′ = E [G ]

пока E ′ ̸= ∅берем произвольное ребро (u, v) ∈ E ′

C := C ∪ {u, v}удалим из E ′ все покрытые ребра

вернуть C

А. Куликов (Computer Science клуб) 2. Обзор 25 / 33

Page 72: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о вершинном покрытии

2-приближенный алгоритм

Алгоритм

Approx-Vertex-Cover(G )C = ∅E ′ = E [G ]

пока E ′ ̸= ∅берем произвольное ребро (u, v) ∈ E ′

C := C ∪ {u, v}удалим из E ′ все покрытые ребра

вернуть C

А. Куликов (Computer Science клуб) 2. Обзор 25 / 33

Page 73: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о вершинном покрытии

Пример работы алгоритма

a

b c d

e f g

дан граф на семи вершинах

А. Куликов (Computer Science клуб) 2. Обзор 26 / 33

Page 74: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о вершинном покрытии

Пример работы алгоритма

a

b c d

e f g

b c

выбираем ребро (b, c)

А. Куликов (Computer Science клуб) 2. Обзор 26 / 33

Page 75: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о вершинном покрытии

Пример работы алгоритма

a

b c d

e f g

b c

покрытые ребра удаляем

А. Куликов (Computer Science клуб) 2. Обзор 26 / 33

Page 76: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о вершинном покрытии

Пример работы алгоритма

a

b c d

e f g

b c

e f

выбираем ребро (e, f )

А. Куликов (Computer Science клуб) 2. Обзор 26 / 33

Page 77: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о вершинном покрытии

Пример работы алгоритма

a

b c d

e f g

b c

e f

покрытые ребра удаляем

А. Куликов (Computer Science клуб) 2. Обзор 26 / 33

Page 78: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о вершинном покрытии

Пример работы алгоритма

a

b c d

e f g

b c

e f

d

g

выбираем ребро (d , g)

А. Куликов (Computer Science клуб) 2. Обзор 26 / 33

Page 79: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о вершинном покрытии

Пример работы алгоритма

a

b c d

e f g

b c

e f

d

g

построенное покрытие: {b, c , d , e, f , g}

А. Куликов (Computer Science клуб) 2. Обзор 26 / 33

Page 80: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о вершинном покрытии

Пример работы алгоритма

a

b c d

e f ge f

d

ga

c

f g

b d

e

оптимальное покрытие: {b, d , e}

А. Куликов (Computer Science клуб) 2. Обзор 26 / 33

Page 81: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о вершинном покрытии

Анализ алгоритма

ТеоремаАлгоритм Approx-Vertex-Cover является 2-оптимальным.

Доказательствоясно, что выдаваемое множество C покрытием являетсяпусть A – множество ребер, выбираемых алгоритмомвидно, что никакие два из них не имеют общего концаследовательно, 2|A| = |C |далее, если C ′ – покрытие, то |A| ≤ |C ′|, так как C ′ обязанопокрывать хотя бы по одному концу каждого ребра из Aтаким образом, |C | = 2|A| ≤ 2|Copt|

А. Куликов (Computer Science клуб) 2. Обзор 27 / 33

Page 82: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о вершинном покрытии

Анализ алгоритма

ТеоремаАлгоритм Approx-Vertex-Cover является 2-оптимальным.

Доказательство

ясно, что выдаваемое множество C покрытием являетсяпусть A – множество ребер, выбираемых алгоритмомвидно, что никакие два из них не имеют общего концаследовательно, 2|A| = |C |далее, если C ′ – покрытие, то |A| ≤ |C ′|, так как C ′ обязанопокрывать хотя бы по одному концу каждого ребра из Aтаким образом, |C | = 2|A| ≤ 2|Copt|

А. Куликов (Computer Science клуб) 2. Обзор 27 / 33

Page 83: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о вершинном покрытии

Анализ алгоритма

ТеоремаАлгоритм Approx-Vertex-Cover является 2-оптимальным.

Доказательствоясно, что выдаваемое множество C покрытием является

пусть A – множество ребер, выбираемых алгоритмомвидно, что никакие два из них не имеют общего концаследовательно, 2|A| = |C |далее, если C ′ – покрытие, то |A| ≤ |C ′|, так как C ′ обязанопокрывать хотя бы по одному концу каждого ребра из Aтаким образом, |C | = 2|A| ≤ 2|Copt|

А. Куликов (Computer Science клуб) 2. Обзор 27 / 33

Page 84: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о вершинном покрытии

Анализ алгоритма

ТеоремаАлгоритм Approx-Vertex-Cover является 2-оптимальным.

Доказательствоясно, что выдаваемое множество C покрытием являетсяпусть A – множество ребер, выбираемых алгоритмом

видно, что никакие два из них не имеют общего концаследовательно, 2|A| = |C |далее, если C ′ – покрытие, то |A| ≤ |C ′|, так как C ′ обязанопокрывать хотя бы по одному концу каждого ребра из Aтаким образом, |C | = 2|A| ≤ 2|Copt|

А. Куликов (Computer Science клуб) 2. Обзор 27 / 33

Page 85: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о вершинном покрытии

Анализ алгоритма

ТеоремаАлгоритм Approx-Vertex-Cover является 2-оптимальным.

Доказательствоясно, что выдаваемое множество C покрытием являетсяпусть A – множество ребер, выбираемых алгоритмомвидно, что никакие два из них не имеют общего конца

следовательно, 2|A| = |C |далее, если C ′ – покрытие, то |A| ≤ |C ′|, так как C ′ обязанопокрывать хотя бы по одному концу каждого ребра из Aтаким образом, |C | = 2|A| ≤ 2|Copt|

А. Куликов (Computer Science клуб) 2. Обзор 27 / 33

Page 86: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о вершинном покрытии

Анализ алгоритма

ТеоремаАлгоритм Approx-Vertex-Cover является 2-оптимальным.

Доказательствоясно, что выдаваемое множество C покрытием являетсяпусть A – множество ребер, выбираемых алгоритмомвидно, что никакие два из них не имеют общего концаследовательно, 2|A| = |C |

далее, если C ′ – покрытие, то |A| ≤ |C ′|, так как C ′ обязанопокрывать хотя бы по одному концу каждого ребра из Aтаким образом, |C | = 2|A| ≤ 2|Copt|

А. Куликов (Computer Science клуб) 2. Обзор 27 / 33

Page 87: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о вершинном покрытии

Анализ алгоритма

ТеоремаАлгоритм Approx-Vertex-Cover является 2-оптимальным.

Доказательствоясно, что выдаваемое множество C покрытием являетсяпусть A – множество ребер, выбираемых алгоритмомвидно, что никакие два из них не имеют общего концаследовательно, 2|A| = |C |далее, если C ′ – покрытие, то |A| ≤ |C ′|, так как C ′ обязанопокрывать хотя бы по одному концу каждого ребра из A

таким образом, |C | = 2|A| ≤ 2|Copt|

А. Куликов (Computer Science клуб) 2. Обзор 27 / 33

Page 88: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о вершинном покрытии

Анализ алгоритма

ТеоремаАлгоритм Approx-Vertex-Cover является 2-оптимальным.

Доказательствоясно, что выдаваемое множество C покрытием являетсяпусть A – множество ребер, выбираемых алгоритмомвидно, что никакие два из них не имеют общего концаследовательно, 2|A| = |C |далее, если C ′ – покрытие, то |A| ≤ |C ′|, так как C ′ обязанопокрывать хотя бы по одному концу каждого ребра из Aтаким образом, |C | = 2|A| ≤ 2|Copt|

А. Куликов (Computer Science клуб) 2. Обзор 27 / 33

Page 89: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

План лекции

1 FPT алгоритмыПокрытие точек прямымиВершинное покрытие

2 Приближённые алгоритмыЗадача о вершинном покрытииЗадача о коммивояжёре

А. Куликов (Computer Science клуб) 2. Обзор 28 / 33

Page 90: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Задача о коммивояжере

Определение

Дан полный неориентированный граф G = (V , E ), каждому ребру(u, v) которого приписана некоторая стоимость c(u, v).Задача о коммивояжере (travelling salesman problem, TSP)заключается в нахождении в графе гамильтонова цикламинимальной стоимости.Задача о коммивояжере в метрическом пространстве (metric TSP)есть частный случай задачи о коммивояжере, где расстояниявходного графа удовлетворяют неравенству треугольника:

c(u, w) ≤ c(u, v) + c(v , w) ∀u, v , w ∈ V .

А. Куликов (Computer Science клуб) 2. Обзор 29 / 33

Page 91: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Задача о коммивояжере

Определение

Дан полный неориентированный граф G = (V , E ), каждому ребру(u, v) которого приписана некоторая стоимость c(u, v).

Задача о коммивояжере (travelling salesman problem, TSP)заключается в нахождении в графе гамильтонова цикламинимальной стоимости.Задача о коммивояжере в метрическом пространстве (metric TSP)есть частный случай задачи о коммивояжере, где расстояниявходного графа удовлетворяют неравенству треугольника:

c(u, w) ≤ c(u, v) + c(v , w) ∀u, v , w ∈ V .

А. Куликов (Computer Science клуб) 2. Обзор 29 / 33

Page 92: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Задача о коммивояжере

Определение

Дан полный неориентированный граф G = (V , E ), каждому ребру(u, v) которого приписана некоторая стоимость c(u, v).Задача о коммивояжере (travelling salesman problem, TSP)заключается в нахождении в графе гамильтонова цикламинимальной стоимости.

Задача о коммивояжере в метрическом пространстве (metric TSP)есть частный случай задачи о коммивояжере, где расстояниявходного графа удовлетворяют неравенству треугольника:

c(u, w) ≤ c(u, v) + c(v , w) ∀u, v , w ∈ V .

А. Куликов (Computer Science клуб) 2. Обзор 29 / 33

Page 93: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Задача о коммивояжере

Определение

Дан полный неориентированный граф G = (V , E ), каждому ребру(u, v) которого приписана некоторая стоимость c(u, v).Задача о коммивояжере (travelling salesman problem, TSP)заключается в нахождении в графе гамильтонова цикламинимальной стоимости.Задача о коммивояжере в метрическом пространстве (metric TSP)есть частный случай задачи о коммивояжере, где расстояниявходного графа удовлетворяют неравенству треугольника:

c(u, w) ≤ c(u, v) + c(v , w) ∀u, v , w ∈ V .

А. Куликов (Computer Science клуб) 2. Обзор 29 / 33

Page 94: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

2-оптимальный алгоритм

Алгоритм

Approx-TSP(G )

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

А. Куликов (Computer Science клуб) 2. Обзор 30 / 33

Page 95: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

2-оптимальный алгоритм

Алгоритм

Approx-TSP(G )строим минимальное покрывающее дерево T графа G

продублируем каждое ребро дерева T и в полученном графенайдем эйлеров циклвыкинем из полученного цикла все повторения вершин и вернемполученный цикл

А. Куликов (Computer Science клуб) 2. Обзор 30 / 33

Page 96: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

2-оптимальный алгоритм

Алгоритм

Approx-TSP(G )строим минимальное покрывающее дерево T графа Gпродублируем каждое ребро дерева T и в полученном графенайдем эйлеров цикл

выкинем из полученного цикла все повторения вершин и вернемполученный цикл

А. Куликов (Computer Science клуб) 2. Обзор 30 / 33

Page 97: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

2-оптимальный алгоритм

Алгоритм

Approx-TSP(G )строим минимальное покрывающее дерево T графа Gпродублируем каждое ребро дерева T и в полученном графенайдем эйлеров циклвыкинем из полученного цикла все повторения вершин и вернемполученный цикл

А. Куликов (Computer Science клуб) 2. Обзор 30 / 33

Page 98: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Пример работы алгоритма

Алгоритм

Approx-TSP(G )

строим минимальноеостовное дерево Tграфа Gпродублируем каждоеребро дерева T и вполученном графенайдем эйлеров циклвыкинем из полученногоцикла все повторениявершин и вернемполученный цикл

А. Куликов (Computer Science клуб) 2. Обзор 31 / 33

Page 99: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Пример работы алгоритма

Алгоритм

Approx-TSP(G )строим минимальноеостовное дерево Tграфа G

продублируем каждоеребро дерева T и вполученном графенайдем эйлеров циклвыкинем из полученногоцикла все повторениявершин и вернемполученный цикл

А. Куликов (Computer Science клуб) 2. Обзор 31 / 33

Page 100: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Пример работы алгоритма

Алгоритм

Approx-TSP(G )строим минимальноеостовное дерево Tграфа Gпродублируем каждоеребро дерева T и вполученном графенайдем эйлеров цикл

выкинем из полученногоцикла все повторениявершин и вернемполученный цикл

А. Куликов (Computer Science клуб) 2. Обзор 31 / 33

Page 101: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Пример работы алгоритма

Алгоритм

Approx-TSP(G )строим минимальноеостовное дерево Tграфа Gпродублируем каждоеребро дерева T и вполученном графенайдем эйлеров цикл

выкинем из полученногоцикла все повторениявершин и вернемполученный цикл

А. Куликов (Computer Science клуб) 2. Обзор 31 / 33

Page 102: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Пример работы алгоритма

Алгоритм

Approx-TSP(G )строим минимальноеостовное дерево Tграфа Gпродублируем каждоеребро дерева T и вполученном графенайдем эйлеров цикл

выкинем из полученногоцикла все повторениявершин и вернемполученный цикл

А. Куликов (Computer Science клуб) 2. Обзор 31 / 33

Page 103: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Пример работы алгоритма

Алгоритм

Approx-TSP(G )строим минимальноеостовное дерево Tграфа Gпродублируем каждоеребро дерева T и вполученном графенайдем эйлеров цикл

выкинем из полученногоцикла все повторениявершин и вернемполученный цикл

А. Куликов (Computer Science клуб) 2. Обзор 31 / 33

Page 104: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Пример работы алгоритма

Алгоритм

Approx-TSP(G )строим минимальноеостовное дерево Tграфа Gпродублируем каждоеребро дерева T и вполученном графенайдем эйлеров цикл

выкинем из полученногоцикла все повторениявершин и вернемполученный цикл

А. Куликов (Computer Science клуб) 2. Обзор 31 / 33

Page 105: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Пример работы алгоритма

Алгоритм

Approx-TSP(G )строим минимальноеостовное дерево Tграфа Gпродублируем каждоеребро дерева T и вполученном графенайдем эйлеров цикл

выкинем из полученногоцикла все повторениявершин и вернемполученный цикл

А. Куликов (Computer Science клуб) 2. Обзор 31 / 33

Page 106: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Пример работы алгоритма

Алгоритм

Approx-TSP(G )строим минимальноеостовное дерево Tграфа Gпродублируем каждоеребро дерева T и вполученном графенайдем эйлеров цикл

выкинем из полученногоцикла все повторениявершин и вернемполученный цикл

А. Куликов (Computer Science клуб) 2. Обзор 31 / 33

Page 107: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Пример работы алгоритма

Алгоритм

Approx-TSP(G )строим минимальноеостовное дерево Tграфа Gпродублируем каждоеребро дерева T и вполученном графенайдем эйлеров цикл

выкинем из полученногоцикла все повторениявершин и вернемполученный цикл

А. Куликов (Computer Science клуб) 2. Обзор 31 / 33

Page 108: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Пример работы алгоритма

Алгоритм

Approx-TSP(G )строим минимальноеостовное дерево Tграфа Gпродублируем каждоеребро дерева T и вполученном графенайдем эйлеров цикл

выкинем из полученногоцикла все повторениявершин и вернемполученный цикл

А. Куликов (Computer Science клуб) 2. Обзор 31 / 33

Page 109: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Пример работы алгоритма

Алгоритм

Approx-TSP(G )строим минимальноеостовное дерево Tграфа Gпродублируем каждоеребро дерева T и вполученном графенайдем эйлеров цикл

выкинем из полученногоцикла все повторениявершин и вернемполученный цикл

А. Куликов (Computer Science клуб) 2. Обзор 31 / 33

Page 110: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Пример работы алгоритма

Алгоритм

Approx-TSP(G )строим минимальноеостовное дерево Tграфа Gпродублируем каждоеребро дерева T и вполученном графенайдем эйлеров цикл

выкинем из полученногоцикла все повторениявершин и вернемполученный цикл

А. Куликов (Computer Science клуб) 2. Обзор 31 / 33

Page 111: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Пример работы алгоритма

Алгоритм

Approx-TSP(G )строим минимальноеостовное дерево Tграфа Gпродублируем каждоеребро дерева T и вполученном графенайдем эйлеров цикл

выкинем из полученногоцикла все повторениявершин и вернемполученный цикл

А. Куликов (Computer Science клуб) 2. Обзор 31 / 33

Page 112: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Пример работы алгоритма

Алгоритм

Approx-TSP(G )строим минимальноеостовное дерево Tграфа Gпродублируем каждоеребро дерева T и вполученном графенайдем эйлеров цикл

выкинем из полученногоцикла все повторениявершин и вернемполученный цикл

А. Куликов (Computer Science клуб) 2. Обзор 31 / 33

Page 113: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Пример работы алгоритма

Алгоритм

Approx-TSP(G )строим минимальноеостовное дерево Tграфа Gпродублируем каждоеребро дерева T и вполученном графенайдем эйлеров цикл

выкинем из полученногоцикла все повторениявершин и вернемполученный цикл

А. Куликов (Computer Science клуб) 2. Обзор 31 / 33

Page 114: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Пример работы алгоритма

Алгоритм

Approx-TSP(G )строим минимальноеостовное дерево Tграфа Gпродублируем каждоеребро дерева T и вполученном графенайдем эйлеров цикл

выкинем из полученногоцикла все повторениявершин и вернемполученный цикл

А. Куликов (Computer Science клуб) 2. Обзор 31 / 33

Page 115: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Пример работы алгоритма

Алгоритм

Approx-TSP(G )строим минимальноеостовное дерево Tграфа Gпродублируем каждоеребро дерева T и вполученном графенайдем эйлеров циклвыкинем из полученногоцикла все повторениявершин и вернемполученный цикл

А. Куликов (Computer Science клуб) 2. Обзор 31 / 33

Page 116: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Пример работы алгоритма

Алгоритм

Approx-TSP(G )строим минимальноеостовное дерево Tграфа Gпродублируем каждоеребро дерева T и вполученном графенайдем эйлеров циклвыкинем из полученногоцикла все повторениявершин и вернемполученный цикл

А. Куликов (Computer Science клуб) 2. Обзор 31 / 33

Page 117: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Пример работы алгоритма

Алгоритм

Approx-TSP(G )строим минимальноеостовное дерево Tграфа Gпродублируем каждоеребро дерева T и вполученном графенайдем эйлеров циклвыкинем из полученногоцикла все повторениявершин и вернемполученный цикл

А. Куликов (Computer Science клуб) 2. Обзор 31 / 33

Page 118: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Пример работы алгоритма

Алгоритм

Approx-TSP(G )строим минимальноеостовное дерево Tграфа Gпродублируем каждоеребро дерева T и вполученном графенайдем эйлеров циклвыкинем из полученногоцикла все повторениявершин и вернемполученный цикл

А. Куликов (Computer Science клуб) 2. Обзор 31 / 33

Page 119: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Пример работы алгоритма

Алгоритм

Approx-TSP(G )строим минимальноеостовное дерево Tграфа Gпродублируем каждоеребро дерева T и вполученном графенайдем эйлеров циклвыкинем из полученногоцикла все повторениявершин и вернемполученный цикл

А. Куликов (Computer Science клуб) 2. Обзор 31 / 33

Page 120: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Пример работы алгоритма

Алгоритм

Approx-TSP(G )строим минимальноеостовное дерево Tграфа Gпродублируем каждоеребро дерева T и вполученном графенайдем эйлеров циклвыкинем из полученногоцикла все повторениявершин и вернемполученный цикл

А. Куликов (Computer Science клуб) 2. Обзор 31 / 33

Page 121: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Пример работы алгоритма

Алгоритм

Approx-TSP(G )строим минимальноеостовное дерево Tграфа Gпродублируем каждоеребро дерева T и вполученном графенайдем эйлеров циклвыкинем из полученногоцикла все повторениявершин и вернемполученный цикл

А. Куликов (Computer Science клуб) 2. Обзор 31 / 33

Page 122: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Пример работы алгоритма

Алгоритм

Approx-TSP(G )строим минимальноеостовное дерево Tграфа Gпродублируем каждоеребро дерева T и вполученном графенайдем эйлеров циклвыкинем из полученногоцикла все повторениявершин и вернемполученный цикл

А. Куликов (Computer Science клуб) 2. Обзор 31 / 33

Page 123: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Пример работы алгоритма

Алгоритм

Approx-TSP(G )строим минимальноеостовное дерево Tграфа Gпродублируем каждоеребро дерева T и вполученном графенайдем эйлеров циклвыкинем из полученногоцикла все повторениявершин и вернемполученный цикл

А. Куликов (Computer Science клуб) 2. Обзор 31 / 33

Page 124: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Пример работы алгоритма

Алгоритм

Approx-TSP(G )строим минимальноеостовное дерево Tграфа Gпродублируем каждоеребро дерева T и вполученном графенайдем эйлеров циклвыкинем из полученногоцикла все повторениявершин и вернемполученный цикл

А. Куликов (Computer Science клуб) 2. Обзор 31 / 33

Page 125: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Пример работы алгоритма

Алгоритм

Approx-TSP(G )строим минимальноеостовное дерево Tграфа Gпродублируем каждоеребро дерева T и вполученном графенайдем эйлеров циклвыкинем из полученногоцикла все повторениявершин и вернемполученный цикл

А. Куликов (Computer Science клуб) 2. Обзор 31 / 33

Page 126: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Пример работы алгоритма

Алгоритм

Approx-TSP(G )строим минимальноеостовное дерево Tграфа Gпродублируем каждоеребро дерева T и вполученном графенайдем эйлеров циклвыкинем из полученногоцикла все повторениявершин и вернемполученный цикл

А. Куликов (Computer Science клуб) 2. Обзор 31 / 33

Page 127: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Пример работы алгоритма

Алгоритм

Approx-TSP(G )строим минимальноеостовное дерево Tграфа Gпродублируем каждоеребро дерева T и вполученном графенайдем эйлеров циклвыкинем из полученногоцикла все повторениявершин и вернемполученный цикл

А. Куликов (Computer Science клуб) 2. Обзор 31 / 33

Page 128: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Пример работы алгоритма

Алгоритм

Approx-TSP(G )строим минимальноеостовное дерево Tграфа Gпродублируем каждоеребро дерева T и вполученном графенайдем эйлеров циклвыкинем из полученногоцикла все повторениявершин и вернемполученный цикл

А. Куликов (Computer Science клуб) 2. Обзор 31 / 33

Page 129: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Пример работы алгоритма

Алгоритм

Approx-TSP(G )строим минимальноеостовное дерево Tграфа Gпродублируем каждоеребро дерева T и вполученном графенайдем эйлеров циклвыкинем из полученногоцикла все повторениявершин и вернемполученный цикл

А. Куликов (Computer Science клуб) 2. Обзор 31 / 33

Page 130: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Анализ алгоритма

ТеоремаАлгоритм Approx-TSP является 2-приближенным.

Доказательствопусть WT — вес минимального остовного дерева, а Wopt — весоптимального гамильтонова циклаWT ≤ Wopt, поскольку при выкидывании ребра из гамильтонвацикла получается остовное деревокаждое ребро построенного гамильтонова цикла заменяеткакой-то путь эйлерова цикла, длина которого по неравенствутреугольника не менее длины этого ребразначит, длина найденного пути не превосходит 2WT , аследовательно, и 2Wopt

А. Куликов (Computer Science клуб) 2. Обзор 32 / 33

Page 131: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Анализ алгоритма

ТеоремаАлгоритм Approx-TSP является 2-приближенным.

Доказательство

пусть WT — вес минимального остовного дерева, а Wopt — весоптимального гамильтонова циклаWT ≤ Wopt, поскольку при выкидывании ребра из гамильтонвацикла получается остовное деревокаждое ребро построенного гамильтонова цикла заменяеткакой-то путь эйлерова цикла, длина которого по неравенствутреугольника не менее длины этого ребразначит, длина найденного пути не превосходит 2WT , аследовательно, и 2Wopt

А. Куликов (Computer Science клуб) 2. Обзор 32 / 33

Page 132: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Анализ алгоритма

ТеоремаАлгоритм Approx-TSP является 2-приближенным.

Доказательствопусть WT — вес минимального остовного дерева, а Wopt — весоптимального гамильтонова цикла

WT ≤ Wopt, поскольку при выкидывании ребра из гамильтонвацикла получается остовное деревокаждое ребро построенного гамильтонова цикла заменяеткакой-то путь эйлерова цикла, длина которого по неравенствутреугольника не менее длины этого ребразначит, длина найденного пути не превосходит 2WT , аследовательно, и 2Wopt

А. Куликов (Computer Science клуб) 2. Обзор 32 / 33

Page 133: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Анализ алгоритма

ТеоремаАлгоритм Approx-TSP является 2-приближенным.

Доказательствопусть WT — вес минимального остовного дерева, а Wopt — весоптимального гамильтонова циклаWT ≤ Wopt, поскольку при выкидывании ребра из гамильтонвацикла получается остовное дерево

каждое ребро построенного гамильтонова цикла заменяеткакой-то путь эйлерова цикла, длина которого по неравенствутреугольника не менее длины этого ребразначит, длина найденного пути не превосходит 2WT , аследовательно, и 2Wopt

А. Куликов (Computer Science клуб) 2. Обзор 32 / 33

Page 134: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Анализ алгоритма

ТеоремаАлгоритм Approx-TSP является 2-приближенным.

Доказательствопусть WT — вес минимального остовного дерева, а Wopt — весоптимального гамильтонова циклаWT ≤ Wopt, поскольку при выкидывании ребра из гамильтонвацикла получается остовное деревокаждое ребро построенного гамильтонова цикла заменяеткакой-то путь эйлерова цикла, длина которого по неравенствутреугольника не менее длины этого ребра

значит, длина найденного пути не превосходит 2WT , аследовательно, и 2Wopt

А. Куликов (Computer Science клуб) 2. Обзор 32 / 33

Page 135: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Анализ алгоритма

ТеоремаАлгоритм Approx-TSP является 2-приближенным.

Доказательствопусть WT — вес минимального остовного дерева, а Wopt — весоптимального гамильтонова циклаWT ≤ Wopt, поскольку при выкидывании ребра из гамильтонвацикла получается остовное деревокаждое ребро построенного гамильтонова цикла заменяеткакой-то путь эйлерова цикла, длина которого по неравенствутреугольника не менее длины этого ребразначит, длина найденного пути не превосходит 2WT , аследовательно, и 2Wopt

А. Куликов (Computer Science клуб) 2. Обзор 32 / 33

Page 136: Алгоритмы для NP-трудных задач, осень 2009: Обзор

Приближённые алгоритмы Задача о коммивояжёре

Спасибо за внимание!

А. Куликов (Computer Science клуб) 2. Обзор 33 / 33