русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Задача и клике.


Дата добавления: 2015-01-16; просмотров: 678; Нарушение авторских прав


Задача формулируется так: содержит ли данный граф G k – клику, где k – целое число. На вход алгоритма подается цепочка

k (x 1 ,y1) …(x m ,y m), где (x i ,y i ) – ребра m - узельного графа G, задаваемые номерами своих вершин. Задача о клике принадлежит классу NP. Недетерминированная машина Тьюринга “догадывается”, какие k вершин составляют полный подграф, а затем это проверяется, для чего достаточно O(n3) шагов, где n - длина кода задачи о клике.

Теорема.Задача ВКНФ полиномиально сводится к задаче о клике. Поэтому задача о клике NP – полна.

Доказательство. Пусть F = F1…F q - формула в КНФ, где Fi = Ú x i j ,

j=1,…,k i

x i j - литерал. Построим неориентированный граф G = (V, E), узлы кото- рого представляются парами целых чисел [ i, j ] для 1£ i £ q, 1£j£ ki .

Первое число i обозначает член Fi , второе j - литерал, входящий в Fi , т.е. x i j . Таким образом, каждый узел графа естественным образом соответствует вхождению в конкретный сомножитель.

Ребра образуют пары [ i, j ], [ k, s], для которых i ¹ k и x i j ¹ Øx k s .

Присвоение смежным вершинам значения 1 превращает в истину оба члена - Fi и F k .

Число узлов в G, очевидно, меньше длины формулы F, а число ребер не превосходит квадрата числа узлов. Граф G можно закодировать цепочкой, длина которой ограничена полиномом от длины формулы F, а найти такой код можно за время, ограниченное полиномом от длины F.

Покажем, что граф G содержит q-клику тогда и только тогда, когда формула F выполнима.

Достаточность. Пусть формула F выполнима. Тогда на некотором наборе из 0 и 1 формула F обращается в 1. Поскольку на этом наборе каждый сомножитель Fi обращается в 1, то в каждом сомножителе найдется литерал, принимающий значение 1, который обозначим как x i m i . Покажем, что множество узлов {[ i, m i ]: 1£ i £ q } образует q –клику.



В противном случае нашлись бы такие i и j , что i ¹ j и вершины

[ i, m i ], [ j, m j ] не смежные. Из приведенного выше построения графа по формуле F следует, что x i m i = Øxj m j , что невозможно, так как

x i m i = xj m j = 1.

Необходимость. Пусть G содержит q-клику. Первые компоненты узлов, составляющих клику, должны быть различны. Так как в q-клике q узлов, то узлы клики взаимно однозначно соответствуют сомножителям формулы F.

Пусть S1 = {y:x i m i = y, где 1£ i £ q }, S2 = {y:x i m i = Øy, где 1£ i £ q }, тогда S1 Ç S2 = Æ, ибо в противном случае какие-то узлы [ i, m i ] и

[ j, m j ], для которых x i m i = Ø x j m j , соединялись бы ребром. Если положить переменные из S1 равными 1, а из S2 равными 0, то каждая формула Fi примет значение 1, т.е. формула F выполнима.

Пример. На рис. 10.7 представлен граф, построенный по предложенному выше алгоритму на основании формулы F= (y1 + Øy 2)(y2 + Øy3)( y3 + Øy1), где литералы соответственно представлены:

x11 = y1 , x21 = y2 , x31 = y3 ,

x12 = Øy2 , x22 = Øy3 , x32 = Øy1 .

Три сомножителя 2-КНФ F показывают, что граф на рис. 10.7 содержит две 3-клики: {[1,1], [2,1], [3,1]} и {[1,2], [2,2], [3,2]}. Литералы первой клики выполняют F при y1 = y2 = y3 =1, второй - при y1 = y2 = y3 =0. “

 

 

Рис.10.7.



<== предыдущая лекция | следующая лекция ==>
Проблема выполнимости | Задача об узельном (вершинном) покрытии


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.23 сек.