Разрешимые (рекурсивные) языки — различия между версиями
|  (→Примеры разрешимых множества) | |||
| Строка 24: | Строка 24: | ||
| }} | }} | ||
| − | Другими словами, ''универсальный язык'' {{---}} это язык всех  | + | Другими словами, ''универсальный язык'' {{---}} это язык всех программ и их входных данных, на которых программа возвращает <tex>1</tex>.  | 
| + | Программа {{---}} это набор строк, занумеровав которые, можем получить биекцию между строками и натуральными числами. | ||
| Далее считаем, что входные данные программы и сама программа расположены над одним алфавитом <tex>\Sigma</tex>. | Далее считаем, что входные данные программы и сама программа расположены над одним алфавитом <tex>\Sigma</tex>. | ||
| − | |||
| − | |||
| == Примеры разрешимых множества == | == Примеры разрешимых множества == | ||
Версия 23:06, 11 января 2015
Содержание
Основные определения
| Определение: | 
| Рекурсивный язык (англ. recursive language) — язык, для которого существует программа | 
| Определение: | 
| Язык называется разрешимым, если существует такая вычислимая функция . | 
Если мы рассматриваем язык как проблему, то проблема называется разрешимой, если язык рекурсивный. В противном случае проблема называется неразрешимой. Но часто данные понятия просто отождествляются.
| Определение: | 
| Класс всех разрешимых (рекурсивных) языков (англ. Class of decidable (recursive) languages) часто обозначается буквой . | 
| Определение: | 
| Универсальный язык (англ. universal language) . | 
Другими словами, универсальный язык — это язык всех программ и их входных данных, на которых программа возвращает . 
Программа — это набор строк, занумеровав которые, можем получить биекцию между строками и натуральными числами.
Далее считаем, что входные данные программы и сама программа расположены над одним алфавитом .
Примеры разрешимых множества
| Утверждение: | 
| Язык чётных чисел разрешим. | 
| Приведём программу, разрешающую язык чётных чисел: if return 1 else return 0Заметим, что программа нигде не может зависнуть. | 
| Утверждение: | 
| Множество всех рациональных чисел, меньших числа  (основания натуральных логарифмов) или , разрешимо. | 
| Для чисел существуют различные техники нахождения их точного представления, одна их которых описана в статье[1], таким образом, возможно получить необходимый знак чисел за конечное время. Десятичное представление рационального числа может быть получено с любой точностью. Приведем программу, разрешающую данную проблему для числа : 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Так как число иррационально, то ответ будет найден за конечное время. | 
| Утверждение: | 
| множество тех , для которых в числе  есть не менее  девяток подряд, разрешимо. | 
| Предположим, что в числе встречается девяток подряд, тогда, логично, что встречается и любое число девяток меньших . В таком случае, разрешитель будет выглядеть следующим образом: if return 1 else 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
Рассмотрим вызов :
- Eсли , то условие выполнится и программа зависнет, но, так как программа разрешает универсальный язык, ;
- Eсли , то условие не выполнится и программа вернет , но, так как программа разрешает универсальный язык, .
Из предположения о разрешимости универсального языка мы пришли к противоречию. }}
Примечания
Источники информации
- Н. К. Верещагин, А. Шень. Лекции по математической логике и теории алгоритмов. Часть 3. Вычислимые функции. — М.: МЦНМО, 1999. С. 134. ISBN 5-900916-36-7
- Wikipedia — Recursive language
- Википедия — Рекурсивный язык
- «A Spigot Algorithm for the Digits of Pi»
