Примеры неразрешимых задач: проблема соответствий Поста — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
Строка 28: Строка 28:
 
Получаем <tex>\$ A_0 \$ \ldots \$ A_k \$</tex>, <tex>\$ A_i \ldots</tex>.
 
Получаем <tex>\$ A_0 \$ \ldots \$ A_k \$</tex>, <tex>\$ A_i \ldots</tex>.
  
Если <tex>MT</tex> остановится, добъёмся того, что зак. Иначе строки будут расти до бесконечности, но никогда не закончатся.
+
Если <tex>MT</tex> остановится, добьёмся того, что зак. Иначе строки будут расти до бесконечности, но никогда не закончатся.
  
 
<tex>\forall c \in \Pi</tex> заведём пару <tex>(a_i=c b_i = c), (a_i = \$ b = \$)</tex>.
 
<tex>\forall c \in \Pi</tex> заведём пару <tex>(a_i=c b_i = c), (a_i = \$ b = \$)</tex>.
Строка 35: Строка 35:
 
Аналогично поступаем и с переходом на месте, или считаем, что такого не бывает.
 
Аналогично поступаем и с переходом на месте, или считаем, что такого не бывает.
  
 +
Как может быть устроен префикс решения '''МПСП''':
  
 +
<tex>| \$ | \#_s \omega_1 \$ | d \#_p | w_2 \ldots | \$ | \#_y \$ | \$ |</tex>
 +
<tex>| \$ | \omega_1 | \omega_2 \ldots | \$ | \#_y \$ \$ |</tex>
 +
т.е. добавляем элементы и находим соответствующие переходы.
 +
 +
Добавим далее:
 +
* <tex>a = \#_y,  b = \#_y c</tex>
 +
* или <tex>a = \#_y, b = c \#_y</tex>
 +
* или <tex>a = \$, b = \#_y \$ \$</tex>
 
}}
 
}}
  
Теперь остаётся избавиться от требования фиксированного первого индекса:
+
Теперь остаётся избавиться от требования фиксированного первого индекса, т.е. перейти от '''МПСП''' к '''ПСП''':
'''Верно''':
+
 
* умеем '''1ПСП''' <tex>\Rightarrow</tex> умеем '''ПСП'''
+
'''Известно''':
* не умеем '''1ПСП''' <tex>\Leftarrow</tex>не умеем '''ПСП'''
+
* Существует решение '''МПСП''' <tex>\Rightarrow</tex> существует решение '''ПСП'''
 +
* Не существует решения '''МПСП''' <tex>\Leftarrow</tex>не существует решения '''ПСП'''
 
'''Необходимо''':
 
'''Необходимо''':
* не умеем '''1ПСП''' <tex>\Rightarrow</tex> не умеем '''ПСП'''
+
* Не существует решения '''МПСП''' <tex>\Rightarrow</tex> не существует решения '''ПСП'''
  
Возьмём экземпляр задачи 1ПСП: <tex>(( a_1 , \ldots , a_n ) , ( b_1 , \ldots , b_n ))</tex>. Вставим между каждой парой символов во всех строках символ <tex>*</tex>.
+
Возьмём экземпляр задачи МПСП: <tex>(( a_1 , \ldots , a_n ) , ( b_1 , \ldots , b_n ))</tex>. Вставим между каждой парой символов во всех строках символ <tex>*</tex>.
  
 +
<tex>i = 1</tex>
 +
* <tex>a_1 = * c_1 * c_2 \ldots c_l *</tex>
 +
* <tex>b_1 = * c_1 * c_2 \ldots c_l</tex>
 
<tex>i = 2 \ldots n </tex>:
 
<tex>i = 2 \ldots n </tex>:
 
* <tex>a_i = c_1 c_2 \ldots c_l \rightarrow a_i = c_1 * c_2 * \ldots * c_l *</tex>
 
* <tex>a_i = c_1 c_2 \ldots c_l \rightarrow a_i = c_1 * c_2 * \ldots * c_l *</tex>
 
* <tex>b_i = c_1 c_2 \ldots c_l \rightarrow b_i = c_1 * c_2 * \ldots * c_l</tex>
 
* <tex>b_i = c_1 c_2 \ldots c_l \rightarrow b_i = c_1 * c_2 * \ldots * c_l</tex>
<tex>i = 1</tex>
+
<tex>i = n + 1</tex>
* <tex>a_1 = * c_1 * c_2 \ldots c_l *</tex>
 
* <tex>b_1 = * c_1 * c_2 \ldots c_l</tex>
 
Нужно начать с <tex>(a_1, b_1)</tex>, т.к. все остальные пары начинаются с различных символов.
 
 
* <tex>a_{n+1} = \$</tex>
 
* <tex>a_{n+1} = \$</tex>
 
* <tex>b_{n+1} = *\$</tex>
 
* <tex>b_{n+1} = *\$</tex>
 +
 +
Нужно начать с <tex>(a_1, b_1)</tex>, т.к. все остальные пары начинаются с различных символов.
 +
 
Возникающее однозначное соответствие может быть решением этой системы и решением исходной задачи, к которой всё начиналось с пары <tex>(a_1, b_1)</tex>.
 
Возникающее однозначное соответствие может быть решением этой системы и решением исходной задачи, к которой всё начиналось с пары <tex>(a_1, b_1)</tex>.
 +
 
== Литература ==
 
== Литература ==
 
* Джон Хопкрофт, Раджив Мотвани, Джеффри Ульман. Введение в теорию автоматов, языков и вычислений.
 
* Джон Хопкрофт, Раджив Мотвани, Джеффри Ульман. Введение в теорию автоматов, языков и вычислений.

Версия 20:25, 15 января 2011

Эта статья находится в разработке!


Определение:
Существует упорядоченная пара конечных последовательностей [math](( a_1 , \ldots , a_n ) , ( b_1 , \ldots , b_n ))[/math], где [math]a_i \in \Sigma ^*[/math] и [math]b_i \in \Sigma ^*[/math] для всех [math]i[/math]. Вопрос существования непустой последовательности индексов [math]( i_1 , \ldots , i_k )[/math], удовлетворяющей условию [math]a_{i_1} \ldots a_{i_k} = b_{i_1} \ldots b_{i_k}[/math], где [math] 1 \leq i_j \leq n[/math] для каждого j, называется проблемой соответствий Поста (ПСП).


Теорема:
Не существует алгоритма, позволяющего по произвольной постовской системе соответствия над алфавитом узнать, имеет ли она решение. (Другими словами, проблема соответствий Поста неразрешима.)


Определение:
Модифицированной проблемой соответствий Поста (МПСП) называется вопрос существования последовательности индексов [math]( 1 , i_1, \ldots , i_k )[/math], удовлетворяющих условию [math]a_1 a_{i_1} \ldots a_{i_k} = b_1 b_{i_1} \ldots b_{i_k}, [/math] при [math] 1 \leq i_j \leq n[/math] [math]\forall j[/math] для упорядоченной пары конечных последовательностей [math](( a_1 , \ldots , a_n ) , ( b_1 , \ldots , b_n ))[/math], где [math]a_i \in \Sigma ^*[/math] и [math]b_i \in \Sigma ^*[/math] [math]\forall i[/math].


Теорема:
Язык имеющих решение проблем соответствий поста перечислим, но не разрешим. (Не существует примера неразрешимого языка, который является языком программ)
Доказательство:
[math]\triangleright[/math]

Докажем неразрешимость:

Сначала докажем для случая, когда [math]i_1 = 1[/math]. Считаем, что Машина Тьюринка ([math]MT[/math]) никогда не приходит в [math]N[/math]. [math]MT: (m, \omega)[/math]. Задача [math]m(\omega) = y[/math] не разрешима. Предположим, что мы умеем решать МПСП.

[math]a_1 = \$ \#_s \omega \$[/math], [math]b_1 = \$[/math]. Получаем [math]\$ A_0 \$ \ldots \$ A_k \$[/math], [math]\$ A_i \ldots[/math].

Если [math]MT[/math] остановится, добьёмся того, что зак. Иначе строки будут расти до бесконечности, но никогда не закончатся.

[math]\forall c \in \Pi[/math] заведём пару [math](a_i=c b_i = c), (a_i = \$ b = \$)[/math].

Соответственно, получаем [math]a_i = d \#_p[/math], [math]b_i = \#_q c[/math] и [math]\delta(q, c) = \lt p, d, \rightarrow\gt [/math], а также [math]a_i = \#_p a d[/math], [math]b_i a \#_q e[/math] и [math]\delta (a, c) = \lt p, d, \leftarrow\gt [/math]. Аналогично поступаем и с переходом на месте, или считаем, что такого не бывает.

Как может быть устроен префикс решения МПСП:

[math]| \$ | \#_s \omega_1 \$ | d \#_p | w_2 \ldots | \$ | \#_y \$ | \$ |[/math] [math]| \$ | \omega_1 | \omega_2 \ldots | \$ | \#_y \$ \$ |[/math] т.е. добавляем элементы и находим соответствующие переходы.

Добавим далее:

  • [math]a = \#_y, b = \#_y c[/math]
  • или [math]a = \#_y, b = c \#_y[/math]
  • или [math]a = \$, b = \#_y \$ \$[/math]
[math]\triangleleft[/math]

Теперь остаётся избавиться от требования фиксированного первого индекса, т.е. перейти от МПСП к ПСП:

Известно:

  • Существует решение МПСП [math]\Rightarrow[/math] существует решение ПСП
  • Не существует решения МПСП [math]\Leftarrow[/math]не существует решения ПСП

Необходимо:

  • Не существует решения МПСП [math]\Rightarrow[/math] не существует решения ПСП

Возьмём экземпляр задачи МПСП: [math](( a_1 , \ldots , a_n ) , ( b_1 , \ldots , b_n ))[/math]. Вставим между каждой парой символов во всех строках символ [math]*[/math].

[math]i = 1[/math]

  • [math]a_1 = * c_1 * c_2 \ldots c_l *[/math]
  • [math]b_1 = * c_1 * c_2 \ldots c_l[/math]

[math]i = 2 \ldots n [/math]:

  • [math]a_i = c_1 c_2 \ldots c_l \rightarrow a_i = c_1 * c_2 * \ldots * c_l *[/math]
  • [math]b_i = c_1 c_2 \ldots c_l \rightarrow b_i = c_1 * c_2 * \ldots * c_l[/math]

[math]i = n + 1[/math]

  • [math]a_{n+1} = \$[/math]
  • [math]b_{n+1} = *\$[/math]

Нужно начать с [math](a_1, b_1)[/math], т.к. все остальные пары начинаются с различных символов.

Возникающее однозначное соответствие может быть решением этой системы и решением исходной задачи, к которой всё начиналось с пары [math](a_1, b_1)[/math].

Литература

  • Джон Хопкрофт, Раджив Мотвани, Джеффри Ульман. Введение в теорию автоматов, языков и вычислений.