Свойства перечислимых языков. Теорема Успенского-Райса — различия между версиями
Shersh (обсуждение | вклад) (→Свойства языков) |
Shersh (обсуждение | вклад) (→Примеры) |
||
Строка 16: | Строка 16: | ||
=== Примеры === | === Примеры === | ||
'''Примеры свойств''': | '''Примеры свойств''': | ||
− | + | # Язык должен содержать слово ''hello''. | |
− | + | # Язык должен содержать хотя бы одно простое число. | |
Псевдокод для разрешителя <tex>L(A)</tex>, где <tex>A = \mathrm {RE}: </tex> | Псевдокод для разрешителя <tex>L(A)</tex>, где <tex>A = \mathrm {RE}: </tex> | ||
Строка 23: | Строка 23: | ||
'''return''' ''true'' | '''return''' ''true'' | ||
− | Псевдокод | + | Псевдокод для программы в общем случае, то есть для проверки того, что язык удовлетворяет свойству : |
+ | <tex>p_A(p_X)</tex> <font color="green"> // <tex>p_A</tex> {{---}} полуразрешитель, так как <tex>X</tex> {{---}} перечислимый язык в общем случае</font> | ||
+ | '''return''' <tex>L(p_X) \in A</tex> | ||
+ | |||
+ | Псевдокод полуразрешителя для языка свойства из первого примера: | ||
<tex>p_A(p_X)</tex> | <tex>p_A(p_X)</tex> | ||
'''return''' <tex>p_X</tex>('hello') | '''return''' <tex>p_X</tex>('hello') | ||
− | |||
− | |||
− | |||
− | |||
== Теорема Успенского-Райса == | == Теорема Успенского-Райса == |
Версия 21:14, 17 декабря 2014
Содержание
Свойства языков
Рассмотрим множество всех перечислимых языков .
Определение: |
Свойством языков (англ. property of languages) называется множество | .
Определение: |
Свойство называется тривиальным (англ. trivial), если | или .
Определение: |
Язык свойства (англ. language of property) | — множество программ, языки которых обладают этим свойством: .
Определение: |
Свойство разрешимым. | называется разрешимым (англ. recursive), если является
Примеры
Примеры свойств:
- Язык должен содержать слово hello.
- Язык должен содержать хотя бы одно простое число.
Псевдокод для разрешителя
, где// — полуразрешитель некоторого языка return true
Псевдокод для программы в общем случае, то есть для проверки того, что язык удовлетворяет свойству :
// — полуразрешитель, так как — перечислимый язык в общем случае return
Псевдокод полуразрешителя для языка свойства из первого примера:
return ('hello')
Теорема Успенского-Райса
Теорема: |
Язык никакого нетривиального свойства не является разрешимым. |
Доказательство: |
Приведём доказательство от противного. Предположим, что разрешимо и нетривиально, — программа, разрешающая .Не умаляя общности, можно считать, что (в противном случае перейдём к , которое также будет разрешимым и нетривиальным, так как и .Поскольку непусто, то найдётся перечислимый язык . Пусть — полуразрешитель .Рассмотрим вспомогательную программу: универсальная функция —Тогда для произвольных и можем написать такую программу.if == 1 return else while true Нетрудно понять, что в разумной модели вычислений номер этой программы можно вычислить по данным и . Значит, можно рассмотреть такую программу:return Заметим, что Исключение пустого множества нам нужно чтобы различать Следовательно, и пустое.— программа, разрешающая универсальное множество. Получили противоречие. |
См. также
Источники информации
- 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.