Разрешимые (рекурсивные) языки — различия между версиями
(→Основные определения) |
|||
Строка 1: | Строка 1: | ||
== Основные определения == | == Основные определения == | ||
{{Определение | {{Определение | ||
− | |definition= '''Рекурсивный язык''' (англ. ''recursive language'') <tex>L</tex> {{---}} язык, для которого существует программа | + | |definition= '''Рекурсивный язык''' (англ. ''recursive language'') <tex>L</tex> {{---}} язык, для которого существует программа |
− | |||
− | + | <tex>p(w) = \begin{cases} | |
+ | 1, \forall w \in L\\ | ||
+ | 0, \forall w \notin L. | ||
+ | \end{cases} | ||
+ | </tex> | ||
+ | }} | ||
{{Определение | {{Определение | ||
− | |definition = Язык <tex>L</tex> называется '''разрешимым''', если существует такая [ | + | |definition = Язык <tex>L</tex> называется '''разрешимым''', если существует такая [[Вычислимые функции | вычислимая]] функция <tex>f : \Sigma^* \to \{0, 1\} : x \in L \Leftrightarrow f(x) = 1</tex>. |
}} | }} | ||
+ | Если мы рассматриваем язык <tex>L</tex> как проблему, то проблема называется ''разрешимой'', если язык <tex>L</tex> ''рекурсивный''. В противном случае проблема называется ''неразрешимой''. Но часто данные понятия просто отождествляются. | ||
{{Определение | {{Определение | ||
Строка 19: | Строка 24: | ||
}} | }} | ||
− | + | Другими словами, ''универсальный язык'' {{---}} это язык всех пар "программа и её вход" таких, что программа на входе возвращает <tex>1</tex>. | |
+ | |||
+ | Далее считаем, что входные данные программы и сама программа расположены над одним алфавитом <tex>\Sigma</tex>. | ||
− | |||
Так как программа {{---}} это набор строк, занумеровав которые, можем получить биекцию "число" <tex>\to</tex> "строка" | Так как программа {{---}} это набор строк, занумеровав которые, можем получить биекцию "число" <tex>\to</tex> "строка" | ||
Версия 01:38, 10 января 2015
Содержание
Основные определения
Определение: |
Рекурсивный язык (англ. recursive language) | — язык, для которого существует программа
Определение: |
Язык вычислимая функция . | называется разрешимым, если существует такая
Если мы рассматриваем язык
как проблему, то проблема называется разрешимой, если язык рекурсивный. В противном случае проблема называется неразрешимой. Но часто данные понятия просто отождествляются.
Определение: |
Класс всех разрешимых (рекурсивных) языков (англ. Class of decidable (recursive) languages) часто обозначается буквой | .
Определение: |
Универсальный язык (англ. universal language) | .
Другими словами, универсальный язык — это язык всех пар "программа и её вход" таких, что программа на входе возвращает .
Далее считаем, что входные данные программы и сама программа расположены над одним алфавитом
.Так как программа — это набор строк, занумеровав которые, можем получить биекцию "число"
"строка"Примеры разрешимых множества
Утверждение: |
Язык чётных чисел разрешим. |
Приведём программу, разрешающую язык чётных чисел: Заметим, что программа нигде не может зависнуть. |
Утверждение: |
Множество всех рациональных чисел, меньших числа (основания натуральных логарифмов) или , разрешимо. |
Для чисел «A Spigot Algorithm for the Digits of Pi». Авторами алгоритма и его нарицателями являются американские математики Стенли Рабинович (Stanley Rabinowitz) и Стен Вэгон (Stan Wagon), которые создали свой алгоритм для нахождения цифр числа в 1995 году. Сама же идея алгоритма вышла из-под пера некого Сейла (Sale) ещё в 1968 году, и предназначался тот алгоритм для нахождения цифр числа . существуют различные техники нахождения их точного представления, одна их которых описана в статьеДесятично представление рационального числа может быть получено с любой точностью.Приведем программу, разрешающую данную проблему для числа :Так как число e иррационально (не существует его рационального представления), то ответ будет найден. 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 |
Примеры неразрешимых множества
Утверждение: |
Универсальный язык неразрешим. |
Приведём доказательство от противного. Пусть язык разрешим, тогда существует программа : , .Составим следующую программу: 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»