SlideShare a Scribd company logo
1 of 21
Анализ комбинаторных
алгоритмов
Лекция №10
NP-полнота
Абстрактные задачи
 Абстрактная задача – произвольное
бинарное отношение Q между элементами
множества условий I и множества решений S.
 В теории вычислений рассматриваются задачи
разрешения, в которых требуется дать ответ
«да» или «нет» на некоторый вопрос.
 Большинство абстрактных задач (в том числе
задач оптимизации) можно свести к задачам
разрешения.
Абстрактные задачи
G<V,E>
u
v
Множество S для
задачи о нахождении
пути между двумя
вершинами в графе:
1. Граф G<V,E>
2. Вершина u
3. Вершина v
Абстрактные задачи
 Представлением элементов некоторого
множества S называется отображение e из S во
множество битовых строк.
 Зафиксировав представление данных, мы
преобразуем абстрактную задачу в
строковую, для которой входным данным
является битовая строка, представляющая
исходные данные абстрактной задачи.
Абстрактные задачи
 Любая абстрактная задача может быть отнесена
к одному из сложностных классов, в
зависимости от того какие алгоритмы
существуют для ее решения.
 Сложностным классом P называется
множество всех строковых задач разрешения,
которые могут быть решены за
полиномиальное время.
Полиномиальное время
 Задачи, решаемые за полиномиальное время (a1*nk
+
a2*nk-1
+ a3*nk-2
+..+an-1*n+an, где k, a1..an-константы,
а n – размер входа алгоритма) принято считать
практически разрешимыми по следующим трем
причинам:
 Полиномиальные алгоритмы работают довольно быстро.
 Время работы полиномиальных алгоритмов не зависит от
модели вычислений (так не имеет значения
последовательные или параллельные вычисления
используются)
 Класс полиномиальных обладает свойствами
замкнутости (композиция полиномиальных задач –
полиномиальная задача)
Гамильтонов цикл
 Гамильтоновым циклом в неориентированном
графе G называется простой цикл, который
проходит через все вершины графа.
 Задача о гамильтоновом цикле состоит в
выяснении, имеет ли данный граф
гамильтонов цикл.
Гамильтонов цикл
Абстрактные задачи
 Сложностным классом NP называется
множество строковых задач разрешения, для
которых существуют проверяющие
алгоритмы, работающие за полиномиальное
время.
 Всякая задача из множества P принадлежит
множеству NP.
 Истинность обратного утверждения (если
задача находится в NP, то в P она тоже входит)
не установлена.
Абстрактные задачи
 Проблема эквивалентности сложностных
классов P=NP является одной из самых
серьезных нерешенных проблем теории
вычислений.
 Открытым остается вопрос о замкнутости
класса NP.
Абстрактные задачи
P=NP
P
NP
I II
NP-полнота
 Одним из главных аргументов в пользу
утверждения о неравенстве классов P и NP,
является наличие так называемых NP-полных
задач (NPC).
 Говоря неформально, NP-полные задачи –
«самые трудные» в классе NP.
 «Трудность» задач можно сравнивать сводя
одну задачу к другой.
NP-полнота
 Задача Q сводится к задаче Q`, если задачу Q можно
решить для любого входа, считая известным решение
задачи Q` для какого-то другого входа.
 Если задача Q сводится к задаче Q`, то любой
алгоритм решающий Q` можно использовать для
решения Q, т.е. задача Q «не труднее» Q`.
 Алгоритм приводящий входы задачи Q к
соответствующим входам задачи Q` называется
сводящим алгоритмом.
 Если сводящий алгоритм полиноминален задача
называется сводящейся за полиномиальное время.
NP-полнота
Сводящий
алгоритм
Q`
Q
Сведение задачи (разрешения) Q к Q`
NP-полнота
 Задача называется NP-полной, если:
 Она принадлежит к сложностному классу NP
 Она не менее трудна (не сводится за
полиномиальное время к не NP-полной задаче), чем
любая другая задача из класса NP.
 Если задача удовлетворяет второму условию,
но не обязательно условию №1, то такая
задача называется NP-трудной.
NP-полнота
Теорема.
Если некоторая NP-полная задача разрешима
за полиномиальное время, то P=NP (в классе
задач проверяемых за полиномиальное время
нет задач неразрешимых за полиномиальное
время).
Следствие.
Если в классе NP существует задача не
разрешимая за полиномиальное время, все NP-
полные задачи таковы.
NP-полные задачи
Задача о выполнимости логических формул.
Формулы могут содержать булевы (логические)
переменные и операции конъюнкции (И), дизъюнкции
(ИЛИ), отрицания (НЕ), импликации (следования),
эквивалентности.
Выполняющим набором значений переменных в
формуле называется такой набор, при котором
формула дает истинное значение.
Формула выполнима, если существует хотя бы один
выполнимый набор значений переменных.
Задача состоит в ответе на вопрос выполнима ли
данная логическая формула.
NP-полные задачи
Задача о клике.
Кликой графа называется подмножество его
вершин, каждые две из которых соединены
ребром графа.
Размером клики называется количество
содержащихся в ней вершин.
Необходимо найти максимальную клику
графа, т.е. (преобразование в задачу
разрешения) ответить на вопрос есть ли клика
некоторого размера k.
NP-полные задачи
Задача о вершинном покрытии.
Вершинное покрытие – такое множество вершин
графа, что хотя бы один из концов любого ребра
соединен с вершиной входящей в это множество.
Размер вершинного покрытия – количество
входящих в него вершин.
Задача требует нахождения минимально
возможного вершинного покрытия графа, т.е.
(преобразование в задачу разрешения) ответить на
вопрос есть ли вершинное покрытие некоторого
размера k.
NP-полные задачи
Задача о суммах подмножеств.
Пусть дано некоторое множество S, состоящее из
целых чисел, и целое число t. Требуется выяснить
существует ли в S подмножество сумма элементов
которого равна t.
Например:
S{1,4,16,64,256,1040,1093,1284,1344}
t = 3754;
Ответ: {1,16,64,256,1040,1093,1284}
NP-полные задачи
Задача коммивояжера.
Коммивояжер хочет объехать все города,
побывав в каждом только 1 раз, и вернуться в
город, из которого начал путешествие.
Известно, что перелет из города i в город j
стоит c(i,j) рублей.
Требуется найти маршрут наименьшей
стоимости.

More Related Content

What's hot

элементы языка и типы данных
элементы языка и типы данныхэлементы языка и типы данных
элементы языка и типы данныхЕлена Ключева
 
Методы построения и анализа алгоритмов
Методы построения и анализа алгоритмовМетоды построения и анализа алгоритмов
Методы построения и анализа алгоритмовNick535
 
Учебник математика 10 класс
Учебник математика 10 классУчебник математика 10 класс
Учебник математика 10 классAnna-Maria Russu
 
Михаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделированиеМихаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделированиеLidia Pivovarova
 
20091025 algorithmsfornphardproblems kulikov_lecture03
20091025 algorithmsfornphardproblems kulikov_lecture0320091025 algorithmsfornphardproblems kulikov_lecture03
20091025 algorithmsfornphardproblems kulikov_lecture03Computer Science Club
 
Лекция 11: Методы разработки алгоритмов. Метод декомпозиции
Лекция 11: Методы разработки алгоритмов. Метод декомпозицииЛекция 11: Методы разработки алгоритмов. Метод декомпозиции
Лекция 11: Методы разработки алгоритмов. Метод декомпозицииMikhail Kurnosov
 
20111016 inroduction to_combinatorics_on_words_frid_lecture05
20111016 inroduction to_combinatorics_on_words_frid_lecture0520111016 inroduction to_combinatorics_on_words_frid_lecture05
20111016 inroduction to_combinatorics_on_words_frid_lecture05Computer Science Club
 
дистанционка
дистанционкадистанционка
дистанционкаtajnan
 
0 характеристика основных числовых множеств
0 характеристика основных числовых множеств0 характеристика основных числовых множеств
0 характеристика основных числовых множествВячеслав Пырков
 
характеристика основных числовых множеств
характеристика основных числовых множествхарактеристика основных числовых множеств
характеристика основных числовых множествВячеслав Пырков
 
4. Законы логики. Упрощение формул
4. Законы логики. Упрощение формул4. Законы логики. Упрощение формул
4. Законы логики. Упрощение формулaleksashka3
 
Nikolay Shilov. CSEDays 2
Nikolay Shilov. CSEDays 2Nikolay Shilov. CSEDays 2
Nikolay Shilov. CSEDays 2LiloSEA
 
Ruby: основы ООП
Ruby: основы ООПRuby: основы ООП
Ruby: основы ООПEvgeny Smirnov
 
Algorithms For Np Hard Problems
Algorithms For Np Hard ProblemsAlgorithms For Np Hard Problems
Algorithms For Np Hard ProblemsLiloSEA
 
Практикум по выполнению блока с информатика
Практикум по выполнению блока с информатикаПрактикум по выполнению блока с информатика
Практикум по выполнению блока с информатикаЕкатерина Луговова
 
Работа с текстом на уроках математики
Работа с текстом на уроках математикиРабота с текстом на уроках математики
Работа с текстом на уроках математикиKirrrr123
 
Алгебра и начала анализа 10 класс ( Е. П. Нелин )
Алгебра и начала анализа 10 класс ( Е. П. Нелин )Алгебра и начала анализа 10 класс ( Е. П. Нелин )
Алгебра и начала анализа 10 класс ( Е. П. Нелин )Александр Понаморев
 
Svojstva pryamougolnogo parallelepipeda
Svojstva pryamougolnogo parallelepipedaSvojstva pryamougolnogo parallelepipeda
Svojstva pryamougolnogo parallelepipedaИван Иванов
 
S. Duplij, Partial Hamiltonian Formalism, Multi-Time Dynamics and Singular Th...
S. Duplij, Partial Hamiltonian Formalism, Multi-Time Dynamics and Singular Th...S. Duplij, Partial Hamiltonian Formalism, Multi-Time Dynamics and Singular Th...
S. Duplij, Partial Hamiltonian Formalism, Multi-Time Dynamics and Singular Th...Steven Duplij (Stepan Douplii)
 

What's hot (20)

элементы языка и типы данных
элементы языка и типы данныхэлементы языка и типы данных
элементы языка и типы данных
 
Методы построения и анализа алгоритмов
Методы построения и анализа алгоритмовМетоды построения и анализа алгоритмов
Методы построения и анализа алгоритмов
 
Учебник математика 10 класс
Учебник математика 10 классУчебник математика 10 класс
Учебник математика 10 класс
 
Михаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделированиеМихаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделирование
 
20091025 algorithmsfornphardproblems kulikov_lecture03
20091025 algorithmsfornphardproblems kulikov_lecture0320091025 algorithmsfornphardproblems kulikov_lecture03
20091025 algorithmsfornphardproblems kulikov_lecture03
 
Лекция 11: Методы разработки алгоритмов. Метод декомпозиции
Лекция 11: Методы разработки алгоритмов. Метод декомпозицииЛекция 11: Методы разработки алгоритмов. Метод декомпозиции
Лекция 11: Методы разработки алгоритмов. Метод декомпозиции
 
Разрешение лексической неоднозначности
Разрешение лексической неоднозначностиРазрешение лексической неоднозначности
Разрешение лексической неоднозначности
 
20111016 inroduction to_combinatorics_on_words_frid_lecture05
20111016 inroduction to_combinatorics_on_words_frid_lecture0520111016 inroduction to_combinatorics_on_words_frid_lecture05
20111016 inroduction to_combinatorics_on_words_frid_lecture05
 
дистанционка
дистанционкадистанционка
дистанционка
 
0 характеристика основных числовых множеств
0 характеристика основных числовых множеств0 характеристика основных числовых множеств
0 характеристика основных числовых множеств
 
характеристика основных числовых множеств
характеристика основных числовых множествхарактеристика основных числовых множеств
характеристика основных числовых множеств
 
4. Законы логики. Упрощение формул
4. Законы логики. Упрощение формул4. Законы логики. Упрощение формул
4. Законы логики. Упрощение формул
 
Nikolay Shilov. CSEDays 2
Nikolay Shilov. CSEDays 2Nikolay Shilov. CSEDays 2
Nikolay Shilov. CSEDays 2
 
Ruby: основы ООП
Ruby: основы ООПRuby: основы ООП
Ruby: основы ООП
 
Algorithms For Np Hard Problems
Algorithms For Np Hard ProblemsAlgorithms For Np Hard Problems
Algorithms For Np Hard Problems
 
Практикум по выполнению блока с информатика
Практикум по выполнению блока с информатикаПрактикум по выполнению блока с информатика
Практикум по выполнению блока с информатика
 
Работа с текстом на уроках математики
Работа с текстом на уроках математикиРабота с текстом на уроках математики
Работа с текстом на уроках математики
 
Алгебра и начала анализа 10 класс ( Е. П. Нелин )
Алгебра и начала анализа 10 класс ( Е. П. Нелин )Алгебра и начала анализа 10 класс ( Е. П. Нелин )
Алгебра и начала анализа 10 класс ( Е. П. Нелин )
 
Svojstva pryamougolnogo parallelepipeda
Svojstva pryamougolnogo parallelepipedaSvojstva pryamougolnogo parallelepipeda
Svojstva pryamougolnogo parallelepipeda
 
S. Duplij, Partial Hamiltonian Formalism, Multi-Time Dynamics and Singular Th...
S. Duplij, Partial Hamiltonian Formalism, Multi-Time Dynamics and Singular Th...S. Duplij, Partial Hamiltonian Formalism, Multi-Time Dynamics and Singular Th...
S. Duplij, Partial Hamiltonian Formalism, Multi-Time Dynamics and Singular Th...
 

Viewers also liked

Лекция 5 Элементарные структуры данных часть 3
Лекция 5 Элементарные структуры данных часть 3Лекция 5 Элементарные структуры данных часть 3
Лекция 5 Элементарные структуры данных часть 3simple_people
 
Лекция 4 Элементарные структуры данных часть 2
Лекция 4 Элементарные структуры данных часть 2Лекция 4 Элементарные структуры данных часть 2
Лекция 4 Элементарные структуры данных часть 2simple_people
 
Лекция 6 Элементарные структуры данных часть 4
Лекция 6 Элементарные структуры данных часть 4Лекция 6 Элементарные структуры данных часть 4
Лекция 6 Элементарные структуры данных часть 4simple_people
 
Мобильные Сервисные Службы
Мобильные Сервисные СлужбыМобильные Сервисные Службы
Мобильные Сервисные Службыsimple_people
 
Лекция 3 Элементарные структуры данных Часть 1
Лекция 3 Элементарные структуры данных Часть 1Лекция 3 Элементарные структуры данных Часть 1
Лекция 3 Элементарные структуры данных Часть 1simple_people
 
Лекция 12 Теоретико-числовые алгоритмы Часть 1
Лекция 12 Теоретико-числовые алгоритмы Часть 1Лекция 12 Теоретико-числовые алгоритмы Часть 1
Лекция 12 Теоретико-числовые алгоритмы Часть 1simple_people
 
Лекция 15 Поиск подстрок
Лекция 15 Поиск подстрокЛекция 15 Поиск подстрок
Лекция 15 Поиск подстрокsimple_people
 
Лекция 1 Скорость роста функций
Лекция 1 Скорость роста функцийЛекция 1 Скорость роста функций
Лекция 1 Скорость роста функцийsimple_people
 
Лекция 9 Жадные алгоритмы
Лекция 9 Жадные алгоритмыЛекция 9 Жадные алгоритмы
Лекция 9 Жадные алгоритмыsimple_people
 
Лекция 8 Динамическое программирование
Лекция 8 Динамическое программированиеЛекция 8 Динамическое программирование
Лекция 8 Динамическое программированиеsimple_people
 
Лекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмыЛекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмыsimple_people
 
Лекция 2 Сортировки, поиск и порядковые статистики
Лекция 2 Сортировки, поиск и порядковые статистикиЛекция 2 Сортировки, поиск и порядковые статистики
Лекция 2 Сортировки, поиск и порядковые статистикиsimple_people
 

Viewers also liked (12)

Лекция 5 Элементарные структуры данных часть 3
Лекция 5 Элементарные структуры данных часть 3Лекция 5 Элементарные структуры данных часть 3
Лекция 5 Элементарные структуры данных часть 3
 
Лекция 4 Элементарные структуры данных часть 2
Лекция 4 Элементарные структуры данных часть 2Лекция 4 Элементарные структуры данных часть 2
Лекция 4 Элементарные структуры данных часть 2
 
Лекция 6 Элементарные структуры данных часть 4
Лекция 6 Элементарные структуры данных часть 4Лекция 6 Элементарные структуры данных часть 4
Лекция 6 Элементарные структуры данных часть 4
 
Мобильные Сервисные Службы
Мобильные Сервисные СлужбыМобильные Сервисные Службы
Мобильные Сервисные Службы
 
Лекция 3 Элементарные структуры данных Часть 1
Лекция 3 Элементарные структуры данных Часть 1Лекция 3 Элементарные структуры данных Часть 1
Лекция 3 Элементарные структуры данных Часть 1
 
Лекция 12 Теоретико-числовые алгоритмы Часть 1
Лекция 12 Теоретико-числовые алгоритмы Часть 1Лекция 12 Теоретико-числовые алгоритмы Часть 1
Лекция 12 Теоретико-числовые алгоритмы Часть 1
 
Лекция 15 Поиск подстрок
Лекция 15 Поиск подстрокЛекция 15 Поиск подстрок
Лекция 15 Поиск подстрок
 
Лекция 1 Скорость роста функций
Лекция 1 Скорость роста функцийЛекция 1 Скорость роста функций
Лекция 1 Скорость роста функций
 
Лекция 9 Жадные алгоритмы
Лекция 9 Жадные алгоритмыЛекция 9 Жадные алгоритмы
Лекция 9 Жадные алгоритмы
 
Лекция 8 Динамическое программирование
Лекция 8 Динамическое программированиеЛекция 8 Динамическое программирование
Лекция 8 Динамическое программирование
 
Лекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмыЛекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмы
 
Лекция 2 Сортировки, поиск и порядковые статистики
Лекция 2 Сортировки, поиск и порядковые статистикиЛекция 2 Сортировки, поиск и порядковые статистики
Лекция 2 Сортировки, поиск и порядковые статистики
 

Similar to Лекция 10 NP-полнота

Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...Positive Hack Days
 
20080928 structuralcomplexitytheory lecture01-02
20080928 structuralcomplexitytheory lecture01-0220080928 structuralcomplexitytheory lecture01-02
20080928 structuralcomplexitytheory lecture01-02Computer Science Club
 
Алгоритмы и структуры данных осень 2013 лекция 8
Алгоритмы и структуры данных осень 2013 лекция 8Алгоритмы и структуры данных осень 2013 лекция 8
Алгоритмы и структуры данных осень 2013 лекция 8Technopark
 
04 динамическое программирование - основные концепции
04 динамическое программирование - основные концепции04 динамическое программирование - основные концепции
04 динамическое программирование - основные концепцииFedor Tsarev
 
20090913 algorithmsfornphardproblems kulikov_lecture01
20090913 algorithmsfornphardproblems kulikov_lecture0120090913 algorithmsfornphardproblems kulikov_lecture01
20090913 algorithmsfornphardproblems kulikov_lecture01Computer Science Club
 
Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"Nikolay Grebenshikov
 

Similar to Лекция 10 NP-полнота (9)

Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
Алгоритмы решения задачи о булевой выполнимости (SAT) и их применение в крипт...
 
20080928 structuralcomplexitytheory lecture01-02
20080928 structuralcomplexitytheory lecture01-0220080928 structuralcomplexitytheory lecture01-02
20080928 structuralcomplexitytheory lecture01-02
 
Ivm1257
Ivm1257Ivm1257
Ivm1257
 
Ivm1257
Ivm1257Ivm1257
Ivm1257
 
Алгоритмы и структуры данных осень 2013 лекция 8
Алгоритмы и структуры данных осень 2013 лекция 8Алгоритмы и структуры данных осень 2013 лекция 8
Алгоритмы и структуры данных осень 2013 лекция 8
 
л 2 7
л 2 7л 2 7
л 2 7
 
04 динамическое программирование - основные концепции
04 динамическое программирование - основные концепции04 динамическое программирование - основные концепции
04 динамическое программирование - основные концепции
 
20090913 algorithmsfornphardproblems kulikov_lecture01
20090913 algorithmsfornphardproblems kulikov_lecture0120090913 algorithmsfornphardproblems kulikov_lecture01
20090913 algorithmsfornphardproblems kulikov_lecture01
 
Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"Лекция №1. Введение. Предмет "Теория вычислительных процессов"
Лекция №1. Введение. Предмет "Теория вычислительных процессов"
 

Лекция 10 NP-полнота

  • 2. Абстрактные задачи  Абстрактная задача – произвольное бинарное отношение Q между элементами множества условий I и множества решений S.  В теории вычислений рассматриваются задачи разрешения, в которых требуется дать ответ «да» или «нет» на некоторый вопрос.  Большинство абстрактных задач (в том числе задач оптимизации) можно свести к задачам разрешения.
  • 3. Абстрактные задачи G<V,E> u v Множество S для задачи о нахождении пути между двумя вершинами в графе: 1. Граф G<V,E> 2. Вершина u 3. Вершина v
  • 4. Абстрактные задачи  Представлением элементов некоторого множества S называется отображение e из S во множество битовых строк.  Зафиксировав представление данных, мы преобразуем абстрактную задачу в строковую, для которой входным данным является битовая строка, представляющая исходные данные абстрактной задачи.
  • 5. Абстрактные задачи  Любая абстрактная задача может быть отнесена к одному из сложностных классов, в зависимости от того какие алгоритмы существуют для ее решения.  Сложностным классом P называется множество всех строковых задач разрешения, которые могут быть решены за полиномиальное время.
  • 6. Полиномиальное время  Задачи, решаемые за полиномиальное время (a1*nk + a2*nk-1 + a3*nk-2 +..+an-1*n+an, где k, a1..an-константы, а n – размер входа алгоритма) принято считать практически разрешимыми по следующим трем причинам:  Полиномиальные алгоритмы работают довольно быстро.  Время работы полиномиальных алгоритмов не зависит от модели вычислений (так не имеет значения последовательные или параллельные вычисления используются)  Класс полиномиальных обладает свойствами замкнутости (композиция полиномиальных задач – полиномиальная задача)
  • 7. Гамильтонов цикл  Гамильтоновым циклом в неориентированном графе G называется простой цикл, который проходит через все вершины графа.  Задача о гамильтоновом цикле состоит в выяснении, имеет ли данный граф гамильтонов цикл.
  • 9. Абстрактные задачи  Сложностным классом NP называется множество строковых задач разрешения, для которых существуют проверяющие алгоритмы, работающие за полиномиальное время.  Всякая задача из множества P принадлежит множеству NP.  Истинность обратного утверждения (если задача находится в NP, то в P она тоже входит) не установлена.
  • 10. Абстрактные задачи  Проблема эквивалентности сложностных классов P=NP является одной из самых серьезных нерешенных проблем теории вычислений.  Открытым остается вопрос о замкнутости класса NP.
  • 12. NP-полнота  Одним из главных аргументов в пользу утверждения о неравенстве классов P и NP, является наличие так называемых NP-полных задач (NPC).  Говоря неформально, NP-полные задачи – «самые трудные» в классе NP.  «Трудность» задач можно сравнивать сводя одну задачу к другой.
  • 13. NP-полнота  Задача Q сводится к задаче Q`, если задачу Q можно решить для любого входа, считая известным решение задачи Q` для какого-то другого входа.  Если задача Q сводится к задаче Q`, то любой алгоритм решающий Q` можно использовать для решения Q, т.е. задача Q «не труднее» Q`.  Алгоритм приводящий входы задачи Q к соответствующим входам задачи Q` называется сводящим алгоритмом.  Если сводящий алгоритм полиноминален задача называется сводящейся за полиномиальное время.
  • 15. NP-полнота  Задача называется NP-полной, если:  Она принадлежит к сложностному классу NP  Она не менее трудна (не сводится за полиномиальное время к не NP-полной задаче), чем любая другая задача из класса NP.  Если задача удовлетворяет второму условию, но не обязательно условию №1, то такая задача называется NP-трудной.
  • 16. NP-полнота Теорема. Если некоторая NP-полная задача разрешима за полиномиальное время, то P=NP (в классе задач проверяемых за полиномиальное время нет задач неразрешимых за полиномиальное время). Следствие. Если в классе NP существует задача не разрешимая за полиномиальное время, все NP- полные задачи таковы.
  • 17. NP-полные задачи Задача о выполнимости логических формул. Формулы могут содержать булевы (логические) переменные и операции конъюнкции (И), дизъюнкции (ИЛИ), отрицания (НЕ), импликации (следования), эквивалентности. Выполняющим набором значений переменных в формуле называется такой набор, при котором формула дает истинное значение. Формула выполнима, если существует хотя бы один выполнимый набор значений переменных. Задача состоит в ответе на вопрос выполнима ли данная логическая формула.
  • 18. NP-полные задачи Задача о клике. Кликой графа называется подмножество его вершин, каждые две из которых соединены ребром графа. Размером клики называется количество содержащихся в ней вершин. Необходимо найти максимальную клику графа, т.е. (преобразование в задачу разрешения) ответить на вопрос есть ли клика некоторого размера k.
  • 19. NP-полные задачи Задача о вершинном покрытии. Вершинное покрытие – такое множество вершин графа, что хотя бы один из концов любого ребра соединен с вершиной входящей в это множество. Размер вершинного покрытия – количество входящих в него вершин. Задача требует нахождения минимально возможного вершинного покрытия графа, т.е. (преобразование в задачу разрешения) ответить на вопрос есть ли вершинное покрытие некоторого размера k.
  • 20. NP-полные задачи Задача о суммах подмножеств. Пусть дано некоторое множество S, состоящее из целых чисел, и целое число t. Требуется выяснить существует ли в S подмножество сумма элементов которого равна t. Например: S{1,4,16,64,256,1040,1093,1284,1344} t = 3754; Ответ: {1,16,64,256,1040,1093,1284}
  • 21. NP-полные задачи Задача коммивояжера. Коммивояжер хочет объехать все города, побывав в каждом только 1 раз, и вернуться в город, из которого начал путешествие. Известно, что перелет из города i в город j стоит c(i,j) рублей. Требуется найти маршрут наименьшей стоимости.