Скачиваний:
432
Добавлен:
15.06.2014
Размер:
1.12 Mб
Скачать

Литература

  1. Пападимитриу Х., Стайглиц К. Комбинаторная оптимизация. М., Мир, 1985, - 510с.

  2. Герман О.В. Введение в теорию экспертных систем и обработку знаний. Мн., ДизайнПро, 1995.- 256с.

  3. Гэри М., Джонсон Д. Вычислительные машины и труднорешаемые задачи. М., Мир, 1982 – 356с.

  4. Герман О.В., Гончарова Е.Н. Об одной концепции вычислительной сложности. Вестник ставропольского гос. Университета. Вып. 40, 2006, с.16-24.

ЛЕКЦИЯ 13. ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ О СТРУКТУРЕ КЛАССА NP.

Мы уже знаем, что P NP. Как показал Ладнер, если P≠ NP , то имеется еще целое множество языков в NP, для которых нет полиномиального алгоритма, но сами эти языки не являются полными в классе NP.

В качестве кандидатов на такие языки выступают следующие две известные задачи.

ЗАДАЧА ИЗОМОРФИЗМ ГРАФОВ. Пусть даны два графа. Спрашивается, можно ли так пронумеровать их вершины, что их матрицы инциденций полностью совпадут (читай – один граф можно целиком наложить на другой и наоборот).

ПРОБЛЕМА ПРОВЕРКИ ПРОСТОТЫ ЧИСЛА. Эта проблема имеет важное значение для криптографии (шифрования). Известные алгоритмы проверки чисел на простоту являются переборными.

Пусть L какой-нибудь произвольный язык из NP. Под дополнением языка L понимаем язык co-L, такой что

co-L  NP

если произвольное слово (задача) y принадлежит L, то у не принадлежит co-L. Наоборот, если y принадлежит co-L, то у не принадлежит L.

Определение. Класс co-NP - это класс всех языков, дополнительных к языкам из NP.

Очевидным образом co-NP  NP. Обратное соотношение является открытой математической проблемой.

Определение. Задача является NP-трудной, если к ней полиномиально сводится какая-нибудь NP-полная задача, но сама она не принадлежит классу NP.

Примером NP-трудной задачи является задача построения минимальной КНФ (конъюнктивной нормальной формы). Применительно к задаче ВЫП это равносильно построить эквивалентную ей ВЫП минимальных размеров.

Имеются определения классов сложности задач по реализуемым затратам памяти.

Определение. Класс PSPACE – это класс задач распознавания типа ДА-НЕТ, требующих полиномиальных размеров памяти для решающих их детерминированных алгоритмов.

Определение. Класс NPSPACE – это класс задач распознавания типа ДА-НЕТ, требующих полиномиальных размеров памяти для решающих их недетерминированных машин Тьюринга.

Имеет место следующее важное соотношение:

PNPPSPACE=NPSPACE

Результат PSPACE=NPSPACE известен как теорема Савича. Эта теорема доказывается, исходя из того, что для каждой недетерминированной машины Тьюринга имеется эквивалентная ей детерминированная машина Тьюринга. На этом важном вопросе мы остановимся более подробно.

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

Qi j  Qk l R(L) (1)

Qi j  Qm n R(L) (2)

В левой части записаны одинаковые состояния и символы. Теперь наша моделирующая машина перепишет состояние ленты в этот момент в свободном месте, т.е. создаст копию ленты на ленте! На оригинале наша машина будет применять правило (1), а на копии – правило (2), т.е. как бы работать уже с двумя машинами по очереди. Если встретится новое альтернативное правило, то создается третья копия на ленте и процесс разветвляется уже на три потока и т д. Таким образом, детерминированная машина работает по нескольким ветвям одновременно до тех пор, пока не получит результат по какой-нибудь одной из ветвей.

ЛЕКЦИЯ 14. Примеры NP-полных задач.

Напомним, что задача является NP-полной, если к ней можно эффективно свести задачу ВЫПОЛНИМОСТЬ, NP-полноту которой доказал С.Кук.

Имеет место ряд важных практических задач, для которых установлена их NP-полнота.

ЗАДАЧА ВЕРШИННОЕ ПОКРЫТИЕ.

Графом называется множество вершин и связывающих их ребер. Пример графа дает рис.1.

Вершины представлены с помощью кружков. Номера вершин указаны числами внутри кружков. Ребра – отрезки прямых линий, соединяющие вершины.

Будем говорить, что вершина i покрывает некоторое ребро, если данная вершина i является концевой вершиной рассматриваемого ребра.

Множество вершин  называется вершинным покрытием, если для каждого ребра графа найдется хотя бы одна вершина из , которая ее покрывает. Так, одним из возможных вершинных покрытий представленного выше графа, является ={2,4,5}.

Задача ВЕРШИННОЕ ПОКРЫТИЕ требует найти покрытие с заданным числом вершин.

Задание 1. Показать, что задача – найти вершинное покрытие минимального размера также NP-полна.

Закодируем граф с помощью матрицы смежности M вершин

1

2

3

4

5

6

1

0

1

0

1

0

0

2

1

0

1

0

0

1

3

0

1

0

0

1

0

4

1

0

0

0

1

0

5

0

0

1

1

0

0

6

0

1

0

0

0

0

Для экономии, часто в матрице смежности указывают только 1, а 0 – нет. Как видим, матрица смежности квадратная и симметричная.

Вопрос. Чему же соответствует вершинное покрытие размером, скажем, 3 на этой матрице?

Ответ: оно соответствует нулевой квадратной подматрице с одноименными строками и столбцами, размером 3*3.

ЗАДАЧА о КЛИКЕ размером n.

Эта задача состоит в том, чтобы для произвольного графа определить n вершин, никакие две из которых не соединены ребром. Так, примером клики размером 3 для изображенного выше графа является следующий: {1,5,6}.

Задание. Доказать, что если  - минимальное вершинное покрытие данного графа, то все вершины, не вошедшие в , образуют максимальную клику этого графа.

Так, клика {1,5,6} максимальная. Следовательно, множество {2,3,4} – есть минимальное вершинное покрытие.

Доказательство. Пусть В – множество вершин и Е – множество ребер графа и К –максимальная клика. Нужно показать, что разность В\К есть минимальное покрытие. Допустим, что это не так. Скажем, вершина х принадлежит действительно минимальному покрытию и не попала в В\К. Включим ее в В\К . Тогда она “выбьет” из В\К скажем вершины z,w как лишние (избыточные). Эти вершины z,w покрывают какие-то ребра. Но тогда и вершина х должна покрывать эти же ребра. Кроме того, ясно, что нет ребра (z,w). (Почему ?). Приходим к простому выводу, что вершина х должна быть концевой для всех таких ребер, другими концами которых являются z,w . Следовательно, вершины z,w могут быть включены в максимальную клику.

ЗАДАЧА о Гамильтоновом цикле.

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

ЗАДАЧА 3-ВЫПОЛНИМОСТЬ NP-полна.

Задача 3-ВЫПОЛНИМОСТЬ – это задача ВЫПОЛНИМОСТЬ, которая использует 3 литеры в записи каждого дизъюнкта. Покажем, как свести обычную задачу ВЫПОЛНИМОСТЬ к задаче 3-ВЫПОЛНИМОСТЬ.

Возьмем например дизъюнкт:

Этот дизъюнкт (как и любой подобный ему) можно заменить трехлитерными дизъюнктами, введя новые булевские переменные:

Легко доказать, что представленные два трехлитерных дизъюнкта эквивалентны исходному четырехлитерному.

ЛЕКЦИЯ 15. ОПИСАНИЕ ЗАДАЧ НА ЯЗЫКЕ ЛОГИКИ

Рассмотрим описание задач на языке логики. Такое описание потребует формализовать некоторые наиболее часто встречаемые условия.

Прежде всего, таким условием является

x1 + x2+ +xn =1, (15.1)

xi{0,1}.

Это условие эквивалентно следующей системе логических формул:

x1 v x2 v v xn,

x1 v x2,

x1 v x3,

x1 v xn,

x2 v xn,

xn-1 v xn.

Количество всех дизъюнктов равно +1. Число дизъюнктов можно уменьшить, если использовать дополнительные переменные и провести следующие преобразования.

Обозначим через F следующую систему формул:

x1 + x2 + y1 =1,

x3 + x4 + y2 =1,

F

xn-1 + xn + yn/2 =1.

Замечание. Если n – нечетное, то последняя формула заменяется на xn + y(n+1)/2 =1.

В F yi  дополнительные переменные.

Теперь система (15.1) оказывается эквивалентной системе

G

В свою очередь формулу y1 + y2 + … + yn/2 = 1 можно заменить эквивалентной системой H:

H

Следовательно, система становится эквивалентной системе J с булевскими переменными

J= . (15.2)

Описанные преобразования по аналогии применяем к системе (15.2) и т. д. до тех пор, пока не останутся только трехлитерные или двухлитерные уравнения вида a+b+c=1 или d+e=1. Каждое трехлитерное уравнение дает 4 дизъюнкта: a v b v c, a v b, a v c, b v c. Каждое двухлитерное уравнение с+d=1 дает 2 дизъюнкта: c v d, c v d. Следовательно, рассматриваемый способ построения эквивалентной системы дизъюнктов для (15.1) дает не выше 4(n-1) дизъюнктов (уточнение этой формулы требует принять во внимание четность/нечетность n). Приведем пример.

x1 + x2+ +x10 =1,

xi{0,1}.

Последовательно получаем эквивалентные системы:

x1 + x2 + y1 =1,

x3 + x4 + y2 =1,

xxy3        =1, (15.3)

x7 + x8 + y4 =1,

x9 + x10 + y5 =1,

y1 + y2 + y3 + y4 + y5 =1

и

x1 + x2 + y1 =1,

x3 + x4 + y2 =1,

xxy3       =1, (15.4)

x7 + x8 + y4 =1,

x9 + x10 + y5 =1,

y1 + y2 + z1 =1,

y2 + y3 + z2 =1,

y5 + z3 =1,

z1 + z2 + z3 =1.

Теперь все уравнения (кроме одного) трехчленные. Каждое из них дает 4 дизъюнкта. Всего дизъюнктов 34, вместо +1 = 46.

Рассмотрим другие важные условия.

x1 + x2+ +xn  1, (15.5)

xi{0,1}.

Это условие трансформируется в эквивалентную систему двухлитерных дизъюнктов

x1 v x2,

x1 v x3,

x1 v xn,

x2 v xn,

xn-1 v xn.

На практике важно условие вида

x1 + x2+ … +xn = k , (15.6)

xi{0,1}, k > 1, k n, k  целое.

Прямое кодирование этого равенства при k=n/2 (n  четное) требует экспоненциально растущего от n числа дизъюнктов. Поэтому следует вводить новые переменные. В целях ясности обратимся к иллюстративному примеру.

x1 + x2+ +x8 =3. (15.7)

Равенство (15.7) можно заменить следующей эквивалентной системой равенств

x1 + y4+ y5+ y6+ y7+y8 =1,

x2 + z4+ z5+ z6+ z7+z8 =1,

x3 + w4+ w5+ w6+ w7+w8 =1,

y4+ z4+ w4  1,

y5+ z5+ w5  1,

y8+ z8+ w8  1,

x4y4 v z4 v w4,

x5y5 v z5 v w5,

. . .

x8y8 v z8 v w8.

При этом для k первых переменных из (15.8) записываем k равенств вида

x1 + yk+1 + yk+2 + yk+3 + …+ yn = 1,

x2 + zk+1 + zk+2 + zk+3 + …+ yn = 1,

. . . (15.9)

xk + wk+1 + wk+2 + wk+3 + …+ wn = 1.

Пусть x1 = x2== xk = 0. Тогда, например, ya = zb = wc = 1, причем ab, ac, , bc. Следовательно, в силу наших условий, некоторые k переменных из числа xk+1, xk+2,, xn будут иметь единичные значения, обеспечивая условие (15.9). Если, например, x1 = 1, x2 =…= xk = 0, то некоторые (k - 1) переменных (и только они) из числа переменных xk+1, xk+2,, xn будут иметь единичные значения и т.п. Число дизъюнктов для (15.9) составит порядка 4k(n - 1). Общее число дизъюнктов для (15.9) составит порядка 4k(n - 1)+ (эквивалентности

xk+1yk+1 v zk+1 v v wk+1,

xk+2yk+2 v zk+2 v v wk+2,

xnyn v zn v v wn

в систему дизъюнктов преобразованной задачи нет необходимости включать).

Пример 1.1. В хищении подозреваются A,B и C.

  1. Никто, кроме A,B,C в хищении не замешан.

  2. A никогда не ходит на дело без соучастников.

  3. С не виновен, если виновен B.

Спрашивается, виновен ли A?

Нужно составить систему логических уравнений, введя необходимые булевские переменные. Обозначим: xa – виновен A, xb – виновен B, xc – виновен C. Составим следующую базу знаний:

1. xa v xb v xc ,

2. xaxb v xc ,

3. xb  xc .

Эти логические формулы соответствуют условиям задачи. Можно воспользоваться арифметическим представлением логических формул. Этот прием даст связь между логическими формулами и рассмотренными выше условиями формализации. Арифметические представления таковы:

f v g v v hf + g+ + h  1,

f  (1- f), (15.10)

f g   f v g  (1- f) + g  1,

f & gf + g = 2  f + g = 0  fg.

Теперь условия нашей задачи получат следующее представление:

1. xa + xb + xc  1,

2. (1-xa ) + xb + xc  1.

3. (1-xa ) + (1- xc )  1.

Относительно этой модели знаний поставлен вопрос: верно ли, что xa = 1?

Рассмотрим описание задач на языке логики. Такое описание потребует формализовать некоторые наиболее часто встречаемые условия.

Прежде всего, таким условием является

x1 + x2+ +xn =1, (15.11)

xi{0,1}.

Это условие эквивалентно следующей системе логических формул:

x1 v x2 v v xn,

x1 v x2,

x1 v x3,

x1 v xn,

x2 v xn,

xn-1 v xn.

Количество всех дизъюнктов равно +1.

Рассмотрим другие важные условия.

x1 + x2+ +xn  1, (15.12)

xi{0,1}.

Это условие трансформируется в эквивалентную систему двухлитерных дизъюнктов

x1 v x2,

x1 v x3,

x1 v xn,

x2 v xn,

xn-1 v xn.