Примеры неразрешимых задач: проблема соответствий Поста — различия между версиями
| Shevchen (обсуждение | вклад) м (Откатываю. Я думал, корректор правит ошибки, а не вносит.) | |||
| Строка 1: | Строка 1: | ||
| + | '''Проблема соответствий Поста''' - один из основных примеров неразрешимой задачи, использующийся для доказательства неразрешимости многих других задач. | ||
| + | |||
| + | == Основные определения == | ||
| + | |||
| {{Определение | {{Определение | ||
| |definition= | |definition= | ||
| − | + | Даны два конечных списка <tex>A = (a_1, \ldots, a_n)</tex> и <tex>B = (b_1 ,\ldots ,b_n)</tex>, где <tex>a_i \in \Sigma ^*</tex> и <tex>b_i \in \Sigma ^*</tex> для всех <tex>i</tex>. Вопрос существования непустой последовательности индексов <tex>(i_1 , \ldots, i_k)</tex>, удовлетворяющей условию <tex>a_{i_1} \ldots a_{i_k} = b_{i_1} \ldots b_{i_k}</tex>, где <tex>1 \leq i_j \leq n</tex> для всех j, называется '''проблемой соответствий Поста (ПСП)''' (англ. ''Post correspondence problem''). Такую последовательность индексов, в случае её существования, называют '''решением проблемы соответствий Поста'''. | |
| }} | }} | ||
| Строка 8: | Строка 12: | ||
| Проблема соответствий Поста, для которой фиксирован элемент последовательности индексов <tex>i_1 = 1</tex>, называется '''модифицированной проблемой соответствий Поста (МПСП)'''. | Проблема соответствий Поста, для которой фиксирован элемент последовательности индексов <tex>i_1 = 1</tex>, называется '''модифицированной проблемой соответствий Поста (МПСП)'''. | ||
| }} | }} | ||
| + | |||
| + | == Перечислимость языка ПСП == | ||
| {{Теорема | {{Теорема | ||
| Строка 13: | Строка 19: | ||
| Язык пар последовательностей, для которых существует решение ПСП, перечислим. | Язык пар последовательностей, для которых существует решение ПСП, перечислим. | ||
| |proof= | |proof= | ||
| − | + | Для списков <tex>A</tex> и <tex>B</tex> размера <tex>n</tex> из условия ПСП построим программу-полуразрешитель <tex>p</tex>, проверяющую все возможные решения: | |
|    for <tex>m = 1 .. \infty</tex> |    for <tex>m = 1 .. \infty</tex> | ||
|      for all <tex>(i_1, i_2, \ldots, i_m): 1 \leq i_j \leq n</tex> |      for all <tex>(i_1, i_2, \ldots, i_m): 1 \leq i_j \leq n</tex> | ||
| Строка 23: | Строка 29: | ||
| Для МПСП доказательство перечислимости имеющих решение пар аналогично, но перебор индексов ведётся с <tex>i_2</tex>. | Для МПСП доказательство перечислимости имеющих решение пар аналогично, но перебор индексов ведётся с <tex>i_2</tex>. | ||
| − | {{ | + | == Неразрешимость языка ПСП == | 
| + | |||
| + | Докажем неразрешимость языка ПСП следующим образом. Докажем, что универсальный язык [[M-сводимость|сводится]] к языку МПСП, который в свою очередь сводится к языку ПСП.  | ||
| + | |||
| + | Для начала покажем как свести МПСП к ПСП. | ||
| + | |||
| + | Пусть даны списки <tex>A</tex> и <tex>B</tex> из условия МПСП. Построим два новых списка <tex>C</tex> и <tex>D</tex> и рассмотрим ПСП для них. Для этого введем два новых символа, которые не используются в словах из цепочек <tex>A</tex> и <tex>B</tex>. Пусть для определенности это будут символы <tex>\#</tex> и <tex>\$</tex>. | ||
| + | |||
| + | Тогда сформируем два новых списка <tex>C, D</tex> по следующим правилам: | ||
| + | * Для всех <tex>i = 1 \ldots n</tex> возьмем <tex>c_i</tex> равное слову <tex>a_i</tex> с символом <tex>\#</tex> после каждого его символа. Например, для <tex>a_i = 10zx</tex> положим <tex>c_i = 1\#0\#z\#x\#</tex>; | ||
| + | * Для всех <tex>i = 1 \ldots n</tex> возьмем <tex>d_i</tex> равное слову <tex>b_i</tex> с символом <tex>\#</tex> перед каждым его символом. Например, для <tex>b_i = 10zx</tex> положим <tex>d_i = \#1\#0\#z\#x</tex>; | ||
| + | * <tex>c_0 = \#c_1</tex>; | ||
| + | * <tex>d_0 = d_1</tex>; | ||
| + | * <tex>c_{n+1} = \$</tex>; | ||
| + | * <tex>d_{n+1} = \#\$</tex>. | ||
| + | |||
| + | {{Лемма | ||
| + | |id=lemma- | ||
| + | |statement= | ||
| + | МПСП для пары списков <tex>(A, B)</tex> сводится к ПСП для пары списков <tex>(C, D)</tex>. | ||
| + | |proof= | ||
| + | Из определения [[M-сводимость|m-сведения]] следует, что мы должны доказать равносильность наличия решения для построенных экземпляров МПСП и ПСП. | ||
| + | |||
| + | <tex>\Rightarrow</tex> | ||
| + | |||
| + | Пусть набор индексов <tex>(1, i_2, \ldots, i_k)</tex> - решение МПСП из условия леммы. То есть <tex>w_A = w_B</tex>, где  | ||
| + | |||
| + | <tex>w_A = a_1 a_{i_2} \ldots a_{i_k}</tex>, | ||
| + | |||
| + | <tex>w_B = b_1 b_{i_2} \ldots b_{i_k}</tex>. | ||
| + | |||
| + | Рассмотрев цепочки <tex>w_C</tex> и <tex>w_D</tex> c аналогичными индексами, заметим, что мы имеем почти равные цепочки с той лишь разницей, что первой не хватает символа <tex>\#</tex> в начале, а второй - в конце. Конкретно, | ||
| + | |||
| + | <tex>\# c_1 c_{i_2} \ldots c_{i_k} = d_1 d_{i_2} \ldots d_{i_k} \# </tex>. | ||
| + | |||
| + | Изменив первый индекс с <tex>1</tex> на <tex>0</tex>, решим проблему с символом <tex>\#</tex> в начале. Добавив индекс <tex>n+1</tex> к набору, решим проблему с символом <tex>\#</tex> в конце. | ||
| + | |||
| + | <tex> c_0 c_{i_2} \ldots c_{i_k} c_{n+1} = d_1 d_{i_2} \ldots d_{i_k} d_{n+1} </tex>. | ||
| + | |||
| + | Итого, если <tex>(1, i_2, \ldots, i_k)</tex> - решение исходной МПСП, то <tex>(0, i_2, \ldots, i_k, n+1)</tex> - решение построенной по правилам выше ПСП. | ||
| + | |||
| + | <tex>\Leftarrow</tex> | ||
| + | |||
| + | В любом существующем решении ПСП для списков <tex>C, D</tex> должны выполняться условия:  | ||
| + | * <tex>i_1 = 0</tex>, так как только в паре <tex>(c_1, d_1)</tex> первые символы совпадают; | ||
| + | * последний индекс равен <tex>n+1</tex>, так как только в паре <tex>(c_{n+1}, d_{n+1})</tex> строки заканчиваются одинаковыми символами. | ||
| + | |||
| + | Пусть последовательность <tex>(0, i_2, i_3, \ldots, i_k, n + 1)</tex> является решением ПСП. Иными словами, | ||
| + | |||
| + | <tex>c_0 c_{i_2} \ldots c_{i_k} c_{n+1} = d_0 d_{i_2} \ldots d_{i_k} d_{n+1}</tex>. | ||
| + | |||
| + | Если <tex>i_f</tex> — наименьший индекс, равный <tex>n+1</tex>, то <tex>c_0 c_{i_2} \ldots c_{i_f}</tex>, <tex>d_0 d_{i_2} \ldots d_{i_f}</tex> — префиксы исходных конкатенаций до первого символа <tex>\$</tex>, следовательно, равны между собой. Последовательность <tex>(0, i_{2} \ldots, i_f)</tex> — также решение ПСП, причём первый индекс равен <tex>0</tex> и <tex>i_f = n + 1</tex>. Остальные индексы не превосходят <tex>n</tex>, но и не равны <tex>0</tex>, иначе в левой части равенства образуется подстрока из двух <tex>\#</tex> подряд, а в правой её не может быть. Учитывая эти ограничения, перепишем получившееся равенство: | ||
| + | |||
| + | <tex>\# c_1 c_{i_2} \ldots c_{i_{f-1}}\$</tex> <tex>=</tex> <tex>d_1 d_{i_2} \ldots d_{i_{f-1}} \#\$</tex>. | ||
| + | |||
| + | Оставив из этих двух строк символы, стоящие на чётных позициях, и удалив с конца <tex>\$</tex>, получим | ||
| + | |||
| + | <tex>a_1 a_{i_2} \ldots a_{i_{f-1}} = b_1 b_{i_2} \ldots b_{i_{f-1}}</tex>. | ||
| + | |||
| + | Итого, если <tex>(0, i_2, \ldots, i_k, n+1)</tex> - решение ПСП, то <tex>(1, i_2, \ldots, i_k)</tex> - решение исходной МПСП. | ||
| + | }} | ||
| + | |||
| + | {{Лемма | ||
| |statement= | |statement= | ||
| − | МПСП  | + | Универсальный язык сводится к МПСП. | 
| |proof= | |proof= | ||
| − | Выполним [[M-сводимость|m-сведение]]  | + | Выполним [[M-сводимость|m-сведение]] [[Разрешимые (рекурсивные) языки#Пример неразрешимого множества|универсального языка]] к МПСП со списками <tex>A</tex> и <tex>B</tex>. | 
| Назовём '''снимком''' состояния МТ строку вида <tex>c_1 c_2 \ldots c_k \#_p c_{k+1} \ldots c_t</tex>, где <tex>c_1 c_2 \ldots c_t</tex> — строка на ленте, за исключением бесконечных последовательностей пробелов слева и справа, <tex>p</tex> — текущее состояние автомата МТ, головка расположена справа от <tex>\#_p</tex>. Построим последовательности таким образом, чтобы решение МПСП образовывало строку | Назовём '''снимком''' состояния МТ строку вида <tex>c_1 c_2 \ldots c_k \#_p c_{k+1} \ldots c_t</tex>, где <tex>c_1 c_2 \ldots c_t</tex> — строка на ленте, за исключением бесконечных последовательностей пробелов слева и справа, <tex>p</tex> — текущее состояние автомата МТ, головка расположена справа от <tex>\#_p</tex>. Построим последовательности таким образом, чтобы решение МПСП образовывало строку | ||
| Строка 238: | Строка 306: | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| По доказанному ранее, МПСП неразрешима. Тогда, вследствие теоремы для m-сведения, ПСП неразрешима. | По доказанному ранее, МПСП неразрешима. Тогда, вследствие теоремы для m-сведения, ПСП неразрешима. | ||
| }} | }} | ||
| − | ==  | + | == Источники == | 
| * Хопкрофт Д., Мотвани Р., Ульман Д. Введение в теорию автоматов, языков и вычислений, 2-е изд. : Пер. с англ. — М.:Издательский дом «Вильямс», 2008. — С. 528. — ISBN 5-8459-1347-0 | * Хопкрофт Д., Мотвани Р., Ульман Д. Введение в теорию автоматов, языков и вычислений, 2-е изд. : Пер. с англ. — М.:Издательский дом «Вильямс», 2008. — С. 528. — ISBN 5-8459-1347-0 | ||
| + | * [http://en.wikipedia.org/wiki/Post_correspondence_problem Post correspondence problem - Wikipedia] | ||
Версия 19:51, 20 января 2014
Проблема соответствий Поста - один из основных примеров неразрешимой задачи, использующийся для доказательства неразрешимости многих других задач.
Содержание
Основные определения
| Определение: | 
| Даны два конечных списка и , где и для всех . Вопрос существования непустой последовательности индексов , удовлетворяющей условию , где для всех j, называется проблемой соответствий Поста (ПСП) (англ. Post correspondence problem). Такую последовательность индексов, в случае её существования, называют решением проблемы соответствий Поста. | 
| Определение: | 
| Проблема соответствий Поста, для которой фиксирован элемент последовательности индексов , называется модифицированной проблемой соответствий Поста (МПСП). | 
Перечислимость языка ПСП
| Теорема: | 
| Язык пар последовательностей, для которых существует решение ПСП, перечислим. | 
| Доказательство: | 
| Для списков и размера из условия ПСП построим программу-полуразрешитель , проверяющую все возможные решения: for for all if return trueТаким образом, язык пар последовательностей, для которых существует решение ПСП, полуразрешим, а значит, перечислим. | 
Для МПСП доказательство перечислимости имеющих решение пар аналогично, но перебор индексов ведётся с .
Неразрешимость языка ПСП
Докажем неразрешимость языка ПСП следующим образом. Докажем, что универсальный язык сводится к языку МПСП, который в свою очередь сводится к языку ПСП.
Для начала покажем как свести МПСП к ПСП.
Пусть даны списки и из условия МПСП. Построим два новых списка и и рассмотрим ПСП для них. Для этого введем два новых символа, которые не используются в словах из цепочек и . Пусть для определенности это будут символы и .
Тогда сформируем два новых списка по следующим правилам:
- Для всех возьмем равное слову с символом после каждого его символа. Например, для положим ;
- Для всех возьмем равное слову с символом перед каждым его символом. Например, для положим ;
- ;
- ;
- ;
- .
| Лемма: | 
| МПСП для пары списков  сводится к ПСП для пары списков . | 
| Доказательство: | 
| Из определения m-сведения следует, что мы должны доказать равносильность наличия решения для построенных экземпляров МПСП и ПСП. 
 Пусть набор индексов - решение МПСП из условия леммы. То есть , где , . Рассмотрев цепочки и c аналогичными индексами, заметим, что мы имеем почти равные цепочки с той лишь разницей, что первой не хватает символа в начале, а второй - в конце. Конкретно, . Изменив первый индекс с на , решим проблему с символом в начале. Добавив индекс к набору, решим проблему с символом в конце. . Итого, если - решение исходной МПСП, то - решение построенной по правилам выше ПСП. 
 В любом существующем решении ПСП для списков должны выполняться условия: 
 Пусть последовательность является решением ПСП. Иными словами, . Если — наименьший индекс, равный , то , — префиксы исходных конкатенаций до первого символа , следовательно, равны между собой. Последовательность — также решение ПСП, причём первый индекс равен и . Остальные индексы не превосходят , но и не равны , иначе в левой части равенства образуется подстрока из двух подряд, а в правой её не может быть. Учитывая эти ограничения, перепишем получившееся равенство: . Оставив из этих двух строк символы, стоящие на чётных позициях, и удалив с конца , получим .Итого, если - решение ПСП, то - решение исходной МПСП. | 
| Лемма: | 
| Универсальный язык сводится к МПСП. | 
| Доказательство: | 
| Выполним m-сведение универсального языка к МПСП со списками и . Назовём снимком состояния МТ строку вида , где — строка на ленте, за исключением бесконечных последовательностей пробелов слева и справа, — текущее состояние автомата МТ, головка расположена справа от . Построим последовательности таким образом, чтобы решение МПСП образовывало строку , где — снимки последовательных состояний МТ от стартового до конечного, — последний снимок с удалёнными символами. Оговоримся, что состояния в автомате МТ не существует (его роль может выполнять сток), допуск происходит при попадании в состояние . Сформируем последовательности и по МТ и строке . , ; для всех символов алфавита ленты: , , а также , ; для всех правил вида и для всех символов алфавита : , ; для всех правил вида : , ; для всех правил вида : , . Заметим, что все элементы и , кроме первых, имеют одинаковую длину. Значит, строка, составленная из элементов , всегда оказывается длиннее. Если представить процесс формирования решения МПСП как динамический, вторая строка вынуждена постоянно «догонять» первую. Более того, можно доказать по индукции, что если первая строка имеет вид , то вторая будет равна , а через несколько шагов они изменятся на 
 и , соответственно. Задача — получить равные строки, если состояние достижимо. Для этого добавим в уже имеющиеся последовательности следующие элементы: для всех символов алфавита ленты: , , , , а также , . Если состояние недостижимо, в первой строке никогда не будет символа , и ни одним из новых элементов воспользоваться не удастся. Значит, строки всегда будут иметь различную длину. Если же допускающее состояние встретится, с помощью новых элементов можно будет привести обе строки к виду .Другими словами, «сравнять» строки возможно тогда и только тогда, когда автомат, принадлежащий , допускает . Таким образом, выполнено успешное m-сведение множества пар из машины Тьюринга (МТ) и строки , где не зависает, к множеству решений МПСП. | 
Пример
Пусть автомат МТ состоит из двух состояний и , алфавит ленты содержит символы и . Переходы автомата устроены следующим образом:
;
;
из переходов нет.
Последовательности для строки будут сформированы следующим образом:
| Номер элемента | Последовательность a | Последовательность b | 
|---|---|---|
| 1 | ||
| 2 | ||
| 3 | ||
| 4 | ||
| 5 | ||
| 6 | ||
| 7 | ||
| 8 | ||
| 9 | ||
| 10 | ||
| 11 | 
Решение МПСП будет иметь следующий вид:
| Шаг | Индекс элемента | Первая строка | Вторая строка | 
|---|---|---|---|
| 1 | 1 | ||
| 2 | 5 | ||
| 3 | 3 | ||
| 4 | 4 | ||
| 5 | 3 | ||
| 6 | 6 | ||
| 7 | 4 | ||
| 8 | 8 | ||
| 9 | 3 | ||
| 10 | 4 | ||
| 11 | 10 | ||
| 12 | 4 | ||
| 13 | 11 | 
По доказанному ранее, МПСП неразрешима. Тогда, вследствие теоремы для m-сведения, ПСП неразрешима.
}}
Источники
- Хопкрофт Д., Мотвани Р., Ульман Д. Введение в теорию автоматов, языков и вычислений, 2-е изд. : Пер. с англ. — М.:Издательский дом «Вильямс», 2008. — С. 528. — ISBN 5-8459-1347-0
- Post correspondence problem - Wikipedia
