Задание кафедры
1.Доказать принадлежность классу
предложенной задачи
2. Решить одну из двух проблем:
а. доказать NP–полноту предложенной задачи
б. построить приближенный алгоритм решения предложенной задачи и показать его точность.
Задача ( вариант):
1. ДИНАМИЧЕСКОЕ РАСПРЕДЕЛЕНИЕ ПАМЯТИ
УСЛОВИЕ. Заданы множество элементов данных
, размер
каждого элемента данных
, время поступления
и время
окончания работы с элементом данных
, положительное целое число
– размер области памяти.
ВОПРОС. Существует ли для множества элементов данных
допустимое распределение памяти? Иначе говоря, существует ли такая функция
, что для каждого элемента
интервал
содержится в
, причем для любых
, если множество
не пусто, то либо
, либо
?
Решение
1. Легко видеть, что предложенная задача принадлежит классу
, так как недетерминированному алгоритму нужно лишь предположить подмножество
из множества всех распределений
и проверить за полиномиальное время что для каждого элемента
интервал
содержится в
, причем для любых
, если множество
не пусто, то либо
, либо
.
То есть:
1. Для каждой пары
проверить:
.
2. Если предыдущее условие выполняется, проверить:
.
3. Далее проверим
с помощью отношения частичного порядка. Если предыдущее условие выполняется, проверить:
.
4. Если предыдущее условие выполняется, проверить:
.
5. Если предыдущее условие выполняется, то данное распределение – неправильное. Если не выполняется – то правильное.
– полином пятой степени, задача принадлежит к классу
.
2. Мы сводим к этой задаче задачу 3-РАЗБИЕНИЯ. Пусть состоящее из
элементов множество
; положительная целая граница
; положительный целый размер
удовлетворяющий
для каждого элемента
из
; и сумма размеров
равная точно
– произвольный экземпляр 3-РАЗБИЕНИЯ. Тогда
разделяется на непересекающиеся множества
такие, что каждое
содержит точно
элемента из
, размер каждого
точно равен
. Обозначим элементы этих множеств как:
…
Переформулируем исходную задачу как поиск заполнения «плитками» «пола». Сформируем множество из всех доступных комбинаций
. Далее сгруппируем координаты всех точек по трое так, чтобы они удовлетворяли нашим условиям и не пересекались одна с другой. Таким образом, мы свели к этой задаче задачу 3-РАЗБИЕНИЯ
----------
Первая часть не доведена до конца (как минимум, нужно показать для всех остальных углов "маленьких прямоугольников", а не только для нижних правых; также не мешало бы использовать определение, то есть с помощью машины Тьюринга), вторая - полностью неправильна. В учебнике сказано, что задача сводится к задаче 3-РАЗБИЕНИЯ - но как, не ясно.
Есть несколько примеров сданных заданий других вариантов, но они не помогают.