Разрешимые (рекурсивные) языки — различия между версиями
Shersh (обсуждение | вклад) м (→Примеры разрешимых множества) |
|||
| Строка 24: | Строка 24: | ||
}} | }} | ||
| − | Другими словами, ''универсальный язык'' {{---}} это язык всех | + | Другими словами, ''универсальный язык'' {{---}} это язык всех пар "программа и её вход" таких, что программа на входе возвращает <tex>1</tex>. |
| − | + | Так как в теории вычислимости нету структур данных, то для представления программы и её входных данных можно использовть число вида: | |
| + | |||
| + | <tex>2^{\text{code}} * 3^{\text{input}}</tex>, где <tex>code, \ input</tex> {{---}} есть биекция между текстом программы, текстом входных данных и натуральным числом (например, можно занумеровать подряд все строки длинны <tex>1</tex>, затем все строки длинны <tex>2</tex> и так далее {{---}} нумерация названий столбцов в <tex>Excel</tex>). | ||
Далее считаем, что входные данные программы и сама программа расположены над одним алфавитом <tex>\Sigma</tex>. | Далее считаем, что входные данные программы и сама программа расположены над одним алфавитом <tex>\Sigma</tex>. | ||
| Строка 51: | Строка 53: | ||
Множество всех рациональных чисел, меньших числа <tex>e</tex> (основания натуральных логарифмов) или <tex>\pi</tex>, разрешимо. | Множество всех рациональных чисел, меньших числа <tex>e</tex> (основания натуральных логарифмов) или <tex>\pi</tex>, разрешимо. | ||
|proof= | |proof= | ||
| − | Для чисел <tex>e, \ \pi</tex> существуют различные техники нахождения их точного представления, одна их которых описана в | + | Для чисел <tex>e, \ \pi</tex> существуют различные техники нахождения их точного представления, одна их которых описана в [http://www.mathpropress.com/stan/bibliography/spigot.pdf статье], таким образом, возможно получить необходимый знак чисел <tex>e, \ \pi</tex> за конечное время. |
Десятичное представление рационального числа <tex>r</tex> может быть получено с любой точностью. | Десятичное представление рационального числа <tex>r</tex> может быть получено с любой точностью. | ||
| Строка 72: | Строка 74: | ||
{{Утверждение | {{Утверждение | ||
|statement= | |statement= | ||
| − | + | Множество тех <tex>n</tex>, для которых в числе <tex>\pi</tex> есть не менее <tex>n</tex> девяток подряд, разрешимо. | |
|proof= | |proof= | ||
Предположим, что в числе <tex>\pi</tex> встречается <tex>k</tex> девяток подряд, тогда, логично, что встречается и любое число девяток меньших <tex>k</tex>. | Предположим, что в числе <tex>\pi</tex> встречается <tex>k</tex> девяток подряд, тогда, логично, что встречается и любое число девяток меньших <tex>k</tex>. | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
| − | |||
Рассмотрим все программы семейства: | Рассмотрим все программы семейства: | ||
<tex>p_0(i) {:} </tex> | <tex>p_0(i) {:} </tex> | ||
| Строка 87: | Строка 82: | ||
<tex>p_1(i) {:} </tex> | <tex>p_1(i) {:} </tex> | ||
| − | '''if''' <tex>i \ | + | '''if''' <tex>i \leqslant 1 </tex> |
'''return''' 1 | '''return''' 1 | ||
'''else''' | '''else''' | ||
| Строка 93: | Строка 88: | ||
<tex>p_2(i) {:} </tex> | <tex>p_2(i) {:} </tex> | ||
| − | '''if''' <tex>i \ | + | '''if''' <tex>i \leqslant k </tex> |
'''return''' 1 | '''return''' 1 | ||
'''else''' | '''else''' | ||
| Строка 100: | Строка 95: | ||
<tex>\dots</tex> | <tex>\dots</tex> | ||
| − | <tex> | + | <tex>p_k(i) {:} </tex> |
| − | '''if''' <tex>i \ | + | '''if''' <tex>i \leqslant k </tex> |
'''return''' 1 | '''return''' 1 | ||
'''else''' | '''else''' | ||
'''return''' 0 | '''return''' 0 | ||
| + | |||
| + | <tex>\dots</tex> | ||
По доказанному выше, какая-то программа из этого семейства будет разрешителем для искомого множества. Значит, искомое множество разрешимо. | По доказанному выше, какая-то программа из этого семейства будет разрешителем для искомого множества. Значит, искомое множество разрешимо. | ||
| Строка 131: | Строка 128: | ||
<tex>r(x) {:} </tex> | <tex>r(x) {:} </tex> | ||
'''if''' <tex>u(\langle x, x \rangle) == 1 </tex> | '''if''' <tex>u(\langle x, x \rangle) == 1 </tex> | ||
| − | '''while''' | + | '''while''' ''true'' |
'''else''' | '''else''' | ||
'''return''' 1 | '''return''' 1 | ||
| Строка 141: | Строка 138: | ||
Из предположения о разрешимости универсального языка мы пришли к противоречию. | Из предположения о разрешимости универсального языка мы пришли к противоречию. | ||
}} | }} | ||
| − | |||
| − | |||
| − | |||
| − | |||
== Источники информации == | == Источники информации == | ||
| Строка 151: | Строка 144: | ||
* [http://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B2%D0%BD%D1%8B%D0%B9_%D1%8F%D0%B7%D1%8B%D0%BA Википедия — Рекурсивный язык] | * [http://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B2%D0%BD%D1%8B%D0%B9_%D1%8F%D0%B7%D1%8B%D0%BA Википедия — Рекурсивный язык] | ||
* [http://www.mathpropress.com/stan/bibliography/spigot.pdf «A Spigot Algorithm for the Digits of Pi»] | * [http://www.mathpropress.com/stan/bibliography/spigot.pdf «A Spigot Algorithm for the Digits of Pi»] | ||
| + | |||
[[Категория: Теория формальных языков]] | [[Категория: Теория формальных языков]] | ||
[[Категория: Теория вычислимости]] | [[Категория: Теория вычислимости]] | ||
Версия 02:37, 12 января 2015
Содержание
Основные определения
| Определение: |
| Рекурсивный язык (англ. recursive language) — язык, для которого существует программа |
| Определение: |
| Язык называется разрешимым, если существует такая вычислимая функция . |
Если мы рассматриваем язык как проблему, то проблема называется разрешимой, если язык рекурсивный. В противном случае проблема называется неразрешимой. Но часто данные понятия просто отождествляются.
| Определение: |
| Класс всех разрешимых (рекурсивных) языков (англ. Class of decidable (recursive) languages) часто обозначается буквой . |
| Определение: |
| Универсальный язык (англ. universal language) . |
Другими словами, универсальный язык — это язык всех пар "программа и её вход" таких, что программа на входе возвращает .
Так как в теории вычислимости нету структур данных, то для представления программы и её входных данных можно использовть число вида:
, где — есть биекция между текстом программы, текстом входных данных и натуральным числом (например, можно занумеровать подряд все строки длинны , затем все строки длинны и так далее — нумерация названий столбцов в ).
Далее считаем, что входные данные программы и сама программа расположены над одним алфавитом .
Примеры разрешимых множества
| Утверждение: |
Язык чётных чисел разрешим. |
|
Приведём программу, разрешающую язык чётных чисел: if return 1 else return 0Заметим, что программа нигде не может зависнуть. |
| Утверждение: |
Множество всех рациональных чисел, меньших числа (основания натуральных логарифмов) или , разрешимо. |
|
Для чисел существуют различные техники нахождения их точного представления, одна их которых описана в статье, таким образом, возможно получить необходимый знак чисел за конечное время. Десятичное представление рационального числа может быть получено с любой точностью. Приведем программу, разрешающую данную проблему для числа : if ( < 2) return 1 if ( > 3) return 0 for (i = 1 .. ) if (getDigit(, i) > getDigit(, i)) // getDigit — функция, которая получает i-ый бит вещественной части переданного числа return 1 if (getDigit(, i) < getDigit(, i)) return 0Так как число иррационально, то ответ будет найден за конечное время. |
| Утверждение: |
Множество тех , для которых в числе есть не менее девяток подряд, разрешимо. |
|
Предположим, что в числе встречается девяток подряд, тогда, логично, что встречается и любое число девяток меньших . Рассмотрим все программы семейства:
return 1
if return 1 else return 0 if return 1 else return 0
if return 1 else 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»