Теорема Райса-Шапиро — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
(доказательство леммы 2)
Строка 47: Строка 47:
 
}}
 
}}
  
 +
{{Лемма
 +
|statement=
 +
Пусть <tex>A</tex> — перечислимое свойство, <tex>G \in A</tex>. Тогда существует конечное множество <tex>H \in A</tex>, которое является подмножеством <tex>G</tex>.
 +
|proof=
 +
Строим доказательство от противного. Пусть <tex>G \in A</tex>, и любое конечное подмножество <tex>G</tex> не удовлетворяет свойству <tex>A</tex>, <tex>K</tex> — перечислимое неразрешимое множество. Определим следующую функцию:
 +
* <tex>f(x, y) = 0</tex>, если за <tex>x</tex> шагов перечисления <tex>K</tex> слово <tex>y</tex> не появилось.
 +
* <tex>f(x, y) = x \in G</tex> иначе.
 +
Заметим, что если <tex>y \in K</tex>, то <tex>f(x, y)</tex> распознаёт некоторое конечное подмножество <tex>G</tex> и всё множество <tex>G</tex> иначе. Эта функция тривиальным образом разрешима, построим с её помощью разрешитель <tex>K</tex>. Аналогично доказательству первой леммы, подготовим программу <tex>g</tex>:
 +
 +
g(x):
 +
  return f(x, y)
 +
 +
После этого параллельно запустим проверки <tex>y \in K</tex> и <tex>L(g) \in A</tex>. Аналогично, данная процедура разрешает множество <tex>K</tex>. Но <tex>K</tex> не является разрешимым, получено противоречие.
 +
}}
 
== Литература ==
 
== Литература ==
 
* ''Верещагин Н. К., Шень A.'' Лекции по математической логике и теории алгоритмов. Часть 3. Вычислимые функции. {{---}} М.: МЦНМО, 1999. С. 134. ISBN 5-900916-36-7
 
* ''Верещагин Н. К., Шень A.'' Лекции по математической логике и теории алгоритмов. Часть 3. Вычислимые функции. {{---}} М.: МЦНМО, 1999. С. 134. ISBN 5-900916-36-7
 
* ''Хопкрофт Д., Мотвани Р., Ульман Д.'' Введение в теорию автоматов, языков и вычислений, 2-е изд. : Пер. с англ. {{---}} М.: Издательский дом «Вильямс», 2008. {{---}} С. 528 {{---}} ISBN 978-5-8459-1347-0 (рус.)
 
* ''Хопкрофт Д., Мотвани Р., Ульман Д.'' Введение в теорию автоматов, языков и вычислений, 2-е изд. : Пер. с англ. {{---}} М.: Издательский дом «Вильямс», 2008. {{---}} С. 528 {{---}} ISBN 978-5-8459-1347-0 (рус.)

Версия 19:01, 14 января 2013

Теорема Райса-Шапиро позволяет дать простое описание перечислимым свойствам языков.

Определение:
Образцом называется конечное множество слов.

Будем говорить, что язык удовлетворяет образцу [math]A[/math], если он содержит все слова [math]A[/math]. Также будем говорить, что язык удовлетворяет множеству образцов, если он удовлетворяет хотя бы одному образцу из этого множества.

Заметим, что образцы являются конструктивными объектами, следовательно, можно говорить о разрешимых и перечислимых множествах образцов.

Теорема (Райса-Шапиро):
Свойство языков [math]A[/math] перечислимо тогда и только тогда, когда существует перечислимое множество образцов [math]\Gamma[/math], такое, что [math]L[/math] удовлетворяет [math]A[/math] тогда и только тогда, когда [math]L[/math] удовлетворяет [math]\Gamma[/math].

Доказательство в одну сторону тривиально: пусть [math]\Gamma[/math] — перечислимое множество образцов. Будем обозначать за [math]\Gamma_i[/math] образец с номером [math]i[/math], а за [math]\Gamma_{ij}[/math] — элемент с номером [math]j[/math] образца с номером [math]i[/math]. Далее приведён код перечислителя [math]A[/math], который принимает на вход код перечислителя [math]L[/math] и возвращает значение [math]L \in A[/math].

A(L)
  for t = 1 to [math]\infty[/math]
    for i = 1 to t
      ok [math]\leftarrow[/math] true
      for j = 1 to [math]|\Gamma_i|[/math]
        if [math]\lnot L|_t (\Gamma_{ij})[/math]
          ok [math]\leftarrow[/math] false
      if ok
        return true

Для доказательства в другую сторону понадобятся следующие леммы:

Лемма:
Пусть [math]A[/math] — перечислимое свойство языков, [math]G \in A[/math]. Тогда верно следствие: [math]G \subset H \Rightarrow H \in A[/math].
Доказательство:
[math]\triangleright[/math]

Строим доказательство от противного. Пусть [math]G \in A[/math], [math]G \subset H[/math], [math]H \notin A[/math], [math]K[/math] — перечислимое неразрешимое множество. Построим следующую вычислимую функцию: [math]f(x, y) = \begin{cases} x \in H & y \in K\\ x \in G & y \notin K \end{cases}[/math]

Вычисляется эта функция следующим образом: параллельно запускаем проверки [math]x \in G[/math] и [math]y \in K[/math]. Если [math]x \in G[/math], то [math]x \in H[/math], следовательно, функция возвращает единицу вне зависимости от [math]y[/math]. Если [math]y \in K[/math], то запускаем проверку [math]x \in H[/math].

С помощью этой функции можно разрешить множество [math]K[/math] следующим образом: для проверяемого элемента [math]y[/math] подготовим программу [math]g[/math]:

g(x):
  return f(x, y)
После этого запустим параллельно проверки [math]y \in K[/math] и [math]L(g) \in A[/math]. Если [math]y \in K[/math], то первая проверка завершится. Иначе функция [math]g[/math] задаёт язык [math]G[/math], который обладает свойством [math]A[/math], следовательно, вторая проверка завершится, сигнализируя о том, что [math]y \notin K[/math]. Но [math]K[/math] не является разрешимым множеством, получено противоречие.
[math]\triangleleft[/math]
Лемма:
Пусть [math]A[/math] — перечислимое свойство, [math]G \in A[/math]. Тогда существует конечное множество [math]H \in A[/math], которое является подмножеством [math]G[/math].
Доказательство:
[math]\triangleright[/math]

Строим доказательство от противного. Пусть [math]G \in A[/math], и любое конечное подмножество [math]G[/math] не удовлетворяет свойству [math]A[/math], [math]K[/math] — перечислимое неразрешимое множество. Определим следующую функцию:

  • [math]f(x, y) = 0[/math], если за [math]x[/math] шагов перечисления [math]K[/math] слово [math]y[/math] не появилось.
  • [math]f(x, y) = x \in G[/math] иначе.

Заметим, что если [math]y \in K[/math], то [math]f(x, y)[/math] распознаёт некоторое конечное подмножество [math]G[/math] и всё множество [math]G[/math] иначе. Эта функция тривиальным образом разрешима, построим с её помощью разрешитель [math]K[/math]. Аналогично доказательству первой леммы, подготовим программу [math]g[/math]:

g(x):
  return f(x, y)
После этого параллельно запустим проверки [math]y \in K[/math] и [math]L(g) \in A[/math]. Аналогично, данная процедура разрешает множество [math]K[/math]. Но [math]K[/math] не является разрешимым, получено противоречие.
[math]\triangleleft[/math]

Литература

  • Верещагин Н. К., Шень A. Лекции по математической логике и теории алгоритмов. Часть 3. Вычислимые функции. — М.: МЦНМО, 1999. С. 134. ISBN 5-900916-36-7
  • Хопкрофт Д., Мотвани Р., Ульман Д. Введение в теорию автоматов, языков и вычислений, 2-е изд. : Пер. с англ. — М.: Издательский дом «Вильямс», 2008. — С. 528 — ISBN 978-5-8459-1347-0 (рус.)