3.1 Пусть задано конечное множество S и конечный набор его

advertisement
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
Download