Свойства перечислимых языков. Теорема Успенского-Райса — различия между версиями
Shersh (обсуждение | вклад) м (→Теорема Успенского-Райса)  | 
				Shersh (обсуждение | вклад)  м (→Свойства языков)  | 
				||
| Строка 12: | Строка 12: | ||
}}  | }}  | ||
| − | '''Отметим''', что принадлежность программы <tex>p</tex> языку свойства <tex>A</tex> можно выразить двумя эквивалентными утверждениями: <tex>L(p) \in A</tex>   | + | '''Отметим''', что принадлежность программы <tex>p</tex> языку свойства <tex>A</tex> можно выразить двумя эквивалентными утверждениями:   | 
| + | :<tex>L(p) \in A</tex>    | ||
| + | :<tex>p \in L(A)</tex>    | ||
| + | Далее в конспекте будет употребляться  <tex>p \in L(A)</tex>.  | ||
{{Определение  | {{Определение  | ||
Версия 14:21, 27 ноября 2016
Содержание
Свойства языков
Рассмотрим множество всех перечислимых языков .
| Определение: | 
| Свойством языков (англ. property of languages) называется множество . | 
| Определение: | 
| Свойство называется тривиальным (англ. trivial), если или . | 
| Определение: | 
| Язык свойства (англ. language of property) — множество программ, языки которых обладают этим свойством: . | 
Отметим, что принадлежность программы  языку свойства  можно выразить двумя эквивалентными утверждениями: 
Далее в конспекте будет употребляться .
| Определение: | 
| Свойство называется разрешимым (англ. recursive), если является разрешимым. | 
Примеры
Примеры свойств:
- Язык должен содержать слово hello.
 - Язык должен содержать хотя бы одно простое число.
 
Псевдокод для разрешителя , где
// — полуразрешитель некоторого языка return true
Псевдокод для программы в общем случае, то есть для проверки того, что язык удовлетворяет свойству :
return
Псевдокод полуразрешителя для языка свойства из первого примера:
// — перечислимый язык в общем случае, поэтому — полуразрешитель (по теореме Райса-Шапиро) return ('hello')
Теорема Успенского-Райса
| Теорема: | 
Язык никакого нетривиального свойства  не является разрешимым.  | 
| Доказательство: | 
| 
 Пусть — всегда зацикливающийся алгоритм. Рассмотрим случай, когда . Приведём доказательство от противного. Предположим, что разрешимо. Рассмотрим язык , такой что (такой язык существует, так как — нетривиально). Тогда . Рассмотрим также произвольное перечислимое неразрешимое множество . Пусть — полуразрешитель . Зафиксируем произвольное и построим следующую функцию 
 function (x): if (n) == 1 return (x) while true 
 Получили, что если , то , а если , то . Таким образом, . Так как — разрешимо, то можно проверить для любого , лежит ли оно в . Но это тоже самое, что и проверка . Тогда можно для каждого проверить, лежит ли оно в , а следовательно и построить разрешитель для . Так как — неразрешимо, получили противоречие. Теперь рассмотрим случай, когда . Так как — нетривиально (как дополнение к нетривиальному множеству), то по первой части доказательства оно неразрешимо. Следовательно, также неразрешимо. | 
См. также
Источники информации
- 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.