Свойства перечислимых языков. Теорема Успенского-Райса — различия между версиями
AMaltsev (обсуждение | вклад) (Отмена правки 56309 участника AMaltsev (обсуждение)) |
AMaltsev (обсуждение | вклад) (унификация обозначений) |
||
Строка 46: | Строка 46: | ||
Приведём доказательство от противного. Предположим, что <tex>A</tex> разрешимо. | Приведём доказательство от противного. Предположим, что <tex>A</tex> разрешимо. | ||
− | Рассмотрим <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>n \in \mathbb{N}</tex> и построим следующую функцию | ||
<tex>V_n(x) = \begin{cases} | <tex>V_n(x) = \begin{cases} | ||
− | + | p_S(x), n \in X \\ | |
p_\infty(x), n \notin X \\ | p_\infty(x), n \notin X \\ | ||
\end{cases} </tex> | \end{cases} </tex> | ||
Строка 57: | Строка 59: | ||
'''function''' <tex>V_n</tex>(x): | '''function''' <tex>V_n</tex>(x): | ||
'''if''' <tex>p_X</tex>(n) == 1 | '''if''' <tex>p_X</tex>(n) == 1 | ||
− | '''return''' <tex> | + | '''return''' <tex>p_S</tex>(x) |
'''while''' ''true'' | '''while''' ''true'' | ||
</code> | </code> |
Версия 00:34, 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.