Примеры неразрешимых задач: проблема соответствий Поста — различия между версиями
Shevchen (обсуждение | вклад) м |
Shevchen (обсуждение | вклад) |
||
Строка 64: | Строка 64: | ||
Выполним [[M-сводимость|m-сведение]] множества решений МПСП к множеству решений ПСП. | Выполним [[M-сводимость|m-сведение]] множества решений МПСП к множеству решений ПСП. | ||
− | Пусть даны последовательности <tex>a, b</tex> из условия МПСП. Построим две новые последовательности <tex>a', b'</tex>: | + | Пусть даны последовательности <tex>a, b</tex> из условия МПСП. Обозначим как <tex>left(w, c)</tex> и <tex>right(w, c)</tex> строки, состоящие из символов <tex>w</tex>, разделённых <tex>c</tex>: <tex>left(w, c) = c w_1 c w_2 \ldots c w_k</tex>, <tex>right(w, c) = w_1 c w_2 c \dots w_k c</tex>. |
− | * <tex>a'_1 = \$ a_1 \$</tex>, <tex>b'_1 = \$ | + | |
− | * <tex>\forall i = 1 .. n</tex>: <tex>a'_{i+1} = a_i \$</tex>, <tex>b'_{i+1} = \$ | + | Построим две новые последовательности <tex>a', b'</tex>: |
+ | * <tex>a'_1 = \$ right(a_1, \$)</tex>, <tex>b'_1 = left(b_1, \$)</tex>; | ||
+ | * <tex>\forall i = 1 .. n</tex>: <tex>a'_{i+1} = right(a_i, \$)</tex>, <tex>b'_{i+1} = left(b_i, \$)</tex>; | ||
* <tex>a'_{n+2} = \#</tex>, <tex>b'_{n+2} = \$ \#</tex>, | * <tex>a'_{n+2} = \#</tex>, <tex>b'_{n+2} = \$ \#</tex>, | ||
где <tex>\$</tex>, <tex>\#</tex> — символы, не встречающиеся в словах исходных последовательностей. | где <tex>\$</tex>, <tex>\#</tex> — символы, не встречающиеся в словах исходных последовательностей. | ||
Строка 76: | Строка 78: | ||
<tex>\Rightarrow</tex> | <tex>\Rightarrow</tex> | ||
− | Пусть <tex>a_1 a_{i_2} \ldots a_{i_k} = b_1 b_{i_2} \ldots b_{i_k}</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_a = w_b</tex>. Рассмотрим | ||
+ | |||
+ | <tex>w'_a = a'_1 a'_{i_2+1} \ldots a'_{i_k+1} a'_{n+2} = \$ right(a_1, \$) right(a_{i_2}, \$) \ldots right(a_{i_k}, \$) \#</tex>, | ||
+ | |||
+ | <tex>w'_b = b'_1 b'_{i_2+1} \ldots b'_{i_k+1} b'_{n+2} = left(b_1, \$) left(b_{i_2}, \$) \ldots left(b_{i_k}, \$) \$ \#</tex>. | ||
+ | |||
+ | На чётных позициях в <tex>w'_a</tex> и <tex>w'_b</tex> стоят равные символы из <tex>w_a</tex> и <tex>w_b</tex>, а также <tex>\#</tex> (в конце); на нечётных — <tex>\$</tex>. Следовательно, | ||
+ | |||
+ | <tex>a'_1 a'_{i_2+1} \ldots a'_{i_k+1} a'_{n+2} = b'_1 b'_{i_2+1} \ldots b'_{i_k+1} b'_{n+2}</tex>. | ||
<tex>\Leftarrow</tex> | <tex>\Leftarrow</tex> | ||
Строка 84: | Строка 100: | ||
* последний индекс равен <tex>n+2</tex>, так как только в паре <tex>(a'_{n+2}, b'_{n+2})</tex> строки заканчиваются одинаковыми символами. | * последний индекс равен <tex>n+2</tex>, так как только в паре <tex>(a'_{n+2}, b'_{n+2})</tex> строки заканчиваются одинаковыми символами. | ||
− | Пусть <tex>a'_1 a'_{i_2} \ldots a'_{i_k} = b'_1 b'_{i_2} \ldots b'_{i_k}</tex>. Если <tex>i_f</tex> — наименьший индекс, равный <tex>n+2</tex>, то <tex>a'_1 a'_{i_2} \ldots a'_{i_f}</tex>, <tex>b'_1 b'_{i_2} \ldots b'_{i_f}</tex> — префиксы исходных конкатенаций до первого символа <tex>\#</tex>, следовательно, равны между собой. <tex>i_1, \ldots, i_f</tex> — также решение ПСП, причём <tex>i_1 = 1</tex>, <tex>i_f = n + 2</tex>. Остальные индексы не превосходят <tex>n+1</tex>, но и не равны <tex>1</tex>, иначе в левой части равенства образуется подстрока из двух <tex>\$</tex> подряд, а в правой её не | + | Пусть |
+ | |||
+ | <tex>a'_1 a'_{i_2} \ldots a'_{i_k} = b'_1 b'_{i_2} \ldots b'_{i_k}</tex>. | ||
+ | |||
+ | Если <tex>i_f</tex> — наименьший индекс, равный <tex>n+2</tex>, то <tex>a'_1 a'_{i_2} \ldots a'_{i_f}</tex>, <tex>b'_1 b'_{i_2} \ldots b'_{i_f}</tex> — префиксы исходных конкатенаций до первого символа <tex>\#</tex>, следовательно, равны между собой. <tex>i_1, \ldots, i_f</tex> — также решение ПСП, причём <tex>i_1 = 1</tex>, <tex>i_f = n + 2</tex>. Остальные индексы не превосходят <tex>n+1</tex>, но и не равны <tex>1</tex>, иначе в левой части равенства образуется подстрока из двух <tex>\$</tex> подряд, а в правой её не может быть. Учитывая эти ограничения, перепишем получившееся равенство: | ||
+ | |||
+ | <tex>\$ right(a_1, \$) right(a_{i_2-1}, \$) \ldots right(a_{i_{f-1}-1}, \$) \#</tex> <tex>=</tex> <tex>left(b_1, \$) left(b_{i_2-1}, \$) \ldots left(b_{i_{f-1}-1}, \$) \$ \#</tex>. | ||
+ | |||
+ | Оставив из этих двух строк символы, стоящие на чётных позициях, и удалив с конца <tex>\#</tex>, получим | ||
+ | |||
+ | <tex>a_1 a_{i_2-1} \ldots a_{i_{f-1}-1} = b_1 b_{i_2-1} \ldots b_{i_{f-1}-1}</tex>. | ||
}} | }} | ||
Версия 23:31, 9 января 2012
Определение: |
Дана упорядоченная пара конечных последовательностей | , где и для всех . Вопрос существования непустой последовательности индексов , удовлетворяющей условию , где для каждого j, называется проблемой соответствий Поста (ПСП) Такую последовательность индексов, в случае её существования, называют решением проблемы соответствий Поста.
Определение: |
Проблема соответствий Поста, для которой фиксирован элемент последовательности индексов | , называется модифицированной проблемой соответствий Поста (МПСП).
Утверждение: |
Язык пар последовательностей, для которых существует решение ПСП, перечислим. |
Пусть даны последовательности из условия ПСП. Количество последовательностей индексов, каждый из которых находится в пределах от 1 до , длины равно . Программа-полуразрешитель устроена следующим образом:forТаким образом, язык пар указанных последовательностей полуразрешим, а значит, перечислим. for all if return 1 |
Для МПСП доказательство перечислимости имеющих решение пар аналогично, но перебор индексов ведётся с
.Теорема: |
МПСП неразрешима. |
Доказательство: |
Выполним m-сведение множества строк, на которых заданная машина Тьюринга (МТ) не зависает, к множеству решений МПСП. Считаем, что Машина Тьюринга ( ) никогда не приходит в - недопуск. . Задача не разрешима. Предположим, что мы умеем решать МПСП., . Таким образом выводятся следующие последовательности: и - мгновенное описание. Если остановится, нужно добиться того, чтобы строка закончилась. Иначе строки будут расти до бесконечности, но никогда не закончатся.построим следующую пару . должно сойтись с соответствующей в предыдущем мгновенном описании. Соответственно , и , а также , и . Аналогично следует поступить и с переходом на месте, или считаем, что такого не бывает.Как может быть устроен префикс решения МПСП: : : Требуется добиться остановки. Для этого добавляется далее:
|
Теорема: | |||||
ПСП неразрешима. | |||||
Доказательство: | |||||
Выполним m-сведение множества решений МПСП к множеству решений ПСП. Пусть даны последовательности из условия МПСП. Обозначим как и строки, состоящие из символов , разделённых : , .Построим две новые последовательности :
где , — символы, не встречающиеся в словах исходных последовательностей.
| |||||
Литература
- Джон Хопкрофт, Раджив Мотвани, Джеффри Ульман. Введение в теорию автоматов, языков и вычислений.