Здравствуйте, коллеги!
дано понятное доказательство того факта, что NP не равно Р
30.10.2013 года опубликован №5/2013 журнала “Eastern European Scientific Journal”. Ссылка на журнал в интернете
[реклама удалена] по ссылке Journal и далее Eastern European Scientific Journal October 2013 или
[реклама удалена] с.114
название статьи: "NP not equal to P"
с уважением Билан И.
P.S. статья на русском языке, только аннотация и название на английском
Авторы:
Виталий В. Коваль, кандидат технических наук, Украина, Черкассы
Игорь Ю. Билан, Украина, Черкассы
NP не равно P.
Ключевые слова: NP-полная задача, клика, граф.
Аннотация: в данной статье авторы доказывают не совпадение классов NP-полных задач, и класса P-задач. Доказательство производится с использованием дизъюнктивных нормальных форм, для задачи поиска ответа на вопрос, содержит ли граф клику заданного размера. Точной оценки трудоемкости данной NP-полной задачи статья не содержит, доказывается только ее не полиномиальность.
Рассмотрим, для доказательства, проблему ответа на вопрос содержит ли неориентированный граф
из
вершин клику размером
.
В качестве входных данных рассмотрим матрицу смежности
.
Так как граф неориентированный, то достаточно рассматривать часть матрицы смежности над главной диагональю,(так как матрица
симметрична).
В качестве алгоритмической модели рассмотрим L-машину, которая содержит ячейки с входными данными (нули или единицы матрицы смежности
), промежуточные переменные, и переменную ответа, которая равна
, если клика размером
содержится в графе, и
, если клика размером не содержится в графе. При этом L-машина выполняет следующие действия:
, и
.
Лемма 1. Можно полиномиальным образом преобразовать любой алгоритм L-машины, так, что отрицания берутся только от ячеек с входными данными (то есть только от элементов матрицы
, а не от промежуточных переменных).
Доказательство леммы1.
Доказательство проведем по индукции, от числа шагов вычислений L-машины.
Базис индукции: Для 1. У нас одновременно со значением каждой ячейки матрицы смежности
содержится также ее отрицание.
Предположение индукции: пусть для
-го шага вычислений у нас вместе со значением каждой промежуточной переменной содержится также ее отрицание, и при этом мы брали отрицание только от переменных-начальных-данных.
Шаг индукции: на
шаге вместе с
, вычисляем одновременно
, используя закон де Моргана, а
вместе с
, вычисляем одновременно
, также используя закон де Моргана.
Таким образом, так как у нас имелись все отрицания всех переменных, на
-м шаге, мы получаем отрицания всех переменных на
шаге не используя оператора
, при этом сложность алгоритма возрастает не более чем в
раза.
Что и требовалось доказать.
Конец доказательства леммы 1.
Лемма 2.
Все промежуточные переменные, и переменную ответа, можно представить в виде ДНФ, от переменных-начальных-данных и отрицаний переменных-начальных-данных.
Доказательство леммы 2.
Доказательство проведем по индукции.
Базис индукции: Для 1. У нас каждая переменная-начальное-данное или его отрицание, являются ДНФ.
Предположение индукции: пусть для
-го шага вычислений у нас каждая переменная представлена в виде ДНФ.
Шаг индукции: на
шаге у нас происходит вычисление
, тогда ДНФ переменной
образуется из ДНФ переменных
,и
по следующему правилу: ДНФ переменной
содержит каждый конъюнкт как ДНФ переменной
, так и ДНФ переменной
, при этом совпадающие конъюнкты включаются только один раз. При этом на всех возможных наборах переменных-начальных-данных
тогда и только тогда когда или
или
или одновременно
и
равно
.
Пусть
, тогда конъюнкты ДНФ образуются по следующему правилу: каждый конъюнкт ДНФ
должен быть произведением каких то конъюнктов одного из ДНФ
, а другого из ДНФ
.
При этом перебираются все возможные конъюнкты ДНФ
, и ДНФ
. В таком случае только когда
и одновременно
равны
, а значит и в ДНФ
есть конъюнкт равный
, и в ДНФ
есть конъюнкт равный
, тогда их произведение этих конъюнктов в ДНФ
даст в результате
.
Что и требовалось доказать.
Конец доказательства леммы 2.
Лемма 3.
Вид ДНФ переменной ответа.
Доказательство леммы 3.
ДНФ переменной ответа содержит все конъюнкты следующего вида и только их:
Это конъюнкты, каждый из которых содержит проверку на существование клики размером
,то есть утверждение переменных матрицы смежности, которые вместе образуют все ребра какой то клики. При этом для каждой клики, группа конъюнктов, в которой содержатся утверждение переменных матрицы смежности, которые вместе образуют все ребра этой клики, остальные переменные конъюнктов перебирают все возможные комбинации остальных переменных, не входящих в клику. Это потому, что из за того, что на любом графе, содержащем какую то клику, ДНФ ответа должен принять значение
, при любых значениях переменных не входящих в клику.
То есть для любого набора значений переменных не входящих в клику, в ДНФ ответа, должен содержаться конъюнкт, который на этом наборе переменных
, при условии, что все ребра отвечающие за клику
.
ЗАМЕЧАНИЕ: некоторые переменные, не отвечающие за клику могут отсутствовать в конъюнктах ДНФ ответа, при это м понятно, их значения могут быть любые, если конечно этим конъюнктом выполняется проверка на клику.
Конец доказательства леммы 3.
Введем некоторые обозначения, необходимые для доказательства:
Обозначение 1: часть конъюнкта, проверяющую на утверждение ребер клики и только их назовем кликоподобной частью.
Обозначение 2: дополнение до кликоподобной части на тех же переменных (отвечающих только за клику) назовем основной частью.
Обозначение 3: часть конъюнкта содержащее все кроме кликоподобной или основной части назовем дополнительной частью.
Обозначение 4:
это на множестве
переменных ДНФ которая состоит из всех возможных конъюнктов на
переменных без возможных упрощений. В данном случае мы имеем
конъюнктов в ДНФ
. Замечание: в каждом конъюнкте
содержится
переменных.
Обозначение 5:
это ДНФ на множестве переменных
содержащее
разных конъюнктов, каждый из которых состоит из
переменных.
Обозначение 6:
это ДНФ на множестве переменных
содержащее менее
разных конъюнктов, каждый из которых состоит из
переменных.
Обозначение 7:
это ДНФ на множестве переменных
содержащее более
разных конъюнктов, каждый из которых состоит из
переменных.
Обозначение 8:
это множество разных конъюнктов, на
переменных каждый из которых состоит из
переменных.
Обозначение 9:
это множество конъюнктов
без конъюнктов
.
Обозначение 10:
при
это ДНФ состоящее из конъюнктов, каждый из которых есть произведение конъюнкта из
на конъюнкт из
во всех возможных комбинациях.
Обозначение 11:
при
это ДНФ состоящее из конъюнктов, каждый из которых есть произведение конъюнкта из
на конъюнкт из
во всех возможных комбинациях.(аналог
)
Обозначение 12:
Обозначение 13:
это ДНФ состоящее из конъюнктов, каждый из которых содержится либо в
либо в
.(аналог
)
Обозначение 14:
при этом в ДНФ
состоит из конъюнктов, каждый из которых содержится как в
так и в
, эти конъюнкты назовем «живыми» в отличии от «мертвых», которые содержатся или только в
или только в
, и не содержатся в
.
Теорема:
для построения ДНФ ответа требуется экспоненциальное число ходов L-машины.
Начало доказательства.
Проведем доказательство от противного.
Пусть мы построили ДНФ ответа. Покажем, что его нельзя получить за полиномиальное время, меньшее чем
.
Пусть мы преобразовывали ДНФ ответа
операциями
.
При этом согласно принципу Дерихле, у нас найдется переменная
, конъюнкты которой отвечают за проверку не менее чем за
клик. Дополнительные части, в переменной
, для каждой клики также содержат не менее чем
вариантов согласно тому же принципу Дерихле, мы можем выбрать такую переменную
. Если также содержатся конъюнкты более перечисленных, то это не меняет общности.
В результате переменная
представляется в таком виде:
Рис. 1
Далее, у нас есть два пути: первый – это с помощью
разложить так, чтобы у каждой клики в ДНФ, была общая с остальными кликами часть.
И вынести эту общую часть за скобки, с помощью
.
Рис. 2 .
Тут красное – это общая часть, зеленое – индивидуальная часть каждой клики.
Даже для разложения на
требуется
что больше
.
Второй случай: когда у нас в
содержатся две клики которые полностью не совпадают.
В таком случае мы должны рассматривать с помощью
образование
, при этом отслеживая деление на «мертвые» и «живые» конъюнкты.
Рассмотрим
.
«мертвые» конъюнкты должны содержаться как в
, так и в
. Иначе мы получим
или
равное
, и никакого прогресса у нас не будет.
Если в
и
будет просто содержаться по
от недостающих до
различных конъюнктов, то мы получим дерево, листьев у которого столько, сколько недостающих до
конъюнктов у
. Что более чем
.
Рассмотрим, куда, и как можно добавить «мертвые» конъюнкты, чтобы строго соблюдалось число «живых» конъюнктов, если у нас в
, или в
содержатся две клики, у которых любые два ребра различны.
Первый случай:
Рис 3
;
;
;
, тут происходит попытка вписать «мертвые» конъюнкты в
за счет основной части
, и
и в за счет основной части
, и
.
Получаем, что у нас равенство соблюдаться не будет, из за того, что возникнут лишние «живые» конъюнкты.
Рассмотрим:
, а также
;
В качестве «живых» конъюнктов возникают следующая группа конъюнктов:
рассмотрим например
,зеленая часть основной части
, общая дополнительная часть
, и
, и зеленая основная часть
; выпадает красная кликоподобная часть
и красная кликоподобная часть
; это не укладывается в набор «живых» конъюнктов
, так как две части различных клик никогда не дадут одной клики (тем более две части совершенно не совпадающих клик, не будут покрыты одной кликой, что в результате даст нам лишние «живые» конъюнкты)
Второй случай: то есть, на основании выше рассмотренного, у нас такая ситуация:
Выносить за скобки общую часть клик мы не можем, потому, что получается более чем полиномиальная сложность.
Одновременно добавить в виде произведения основные части двух не совпадающих клик тоже не можем, получаются лишние живые конъюнкты.
Мертвые конъюнкты разбивать, на две группы и переводить их в живые с помощью операции
, мы тоже не можем, т.к. получается более чем полиномиальная трудоемкость.
Остается единственный выход: рассматривать мертвые конъюнкты из единственной основной части, и при этом, мертвые конъюнкты выводить из игры следующим образом, чтобы не скатиться в более чем экспоненциальную трудоемкость:
Рис 4.
При этом у нас основная часть
, переходит из мертвых конъюнктов в живые, за время
, так как у нас листьев у дерева
будет столько сколько переменных, так как на каждом шаге, у нас из мертвых в живые переходит в
конъюнктов более чем на предыдущем шаге, где
-- число переменных, от которых берется
различных значения, которые умножаются на все предыдущие.
Однако и в этом, последнем случае, нас ожидает разочарование, из за того, что мы двигаясь в обратном направлении (то есть от полученной
) не получим желаемый результат. На каждом шаге мы теряем информацию о других кликах, и чтобы эту информацию сохранить, нам будет необходимо раскладывать с помощью
экспоненциальное число раз.
Потеря информации представлена на следующем рисунке 5:
Рис 5.
«Туда» мы получаем достаточное количество «мертвых» конъюнктов, «обратно» мы получаем чистую кликоподобную часть, но при этом мы теряем информацию об остальных кликоподобных частях.
То есть мы рассмотрели все случаи, и в каждом из них получили более чем полиномиальную трудоемкость.
Примечание: то что в дополнительных частях может содержаться в
меньше конъюнктов, не влияет на ход доказательства, а лишь усложняет выкладки, поэтому мы это не рассматривали.
Конец доказательства.