NL-полнота задачи о достижимости в графе — различия между версиями
Joshik (обсуждение | вклад) |
(→Доказательство NL-трудности задачи STCON) |
||
Строка 25: | Строка 25: | ||
=== Доказательство NL-трудности задачи STCON === | === Доказательство NL-трудности задачи STCON === | ||
+ | Необходимо показать, что любая задача из класса [[NL]] сводится к задаче STCON с использованием не более, чем логарифмической памяти. | ||
+ | |||
+ | Необходимо по данной задаче из [[NL]] построить тройку <tex> <G, s, t> </tex>, решение задачи STCON для которой будет эквивалентно решению данной задачи. | ||
+ | |||
+ | Любая нмашина Тьюринга, которая принимает некоторый язык L из [[NL]] использует не более, чем логарифмическое количество ячеек на ленте и таким образом возможных состояний этой машины Тьюринга <tex> O(poly(n)) </tex>. Состоянием машины Тьюринга считается ее внутреннее состояние, позиция головки на ленте и содержимое рабочей ленты. Каждому возможному состоянию машины Тьюринга будет соответствовать некоторая вершина в <tex> G </tex>, а каждому переходу из этого состояния в другое (которых в недетерминированной машине Тьюринга не более, чем некоторое конечное число), ребро в графе <tex> G </tex>. За вершину <tex> s </tex> принимается вершина, соответствующая начальному состоянию машины, а из каждой вершины, соответствующей некоторому допускающему состоянию, добавляется переход в выделенную вершину <tex> t </tex>. | ||
+ | |||
+ | Очевидно, что для любого слова, из языка L, то есть принимаемого данной машиной Тьюринга, будет существовать путь из <tex> s </tex> в <tex> t </tex> в построенном графе <tex> G </tex>. А, если для некоторого слова не из L в <tex> G </tex> существует путь из <tex> s </tex> в <tex> t </tex>, то он соответствует некоторой корректной последовательности переходов в изначальной машине, таким образом слово должно было приниматься этой недетерминированной машиной. |
Версия 22:50, 6 апреля 2010
Содержание
Формулировка задачи
Даны ориентированный граф
и две вершины в нем. Необходимо проверить, правда ли, что в графе существует путь из вершины в вершину . Эту задачу принято называть или .Утверждение
Задача NL-полна.
Доказательство
Для доказательства NL-полноты необходимо показать, что эта задача NL-трудная и принадлежит классу NL.
Доказательство принадлежности задачи STCON классу NL
Для доказательства необходимо предъявить алгоритм для недетерминированной машины Тьюринга, который использует конечное число переменных, каждая из которых занимает
памяти, где - размер входа для задачи и за время порядка решает эту задачу.Алгоритм:
1. Начиная с вершины
недетерминированно переходит в одну из вершин, смежных с ней. (Очевидно, для этого необходимо конечное число переменных)2. Проверяет, правда ли, что текущая вершина совпадает с
. Если это так, возвращает TRUE.3. Отдельно считает количество пройденных вершин. Как только это число превышает количество вершин в графе, то алгоритм возвращает FALSE, так как посетил некоторую вершину дважды.
Таким образом в каждый момент алгоритму достаточно хранить текущую вершину, количество посещенных вершин, финальную вершину
и некоторое число вспомогательных переменных, для совершения переходов. Все эти переменные принимают значения не более, чем максимальный номер вершины, то есть как раз занимают памяти.Так как, если из
существует путь в , то он имеет длину не более, чем количество вершин в графе, то алгоритм корректно возвращает FALSE.Доказательство NL-трудности задачи STCON
Необходимо показать, что любая задача из класса NL сводится к задаче STCON с использованием не более, чем логарифмической памяти.
Необходимо по данной задаче из NL построить тройку , решение задачи STCON для которой будет эквивалентно решению данной задачи.
Любая нмашина Тьюринга, которая принимает некоторый язык L из NL использует не более, чем логарифмическое количество ячеек на ленте и таким образом возможных состояний этой машины Тьюринга . Состоянием машины Тьюринга считается ее внутреннее состояние, позиция головки на ленте и содержимое рабочей ленты. Каждому возможному состоянию машины Тьюринга будет соответствовать некоторая вершина в , а каждому переходу из этого состояния в другое (которых в недетерминированной машине Тьюринга не более, чем некоторое конечное число), ребро в графе . За вершину принимается вершина, соответствующая начальному состоянию машины, а из каждой вершины, соответствующей некоторому допускающему состоянию, добавляется переход в выделенную вершину .
Очевидно, что для любого слова, из языка L, то есть принимаемого данной машиной Тьюринга, будет существовать путь из
в в построенном графе . А, если для некоторого слова не из L в существует путь из в , то он соответствует некоторой корректной последовательности переходов в изначальной машине, таким образом слово должно было приниматься этой недетерминированной машиной.