предметов, для каждого из которых задано натуральное число s(u
i
) — линейный
размер предмета u
i
. Даны также положительное целое число B — вместимость кон-
тейнера и число K — количество контейнеров.
Вопрос: Существует ли такое разбиение множества U на K непересекающихся
подмножеств U
1
, U
2
,...,U
K
, что сумма размеров предметов из каждого подмножества
U
i
не превосходит B?
Задача 11. Квадратичные сравнения. Заданы положительные целые числа a, b
и c.
Вопрос: Существует ли положительное целое число x < c, такое, что x
2
= a(mod b)?
Замечание: задача остается NP–полной, даже если в условии даны разложение
числв b на простые множители и решение данного сравнения по всем простым моду-
лям, входящим в разложение числа b.
Задача 12. Составление кроссворда. Заданы конечное множество слов W и мат-
рица A из нулей и единиц размером n × n.
Вопрос: Можно ли составить кроссворд из слов множества W , чтобы слова впи-
сывались в клетки матрицы A, соответствующие нулям в ней?
Задача 13. Отсутствие тавтологии. Задано булевское выражение E на мно-
жестве переменных U = {u
1
, u
2
, ..., u
k
}. В выражении используются логические опе-
рации ∧ (и), ∨ (или), ¬ ( не), → (следует).
Вопрос: Верно ли, что E не тавтология, т.е. существует ли такой набор значений
переменных u
1
, u
2
, ..., u
k
, что E принимает значение "ложь"?
Задача 14. Программы с рекурсивными функциями. Задано конечное множе-
ство идентификаторов функций языка Си. Для каждой функции приводится тело
функции, содержащее, в частности, вызовы других функций.
Вопрос: Верно ли, что некоторая функция из множества функций A рекурсивна
и вызывает не менее k других функций?
Задача 15. Составление учебного расписания. Заданы конечное множество H
рабочих часов, множество C преподавателей, множество D учебных дисциплин. Для
каждого преподавателя c
i
∈ C дано подмножество A(c
i
) ⊆ H, называемое допусти-
мыми часами для преподавателя c
i
. Для каждой дисциплины d
j
∈ D дано подмноже-
ство A(d
j
) ⊆ H, называемое допустимыми часами для дисциплины d
j
. Для каждой
пары (c
i
, d
j
) ⊆ C × D задано число r(c
i
, d
j
), называемое требуемой нагрузкой.
Вопрос: Существует ли учебное расписание, обслуживающее все дисциплины?
Другими словами, существует ли функция
f : C × D × H → {0, 1},
где f (c
i
, d
j
, h
k
) = 1 означает, что преподаватель c
i
занимается дисциплиной d
j
в
момент времени h
k
.
Задача 16. Динамическое распределение памяти. Задано конечное множество
A = {a
1
, a
2
, ..., a
k
} элементов динамических данных языка Си. Известен требуемый
размер памяти в байтах s(a
i
), который необходимо выделить для каждого элемента
a
i
∈ A. Для каждого данного a
i
∈ A известно время n(a
i
), когда требуется выполнить
выделение памяти для этого данного, и время f (a
i
) окончания работы с ним. Кро-
ме того, известно положительное целое число M — максимальный размер в байтах
области памяти, в которой размещаются все данные.
Вопрос: Существует ли для множества данных A допустимое распределение па-
мяти? Иначе говоря, существует ли такая функция
g : A → {1, 2, 3, ..., M},
122