Лес дает краткий и правильный ответ: математические определения настолько кратки, насколько это возможно, и явное включение бесконечной ленты в определение машины Тьюринга сделало бы ее определение гораздо менее кратким, поэтому мы этого не делаем.
Это не отвечает на вопрос: почему ? Как определение может исключить бесконечную ленту, когда она нам нужна?
Ответ: мы не делаем. В некотором смысле, машины Тьюринга на самом деле не требуют бесконечных лент, и их определение проясняет это.
По определению, движение машины Тьюринга переводит машину из одной конфигурации в другую; конфигурация включает в себя конечную строку, которую мы рассматриваем как конечный фрагмент записанной ленты. Каждое движение либо перемещает головку ленты на одну позицию, либо перезаписывает символ под головкой ленты. Однако - и это важно для его работы:
- всякий раз, когда мы удаляем этот конечный фрагмент строки, мы предполагаем, что символ под головкой ленты равен , пустой символ.b
- мы можем делать это бесконечно часто .
Таким образом, для того, чтобы произвольные машины Тьюринга могли работать бесконечно, на обоих концах необходимо бесконечное количество пустых ленточных ячеек. Между тем, в любой момент его конфигурация, описывающая отрезок ленты, на котором она написана, всегда конечна: после шагов головка ленты никогда не сможет отклониться дальше, чем ячеек от своей начальной точки.nn
Один из способов перефразировать это так: машина работает на бесконечной ленте, полностью заполненной пробелами, за исключением конечного фрагмента, на котором находится ее головка ленты. Это то, что говорят большинство объяснений.
Другой способ перефразировать это так: машина работает на конечной ленте, вытянутой заготовками всякий раз, когда ее головка смещается с ленты на любом конце.
Оба эти способа являются правильными для понимания того, как работает машина: в обоих случаях, если бы у вас действительно была машина, работающая подобным образом, она правильно реализовала бы машину Тьюринга.
Если все, что вас интересует, это научить студентов тому, как работают машины Тьюринга, возможно, не имеет значения, какую концепцию вы выберете.
Тем не менее, я думаю, что первая концептуализация является ошибкой по двум причинам:
- Это нереально . На самом деле мы не можем построить машину с бесконечной лентой. Мы можем построить машину с конечной лентой, расширенной по запросу.
- Это нелогично. Мы не думаем, что машины, выполняющие задачи произвольно часто, содержат бесконечное количество ресурсов. Например, мы не думаем о копировальном аппарате как о бесконечном количестве копировальной бумаги. Машины Тьюринга моделируют вычислительную деятельность. Они моделируют то, что произошло бы, если бы мы заменили компьютер (которым на момент изобретения была женщина, выполняющая вычисления на бумаге) на машину, способную выполнять произвольные программируемые вычисления. Мы не думаем об этой женщине как о бесконечном количестве бумаги. Скорее, мы предполагаем, что ей будет предоставлено столько бумаги, сколько ей нужно, и мы рассматриваем неспособность сделать это как неудачу окружающей среды, а не говорим, что такая женщина не может существовать. Почему бы не сделать то же самое для машины?
- Это предлагает вводящие в заблуждение выводы. Я видел это много. Например:
- Люди говорят, что машины Тьюринга на самом деле не могут быть построены, в то время как конечные автоматы могут. Ну, мы не можем построить произвольные большие конечные автоматы больше, чем можем поставить произвольное количество ленты на машину Тьюринга.
- Люди говорят , что машины Тьюринга не модели компьютеров правильно, в то время как конечные автоматы делают. Это служит важным моментом: если все, что нас интересует, - это использование машины для определения языков ввода, то компьютер, работающий только со своим (фиксированным) внутренним хранилищем, может полностью реализовать любой конечный автомат до определенного размера, в то время как он не может в полной мере реализовать большинство машин Тьюринга, так как он будет работать из внутренней памяти для многих из них. Однако, это часто обобщено говоря: компьютеры являются конечными автоматами, которая вводит в заблуждение:
- Это не рисует реалистичную картину большинства компьютерных программ. Действительно, программирование потока данных фактически основано на конечных автоматах, но традиционное императивное программирование - нет; он использует программы, которые гораздо ближе к экземплярам машины Тьюринга.
- На практике компьютеры также взаимодействуют с внешними источниками ввода, вывода и хранения, которые не имеют фиксированного размера.
- Машины Тьюринга не должны моделировать компьютеры в первую очередь; они моделируют произвольные вычисления.
Подводя итог: идея машин Тьюринга, использующих или содержащих бесконечную ленту, служит для того, чтобы подчеркнуть важную техническую точку, но это не обязательно самый интуитивный способ мышления о машинах Тьюринга, и она вызывает определенные неверные выводы. Используйте с осторожностью.