8_Теория алгоритмов. (1019129), страница 5
Текст из файла (страница 5)
Редукция — настолько мощная вещь, что если любую из NP-полных задач удастся свести к задаче класса Р, то и все NP задачи получат полиномиальное решение. До сих пор ни одна из попыток построить такое сведение не удалась.
Типичные NP задачи
Каждая из задач, которые мы будем обсуждать, является либо оптимизационной, либо задачей о принятии решения. Целью оптимизационной задачи обычно является конкретный результат, представляющий собой минимальное или максимальное значение. В задаче о принятии решения обычно задается некоторое пограничное значение, и нас интересует, существует ли решение, большее (и задачах максимизации) или меньшее (в задачах минимизации) указанной границы. Ответом в задачах оптимизации служит полученный конкретный результат, а в задачах о принятии решений — «да» или «нет».
Ранее мы занимались оптимизационным вариантом задачи о коммивояжере. Это задача минимизации, и нас интересовал путь минимальной стоимости. В варианте принятия решения мы могли бы спросить, существует ли путь коммивояжера со стоимостью, меньшей заданной константы С. Ясно, что ответ в задаче о принятии решения зависит от выбранной границы. Если эта граница очень велика (например, она превышает суммарную стоимость всех дорог), то ответ «да» получить несложно. Если эта граница чересчур мала (например, она меньше стоимости дороги между любыми двумя городами), то ответ «нет» также дается легко. В остальных промежуточных случаях время поиска ответа очень велико и сравнимо со временем решения оптимизационной задачи. Поэтому мы будем говорить вперемешку о задачах оптимизации и принятия решений, используя ту из них, которая точнее отвечает нашим текущим целям.
В следующих нескольких разделах мы опишем еще шесть NP задач — как в оптимизационном варианте, так и в варианте принятия решения.
Раскраска графа
Как мы уже говорили, граф G = (V, Е) представляет собой набор вершин, или узлов, V и набор ребер Е соединяющих вершины попарно. Здесь мы будем заниматься только неориентированными графами. Вершины графа можно раскрасить в разные цвета, которые обычно обозначаются целыми числами. Нас интересуют такие раскраски, в которых концы каждого ребра окрашены разными цветами. Очевидно, что в графе с N вершинами можно покрасить вершины в N различных цветов, но можно ли обойтись меньшим количеством цветов? В задаче оптимизации нас интересует минимальное число цветов, необходимых для раскраски вершин графа. В задаче принятия решения нас интересует, можно ли раскрасить вершины в С или менее цветов.
У задачи о раскраске графа есть практические приложения. Если каждая вершина графа обозначает читаемый в колледже курс, и вершины соединяются ребром, если есть студент, слушающий оба курса, то получается весьма сложный граф. Если предположить, что каждый студент слушает 5 курсов, то на студента приходится 10 ребер. Предположим, что на 3500 студентов приходится 500 курсов. Тогда у получившегося графа будет 500 вершин и 35 000 ребер. Если на экзамены отведено 20 дней, то это означает, что вершины графа нужно раскрасить в 20 цветов, чтобы ни у одного студента не приходилось по два экзамена в день.
Разработка бесконфликтного расписания экзаменов эквивалентна раскраске графов. Однако задача раскраски графов принадлежит к классу NP, поэтому разработка бесконфликтного расписания за разумное время невозможна. Кроме того при планировании экзаменов обычно требуется, чтобы у студента было не больше двух экзаменов в день, а экзамены по различным частям курсам назначаются в один день. Очевидно, что разработка «совершенного» плана экзаменов невозможна, и поэтому необходима другая техника для получения по крайней мере неплохих планов.
Раскладка по ящикам
Пусть у нас есть несколько ящиков единичной емкости и набор объектов различных размеров . В задаче оптимизации нас интересует наименьшее количество ящиков, необходимое для раскладки всех объектов, а в задаче принятия решения — можно ли упаковать все объекты в В или менее ящиков.
Эта задача возникает при записи информации на диске или во фрагментированной памяти компьютера, при эффективном распределении груза на кораблях, при вырезании кусков из стандартных порций материала по заказам клиентов. Если, например, у нас есть большие металлические листы и список заказов на меньшие листы, то естественно мы хотим распределить заказы как можно плотнее, уменьшив тем самым потери и увеличив доход.
Упаковка рюкзака
У нас имеется набор объектов объемом стоимости
. В задаче оптимизации мы хотим упаковать рюкзак объемом К так, чтобы его стоимость была максимальной. В задаче принятия решения нас интересует, можно ли добиться, чтобы суммарная стоимость упакованных объектов была по меньшей мере W.
Эта задача возникает при выборе стратегии вложения денег: объемом здесь является объем различных вложений стоимостью - предполагаемая величина дохода, а объем рюкзака определяется размером планируемых капиталовложений.
Задача о суммах элементов подмножеств
Пусть у нас есть множество объектов различных размеров и некоторая положительная верхняя граница L. В задаче оптимизации нам необходимо найти набор объектов, сумма размеров которых наиболее близка к L и не превышает этой верхней границы. В задаче принятия решения нужно установить, существует ли набор объектов с суммой размеров L. Это упрощенная версия задачи об упаковке рюкзака.
Задача об истинности КНФ-выражения
Конъюнктивная нормальная форма (КНФ) представляет собой последовательность булевских выражений, связанных между собой операторами AND (обозначаемыми ), причем каждое выражение является мономом от булевских переменных или их отрицаний, связанных операторами OR (которые обозначаются через
). Вот пример булевского выражения в конъюнктивной нормальной форме (отрицание обозначается чертой над именем переменной):
Задача об истинности булевского выражения в конъюнктивной нормальной форме ставится только в варианте принятия решения: существуют ли у переменных, входящих в выражение, такие значения истинности, подстановка которых делает все выражение истинным. Как число переменных, так и сложность выражения не ограничены, поэтому число комбинаций значений истинности может быть очень велико.
Задача планирования работ
Пусть у нас есть набор работ, и мы знаем время, необходимое для завершения каждой из них, , сроки
, к которым эти работы должны быть обязательно завершены, а также штрафы
, которые будут наложены при незавершении каждой работы в установленные сроки. Задача оптимизации требует установить порядок работ, минимизирующий накладываемые штрафы. В задаче принятия решений мы спрашиваем, есть ли порядок работ, при котором величина штрафа будет не больше Р.
8.8 Вопросы для самопроверки.
-
Что такое алгоритм?
-
Перечислите основные свойства алгоритмов.
-
Назовите универсальные алгоритмические модели.
-
Дайте определение примитивно-рекурсивных функций.
-
Дайте определение частично рекурсивных и общерекурсивных функций.
-
Дайте определение машины Тьюринга.
-
Дайте определение и приведите примеры полиномиальных алгоритмов.
-
В чем выражается вычислительная сложность алгоритмов?
-
Какая задача считается труднорешаемой?
-
Что означает термин NP- полная задача?
9. ЗАДАЧИ И УПРАЖНЕНИЯ.
-
Доказать, что числовых булевых функций от n аргументов равно
.
-
Установить, является ли самодвойственной функция эквивалентности.
-
Привести пример монотонной функции, которая бы была линейной.
-
Привести пример самодвойственной функции, которая бы одновременно была линейной.
-
Доказать, что функция Шеффера и Вебба не являются ни линейными, ни монотонными, ни самодвойственными.
-
Определить число самодвойственных функций, зависящих от n аргументов.
-
Доказать полноту системы булевых функций, состоящей из дизъюнкции, константы 0 и эквивалентности. Образует ли эта система базис.
-
Образует ли базис система булевых функций, состоящая из импликации и константы 0?
-
Установить является ли полной система, состоящая из дизъюнкции, импликации и конъюнкции.
-
Какая система из одной 2-местной функции является полной? Найти все такие системы.
-
Построить формулу от трех переменных, которая принимает такое же значение как большинство переменных.
-
Доказать эквивалентности и указать законы алгебры логики, соответствующие им:
-
Доказать эквивалентности и указать законы алгебры логики, соответствующие им:
-
Доказать эквивалентности и указать законы алгебры логики, соответствующие им:
-
Доказать эквивалентности и указать законы алгебры логики, соответствующие им: