3.1 Пусть задано конечное множество S и конечный набор его подмножеств S1 , S2 , . . . , Sk . Для каждого множества Si заданы два числа lowi и highi . Требуется выяснить, существует ли подмножество T ⊆ S, такое что для каждого i выполняется lowi ≤ |T ∩ Si | ≤ highi . Докажите, что эта задача входит в класс NP, описав сертификат и алгоритм верификации. Докажите, что задача является NP-трудной, сведя к ней задачу 3Sat. 3.2 Студенту нужно выполнить n домашних заданий, для каждого из которых известен крайний срок его выполнения и количество баллов, которые студент получит, выполнив задание в срок. Если студент выполнит задание позже срока, он за него баллов не получит. Студент понимает, сколько времени у него уйдет на выполнение каждого задания, и стремится спланировать свое время таким образом, чтобы выполнить все задания и максимизировать общее количество баллов. При этом, приступив к выполнению одного задания, студент предпочитает не отвлекаться на прочие, пока не закончит это. Опишите формально задачу планирования, которую нужно решить студенту прежде чем приступить собственно к домашним заданиям, и покажите, что если существует алгоритм с полиномиальным временем работы, решающий эту задачу, то P = NP. 3.3 Дано: поле, разделенное на n грядок, каждая из которых разделена на m ячеек. Грядки отделены друг от друга стенами; между ячейками одной грядки стен нет. В некоторых ячейках стоят блюдца с молоком, в некоторых — лежат куски сыра, а в некоторых — ничего нет. Спрашивается, можно ли посадить в ячейки с молоком кошек, а в ячейки с сыром — мышек так, чтобы, для каждого i ≤ m, i-ая ячейка хотя бы на одной грядке была обитаема и чтобы кошки не видели мышек (т.е. не сидели на одной грядке)? Докажите, что данная задача является NP-полной, или приведите полиномиальный алгоритм ее решения. 3.4 Петя идет в поход и собирает рюкзак. Петя может поднять, скажем, 19 кг, но вещи, которые он хочет с собой взять, весят больше. Обозначим за I множество всех вещей, который Петя хочет взять; каждая из вещей имеет «вес» w(i) и «ценность» v(i). Задача состоит в том, 1 чтобы для заданного множества I, для каждого элемента которого определены вес и ценность, и максимального веса M , определить максимальную общую ценность набора предметов из I, общий вес которых не превышает M . Объясните, как решить эту задачу за полиномиальное время, используя «оракул», моментально отвечающий на вопрос, может ли некоторая данная ценность быть достигнута без превышения некоторого данного веса. 3.5 Пусть L — язык, разрешимый на недетерминированной машине Тьюринга за время 2n , где n — длина входной строки. Покажите, что, если P = N P , язык L разрешим на детерминированной машине Тьюринга за время 2O(n) . 3.6 Дано: два целых числа q и r. Спрашивается, есть ли у q делитель меньше, чем r? Докажите, что эта задача входит в NP ∩ coNP. 3.7 Дано: граф G и целое число k. Верно ли, что k — минимальное число цветов, в которое можно раскрасить граф G так, чтобы никакие две смежные вершины не оказались окрашенными в один цвет? Докажите, что эта задача входит в NP или объясните, почему это может быть не так. 3.8 Докажите, что P = NP в том и только том случае, если все языки из P кроме ∅ (язык без слов) и Σ∗ (язык, состоящий из всех слов над заданным алфавитом) являются NP-полными. 3.9 Дано: формула φ в 3-КНФ. Спрашивается, существует ли означивание переменных, при котором каждое дизъюнктивное выражение φ содержит по крайней мере одну истинную литеру и по крайней мере одну ложную литеру? Докажите, что данная задача является NP-полной, или приведите полиномиальный алгоритм ее решения. 3.10 Перед вами n ящиков, в каждом из которых находится некоторое количество бутылок с вином. На ящиках не указано количество бутылок; при этом ящики имеют разный размер, бутылки тоже — поэтому определить количество бутылок в ящике можно, только открыв 2 ящик и пересчитав бутылки. Вам нужно отправить k бутылок товарищу. Спрашивается, можно ли это сделать, не вынимая бутылки из ящиков? Докажите, что данная задача является NP-полной, или приведите полиномиальный алгоритм ее решения. 3.11 Дано: набор прямоугольных плиток разных размеров и прямоугольная стена. Спрашивается, можно ли покрыть этими плитками всю эту стену? Докажите, что данная задача является NP-полной, или приведите полиномиальный алгоритм ее решения. Считаем, что на вход поступает множество T = {(x1 , y1 ), . . . , (xk , yk )}, где xi и yi — двоичные числа, задающие размеры i-ой плитки, и два дополнительных двоичных числа — высота H и ширина W стены. 3.12 Фабио — хозяин пиццерии. В меню — n пицц с различными наборами ингредиентов. Фабио хочет заменить в меню названия некоторых ингредиентов на картинки. Каждый ингредиент должен отображаться в меню единообразно — либо в виде картинки, либо в виде текста — во всех описаниях пицц, в которые он входит. При этом Фабио хочет, чтобы описание каждой пиццы из меню включало как картинки, так и текстовые названия ингредиентов. Возможно ли сделать это, оставив в меню все указанные в нем пиццы и не изменив состав ингредиентов в них? Докажите, что данная задача является NP-полной или приведите полиномиальный алгоритм ее решения. 3.13 Постройте полиномиальный алгоритм сведения первой задачи ко второй. Докажите корректность сведения. Первая задача: Дано: неориентированный граф (V, E) и число k. Существует ли подмножество C ⊆ V , такое что |C| = k и каждая вершина в V \ C связана ребром из E с некоторой вершиной из C? Вторая задача: Дано: неориентированный граф, некоторые вершины которого помечены числами. Можно ли разместить мины в непомеченных вершинах графа так, чтобы у всякой вершины 3 v, помеченной числом m, было в точности m заминированных соседей? 3.14 Докажите, что если некоторый язык L ∈ NP ∩ coNP является NPполным, то NP = coNP. 3.15 Назовем подмножество вершин графа внутренне независимым, если никакие две вершины из этого множества не связаны ребром. Коэффициентом независимости графа (V, E) назовем минимальное число k, такое что • V = V1 ∪ · · · ∪ Vk ; • Vi — внутренне независимое подмножество V (1 ≤ i ≤ k); • Vi ∩ Vj = ∅ для всех i 6= j. Докажите, что если существует алгоритм с полиномиальным временем работы, вычисляющий для заданного неориентированного графа его коэффициент независимости, то P = NP. 3.16 Дано: ориентированный граф (V, E), две вершины v, w ∈ V и список пар вершин этого графа P = (v1 , w1 ), . . . , (vk , wk ). Спрашивается, существует ли путь в графе от v до w, проходящий не более чем через одну вершину каждой пары из P ? Докажите, что данная задача является NP-полной, или приведите полиномиальный алгоритм ее решения. 4