Изменения

Перейти к: навигация, поиск
Теорема Успенского-Райса: Fix html code issues
|definition='''Свойством языков''' (англ. ''property of languages'') называется множество <tex> A \subset \mathrm {RE} </tex>.
}}
'''Пример'''.
 
Свойство языка, язык содержит слова ''hello''.
{{Определение
|definition=Свойство называется '''тривиальным''' (англ. ''trivial''), если <tex> A = \varnothing </tex> или <tex> A = \mathrm {RE} </tex>.
}}
Псевдокод для <tex> A = \varnothing </tex>
p(A)
'''return''' ''false''
 
Псевдокод для <tex> A = \mathrm {RE} </tex>.
p(A)
'''return''' ''true''
{{Определение
|definition='''Язык свойства''' (англ. ''language of property'') <tex> A </tex> {{---}} множество программ, языки которых обладают этим свойством: <tex>L(A) \overset{\underset{\mathrm{def}}{}}{=} \lbrace p \mid L(p) \in A \rbrace </tex>.
}}
Пример.Пусть pX - разрешитель некоторого языка p(px) '''returnОтметим''' px, что принадлежность программы <tex>p</tex> языку свойства <tex>A</tex> можно выразить двумя эквивалентными утверждениями: :<tex>L('hello'p) \in A</tex> :<tex>p \in L(A)</tex> Далее в конспекте будет употребляться <tex>p \in L(A)</tex>. 
{{Определение
|definition=Свойство <tex> A </tex> называется '''разрешимым''' (англ. ''recursive''), если <tex>L(A) </tex> является [[Разрешимые_(рекурсивные)_языки|разрешимым]].
}}
=== Примеры ===
'''Примеры свойств''':
# Язык должен содержать слово ''hello''.
# Язык должен содержать хотя бы одно простое число.
 
Псевдокод для разрешителя <tex>L(A)</tex>, где <tex>A = \mathrm {RE}: </tex>
<tex>p_A(p_X)</tex> <font color="green"> // <tex>p_X</tex> {{---}} полуразрешитель некоторого языка</font>
'''return''' ''true''
 
Псевдокод для программы в общем случае, то есть для проверки того, что язык удовлетворяет свойству :
<tex>p_A(p_X)</tex>
'''return''' <tex>p_X \in L(A)</tex>
 
Псевдокод полуразрешителя для языка свойства из первого примера:
<tex>p_A(p_X)</tex> <font color="green"> // <tex>X</tex> {{---}} перечислимый язык в общем случае, поэтому <tex>p_A</tex> {{---}} полуразрешитель (по [[Теорема Райса-Шапиро |теореме Райса-Шапиро]])</font>
'''return''' <tex>p_X</tex>('hello')
== Теорема Успенского-Райса ==
{{Теорема
|statement=
Язык никакого нетривиального свойства <tex>A</tex> не является разрешимым.|proof}}===Доказательство===Пусть <tex>p_\infty</tex> {{---}} всегда зацикливающийся алгоритм.  '''Рассмотрим случай, когда <tex>p_\infty \in L(A)</tex>.'''  Приведём доказательство от противного.Предположим, что <tex>A</tex> разрешимо. Рассмотрим язык <tex>S</tex>, такой что <tex> S \in \overline{A}</tex> (такой язык существует, так как <tex>A</tex> {{---}} нетривиально). Тогда <tex>p_S \in L(\overline{A})</tex>. Рассмотрим также произвольное перечислимое неразрешимое множество <tex>X</tex>. Пусть <tex>p_X(n)</tex> {{---}} полуразрешитель <tex>X</tex>. ПредположимЗафиксируем произвольное <tex>n \in \mathbb{N}</tex> и построим следующую функцию <tex>V_n(x) = \begin{cases} p_S(x), n \in X \\ p_\infty(x), n \notin X \\\end{cases} </tex>  '''function''' <tex>V_n</tex>(x): '''if''' <tex>p_X</tex>(n) == 1 '''return''' <tex>p_S</tex>(x) '''while''' ''true'' Получили, что если <tex>n \in X</tex>, то <tex>V_n \in L(\overline A)</tex>, а если <tex>n \notin X</tex>, то <tex>V_n \in L(A)</tex> . Таким образом, <tex>n \in X \iff V_n \in L(\overline A)</tex>.  Так как <tex>\overline A</tex> {{---}} разрешимо , то можно проверить для любого <tex>V_n</tex>, лежит ли оно в <tex>L(\overline{A})</tex>. Но это тоже самое, что и проверка <tex>n \in X</tex>. Тогда можно для каждого <tex>n</tex> проверить, лежит ли оно в <tex>X</tex>, а следовательно и нетривиальнопостроить разрешитель для <tex>X</tex>. Так как <tex>X</tex> {{---}} неразрешимо, получили противоречие. '''Теперь рассмотрим случай, когда <tex>p_Ap_\infty \in L(\overline{A})</tex>.'''  Так как <tex>\overline{A}</tex> {{---}} нетривиально (как дополнение к нетривиальному множеству), то по первой части доказательства оно неразрешимо. Следовательно, <tex>A</tex> также неразрешимо.===Альтернативное доказательство с использованием теоремы о рекурсии===По [[Теорема о рекурсии | теореме о рекурсии]], программаможет знать свой исходный код. Значит, разрешающая в неё можно написать функцию <tex> \mathrm{getSrc()} </tex>, которая вернёт строку {{---}} исходный код программы. <tex>A</tex>{{---}} разрешимое семейство языков.
Не умаляя общности, можно считать, что <tex>\varnothing \notin AL_A </tex> (в противном случае перейдём к {{---}} множество программ, удовлетворяющих св-ву <tex> \mathrm {RE} \setminus A</tex>, которое также будет разрешимым и нетривиальным).
Поскольку <tex>A</tex> непустоТеперь допустим, то найдётся перечислимый что язык <tex>X \in A</tex>. Пусть <tex>p_X</tex> {{---}} полуразрешитель <tex>XL_A </tex>разрешим.Тогда напишем такую программу:
Рассмотрим вспомогательную программу <tex>propA(code){:}</tex> // программа, разрешающее свойство языка <tex> A </tex> <tex>g_f(x){i:}</tex> // такая программа <tex> f </tex>,что <tex>f \in A </tex>; существует потому что <tex> A </tex> {{---}} нетривиальное свойство <tex>g(x){:}</tex> // такая программа <tex> g </tex>, что <tex>g \notin A </tex>; существует потому что <tex> A </tex> {{---}} нетривиальное свойство <tex>p(yx){:}</tex> '''if''' U<tex>propA(\mathrm{getSrc(i, x) == 1 })<//если i на входе x выдает 1tex> '''return''' <tex>p_Xg(yx)</tex> '''else''' '''whilereturn''' ''true''<tex>f(x)</tex>
Нетрудно понять, что в разумной модели вычислений номер этой программы можно вычислить по данным Если <tex>ip </tex> и не удовлетворяет свойству <tex>xA </tex>. Значит, можно рассмотреть такую программу: тогда будет выполняться всегда вторая ветка, и <tex>USL(p) = L(\langle i, x \rangle f)</tex> '''return''' . Но язык программы <tex>p_A ( g_{i,x} ) f </tex> принадлежит <tex> A </tex>. Получили противоречие.
ЗаметимЕсли <tex> p </tex> удовлетворяет свойству <tex> A </tex>, чтото <tex>L(g_{i,x}p) = \begin{cases} X, & UL(i, xg) = 1; \\ \varnothing</tex>, & U(i, x) \neq 1; \\а <tex> g \end{cases}notin A </tex>. Опять получили противоречие.
Следовательно, <br/> <tex> US(\langle i, x \rangle ) = p_A(g_{i,x}) = \begin{cases} p_A(p_X), & U(i, x) См. также = 1; \\ p_A(p_\varnothing ), & U(i, x) \neq 1; \\\end{cases} = \begin{cases} 1, & U(i, x) = 1; \\* [[Теорема о рекурсии]] 0, & U(i, x) \neq 1; \\\end{cases}</tex> {{---}} программа, разрешающая * [[Множества | универсальное множествоТеорема Райса-Шапиро]]. Получили противоречие.}}
== Источники информации ==
* [https://en.wikipedia.org/wiki/Rice%27s_theorem Wikipedia — Rice's theorem]
* Rice, H. G. "{{---}} Classes of Recursively Enumerable Sets and Their Decision Problems." {{---}} Trans. Amer. Math. Soc. 74, 358-366, 1953.* Хопкрофт Д., Мотванн Р., Ульманн Д. {{---}}Введение в теорию автоматов, языков и вычислений{{---}} стр. 397.[[Категория: Теория формальных языков]]
[[Категория: Теория вычислимости]]
[[Категория: Теория формальных языковРазрешимые и перечислимые языки]]
Анонимный участник

Навигация