Примеры неразрешимых задач: проблема соответствий Поста — различия между версиями
Shevchen (обсуждение | вклад) м |
Shevchen (обсуждение | вклад) |
||
| Строка 29: | Строка 29: | ||
Выполним [[M-сводимость|m-сведение]] множества пар из машины Тьюринга (МТ) <tex>M</tex> и строки <tex>w</tex>, где <tex>M(w)</tex> не зависает, к множеству решений МПСП. | Выполним [[M-сводимость|m-сведение]] множества пар из машины Тьюринга (МТ) <tex>M</tex> и строки <tex>w</tex>, где <tex>M(w)</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>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>\$ snap_1 \$ snap_2 \$ \ldots \$ snap_n \$ snap_{n_{-1}} \$ snap_{n_{-2}} \$ \ldots \$ \#_{yes} \$ \$</tex>, | <tex>\$ snap_1 \$ snap_2 \$ \ldots \$ snap_n \$ snap_{n_{-1}} \$ snap_{n_{-2}} \$ \ldots \$ \#_{yes} \$ \$</tex>, | ||
| − | где <tex>snap_i</tex> — снимки последовательных состояний МТ от стартового до конечного, <tex>snap_{n_{-t}}</tex> — последний снимок с <tex>t</tex> удалёнными символами | + | где <tex>snap_i</tex> — снимки последовательных состояний МТ от стартового до конечного, <tex>snap_{n_{-t}}</tex> — последний снимок с <tex>t</tex> удалёнными символами. Оговоримся, что состояния <tex>no</tex> в автомате МТ не существует (его роль может выполнять сток), допуск происходит при попадании в состояние <tex>yes</tex>. |
Сформируем последовательности <tex>a</tex> и <tex>b</tex> по МТ <tex>M</tex> и строке <tex>w</tex>. | Сформируем последовательности <tex>a</tex> и <tex>b</tex> по МТ <tex>M</tex> и строке <tex>w</tex>. | ||
| − | <tex>a_1 = \$ \#_{start} w \$ </tex>, <tex>b_1 = \$</tex>; | + | <tex>a_1 = \$' \#_{start} w \$ </tex>, <tex>b_1 = \$'</tex>; |
| − | для всех символов <tex>c</tex> алфавита ленты | + | для всех символов <tex>c</tex> алфавита ленты: |
<tex>a_i = c</tex>, <tex>b_i = c</tex>, | <tex>a_i = c</tex>, <tex>b_i = c</tex>, | ||
| Строка 59: | Строка 59: | ||
<tex>a_i = \#_q d</tex>, <tex>b_i = \#_p c</tex>. | <tex>a_i = \#_q d</tex>, <tex>b_i = \#_p c</tex>. | ||
| − | + | Заметим, что все элементы <tex>a</tex> и <tex>b</tex>, кроме первых, имеют одинаковую длину. Значит, строка, составленная из элементов <tex>a</tex>, всегда оказывается длиннее. Если представить процесс формирования решения МПСП как динамический, вторая строка вынуждена постоянно «догонять» первую. Более того, можно доказать по индукции, что если первая строка имеет вид | |
| + | |||
| + | <tex>\$' snap_1 \$ snap_2 \$ \ldots \$ snap_n \$</tex>, | ||
| + | |||
| + | то вторая будет равна | ||
| + | |||
| + | <tex>\$' snap_1 \$ snap_2 \$ \ldots \$ snap_{n-1} \$</tex>, | ||
| + | |||
| + | а через несколько шагов они примут вид | ||
| + | |||
| + | <tex>\$' snap_1 \$ snap_2 \$ \ldots \$ snap_n \$ snap_{n+1} \$</tex> | ||
| + | |||
| + | и | ||
| + | |||
| + | <tex>\$' snap_1 \$ snap_2 \$ \ldots \$ snap_n \$</tex>, | ||
| + | |||
| + | соответственно. | ||
Задача — получить равные строки, если состояние <tex>\#_{yes}</tex> достижимо. Для этого добавим в уже имеющиеся последовательности следующие элементы: | Задача — получить равные строки, если состояние <tex>\#_{yes}</tex> достижимо. Для этого добавим в уже имеющиеся последовательности следующие элементы: | ||
| − | для всех символов <tex>c</tex> алфавита ленты | + | для всех символов <tex>c</tex> алфавита ленты: |
<tex>a_i = \#_{yes}</tex>, <tex>b_i = \#_{yes} c</tex>, | <tex>a_i = \#_{yes}</tex>, <tex>b_i = \#_{yes} c</tex>, | ||
| Строка 71: | Строка 87: | ||
а также | а также | ||
| − | <tex>a_i = \$</tex>, <tex>b_i = \#_{yes} \$ \$</tex>. | + | <tex>a_i = \$'</tex>, <tex>b_i = \#_{yes} \$ \$'</tex>. |
| − | + | Если состояние <tex>yes</tex> недостижимо, в первой строке никогда не будет символа <tex>\#_{yes}</tex>, и ни одним из новых элементов воспользоваться не удастся. Значит, строки всегда будут иметь различную длину. | |
| − | <tex>\$ snap_1 \$ snap_2 \$ \ldots \$ snap_n \$ snap_{n_{-1}} \$ snap_{n_{-2}} \$ \ldots \$ \#_{yes} \$ \$</tex> | + | Если же допускающее состояние встретится, с помощью новых элементов можно будет привести обе строки к виду |
| + | |||
| + | <tex>\$ snap_1 \$ snap_2 \$ \ldots \$ snap_n \$ snap_{n_{-1}} \$ snap_{n_{-2}} \$ \ldots \$ \#_{yes} \$ \$</tex>. | ||
| − | + | Другими словами, «сравнять» строки возможно тогда и только тогда, когда автомат, принадлежащий <tex>M</tex>, допускает <tex>w</tex>. Таким образом, выполнено успешное m-сведение множества пар из машины Тьюринга (МТ) <tex>M</tex> и строки <tex>w</tex>, где <tex>M(w)</tex> не зависает, к множеству решений МПСП. | |
}} | }} | ||
| Строка 100: | Строка 118: | ||
|- | |- | ||
|1 | |1 | ||
| − | |<tex>\$ \#_{start} ab \$</tex> | + | |<tex>\$' \#_{start} ab \$</tex> |
| − | |<tex>\$</tex> | + | |<tex>\$'</tex> |
|- | |- | ||
|2 | |2 | ||
| Строка 140: | Строка 158: | ||
|- | |- | ||
|11 | |11 | ||
| − | |<tex>\$</tex> | + | |<tex>\$'</tex> |
| − | |<tex>\#_{yes} \$ \$</tex> | + | |<tex>\#_{yes} \$ \$'</tex> |
|} | |} | ||
| Строка 155: | Строка 173: | ||
|align="center" | 1 | |align="center" | 1 | ||
|align="center" | 1 | |align="center" | 1 | ||
| − | |<tex>\$ \#_{start} ab \$</tex> | + | |<tex>\$' \#_{start} ab \$</tex> |
| − | |<tex>\$</tex> | + | |<tex>\$'</tex> |
|- | |- | ||
|align="center" | 2 | |align="center" | 2 | ||
|align="center" | 5 | |align="center" | 5 | ||
| − | |<tex>\$ \#_{start} ab \$ b \#_{start}</tex> | + | |<tex>\$' \#_{start} ab \$ b \#_{start}</tex> |
| − | |<tex>\$ \#_{start} a</tex> | + | |<tex>\$' \#_{start} a</tex> |
|- | |- | ||
|align="center" | 3 | |align="center" | 3 | ||
|align="center" | 3 | |align="center" | 3 | ||
| − | |<tex>\$ \#_{start} ab \$ b \#_{start} b</tex> | + | |<tex>\$' \#_{start} ab \$ b \#_{start} b</tex> |
| − | |<tex>\$ \#_{start} ab</tex> | + | |<tex>\$' \#_{start} ab</tex> |
|- | |- | ||
|align="center" | 4 | |align="center" | 4 | ||
|align="center" | 4 | |align="center" | 4 | ||
| − | |<tex>\$ \#_{start} ab \$ b \#_{start} b\$</tex> | + | |<tex>\$' \#_{start} ab \$ b \#_{start} b\$</tex> |
| − | |<tex>\$ \#_{start} ab \$</tex> | + | |<tex>\$' \#_{start} ab \$</tex> |
|- | |- | ||
|align="center" | 5 | |align="center" | 5 | ||
|align="center" | 3 | |align="center" | 3 | ||
| − | |<tex>\$ \#_{start} ab \$ b \#_{start} b\$ b</tex> | + | |<tex>\$' \#_{start} ab \$ b \#_{start} b\$ b</tex> |
| − | |<tex>\$ \#_{start} ab \$ b</tex> | + | |<tex>\$' \#_{start} ab \$ b</tex> |
|- | |- | ||
|align="center" | 6 | |align="center" | 6 | ||
|align="center" | 6 | |align="center" | 6 | ||
| − | |<tex>\$ \#_{start} ab \$ b \#_{start} b\$ b \#_{yes} b</tex> | + | |<tex>\$' \#_{start} ab \$ b \#_{start} b\$ b \#_{yes} b</tex> |
| − | |<tex>\$ \#_{start} ab \$ b \#_{start} b</tex> | + | |<tex>\$' \#_{start} ab \$ b \#_{start} b</tex> |
|- | |- | ||
|align="center" | 7 | |align="center" | 7 | ||
|align="center" | 4 | |align="center" | 4 | ||
| − | |<tex>\$ \#_{start} ab \$ b \#_{start} b\$ b \#_{yes} b \$</tex> | + | |<tex>\$' \#_{start} ab \$ b \#_{start} b\$ b \#_{yes} b \$</tex> |
| − | |<tex>\$ \#_{start} ab \$ b \#_{start} b \$</tex> | + | |<tex>\$' \#_{start} ab \$ b \#_{start} b \$</tex> |
|- | |- | ||
|align="center" | 8 | |align="center" | 8 | ||
|align="center" | 8 | |align="center" | 8 | ||
| − | |<tex>\$ \#_{start} ab \$ b \#_{start} b\$ b \#_{yes} b \$ \#_{yes}</tex> | + | |<tex>\$' \#_{start} ab \$ b \#_{start} b\$ b \#_{yes} b \$ \#_{yes}</tex> |
| − | |<tex>\$ \#_{start} ab \$ b \#_{start} b \$ b \#_{yes}</tex> | + | |<tex>\$' \#_{start} ab \$ b \#_{start} b \$ b \#_{yes}</tex> |
|- | |- | ||
|align="center" | 9 | |align="center" | 9 | ||
|align="center" | 3 | |align="center" | 3 | ||
| − | |<tex>\$ \#_{start} ab \$ b \#_{start} b\$ b \#_{yes} b \$ \#_{yes} b</tex> | + | |<tex>\$' \#_{start} ab \$ b \#_{start} b\$ b \#_{yes} b \$ \#_{yes} b</tex> |
| − | |<tex>\$ \#_{start} ab \$ b \#_{start} b \$ b \#_{yes} b</tex> | + | |<tex>\$' \#_{start} ab \$ b \#_{start} b \$ b \#_{yes} b</tex> |
|- | |- | ||
|align="center" | 10 | |align="center" | 10 | ||
|align="center" | 4 | |align="center" | 4 | ||
| − | |<tex>\$ \#_{start} ab \$ b \#_{start} b\$ b \#_{yes} b \$ \#_{yes} b \$</tex> | + | |<tex>\$' \#_{start} ab \$ b \#_{start} b\$ b \#_{yes} b \$ \#_{yes} b \$</tex> |
| − | |<tex>\$ \#_{start} ab \$ b \#_{start} b \$ b \#_{yes} b \$</tex> | + | |<tex>\$' \#_{start} ab \$ b \#_{start} b \$ b \#_{yes} b \$</tex> |
|- | |- | ||
|align="center" | 11 | |align="center" | 11 | ||
|align="center" | 10 | |align="center" | 10 | ||
| − | |<tex>\$ \#_{start} ab \$ b \#_{start} b\$ b \#_{yes} b \$ \#_{yes} b \$ \#_{yes}</tex> | + | |<tex>\$' \#_{start} ab \$ b \#_{start} b\$ b \#_{yes} b \$ \#_{yes} b \$ \#_{yes}</tex> |
| − | |<tex>\$ \#_{start} ab \$ b \#_{start} b \$ b \#_{yes} b \$ \#_{yes} b</tex> | + | |<tex>\$' \#_{start} ab \$ b \#_{start} b \$ b \#_{yes} b \$ \#_{yes} b</tex> |
|- | |- | ||
|align="center" | 12 | |align="center" | 12 | ||
|align="center" | 4 | |align="center" | 4 | ||
| − | |<tex>\$ \#_{start} ab \$ b \#_{start} b\$ b \#_{yes} b \$ \#_{yes} b \$ \#_{yes} \$</tex> | + | |<tex>\$' \#_{start} ab \$ b \#_{start} b\$ b \#_{yes} b \$ \#_{yes} b \$ \#_{yes} \$</tex> |
| − | |<tex>\$ \#_{start} ab \$ b \#_{start} b \$ b \#_{yes} b \$ \#_{yes} b \$</tex> | + | |<tex>\$' \#_{start} ab \$ b \#_{start} b \$ b \#_{yes} b \$ \#_{yes} b \$</tex> |
|- | |- | ||
|align="center" | 13 | |align="center" | 13 | ||
|align="center" | 11 | |align="center" | 11 | ||
| − | |<tex>\$ \#_{start} ab \$ b \#_{start} b\$ b \#_{yes} b \$ \#_{yes} b \$ \#_{yes} \$ \$</tex> | + | |<tex>\$' \#_{start} ab \$ b \#_{start} b \$ b \#_{yes} b \$ \#_{yes} b \$ \#_{yes} \$ \$'</tex> |
| − | |<tex>\$ \#_{start} ab \$ b \#_{start} b \$ b \#_{yes} b \$ \#_{yes} b \$ \#_{yes} \$ \$</tex> | + | |<tex>\$' \#_{start} ab \$ b \#_{start} b \$ b \#_{yes} b \$ \#_{yes} b \$ \#_{yes} \$ \$'</tex> |
|} | |} | ||
Версия 05:31, 23 января 2012
| Определение: |
| Дана упорядоченная пара конечных последовательностей , где и для всех . Вопрос существования непустой последовательности индексов , удовлетворяющей условию , где для каждого j, называется проблемой соответствий Поста (ПСП). Такую последовательность индексов, в случае её существования, называют решением проблемы соответствий Поста. |
| Определение: |
| Проблема соответствий Поста, для которой фиксирован элемент последовательности индексов , называется модифицированной проблемой соответствий Поста (МПСП). |
| Теорема: |
Язык пар последовательностей, для которых существует решение ПСП, перечислим. |
| Доказательство: |
|
Пусть даны последовательности и размера из условия ПСП. Построим программу-полуразрешитель , проверяющую все возможные решения: for for all if return trueТаким образом, язык пар последовательностей, для которых существует решение ПСП, полуразрешим, а значит, перечислим. |
Для МПСП доказательство перечислимости имеющих решение пар аналогично, но перебор индексов ведётся с .
| Теорема: |
МПСП неразрешима. |
| Доказательство: |
|
Выполним 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-сведение множества решений МПСП к множеству решений ПСП. Пусть даны последовательности из условия МПСП. Обозначим как и строки, состоящие из символов , разделённых : , . Построим две новые последовательности :
где , — символы, не встречающиеся в словах исходных последовательностей.
| |||||
Литература
- Джон Хопкрофт, Раджив Мотвани, Джеффри Ульман. Введение в теорию автоматов, языков и вычислений.