Полнота относительно L-сведения. NL-полнота. P-полнота — различия между версиями
Строка 21: | Строка 21: | ||
Алгоритм: | Алгоритм: | ||
− | #Начиная с вершины <tex> s </tex> недетерминированно переходим в одну из вершин, смежных с ней. (Очевидно, для этого необходимо | + | #Начиная с вершины <tex> s </tex> недетерминированно переходим в одну из вершин, смежных с ней. (Очевидно, для этого необходимо <tex> O(1) </tex> переменных). |
− | #Проверяем, правда ли, что текущая вершина совпадает с <tex> t </tex>. Если это так, | + | #Проверяем, правда ли, что текущая вершина совпадает с <tex> t </tex>. Если это так, возвращаем TRUE. |
− | #Отдельно считаем количество пройденных вершин. Как только это число | + | #Отдельно считаем количество пройденных вершин. Как только это число превысило количество вершин в графе, возвращаем FALSE, так как посетили некоторую вершину дважды. |
− | Таким образом в каждый момент алгоритму достаточно хранить текущую вершину, количество посещенных вершин, финальную вершину <tex> t </tex> и некоторое число вспомогательных переменных | + | Таким образом в каждый момент алгоритму достаточно хранить текущую вершину, количество посещенных вершин, финальную вершину <tex> t </tex> и некоторое число вспомогательных переменных для совершения переходов. Все эти переменные принимают значения не более, чем максимальный номер вершины, то есть как раз занимают <tex> O(\log n) </tex> памяти. |
Теперь докажем, что любая задача из класса <tex>\mathrm{NL}</tex> сводится к задаче <tex>\mathrm{CONN}</tex> с использованием не более чем логарифмической памяти. | Теперь докажем, что любая задача из класса <tex>\mathrm{NL}</tex> сводится к задаче <tex>\mathrm{CONN}</tex> с использованием не более чем логарифмической памяти. | ||
Строка 35: | Строка 35: | ||
Очевидно, что для любого слова из языка <tex>L</tex>, то есть принимаемого данной машиной Тьюринга, будет существовать путь из <tex> s </tex> в <tex> t </tex> в построенном графе <tex> G </tex>. А если для некоторого слова не из <tex>L</tex> в <tex> G </tex> существует путь из <tex> s </tex> в <tex> t </tex>, то он соответствует некоторой корректной последовательности переходов в изначальной машине, таким образом слово должно было приниматься этой недетерминированной машиной. | Очевидно, что для любого слова из языка <tex>L</tex>, то есть принимаемого данной машиной Тьюринга, будет существовать путь из <tex> s </tex> в <tex> t </tex> в построенном графе <tex> G </tex>. А если для некоторого слова не из <tex>L</tex> в <tex> G </tex> существует путь из <tex> s </tex> в <tex> t </tex>, то он соответствует некоторой корректной последовательности переходов в изначальной машине, таким образом слово должно было приниматься этой недетерминированной машиной. | ||
− | Такое построение графа <tex> G </tex> по данной машине Тьюринга можно выполнить с использованием | + | Такое построение графа <tex> G </tex> по данной машине Тьюринга можно выполнить с использованием <tex> O(1) </tex> переменных, которые будут перебирать всевозможные мгновенные состояния машины (их <tex> O(poly(n)) </tex>, потому переменная, перебирающая его занимает <tex> O(\log n) </tex> памяти), переходов из него и проверки возможности перехода. |
}} | }} |
Версия 17:18, 14 марта 2013
В классах, являющихся подмножествами
, не используют -сведение по Карпу, так как оно оказывается бесполезным. Для них применяется -сведение (с дополнительной памяти).
Определение: |
-complete и верно, что . |
Определение: |
и верно, что . |
Определение: |
Задача | в графе G есть путь из s в t — задача существования пути между двумя заданными вершинами в данном графе.
Теорема: |
Задача существования пути между двумя заданными вершинами в данном графе NL-полна относительно . -сведения |
Доказательство: |
Докажем, что . Для доказательства необходимо предъявить алгоритм для недетерминированной машины Тьюринга, который использует переменных, каждая из которых занимает памяти, где — размер входа, и за время порядка решает эту задачу.Алгоритм:
Таким образом в каждый момент алгоритму достаточно хранить текущую вершину, количество посещенных вершин, финальную вершину и некоторое число вспомогательных переменных для совершения переходов. Все эти переменные принимают значения не более, чем максимальный номер вершины, то есть как раз занимают памяти.Теперь докажем, что любая задача из класса сводится к задаче с использованием не более чем логарифмической памяти.Необходимо по данной задаче из построить тройку , решение задачи для которой будет эквивалентно решению данной задачи.Любая машина Тьюринга, которая принимает некоторый язык из , использует не более чем логарифмическое количество ячеек на рабочей ленте, и таким образом возможных мгновенных описаний этой машины Тьюринга . Каждому возможному мгновенному описанию машины Тьюринга будет соответствовать некоторая вершина в , а каждому переходу из этого описания в другое (которых в недетерминированной машине Тьюринга конечное число) — ребро в графе . За вершину принимается вершина, соответствующая начальному состоянию машины, а из каждой вершины, соответствующей некоторому допускающему состоянию, добавляется переход в выделенную вершину .Очевидно, что для любого слова из языка Такое построение графа , то есть принимаемого данной машиной Тьюринга, будет существовать путь из в в построенном графе . А если для некоторого слова не из в существует путь из в , то он соответствует некоторой корректной последовательности переходов в изначальной машине, таким образом слово должно было приниматься этой недетерминированной машиной. по данной машине Тьюринга можно выполнить с использованием переменных, которые будут перебирать всевозможные мгновенные состояния машины (их , потому переменная, перебирающая его занимает памяти), переходов из него и проверки возможности перехода. |
Теорема: |
(следствие из предыдущей теоремы). |
Доказательство: |
Необходимо доказать, что По определению верно, что . и верно, что . Следовательно, если , то , сводимого к верно, что , следовательно, поскольку класс замкнут относительно -сведения по Карпу, . Таким образом, если существует язык, принадлежащий и , то теорема доказана. Как было показано выше, . , что очевидно следует из существования алгоритма DFS. |