Разрешимые (рекурсивные) языки — различия между версиями
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»