Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции 2010.doc
Скачиваний:
49
Добавлен:
20.06.2014
Размер:
1.53 Mб
Скачать

Примеры массовых задач

Пример 1. Изоморфизм подграфу

Условие:

Даны 2 графа G1 = (V1,E1) и G2 = (V2,E2).

Верно ли, что G1 содержит подграф, изоморфный G2? Другими словами, существуют ли:

1) Подмножества ,такие, что ,.

2) Взаимнооднозначная функция f, отображающая , такая, что ребро существует тогда и только тогда, когда существует ребро ?

ПРИМЕР 2. КОММИВОЯЖЕР

Условие:

Заданы конечное множество городов C={C1, C2, … , Cn}, расстоянияd(Ci, Cj) и граница B, являющаяся натуральным числом.

Существует ли замкнутый маршрут, проходящий через все города из C по одному разу, длина которого не превосходит B, т.е. существует ли последовательность <Cр(1), Cр(2),…, Cр(n)> такая, что?

Подобным образом строится соответствие между любой оптимизационной задачей и задачей распознавания свойств. Здесь важно отметить, что поскольку значение функции легко оценить, то задача распознавания не будет сложнее, чем оптимизационные задачи. Если задача распознавания может быть решена за полиномиальное время, то, решая её некоторое количество раз (ограниченное полиномом от размерности задачи) при различных значениях параметра B, мы сможем решить и оптимизационную задачу.

Теория NP – полных задач ограничивается только задачами распознавания. Это объясняется тем, что задача распознавания имеет естественный формальный эквивалент, удобный для изучения методами теории вычислений. Этот эквивалент называется языком и определяется следующим образом. Для любого конечного множества символов , называемого алфавитом, и– множества всех конечных цепочек, любое подмножествоназывается языком в алфавите. Соответствие между языком и задачами распознавания устанавливается с помощью схем кодирования. Схема кодирования e задачи П описывает каждую индивидуальную задачу из П подходящим словом в некотором фиксированном алфавите. Таким образом, задача П, схема кодирования e задачи П разбивают слова изна три класса:

1) Слова не являются кодами индивидуальной задачи из П.

2) Слова являются кодами индивидуальной задачи из П с отрицательным ответом на вопрос.

3) Слова являются кодами индивидуальной задачи из П с положительным ответом на вопрос.

Третий класс слов является тем языком, который ставится в соответствие задаче П при схеме кодирования е и обозначается ={: x - код индивидуальной задачи I из множества YП со схемой кодирования e}.

При применении формальной теории NP – полноты к задачам распознавания, будем говорить, что некоторый результат имеет место для задачи П при схеме кодирования e, если результат имеет место для языка . Если е и е’ – любые две разумные схемы кодирования для задачи П, то рассматриваемое свойство языковивыполняется или не выполняется одновременно, это позволяет не указывать явно схемы кодирования, т.е. мы можем неформально говорить, что рассматриваемое свойство для задачи П выполняется или не выполняется.

Будем считать, что с каждой задачей распознавания связана независящая от схемы кодирования функция Length, которая отображает DПN – это функция полиномиально эквивалентна длине кода индивидуальной задачи, полученной при любой разумной кодировке. Полиномиальная эквивалентность понимается в следующем смысле: для любой разумной схемы кодирования e задачи П существуют два полинома p и p’ такие, что для любой индивидуальной задачи I из DП, если x – длина её кода, то Length(I)<p(x) и x<p’(Length(I)).

Например, в задаче ИЗОМОРФИЗМ ПОДГРАФУ можно положить Length(I)=|V1|+|V2|, где G1=(V1,E1) и G2=(V2,E2) – графы, образующие индивидуальные задачи.

В задаче О КОММИВОЯЖЁРЕ можно определить функцию

Length(I)=n++max(log d(Ci, Cj) :).

Здесь bпонимается как наименьшее целое число, большее или равное аргументу b.

Обычно схему кодирования считают разумной, если она достаточно сжата и допускает декодирование. Сжимать нужно для того, чтобы при кодировании индивидуальной задачи сохранялась её естественная краткость, когда её решают на компьютере, и не допускалось искусственное раздувание входа.

Смысл понятия декодируемость заключается в том, чтобы по данной компоненте условия задачи можно было бы указать алгоритм с полиномиальным временем работы, который из любого заданного кода индивидуальной задачи позволял бы извлечь описание этой компоненты.