Примеры неразрешимых задач: проблема соответствий Поста — различия между версиями
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