Busy beaver — различия между версиями
AReunov (обсуждение | вклад)  | 
				Shersh (обсуждение | вклад)   | 
				||
| Строка 12: | Строка 12: | ||
|proof=  | |proof=  | ||
| − | Рассмотрим программу длины <tex>n</tex>, совершающую максимальное число шагов. Существует программа длины <tex>n + 1</tex>, которая делает столько же шагов:   | + | Рассмотрим программу длины <tex>n</tex>, совершающую максимальное число шагов. Существует программа длины <tex>n + 1</tex>, которая делает столько же шагов: получается добавлением в предыдущую одного незначащего символа, например, пробельного. Значит, существует программа длины на один больше, которая делает не меньше шагов. Следовательно, <tex>BB</tex> не убывает.  | 
}}  | }}  | ||
----  | ----  | ||
Версия 18:39, 16 января 2016
Поиск усердных бобров (англ. busy beaver) — известная задача в теории вычислимости. Под усердным бобром в теории вычислимости понимают машину Тьюринга с заданным числом состояний конечного автомата, которая будучи запущенной на пустой ленте, записывает на нее максимальное количество ненулевых символов и останавливается.
В данном конспекте будет рассмотрена функция, которая используется в этой задаче для подсчета числа шагов для завершения программы при определенном числе состояний.
| Определение: | 
| — функция от натурального аргумента , равная максимальному числу шагов, которое может совершить программа длиной символов и затем остановиться. | 
| Утверждение: | 
Функция  не убывает.  | 
| Рассмотрим программу длины , совершающую максимальное число шагов. Существует программа длины , которая делает столько же шагов: получается добавлением в предыдущую одного незначащего символа, например, пробельного. Значит, существует программа длины на один больше, которая делает не меньше шагов. Следовательно, не убывает. | 
| Утверждение: | 
 растет быстрее любой всюду определенной неубывающей вычислимой функции , то есть для всех  кроме конечного числа выполнено   | 
|  
 Докажем, что для любой вычислимой функции  функция  будет превышать ее значение (за исключением конечного множества значений числа ).   :
   k = десятичная запись числа n
   m = f(k)
   for i = 1 to m + 1 
     шаг программы
Каждая такая программа делает как минимум шагов. Так как мы рассматриваем в десятичной записи, то длина будет равна , где — длина кода без десятичной записи . Пусть — решение уравнения . Тогда для всех натуральных будет выполнено неравенство: . Данный переход корректен, так как мы доказали, что — монотонно возрастающая функция. Так как конечно, то мы всегда можем найти такие значения , при которых будет выполняться полученное неравенство. Отсюда следует, что утверждение доказано. | 
Вывод: доказав предыдущее утверждение, мы проверили, что максимальное число шагов, которое может совершить программа и при этом остановиться, на самом деле растет с большей скоростью, чем любая вычислимая функция. Отсюда следует, что невычислима.
См. также
Источники информации
- Хопкрофт Д., Мотвани Р., Ульман Д. — Введение в теорию автоматов, языков и вычислений, 2-е изд. : Пер. с англ. — Москва, Издательский дом «Вильямс», 2002. — 528 с. : ISBN 5-8459-0261-4 (рус.)
 - Английская Википедия — Busy beaver
 - Федотов П.В., Царев Ф.Н., Шалыто А.А. — Задача поиска усердных бобров и ее решения