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

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

  • Upload
    others

  • View
    17

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

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

А. Куликов

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

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 1 / 25

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

План лекции

1 Определения

2 Задача о покрытии множествами

3 Кратчайшая надпоследовательность

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 2 / 25

Page 3: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

План лекции

1 Определения

2 Задача о покрытии множествами

3 Кратчайшая надпоследовательность

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 2 / 25

Page 4: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

План лекции

1 Определения

2 Задача о покрытии множествами

3 Кратчайшая надпоследовательность

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 2 / 25

Page 5: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Определения

План лекции

1 Определения

2 Задача о покрытии множествами

3 Кратчайшая надпоследовательность

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 3 / 25

Page 6: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Определения

Для чего нужны

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

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 4 / 25

Page 7: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Определения

Для чего нужнывозникающие на практике оптимизационные задачи частоявляются NP-трудными

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

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 4 / 25

Page 8: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Определения

Для чего нужнывозникающие на практике оптимизационные задачи частоявляются NP-труднымиполиномиальный алгоритм для такой задачи вряд ли существует

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

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 4 / 25

Page 9: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Определения

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

или же алгоритм, находящий решение, которое не сильно хужеоптимального; такие алгоритмы называются приближенными

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 4 / 25

Page 10: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Определения

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

такие алгоритмы называются приближенными

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 4 / 25

Page 11: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Определения

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

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 4 / 25

Page 12: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Определения

Оптимизационная задача

Определение

Пусть дан вход I оптимизационной задачи Π.Через sol(I ) обозначим множество всех возможных решений.Будем считать, что sol(I ) ̸= ∅ для любого входа I .Каждому возможному решению x ∈ sol(I ) сопоставлена стоимостьcost(x).Требуется найти x ∈ sol(I ), на котором cost достигает своегооптимального (минимального или максимального) значения.Через OPT(I ) обозначим оптимальную стоимость для входа I .

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 5 / 25

Page 13: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Определения

Оптимизационная задача

ОпределениеПусть дан вход I оптимизационной задачи Π.

Через sol(I ) обозначим множество всех возможных решений.Будем считать, что sol(I ) ̸= ∅ для любого входа I .Каждому возможному решению x ∈ sol(I ) сопоставлена стоимостьcost(x).Требуется найти x ∈ sol(I ), на котором cost достигает своегооптимального (минимального или максимального) значения.Через OPT(I ) обозначим оптимальную стоимость для входа I .

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 5 / 25

Page 14: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Определения

Оптимизационная задача

ОпределениеПусть дан вход I оптимизационной задачи Π.Через sol(I ) обозначим множество всех возможных решений.Будем считать, что sol(I ) ̸= ∅ для любого входа I .

Каждому возможному решению x ∈ sol(I ) сопоставлена стоимостьcost(x).Требуется найти x ∈ sol(I ), на котором cost достигает своегооптимального (минимального или максимального) значения.Через OPT(I ) обозначим оптимальную стоимость для входа I .

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 5 / 25

Page 15: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Определения

Оптимизационная задача

ОпределениеПусть дан вход I оптимизационной задачи Π.Через sol(I ) обозначим множество всех возможных решений.Будем считать, что sol(I ) ̸= ∅ для любого входа I .Каждому возможному решению x ∈ sol(I ) сопоставлена стоимостьcost(x).

Требуется найти x ∈ sol(I ), на котором cost достигает своегооптимального (минимального или максимального) значения.Через OPT(I ) обозначим оптимальную стоимость для входа I .

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 5 / 25

Page 16: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Определения

Оптимизационная задача

ОпределениеПусть дан вход I оптимизационной задачи Π.Через sol(I ) обозначим множество всех возможных решений.Будем считать, что sol(I ) ̸= ∅ для любого входа I .Каждому возможному решению x ∈ sol(I ) сопоставлена стоимостьcost(x).Требуется найти x ∈ sol(I ), на котором cost достигает своегооптимального (минимального или максимального) значения.

Через OPT(I ) обозначим оптимальную стоимость для входа I .

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 5 / 25

Page 17: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Определения

Оптимизационная задача

ОпределениеПусть дан вход I оптимизационной задачи Π.Через sol(I ) обозначим множество всех возможных решений.Будем считать, что sol(I ) ̸= ∅ для любого входа I .Каждому возможному решению x ∈ sol(I ) сопоставлена стоимостьcost(x).Требуется найти x ∈ sol(I ), на котором cost достигает своегооптимального (минимального или максимального) значения.Через OPT(I ) обозначим оптимальную стоимость для входа I .

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 5 / 25

Page 18: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Определения

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

Определение

Приближенным алгоритмом (approximation algorithm) для задачиΠ называется полиномиальный по времени алгоритм,возращающий для каждого входа I какое-то решение x ∈ sol(I ).Через A(I ) мы обозначаем стоимость решения, найденногоалгоритмом A на входе I .Приближенный алгоритм A имеет абсолютную оценку точности(absolute performance guarantee) c , если для любого входа Iвыполняется неравенство |OPT(I )− A(I )| ≤ c .

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 6 / 25

Page 19: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Определения

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

Определение

Приближенным алгоритмом (approximation algorithm) для задачиΠ называется полиномиальный по времени алгоритм,возращающий для каждого входа I какое-то решение x ∈ sol(I ).Через A(I ) мы обозначаем стоимость решения, найденногоалгоритмом A на входе I .

Приближенный алгоритм A имеет абсолютную оценку точности(absolute performance guarantee) c , если для любого входа Iвыполняется неравенство |OPT(I )− A(I )| ≤ c .

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 6 / 25

Page 20: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Определения

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

Определение

Приближенным алгоритмом (approximation algorithm) для задачиΠ называется полиномиальный по времени алгоритм,возращающий для каждого входа I какое-то решение x ∈ sol(I ).Через A(I ) мы обозначаем стоимость решения, найденногоалгоритмом A на входе I .Приближенный алгоритм A имеет абсолютную оценку точности(absolute performance guarantee) c , если для любого входа Iвыполняется неравенство |OPT(I )− A(I )| ≤ c .

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 6 / 25

Page 21: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Определения

Приближенный алгоритм (продолжение)

Определение

Приближенный алгоритм A имеет относительную оценку точности(relative performance guarantee) 𝛼, если для любого входа Iвыполняется неравенство

A(I )/OPT(I ) ≥ 𝛼 для максимизационной задачи;A(I )/OPT(I ) ≤ 𝛼 для минимизационной задачи.

Такие алгоритмы мы называем 𝛼-приближенными.

ЗамечаниеДля оптимизационных задач 𝛼 ≤ 1, для минимизационных — 𝛼 ≥ 1.Алгоритм тем лучше, чем ближе 𝛼 к 1.

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 7 / 25

Page 22: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Определения

Приближенный алгоритм (продолжение)

ОпределениеПриближенный алгоритм A имеет относительную оценку точности(relative performance guarantee) 𝛼, если для любого входа Iвыполняется неравенство

A(I )/OPT(I ) ≥ 𝛼 для максимизационной задачи;A(I )/OPT(I ) ≤ 𝛼 для минимизационной задачи.

Такие алгоритмы мы называем 𝛼-приближенными.

ЗамечаниеДля оптимизационных задач 𝛼 ≤ 1, для минимизационных — 𝛼 ≥ 1.Алгоритм тем лучше, чем ближе 𝛼 к 1.

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 7 / 25

Page 23: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Определения

Приближенный алгоритм (продолжение)

ОпределениеПриближенный алгоритм A имеет относительную оценку точности(relative performance guarantee) 𝛼, если для любого входа Iвыполняется неравенство

A(I )/OPT(I ) ≥ 𝛼 для максимизационной задачи;

A(I )/OPT(I ) ≤ 𝛼 для минимизационной задачи.

Такие алгоритмы мы называем 𝛼-приближенными.

ЗамечаниеДля оптимизационных задач 𝛼 ≤ 1, для минимизационных — 𝛼 ≥ 1.Алгоритм тем лучше, чем ближе 𝛼 к 1.

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 7 / 25

Page 24: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Определения

Приближенный алгоритм (продолжение)

ОпределениеПриближенный алгоритм A имеет относительную оценку точности(relative performance guarantee) 𝛼, если для любого входа Iвыполняется неравенство

A(I )/OPT(I ) ≥ 𝛼 для максимизационной задачи;A(I )/OPT(I ) ≤ 𝛼 для минимизационной задачи.

Такие алгоритмы мы называем 𝛼-приближенными.

ЗамечаниеДля оптимизационных задач 𝛼 ≤ 1, для минимизационных — 𝛼 ≥ 1.Алгоритм тем лучше, чем ближе 𝛼 к 1.

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 7 / 25

Page 25: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Определения

Приближенный алгоритм (продолжение)

ОпределениеПриближенный алгоритм A имеет относительную оценку точности(relative performance guarantee) 𝛼, если для любого входа Iвыполняется неравенство

A(I )/OPT(I ) ≥ 𝛼 для максимизационной задачи;A(I )/OPT(I ) ≤ 𝛼 для минимизационной задачи.

Такие алгоритмы мы называем 𝛼-приближенными.

ЗамечаниеДля оптимизационных задач 𝛼 ≤ 1, для минимизационных — 𝛼 ≥ 1.Алгоритм тем лучше, чем ближе 𝛼 к 1.

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 7 / 25

Page 26: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Определения

Приближенный алгоритм (продолжение)

ОпределениеПриближенный алгоритм A имеет относительную оценку точности(relative performance guarantee) 𝛼, если для любого входа Iвыполняется неравенство

A(I )/OPT(I ) ≥ 𝛼 для максимизационной задачи;A(I )/OPT(I ) ≤ 𝛼 для минимизационной задачи.

Такие алгоритмы мы называем 𝛼-приближенными.

ЗамечаниеДля оптимизационных задач 𝛼 ≤ 1, для минимизационных — 𝛼 ≥ 1.Алгоритм тем лучше, чем ближе 𝛼 к 1.

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 7 / 25

Page 27: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Определения

Полиномиальная приближенная схема

Определение

Пусть дана максимизационная задача Π.Π имеет полиномиальную приближенную схему (polynomial timeapproximation scheme, PTAS), если

1 для любого 𝜖 ≥ 0 существует (1− 𝜖)-приближенный алгоритм дляΠ;

2 для любого 𝜖 > 0 время работы такого алгоритма зависит от nполиномиально.

Если же время работы такого алгоритма полиномиально нетолько по n, но и по 1/𝜖, то полученная схема называетсяполностью полиномиальной приближенной схемой (fullypolynomial time approximation scheme, FPTAS).Определение для минимизационной задачи полностьюаналогично.

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 8 / 25

Page 28: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Определения

Полиномиальная приближенная схема

ОпределениеПусть дана максимизационная задача Π.

Π имеет полиномиальную приближенную схему (polynomial timeapproximation scheme, PTAS), если

1 для любого 𝜖 ≥ 0 существует (1− 𝜖)-приближенный алгоритм дляΠ;

2 для любого 𝜖 > 0 время работы такого алгоритма зависит от nполиномиально.

Если же время работы такого алгоритма полиномиально нетолько по n, но и по 1/𝜖, то полученная схема называетсяполностью полиномиальной приближенной схемой (fullypolynomial time approximation scheme, FPTAS).Определение для минимизационной задачи полностьюаналогично.

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 8 / 25

Page 29: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Определения

Полиномиальная приближенная схема

ОпределениеПусть дана максимизационная задача Π.Π имеет полиномиальную приближенную схему (polynomial timeapproximation scheme, PTAS), если

1 для любого 𝜖 ≥ 0 существует (1− 𝜖)-приближенный алгоритм дляΠ;

2 для любого 𝜖 > 0 время работы такого алгоритма зависит от nполиномиально.

Если же время работы такого алгоритма полиномиально нетолько по n, но и по 1/𝜖, то полученная схема называетсяполностью полиномиальной приближенной схемой (fullypolynomial time approximation scheme, FPTAS).Определение для минимизационной задачи полностьюаналогично.

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 8 / 25

Page 30: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Определения

Полиномиальная приближенная схема

ОпределениеПусть дана максимизационная задача Π.Π имеет полиномиальную приближенную схему (polynomial timeapproximation scheme, PTAS), если

1 для любого 𝜖 ≥ 0 существует (1− 𝜖)-приближенный алгоритм дляΠ;

2 для любого 𝜖 > 0 время работы такого алгоритма зависит от nполиномиально.

Если же время работы такого алгоритма полиномиально нетолько по n, но и по 1/𝜖, то полученная схема называетсяполностью полиномиальной приближенной схемой (fullypolynomial time approximation scheme, FPTAS).Определение для минимизационной задачи полностьюаналогично.

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 8 / 25

Page 31: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Определения

Полиномиальная приближенная схема

ОпределениеПусть дана максимизационная задача Π.Π имеет полиномиальную приближенную схему (polynomial timeapproximation scheme, PTAS), если

1 для любого 𝜖 ≥ 0 существует (1− 𝜖)-приближенный алгоритм дляΠ;

2 для любого 𝜖 > 0 время работы такого алгоритма зависит от nполиномиально.

Если же время работы такого алгоритма полиномиально нетолько по n, но и по 1/𝜖, то полученная схема называетсяполностью полиномиальной приближенной схемой (fullypolynomial time approximation scheme, FPTAS).Определение для минимизационной задачи полностьюаналогично.

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 8 / 25

Page 32: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Определения

Полиномиальная приближенная схема

ОпределениеПусть дана максимизационная задача Π.Π имеет полиномиальную приближенную схему (polynomial timeapproximation scheme, PTAS), если

1 для любого 𝜖 ≥ 0 существует (1− 𝜖)-приближенный алгоритм дляΠ;

2 для любого 𝜖 > 0 время работы такого алгоритма зависит от nполиномиально.

Если же время работы такого алгоритма полиномиально нетолько по n, но и по 1/𝜖, то полученная схема называетсяполностью полиномиальной приближенной схемой (fullypolynomial time approximation scheme, FPTAS).

Определение для минимизационной задачи полностьюаналогично.

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 8 / 25

Page 33: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Определения

Полиномиальная приближенная схема

ОпределениеПусть дана максимизационная задача Π.Π имеет полиномиальную приближенную схему (polynomial timeapproximation scheme, PTAS), если

1 для любого 𝜖 ≥ 0 существует (1− 𝜖)-приближенный алгоритм дляΠ;

2 для любого 𝜖 > 0 время работы такого алгоритма зависит от nполиномиально.

Если же время работы такого алгоритма полиномиально нетолько по n, но и по 1/𝜖, то полученная схема называетсяполностью полиномиальной приближенной схемой (fullypolynomial time approximation scheme, FPTAS).Определение для минимизационной задачи полностьюаналогично.

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 8 / 25

Page 34: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Задача о покрытии множествами

План лекции

1 Определения

2 Задача о покрытии множествами

3 Кратчайшая надпоследовательность

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 9 / 25

Page 35: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Задача о покрытии множествами

Задача о покрытии множествами

Определение

Дано множество U = {u1, . . . , un} и семейство его подмножествℱ = {S1, . . . , Sk}, Si ⊆ U.В сумме все подмножества покрывают U: U =

⋃︀S∈ℱ S .

Каждому подмножеству Si сопоставлена некотораянеотрицательная стоимость pi ≥ 0.Задача о покрытии множествами (set cover problem) заключаетсяв нахождении набора подмножеств, покрывающего все множествоU и имеющего минимальный возможный вес.

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 10 / 25

Page 36: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Задача о покрытии множествами

Задача о покрытии множествами

Определение

Дано множество U = {u1, . . . , un} и семейство его подмножествℱ = {S1, . . . , Sk}, Si ⊆ U.

В сумме все подмножества покрывают U: U =⋃︀

S∈ℱ S .Каждому подмножеству Si сопоставлена некотораянеотрицательная стоимость pi ≥ 0.Задача о покрытии множествами (set cover problem) заключаетсяв нахождении набора подмножеств, покрывающего все множествоU и имеющего минимальный возможный вес.

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 10 / 25

Page 37: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Задача о покрытии множествами

Задача о покрытии множествами

Определение

Дано множество U = {u1, . . . , un} и семейство его подмножествℱ = {S1, . . . , Sk}, Si ⊆ U.В сумме все подмножества покрывают U: U =

⋃︀S∈ℱ S .

Каждому подмножеству Si сопоставлена некотораянеотрицательная стоимость pi ≥ 0.Задача о покрытии множествами (set cover problem) заключаетсяв нахождении набора подмножеств, покрывающего все множествоU и имеющего минимальный возможный вес.

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 10 / 25

Page 38: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Задача о покрытии множествами

Задача о покрытии множествами

Определение

Дано множество U = {u1, . . . , un} и семейство его подмножествℱ = {S1, . . . , Sk}, Si ⊆ U.В сумме все подмножества покрывают U: U =

⋃︀S∈ℱ S .

Каждому подмножеству Si сопоставлена некотораянеотрицательная стоимость pi ≥ 0.

Задача о покрытии множествами (set cover problem) заключаетсяв нахождении набора подмножеств, покрывающего все множествоU и имеющего минимальный возможный вес.

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 10 / 25

Page 39: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Задача о покрытии множествами

Задача о покрытии множествами

Определение

Дано множество U = {u1, . . . , un} и семейство его подмножествℱ = {S1, . . . , Sk}, Si ⊆ U.В сумме все подмножества покрывают U: U =

⋃︀S∈ℱ S .

Каждому подмножеству Si сопоставлена некотораянеотрицательная стоимость pi ≥ 0.Задача о покрытии множествами (set cover problem) заключаетсяв нахождении набора подмножеств, покрывающего все множествоU и имеющего минимальный возможный вес.

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 10 / 25

Page 40: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Задача о покрытии множествами

Жадный приближенный алгоритм

НеформальноНа каждом шаге выбираем множество с минимальной удельнойстоимостью покрываемых им элементов

Формально

Greedy-Set-Cover(X ,ℱ)I := ∅while

⋃︀j∈I Sj ̸= X

∀i ̸∈ I , cost[i ] := pi/|Si∖⋃︀

j∈I Sj |выберем i0, такое что cost[i0] = mini ̸∈I cost[i ]I := I ∪ {i0}

return I

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 11 / 25

Page 41: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Задача о покрытии множествами

Жадный приближенный алгоритм

НеформальноНа каждом шаге выбираем множество с минимальной удельнойстоимостью покрываемых им элементов

Формально

Greedy-Set-Cover(X ,ℱ)

I := ∅while

⋃︀j∈I Sj ̸= X

∀i ̸∈ I , cost[i ] := pi/|Si∖⋃︀

j∈I Sj |выберем i0, такое что cost[i0] = mini ̸∈I cost[i ]I := I ∪ {i0}

return I

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 11 / 25

Page 42: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Задача о покрытии множествами

Жадный приближенный алгоритм

НеформальноНа каждом шаге выбираем множество с минимальной удельнойстоимостью покрываемых им элементов

Формально

Greedy-Set-Cover(X ,ℱ)I := ∅

while⋃︀

j∈I Sj ̸= X∀i ̸∈ I , cost[i ] := pi/|Si∖

⋃︀j∈I Sj |

выберем i0, такое что cost[i0] = mini ̸∈I cost[i ]I := I ∪ {i0}

return I

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 11 / 25

Page 43: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Задача о покрытии множествами

Жадный приближенный алгоритм

НеформальноНа каждом шаге выбираем множество с минимальной удельнойстоимостью покрываемых им элементов

Формально

Greedy-Set-Cover(X ,ℱ)I := ∅while

⋃︀j∈I Sj ̸= X

∀i ̸∈ I , cost[i ] := pi/|Si∖⋃︀

j∈I Sj |выберем i0, такое что cost[i0] = mini ̸∈I cost[i ]I := I ∪ {i0}

return I

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 11 / 25

Page 44: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Задача о покрытии множествами

Жадный приближенный алгоритм

НеформальноНа каждом шаге выбираем множество с минимальной удельнойстоимостью покрываемых им элементов

Формально

Greedy-Set-Cover(X ,ℱ)I := ∅while

⋃︀j∈I Sj ̸= X

∀i ̸∈ I , cost[i ] := pi/|Si∖⋃︀

j∈I Sj |

выберем i0, такое что cost[i0] = mini ̸∈I cost[i ]I := I ∪ {i0}

return I

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 11 / 25

Page 45: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Задача о покрытии множествами

Жадный приближенный алгоритм

НеформальноНа каждом шаге выбираем множество с минимальной удельнойстоимостью покрываемых им элементов

Формально

Greedy-Set-Cover(X ,ℱ)I := ∅while

⋃︀j∈I Sj ̸= X

∀i ̸∈ I , cost[i ] := pi/|Si∖⋃︀

j∈I Sj |выберем i0, такое что cost[i0] = mini ̸∈I cost[i ]

I := I ∪ {i0}return I

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 11 / 25

Page 46: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Задача о покрытии множествами

Жадный приближенный алгоритм

НеформальноНа каждом шаге выбираем множество с минимальной удельнойстоимостью покрываемых им элементов

Формально

Greedy-Set-Cover(X ,ℱ)I := ∅while

⋃︀j∈I Sj ̸= X

∀i ̸∈ I , cost[i ] := pi/|Si∖⋃︀

j∈I Sj |выберем i0, такое что cost[i0] = mini ̸∈I cost[i ]I := I ∪ {i0}

return I

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 11 / 25

Page 47: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Задача о покрытии множествами

Жадный приближенный алгоритм

НеформальноНа каждом шаге выбираем множество с минимальной удельнойстоимостью покрываемых им элементов

Формально

Greedy-Set-Cover(X ,ℱ)I := ∅while

⋃︀j∈I Sj ̸= X

∀i ̸∈ I , cost[i ] := pi/|Si∖⋃︀

j∈I Sj |выберем i0, такое что cost[i0] = mini ̸∈I cost[i ]I := I ∪ {i0}

return I

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 11 / 25

Page 48: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Задача о покрытии множествами

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

ТеоремаАлгоритм Greedy-Set-Cover является Hn-приближенным, гдеHn = 1 + 1/2 + · · ·+ 1/n — сумма первых n членов гармоническогоряда.

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

перенумеруем все элементы множества U в том порядке, как мыих покрываликаждому xi присвоим стоимость ci , равную стоимости множества,которым его впервые покрыликак будет показано чуть позже, ci ≤ Popt/(n − i + 1)∑︀

i∈I pi =∑︀n

j=1 cj , поскольку сумма стоимостей всех элементов,покрываемых при добавлении множества Si равна как раз pi∑︀n

j=1 cj ≤ Popt(1 + 1/2 + · · ·+ 1/n)

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 12 / 25

Page 49: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Задача о покрытии множествами

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

ТеоремаАлгоритм Greedy-Set-Cover является Hn-приближенным, гдеHn = 1 + 1/2 + · · ·+ 1/n — сумма первых n членов гармоническогоряда.

Доказательствоперенумеруем все элементы множества U в том порядке, как мыих покрывали

каждому xi присвоим стоимость ci , равную стоимости множества,которым его впервые покрыликак будет показано чуть позже, ci ≤ Popt/(n − i + 1)∑︀

i∈I pi =∑︀n

j=1 cj , поскольку сумма стоимостей всех элементов,покрываемых при добавлении множества Si равна как раз pi∑︀n

j=1 cj ≤ Popt(1 + 1/2 + · · ·+ 1/n)

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 12 / 25

Page 50: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Задача о покрытии множествами

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

ТеоремаАлгоритм Greedy-Set-Cover является Hn-приближенным, гдеHn = 1 + 1/2 + · · ·+ 1/n — сумма первых n членов гармоническогоряда.

Доказательствоперенумеруем все элементы множества U в том порядке, как мыих покрываликаждому xi присвоим стоимость ci , равную стоимости множества,которым его впервые покрыли

как будет показано чуть позже, ci ≤ Popt/(n − i + 1)∑︀i∈I pi =

∑︀nj=1 cj , поскольку сумма стоимостей всех элементов,

покрываемых при добавлении множества Si равна как раз pi∑︀nj=1 cj ≤ Popt(1 + 1/2 + · · ·+ 1/n)

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 12 / 25

Page 51: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Задача о покрытии множествами

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

ТеоремаАлгоритм Greedy-Set-Cover является Hn-приближенным, гдеHn = 1 + 1/2 + · · ·+ 1/n — сумма первых n членов гармоническогоряда.

Доказательствоперенумеруем все элементы множества U в том порядке, как мыих покрываликаждому xi присвоим стоимость ci , равную стоимости множества,которым его впервые покрыликак будет показано чуть позже, ci ≤ Popt/(n − i + 1)

∑︀i∈I pi =

∑︀nj=1 cj , поскольку сумма стоимостей всех элементов,

покрываемых при добавлении множества Si равна как раз pi∑︀nj=1 cj ≤ Popt(1 + 1/2 + · · ·+ 1/n)

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 12 / 25

Page 52: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Задача о покрытии множествами

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

ТеоремаАлгоритм Greedy-Set-Cover является Hn-приближенным, гдеHn = 1 + 1/2 + · · ·+ 1/n — сумма первых n членов гармоническогоряда.

Доказательствоперенумеруем все элементы множества U в том порядке, как мыих покрываликаждому xi присвоим стоимость ci , равную стоимости множества,которым его впервые покрыликак будет показано чуть позже, ci ≤ Popt/(n − i + 1)∑︀

i∈I pi =∑︀n

j=1 cj , поскольку сумма стоимостей всех элементов,покрываемых при добавлении множества Si равна как раз pi

∑︀nj=1 cj ≤ Popt(1 + 1/2 + · · ·+ 1/n)

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 12 / 25

Page 53: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Задача о покрытии множествами

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

ТеоремаАлгоритм Greedy-Set-Cover является Hn-приближенным, гдеHn = 1 + 1/2 + · · ·+ 1/n — сумма первых n членов гармоническогоряда.

Доказательствоперенумеруем все элементы множества U в том порядке, как мыих покрываликаждому xi присвоим стоимость ci , равную стоимости множества,которым его впервые покрыликак будет показано чуть позже, ci ≤ Popt/(n − i + 1)∑︀

i∈I pi =∑︀n

j=1 cj , поскольку сумма стоимостей всех элементов,покрываемых при добавлении множества Si равна как раз pi∑︀n

j=1 cj ≤ Popt(1 + 1/2 + · · ·+ 1/n)

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 12 / 25

Page 54: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Задача о покрытии множествами

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

Лемма

ci ≤ Popt/(n − i + 1)

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

рассмотрим момент, в которой мы собираемся покрыть элемент ui

ясно, что непокрытые элементы можно покрыть набороммножеств общей стоимостью не более Popt

значит, хотя бы для одного из не выбранных пока множеств Skвыполняется неравенство cost[Sk ] ≤ Popt/|U∖

⋃︀j∈I Sj |

знаменатель последней дроби ≥ n − i + 1, так как мы в данныймомент покрываем ui

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 13 / 25

Page 55: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Задача о покрытии множествами

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

Лемма

ci ≤ Popt/(n − i + 1)

Доказательстворассмотрим момент, в которой мы собираемся покрыть элемент ui

ясно, что непокрытые элементы можно покрыть набороммножеств общей стоимостью не более Popt

значит, хотя бы для одного из не выбранных пока множеств Skвыполняется неравенство cost[Sk ] ≤ Popt/|U∖

⋃︀j∈I Sj |

знаменатель последней дроби ≥ n − i + 1, так как мы в данныймомент покрываем ui

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 13 / 25

Page 56: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Задача о покрытии множествами

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

Лемма

ci ≤ Popt/(n − i + 1)

Доказательстворассмотрим момент, в которой мы собираемся покрыть элемент ui

ясно, что непокрытые элементы можно покрыть набороммножеств общей стоимостью не более Popt

значит, хотя бы для одного из не выбранных пока множеств Skвыполняется неравенство cost[Sk ] ≤ Popt/|U∖

⋃︀j∈I Sj |

знаменатель последней дроби ≥ n − i + 1, так как мы в данныймомент покрываем ui

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 13 / 25

Page 57: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Задача о покрытии множествами

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

Лемма

ci ≤ Popt/(n − i + 1)

Доказательстворассмотрим момент, в которой мы собираемся покрыть элемент ui

ясно, что непокрытые элементы можно покрыть набороммножеств общей стоимостью не более Popt

значит, хотя бы для одного из не выбранных пока множеств Skвыполняется неравенство cost[Sk ] ≤ Popt/|U∖

⋃︀j∈I Sj |

знаменатель последней дроби ≥ n − i + 1, так как мы в данныймомент покрываем ui

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 13 / 25

Page 58: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Задача о покрытии множествами

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

Лемма

ci ≤ Popt/(n − i + 1)

Доказательстворассмотрим момент, в которой мы собираемся покрыть элемент ui

ясно, что непокрытые элементы можно покрыть набороммножеств общей стоимостью не более Popt

значит, хотя бы для одного из не выбранных пока множеств Skвыполняется неравенство cost[Sk ] ≤ Popt/|U∖

⋃︀j∈I Sj |

знаменатель последней дроби ≥ n − i + 1, так как мы в данныймомент покрываем ui

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 13 / 25

Page 59: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Задача о покрытии множествами

Трудность приближения

ФактИз P ̸=NP следует, что для задачи о покрытии множествами несуществует c log n-приближенного алгоритма (c — некотораяконстанта).

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 14 / 25

Page 60: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

План лекции

1 Определения

2 Задача о покрытии множествами

3 Кратчайшая надпоследовательность

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 15 / 25

Page 61: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

Задача о кратчайшей общей надпоследовательности

Определение

Дано множество строк {s1, . . . , sn}.Задача о кратчайшей общей надпоследовательности (shortestcommon superstring) заключается в нахождении самой короткойстроки u, которая содержит в качестве подстроки каждую из si .

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 16 / 25

Page 62: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

Задача о кратчайшей общей надпоследовательности

Определение

Дано множество строк {s1, . . . , sn}.

Задача о кратчайшей общей надпоследовательности (shortestcommon superstring) заключается в нахождении самой короткойстроки u, которая содержит в качестве подстроки каждую из si .

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 16 / 25

Page 63: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

Задача о кратчайшей общей надпоследовательности

Определение

Дано множество строк {s1, . . . , sn}.Задача о кратчайшей общей надпоследовательности (shortestcommon superstring) заключается в нахождении самой короткойстроки u, которая содержит в качестве подстроки каждую из si .

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 16 / 25

Page 64: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

Сведение к задаче о покрытии множествами

НУО, среди строк нет подстрок друг другадля всех i , j , k , для которых суффикс строки si длины k совпадаетс префиксом строки sj длины k , построим строкуwijk = si · sj [k + 1..|sj |]:

s6 = abcab⏟ ⏞ X

bbca⏟ ⏞ Y

, s2 = bbca⏟ ⏞ Y

aaccbcac⏟ ⏞ Z

w6,2,4 = abcab⏟ ⏞ X

bbca⏟ ⏞ Y

aaccbcac⏟ ⏞ Z

для любой строки s определимset(s) = {si | si — подстрока s}стоимость множества set(s) положим равной длине строки sвход задачи о покрытии множествами: U = {s1, . . . , sn},ℱ = {set(si )} ∪ {set(wijk)}

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 17 / 25

Page 65: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

Сведение к задаче о покрытии множествами

НУО, среди строк нет подстрок друг друга

для всех i , j , k , для которых суффикс строки si длины k совпадаетс префиксом строки sj длины k , построим строкуwijk = si · sj [k + 1..|sj |]:

s6 = abcab⏟ ⏞ X

bbca⏟ ⏞ Y

, s2 = bbca⏟ ⏞ Y

aaccbcac⏟ ⏞ Z

w6,2,4 = abcab⏟ ⏞ X

bbca⏟ ⏞ Y

aaccbcac⏟ ⏞ Z

для любой строки s определимset(s) = {si | si — подстрока s}стоимость множества set(s) положим равной длине строки sвход задачи о покрытии множествами: U = {s1, . . . , sn},ℱ = {set(si )} ∪ {set(wijk)}

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 17 / 25

Page 66: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

Сведение к задаче о покрытии множествами

НУО, среди строк нет подстрок друг другадля всех i , j , k , для которых суффикс строки si длины k совпадаетс префиксом строки sj длины k , построим строкуwijk = si · sj [k + 1..|sj |]:

s6 = abcab⏟ ⏞ X

bbca⏟ ⏞ Y

, s2 = bbca⏟ ⏞ Y

aaccbcac⏟ ⏞ Z

w6,2,4 = abcab⏟ ⏞ X

bbca⏟ ⏞ Y

aaccbcac⏟ ⏞ Z

для любой строки s определимset(s) = {si | si — подстрока s}стоимость множества set(s) положим равной длине строки sвход задачи о покрытии множествами: U = {s1, . . . , sn},ℱ = {set(si )} ∪ {set(wijk)}

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 17 / 25

Page 67: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

Сведение к задаче о покрытии множествами

НУО, среди строк нет подстрок друг другадля всех i , j , k , для которых суффикс строки si длины k совпадаетс префиксом строки sj длины k , построим строкуwijk = si · sj [k + 1..|sj |]:

s6 = abcab⏟ ⏞ X

bbca⏟ ⏞ Y

, s2 = bbca⏟ ⏞ Y

aaccbcac⏟ ⏞ Z

w6,2,4 = abcab⏟ ⏞ X

bbca⏟ ⏞ Y

aaccbcac⏟ ⏞ Z

для любой строки s определимset(s) = {si | si — подстрока s}стоимость множества set(s) положим равной длине строки sвход задачи о покрытии множествами: U = {s1, . . . , sn},ℱ = {set(si )} ∪ {set(wijk)}

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 17 / 25

Page 68: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

Сведение к задаче о покрытии множествами

НУО, среди строк нет подстрок друг другадля всех i , j , k , для которых суффикс строки si длины k совпадаетс префиксом строки sj длины k , построим строкуwijk = si · sj [k + 1..|sj |]:

s6 = abcab⏟ ⏞ X

bbca⏟ ⏞ Y

, s2 = bbca⏟ ⏞ Y

aaccbcac⏟ ⏞ Z

w6,2,4 = abcab⏟ ⏞ X

bbca⏟ ⏞ Y

aaccbcac⏟ ⏞ Z

для любой строки s определимset(s) = {si | si — подстрока s}стоимость множества set(s) положим равной длине строки sвход задачи о покрытии множествами: U = {s1, . . . , sn},ℱ = {set(si )} ∪ {set(wijk)}

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 17 / 25

Page 69: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

Сведение к задаче о покрытии множествами

НУО, среди строк нет подстрок друг другадля всех i , j , k , для которых суффикс строки si длины k совпадаетс префиксом строки sj длины k , построим строкуwijk = si · sj [k + 1..|sj |]:

s6 = abcab⏟ ⏞ X

bbca⏟ ⏞ Y

, s2 = bbca⏟ ⏞ Y

aaccbcac⏟ ⏞ Z

w6,2,4 = abcab⏟ ⏞ X

bbca⏟ ⏞ Y

aaccbcac⏟ ⏞ Z

для любой строки s определимset(s) = {si | si — подстрока s}

стоимость множества set(s) положим равной длине строки sвход задачи о покрытии множествами: U = {s1, . . . , sn},ℱ = {set(si )} ∪ {set(wijk)}

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 17 / 25

Page 70: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

Сведение к задаче о покрытии множествами

НУО, среди строк нет подстрок друг другадля всех i , j , k , для которых суффикс строки si длины k совпадаетс префиксом строки sj длины k , построим строкуwijk = si · sj [k + 1..|sj |]:

s6 = abcab⏟ ⏞ X

bbca⏟ ⏞ Y

, s2 = bbca⏟ ⏞ Y

aaccbcac⏟ ⏞ Z

w6,2,4 = abcab⏟ ⏞ X

bbca⏟ ⏞ Y

aaccbcac⏟ ⏞ Z

для любой строки s определимset(s) = {si | si — подстрока s}стоимость множества set(s) положим равной длине строки s

вход задачи о покрытии множествами: U = {s1, . . . , sn},ℱ = {set(si )} ∪ {set(wijk)}

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 17 / 25

Page 71: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

Сведение к задаче о покрытии множествами

НУО, среди строк нет подстрок друг другадля всех i , j , k , для которых суффикс строки si длины k совпадаетс префиксом строки sj длины k , построим строкуwijk = si · sj [k + 1..|sj |]:

s6 = abcab⏟ ⏞ X

bbca⏟ ⏞ Y

, s2 = bbca⏟ ⏞ Y

aaccbcac⏟ ⏞ Z

w6,2,4 = abcab⏟ ⏞ X

bbca⏟ ⏞ Y

aaccbcac⏟ ⏞ Z

для любой строки s определимset(s) = {si | si — подстрока s}стоимость множества set(s) положим равной длине строки sвход задачи о покрытии множествами: U = {s1, . . . , sn},ℱ = {set(si )} ∪ {set(wijk)}

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 17 / 25

Page 72: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

Сведение к задаче о покрытии множествами(продолжение)

итак, алгоритм возвращает нам некоторые множествамы сливаем соответствующие им строки и получаем строку,содержащую все siосталось показать, что построенный нами алгоритм является2Hn-приближеннымдля этого достаточно доказать приведенную ниже лемму

ЛеммаСтоимость оптимального решения полученной задачи о покрытиимножествами не более чем в два раза хуже длины решения исходнойзадачи о кратчайшей надпоследовательности.

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 18 / 25

Page 73: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

Сведение к задаче о покрытии множествами(продолжение)

итак, алгоритм возвращает нам некоторые множества

мы сливаем соответствующие им строки и получаем строку,содержащую все siосталось показать, что построенный нами алгоритм является2Hn-приближеннымдля этого достаточно доказать приведенную ниже лемму

ЛеммаСтоимость оптимального решения полученной задачи о покрытиимножествами не более чем в два раза хуже длины решения исходнойзадачи о кратчайшей надпоследовательности.

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 18 / 25

Page 74: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

Сведение к задаче о покрытии множествами(продолжение)

итак, алгоритм возвращает нам некоторые множествамы сливаем соответствующие им строки и получаем строку,содержащую все si

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

ЛеммаСтоимость оптимального решения полученной задачи о покрытиимножествами не более чем в два раза хуже длины решения исходнойзадачи о кратчайшей надпоследовательности.

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 18 / 25

Page 75: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

Сведение к задаче о покрытии множествами(продолжение)

итак, алгоритм возвращает нам некоторые множествамы сливаем соответствующие им строки и получаем строку,содержащую все siосталось показать, что построенный нами алгоритм является2Hn-приближенным

для этого достаточно доказать приведенную ниже лемму

ЛеммаСтоимость оптимального решения полученной задачи о покрытиимножествами не более чем в два раза хуже длины решения исходнойзадачи о кратчайшей надпоследовательности.

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 18 / 25

Page 76: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

Сведение к задаче о покрытии множествами(продолжение)

итак, алгоритм возвращает нам некоторые множествамы сливаем соответствующие им строки и получаем строку,содержащую все siосталось показать, что построенный нами алгоритм является2Hn-приближеннымдля этого достаточно доказать приведенную ниже лемму

ЛеммаСтоимость оптимального решения полученной задачи о покрытиимножествами не более чем в два раза хуже длины решения исходнойзадачи о кратчайшей надпоследовательности.

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 18 / 25

Page 77: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

Сведение к задаче о покрытии множествами(продолжение)

итак, алгоритм возвращает нам некоторые множествамы сливаем соответствующие им строки и получаем строку,содержащую все siосталось показать, что построенный нами алгоритм является2Hn-приближеннымдля этого достаточно доказать приведенную ниже лемму

ЛеммаСтоимость оптимального решения полученной задачи о покрытиимножествами не более чем в два раза хуже длины решения исходнойзадачи о кратчайшей надпоследовательности.

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 18 / 25

Page 78: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

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

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

перенумеруем строки si в порядке их вхождения в (какую-нибудь)оптимальную строку sясно, что вхождение каждой строки начинается и заканчиваетсястрого позже предыдущейразделим строки на блоки следующим образом: в первый блокберем s1 и все si , первые вхождения которых начинаются до концапервого вхождения s1сделаем из первой и последней строки этого блока общуюстроку — получим строку w1,j ,k (или же просто s1)следующий блок строим, начиная с первой строки, не попавшей впервый блок, и т.д.в итоге, получаем некоторое решение задачи о покрытиимножествами

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 19 / 25

Page 79: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

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

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

перенумеруем строки si в порядке их вхождения в (какую-нибудь)оптимальную строку s

ясно, что вхождение каждой строки начинается и заканчиваетсястрого позже предыдущейразделим строки на блоки следующим образом: в первый блокберем s1 и все si , первые вхождения которых начинаются до концапервого вхождения s1сделаем из первой и последней строки этого блока общуюстроку — получим строку w1,j ,k (или же просто s1)следующий блок строим, начиная с первой строки, не попавшей впервый блок, и т.д.в итоге, получаем некоторое решение задачи о покрытиимножествами

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 19 / 25

Page 80: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

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

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

перенумеруем строки si в порядке их вхождения в (какую-нибудь)оптимальную строку sясно, что вхождение каждой строки начинается и заканчиваетсястрого позже предыдущей

разделим строки на блоки следующим образом: в первый блокберем s1 и все si , первые вхождения которых начинаются до концапервого вхождения s1сделаем из первой и последней строки этого блока общуюстроку — получим строку w1,j ,k (или же просто s1)следующий блок строим, начиная с первой строки, не попавшей впервый блок, и т.д.в итоге, получаем некоторое решение задачи о покрытиимножествами

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 19 / 25

Page 81: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

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

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

перенумеруем строки si в порядке их вхождения в (какую-нибудь)оптимальную строку sясно, что вхождение каждой строки начинается и заканчиваетсястрого позже предыдущейразделим строки на блоки следующим образом: в первый блокберем s1 и все si , первые вхождения которых начинаются до концапервого вхождения s1

сделаем из первой и последней строки этого блока общуюстроку — получим строку w1,j ,k (или же просто s1)следующий блок строим, начиная с первой строки, не попавшей впервый блок, и т.д.в итоге, получаем некоторое решение задачи о покрытиимножествами

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 19 / 25

Page 82: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

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

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

перенумеруем строки si в порядке их вхождения в (какую-нибудь)оптимальную строку sясно, что вхождение каждой строки начинается и заканчиваетсястрого позже предыдущейразделим строки на блоки следующим образом: в первый блокберем s1 и все si , первые вхождения которых начинаются до концапервого вхождения s1сделаем из первой и последней строки этого блока общуюстроку — получим строку w1,j ,k (или же просто s1)

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

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 19 / 25

Page 83: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

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

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

перенумеруем строки si в порядке их вхождения в (какую-нибудь)оптимальную строку sясно, что вхождение каждой строки начинается и заканчиваетсястрого позже предыдущейразделим строки на блоки следующим образом: в первый блокберем s1 и все si , первые вхождения которых начинаются до концапервого вхождения s1сделаем из первой и последней строки этого блока общуюстроку — получим строку w1,j ,k (или же просто s1)следующий блок строим, начиная с первой строки, не попавшей впервый блок, и т.д.

в итоге, получаем некоторое решение задачи о покрытиимножествами

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 19 / 25

Page 84: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

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

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

перенумеруем строки si в порядке их вхождения в (какую-нибудь)оптимальную строку sясно, что вхождение каждой строки начинается и заканчиваетсястрого позже предыдущейразделим строки на блоки следующим образом: в первый блокберем s1 и все si , первые вхождения которых начинаются до концапервого вхождения s1сделаем из первой и последней строки этого блока общуюстроку — получим строку w1,j ,k (или же просто s1)следующий блок строим, начиная с первой строки, не попавшей впервый блок, и т.д.в итоге, получаем некоторое решение задачи о покрытиимножествами

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 19 / 25

Page 85: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

Пример

s

s1s2

s3s4

s5s6

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 20 / 25

Page 86: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

Пример

s

s1s2

s3s4

s5s6

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 20 / 25

Page 87: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

Пример

s

s1s2

s3s4

s5s6

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 20 / 25

Page 88: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

Пример

s

s1s2

s3s4

s5s6

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 20 / 25

Page 89: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

Доказательство леммы (продолжение)

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

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

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 21 / 25

Page 90: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

Доказательство леммы (продолжение)

Доказательстводостаточно показать, что стоимость данного конкретного решенияне превосходит удвоенной длины s

это верно, поскольку каждый символ строки s входит не болеечем в два блока

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 21 / 25

Page 91: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

Доказательство леммы (продолжение)

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

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 21 / 25

Page 92: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

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

допустим, на вход даны следующие строки:s1 = abc , s2 = bac , s3 = bcd , s4 = cdeвычисляем wijk :w132 = abcd , w141 = abcde, w241 = bacde, w342 = bcdeвычисляем set(si ) и set(wijk), а также стоимости:S1 = set(s1) = {s1}, p1 = 3,S2 = set(s2) = {s2}, p2 = 3,S3 = set(s3) = {s3}, p3 = 3,S4 = set(s4) = {s4}, p4 = 3,S5 = set(w132) = {s1, s3}, p5 = 4S6 = set(w141) = {s1, s3, s4}, p6 = 5,S7 = set(w241) = {s2, s4}, p7 = 5,S8 = set(w342) = {s3, s4}, p8 = 4

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 22 / 25

Page 93: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

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

допустим, на вход даны следующие строки:s1 = abc , s2 = bac , s3 = bcd , s4 = cde

вычисляем wijk :w132 = abcd , w141 = abcde, w241 = bacde, w342 = bcdeвычисляем set(si ) и set(wijk), а также стоимости:S1 = set(s1) = {s1}, p1 = 3,S2 = set(s2) = {s2}, p2 = 3,S3 = set(s3) = {s3}, p3 = 3,S4 = set(s4) = {s4}, p4 = 3,S5 = set(w132) = {s1, s3}, p5 = 4S6 = set(w141) = {s1, s3, s4}, p6 = 5,S7 = set(w241) = {s2, s4}, p7 = 5,S8 = set(w342) = {s3, s4}, p8 = 4

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 22 / 25

Page 94: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

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

допустим, на вход даны следующие строки:s1 = abc , s2 = bac , s3 = bcd , s4 = cdeвычисляем wijk :w132 = abcd , w141 = abcde, w241 = bacde, w342 = bcde

вычисляем set(si ) и set(wijk), а также стоимости:S1 = set(s1) = {s1}, p1 = 3,S2 = set(s2) = {s2}, p2 = 3,S3 = set(s3) = {s3}, p3 = 3,S4 = set(s4) = {s4}, p4 = 3,S5 = set(w132) = {s1, s3}, p5 = 4S6 = set(w141) = {s1, s3, s4}, p6 = 5,S7 = set(w241) = {s2, s4}, p7 = 5,S8 = set(w342) = {s3, s4}, p8 = 4

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 22 / 25

Page 95: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

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

допустим, на вход даны следующие строки:s1 = abc , s2 = bac , s3 = bcd , s4 = cdeвычисляем wijk :w132 = abcd , w141 = abcde, w241 = bacde, w342 = bcdeвычисляем set(si ) и set(wijk), а также стоимости:S1 = set(s1) = {s1}, p1 = 3,S2 = set(s2) = {s2}, p2 = 3,S3 = set(s3) = {s3}, p3 = 3,S4 = set(s4) = {s4}, p4 = 3,S5 = set(w132) = {s1, s3}, p5 = 4S6 = set(w141) = {s1, s3, s4}, p6 = 5,S7 = set(w241) = {s2, s4}, p7 = 5,S8 = set(w342) = {s3, s4}, p8 = 4

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 22 / 25

Page 96: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

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

итак, входными данными задачи о покрытии множествамиявляются универсальное множество U = {si}i∈[1..4], множество егоподмножеств ℱ = {Si}i∈[1..8], где каждому подмножеству Siсопоставлена стоимость pi

алгоритм последовательно добавляет в покрытие множества S6 иS2

поскольку S6 = set(w141) и S2 = set(s2), выходом нашегоалгоритма будет конкатенация строк w141 и s2, то есть строкаabcdebac , которая в данном конкретном примере являетсяоптимальной

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 23 / 25

Page 97: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

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

итак, входными данными задачи о покрытии множествамиявляются универсальное множество U = {si}i∈[1..4], множество егоподмножеств ℱ = {Si}i∈[1..8], где каждому подмножеству Siсопоставлена стоимость pi

алгоритм последовательно добавляет в покрытие множества S6 иS2

поскольку S6 = set(w141) и S2 = set(s2), выходом нашегоалгоритма будет конкатенация строк w141 и s2, то есть строкаabcdebac , которая в данном конкретном примере являетсяоптимальной

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 23 / 25

Page 98: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

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

итак, входными данными задачи о покрытии множествамиявляются универсальное множество U = {si}i∈[1..4], множество егоподмножеств ℱ = {Si}i∈[1..8], где каждому подмножеству Siсопоставлена стоимость pi

алгоритм последовательно добавляет в покрытие множества S6 иS2

поскольку S6 = set(w141) и S2 = set(s2), выходом нашегоалгоритма будет конкатенация строк w141 и s2, то есть строкаabcdebac , которая в данном конкретном примере являетсяоптимальной

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 23 / 25

Page 99: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

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

итак, входными данными задачи о покрытии множествамиявляются универсальное множество U = {si}i∈[1..4], множество егоподмножеств ℱ = {Si}i∈[1..8], где каждому подмножеству Siсопоставлена стоимость pi

алгоритм последовательно добавляет в покрытие множества S6 иS2

поскольку S6 = set(w141) и S2 = set(s2), выходом нашегоалгоритма будет конкатенация строк w141 и s2, то есть строкаabcdebac , которая в данном конкретном примере являетсяоптимальной

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 23 / 25

Page 100: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

Известно лучшее приближение

ФактСуществует 2.75-приближённый алгоритм.

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 24 / 25

Page 101: Алгоритмы для NP-трудных задач Лекция 5: Приближенные алгоритмы · Алгоритмы для NP-трудных задач Лекция

Кратчайшая надпоследовательность

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

А. Куликов (Computer Science клуб) 5. Приближенные алгоритмы 25 / 25