Разрешимые (рекурсивные) языки — различия между версиями
(→Примеры неразрешимых множества) |
(→Примеры разрешимых множества) |
||
| Строка 51: | Строка 51: | ||
Множество всех рациональных чисел, меньших числа <tex>e</tex> (основания натуральных логарифмов) или <tex>\pi</tex>, разрешимо. | Множество всех рациональных чисел, меньших числа <tex>e</tex> (основания натуральных логарифмов) или <tex>\pi</tex>, разрешимо. | ||
|proof= | |proof= | ||
| − | Для чисел <tex>e, \pi</tex> существуют различные техники нахождения их точного представления, одна их которых описана в статье [http://www.mathpropress.com/stan/bibliography/spigot.pdf «A Spigot Algorithm for the Digits of Pi»] | + | Для чисел <tex>e, \ \pi</tex> существуют различные техники нахождения их точного представления, одна их которых описана в статье<ref>http://www.mathpropress.com/stan/bibliography/spigot.pdf</ref> [http://www.mathpropress.com/stan/bibliography/spigot.pdf «A Spigot Algorithm for the Digits of Pi»], таким образом, возможно получить необходимый знак чисел <tex>e, \ \pi</tex> за конечное время. |
Десятично представление рационального числа <tex>r</tex> может быть получено с любой точностью. | Десятично представление рационального числа <tex>r</tex> может быть получено с любой точностью. | ||
Версия 01:51, 10 января 2015
Содержание
Основные определения
| Определение: |
| Рекурсивный язык (англ. recursive language) — язык, для которого существует программа |
| Определение: |
| Язык называется разрешимым, если существует такая вычислимая функция . |
Если мы рассматриваем язык как проблему, то проблема называется разрешимой, если язык рекурсивный. В противном случае проблема называется неразрешимой. Но часто данные понятия просто отождествляются.
| Определение: |
| Класс всех разрешимых (рекурсивных) языков (англ. Class of decidable (recursive) languages) часто обозначается буквой . |
| Определение: |
| Универсальный язык (англ. universal language) . |
Другими словами, универсальный язык — это язык всех пар "программа и её вход" таких, что программа на входе возвращает .
Далее считаем, что входные данные программы и сама программа расположены над одним алфавитом .
Так как программа — это набор строк, занумеровав которые, можем получить биекцию "число" "строка"
Примеры разрешимых множества
| Утверждение: |
Язык чётных чисел разрешим. |
|
Приведём программу, разрешающую язык чётных чисел: if return 1 else return 0Заметим, что программа нигде не может зависнуть. |
| Утверждение: |
Множество всех рациональных чисел, меньших числа (основания натуральных логарифмов) или , разрешимо. |
|
Для чисел существуют различные техники нахождения их точного представления, одна их которых описана в статье[1] «A Spigot Algorithm for the Digits of Pi», таким образом, возможно получить необходимый знак чисел за конечное время. Десятично представление рационального числа может быть получено с любой точностью. Приведем программу, разрешающую данную проблему для числа : if ( < 2) return 1 if ( > 3) return 0 for(i = 0;; ++i) if (getDigit(, i) > getDigit(, i)) return 1 if (getDigit(, i) < getDigit(, i)) return 0Так как число e иррационально (не существует его рационального представления), то ответ будет найден. |
Примеры неразрешимых множества
| Утверждение: |
Универсальный язык неразрешим. |
|
Приведём доказательство от противного. Пусть язык разрешим, тогда существует программа : , . Составим следующую программу: if while (true) else return 1 Рассмотрим вызов :
|
Источники информации
- Н. К. Верещагин, А. Шень. Лекции по математической логике и теории алгоритмов. Часть 3. Вычислимые функции. — М.: МЦНМО, 1999. С. 134. ISBN 5-900916-36-7
- Wikipedia — Recursive language
- Википедия — Рекурсивный язык
- «A Spigot Algorithm for the Digits of Pi»