W9. Машины Тьюринга, теория автоматов, Алан Тьюринг и исторические предпосылки вычислений
1. Краткое содержание
1.1 Введение в теорию автоматов
1.1.1 Слово «автомат»
Слово automaton (мн. ч. automata) происходит от греч. αὐτόματον — «самодвижущийся», то есть действующий сам по себе. Оно вошло в латынь, а затем в современные европейские языки через латинизацию. Примечательно, что его впервые употребил Гомер (ок. 850 г. до н. э.), древнегреческий поэт, которому приписывают авторство «Илиады» и «Одиссеи» — древнейших известных литературных памятников Европы. В «Илиаде» Гомер описывает двери, открывающиеся сами собой, самоходные колёсные треноги и ожившие статуи. Идея машин, действующих без участия человека, столь же древна, как и само воображение человечества.
1.1.2 Что такое теория автоматов?
Теория автоматов — раздел теоретической информатики, в котором изучают:
- абстрактные математические машины (автоматы) и их возможности;
- вычислительные задачи, которые эти машины могут решать.
Автомат — это конечное описание формального языка, который сам может быть бесконечным. В этом главная мотивация: нужна компактная спецификация потенциально неограниченного объекта.
Есть две основные причины изучать теорию автоматов:
- Теоретические модели вычислительных машин — автоматы дают аккуратные математические объекты, с помощью которых можно доказывать, что вычислимо, а что нет.
- Практические приложения — на автоматах строятся компиляторы, верификация протоколов, проектирование систем и многое другое.
1.2 Модели вычислений
Модель вычислений — математическая схема, описывающая:
- как по входным данным получают выходы;
- как организованы единицы вычисления, память и обмен данными.
Модели вычислений изучают на трёх уровнях:
- Теория: теория автоматов, вычислимость, сложность вычислений.
- Практика: спецификация систем, построение компиляторов.
Существует много разных моделей. Основные семейства:
- Последовательные модели — выполняют по одному шагу:
- конечные автоматы (FSA)
- автоматы с магазином (PDA)
- машины Тьюринга (TM)
- Функциональные модели — вычисление как вычисление математической функции:
- λ-исчисление (Алонзо Чёрч, 1936)
- Параллельные / конкурентные модели — одновременная работа нескольких процессов:
- сети Петри
Этот список не исчерпывающий; существуют сотни других моделей.
1.3 Иерархия Хомского: карта языков
Разные модели вычислений распознают разные классы языков. Иерархия Хомского упорядочивает эти классы от наиболее слабых (ограниченных) к наиболее мощным:
Смысл этой схемы:
- Регулярные языки — распознаются FSA. FSA могут «считать» только до фиксированного числа (конечное число состояний — никакого произвольного
). Они справляются с шаблонами вроде «все строки, содержащиеab», но не с . - Контекстно-свободные языки — распознаются PDA. PDA справляются с
за счёт стека. Однако PDA в общем случае не замкнуты относительно пересечения: если стек «настроен» под один шаблон, одновременно проверить другой нельзя. Поэтому выходит за пределы PDA — память стека разрушительная (снятый символ теряется). - Рекурсивно перечислимые языки — распознаются машинами Тьюринга. TM справляются с
, потому что память на ленте неразрушительная: записанные символы остаются и могут многократно перечитываться.
1.4 Конечные автоматы (FSA): напоминание
Конечный автомат (FSA) — простейшая последовательная модель. Формально полный (детерминированный) FSA — это 5‑кортеж:
где:
— конечное множество состояний; — конечный входной алфавит; — (полная) функция переходов; — начальное состояние; — множество принимающих состояний.
Главное ограничение: у FSA только фиксированная конечная память — текущее состояние. Нельзя сосчитать до произвольного
Применения FSA:
- Лексический анализ в компиляторах — сканирование исходного кода на лексемы (ключевые слова, идентификаторы, числа). Это первая фаза компиляции.
- Машины Мура/Мили — моделирование схем и электронных устройств. Машины Мили — это конечные преобразователи состояний с входной и выходной лентой.
- Проектирование и верификация систем — в UML state machines используется та же нотация для реактивных систем (например, контроллер температуры с состояниями Idle, Heating, Cooling, Error).
- Model checking ПО — автоматическая верификация реальных программ через построение конечных моделей. За эту технику была присуждена премия Тьюринга.
Пример — турникет с оплатой монетой: у турникета два состояния: Locked (заперт) и Unlocked (открыт). Вставка монеты ведёт из Locked в Unlocked; нажатие (толчок) — из Unlocked обратно в Locked. Любое другое действие (толчок в запертом состоянии, монета при уже открытом) даёт петлю на месте.
FSA и верификация программ: задача верификации программ — даны программа
1.5 Автоматы с магазином (PDA): напоминание
Автомат с магазином (PDA) расширяет FSA стеком. Формально детерминированный PDA — это 7‑кортеж:
где:
— конечное множество состояний; — конечный входной алфавит; — конечный алфавит магазина; — (частичная) функция переходов; — начальное состояние; — начальный символ магазина (маркер дна стека); — множество принимающих состояний.
PDA распознают контекстно-свободные языки; на этой модели строится синтаксический анализ в компиляторах — вторая фаза, которая проверяет, образуют ли лексемы корректную программу по грамматике.
Главное ограничение PDA: стек — разрушительная память. После снятия символа он исчезает. Поэтому PDA не может одновременно проверить два независимых счётных ограничения — для
1.6 Машина Тьюринга: формальное определение
1.6.1 Мотивация
Машина Тьюринга (TM) — наиболее мощная последовательная модель вычислений. Она расширяет PDA, заменяя разрушительный стек лентой чтения/записи — потенциально бесконечной последовательностью ячеек с символами, над которыми головка может сдвигаться влево, вправо или оставаться на месте и перезаписывать любую ячейку. В отличие от стека (доступ только к вершине), лента позволяет многократно перечитывать ранее записанное.
TM была предложена Аланом Тьюрингом в 1936 году, чтобы дать точное математическое определение «что можно вычислить». Она намеренно проста — достаточно проста для теоретических рассуждений — и при этом достаточно мощна, чтобы симулировать любой современный язык программирования.
1.6.2 Формальное определение
(Детерминированная) машина Тьюринга с
where:
— конечное множество состояний; — входной алфавит — символы, которые могут появляться на входной ленте; — алфавит памяти — символы, которые можно записывать на ленты памяти (заметьте: и могут различаться); — функция переходов (см. ниже); — начальное состояние; — начальный символ памяти — символ, изначально записанный на каждой ленте памяти (по аналогии с PDA его называют символом дна стека); — множество финальных (принимающих) состояний.
Сравнение определений FSA, PDA и TM:
| Компонент | FSA | PDA | TM |
|---|---|---|---|
| Состояния |
✓ | ✓ | ✓ |
| Входной алфавит | |||
| Доп. алфавит памяти | — | ||
| Начальный символ памяти | — | ||
| Функция переходов | полная | частичная | частичная |
| Принимающие состояния |
✓ | ✓ | ✓ |
1.6.3 Функция переходов
Для TM с
Разбор по частям:
- Область определения: машина в состоянии
(ещё не в финальном), прочитала по одному символу с входной ленты и с каждой из лент памяти. - Область значений: машина переходит в новое состояние, записывает новые символы на каждую из
лент памяти и сдвигает каждую из головок (входная + памяти) в заданном направлении.
Три направления движения головки:
— на право на одну позицию; — на лево на одну позицию; — стоять (не двигаться).
Важные замечания:
- Функция переходов частичная: для некоторых комбинаций «состояние–вход» переход не задан. Если машина попадает в конфигурацию без применимого перехода, будучи не в финальном состоянии, она отвергает вход.
- Из финальных состояний нет исходящих переходов: достигнув финального состояния, машина останавливается.
- Символ
— специальный пустой символ (blank), обозначающий пустые ячейки. Ленты мыслятся бесконечными и заполненными пустыми символами за пределами записанного содержимого.
Для одноленточной TM (
1.6.4 Переходы на рисунке
Переход из состояния
где:
и ; — входной символ, прочитанный с входной ленты; — символ, прочитанный с -й ленты памяти; — символ, записанный на -ю ленту памяти (вместо ); — направление движения головки входной ленты; — направление движения головки -й ленты памяти;
при
1.6.5 Конфигурации
Конфигурация (снимок) TM в данный момент фиксирует всё, что нужно, чтобы продолжить вычисление: текущее состояние, содержимое всех лент и положение каждой головки.
Для TM с
где:
— текущее состояние; задаёт входную ленту: — содержимое слева от головки, при — содержимое справа (и под головкой). Символ отмечает положение головки; аналогично задаёт -ю ленту памяти; — специальный маркер, используемый только в записи конфигураций (это не символ ленты).
Зачем нужны конфигурации: записав последовательность
1.6.6 Условие принятия
Пусть даны TM
то есть из начальной конфигурации
Начальная конфигурация
Головка входной ленты в начале строки
Финальная конфигурация
Конфигурация финальна тогда и только тогда, когда текущее состояние лежит в
Язык, принимаемый машиной
1.7 Примеры машин Тьюринга
1.7.1 Пример: распознавание
Это одноленточная TM (
- Использовать ленту памяти как счётчик: за каждый
aна входе записывать маркерMна ленту памяти. - Когда на входе начинаются
b, двигать головку памяти назад и снимать по одномуMна каждыйb. - Принять вход, если он заканчивается ровно в момент, когда головка памяти вернулась к
.
Диаграмма состояний:
Трассировка для входа aabb:
Имеем aabb принимается.
Как читать трассу: в каждой конфигурации символ сразу после M, машина переходит в
1.7.2 Пример: распознавание
Этот язык нельзя распознать PDA (классический контекстно-зависимый пример), зато с ним справляется TM. Стратегия обобщает предыдущую: на ленте памяти считаем a, затем проверяем столько же b (снимая маркеры), затем столько же c (перечитывая и снимая оставшиеся маркеры).
Диаграмма состояний:
Частичная трассировка для входа aabbcc (начиная после фазы чтения b):
Вход aabbcc принимается.
Почему в a (M на каждый a. На фазе чтения b (M на каждый b. Войдя в c), головка снова у M на каждый c. Такое повторное использование ленты и делает TM мощнее PDA.
1.8 Тезис Чёрча — Тьюринга
Тезис Чёрча — Тьюринга (его также называют тезисом Тьюринга) утверждает:
Функция на натуральных числах может быть вычислена эффективным методом тогда и только тогда, когда она вычислима на машине Тьюринга.
«Эффективный метод» означает алгоритм: конечную, детерминированную, пошаговую процедуру, которая всегда завершается с правильным ответом. Этот тезис не теорема — его нельзя формально доказать, потому что «эффективный метод» — неформальное понятие. Но более 80 лет он выдерживает проверку: любая предложенная модель вычислений (λ-исчисление, рекурсивные функции, современные CPU, Python, Haskell, …) оказывается по выразительной силе эквивалентна машинам Тьюринга.
Следствие для программирования: любую функцию, вычислимую на современном языке программирования, можно вычислить на TM, и наоборот. У TM и языков высокого уровня одинаковая выразительная сила. TM не предназначены для практического программирования — они нужны для доказательств: с ними проще рассуждать из-за простоты.
1.9 Алан Тьюринг: жизнь и наследие
Алан Тьюринг (23 июня 1912 — 7 июня 1954) — британский математик, логик и учёный в области вычислений. Он внёс фундаментальный вклад в четыре разные области:
- Вычислимость — машина Тьюринга и ответ на Entscheidungsproblem.
- Криптография — взлом немецкой шифровальной машины Enigma во Второй мировой войне.
- Искусственный интеллект — тест Тьюринга.
- Биоинформатика — математическое моделирование формирования биологических узоров.
Тьюринг жил и умер в Уилмслоу, недалеко от Манчестера (Великобритания); там синяя мемориальная доска гласит: «Основатель информатики и криптограф, чья работа была ключом к взлому военных шифров Enigma».
1.9.1 Вычислимость и машина Тьюринга
В 1936 году Тьюринг опубликовал работу «On Computable Numbers, with an Application to the Entscheidungsproblem» — одну из важнейших статей в истории математики. В ней он ввёл машину Тьюринга как математическую модель вычислений и показал, что у задачи разрешимости Гильберта нет общего алгоритмического решения (см. раздел 1.12).
1.9.2 Криптография: взлом Enigma
Во Вторую мировую войну Тьюринг работал в Government Code and Cypher School (GC&CS) в Блетчли-парке — центре британской криптоаналитики. Он возглавлял Hut 8, отдел, отвечавший за взлом немецких морских шифров.
Ключевые моменты этой истории:
- Enigma — немецкая электромеханическая шифровальная машина. Каждое сообщение шифровалось с ежедневно меняющимся ключом, давая на вид случайные символы.
- Польские математики уже выяснили основные принципы чтения сообщений Enigma и передали сведения британцам до войны.
- С началом войны Германия ежедневно меняла шифросистему, и старые методы перестали работать.
- Алан Тьюринг и Гордон Уэлчман спроектировали Bombe — электромеханическую машину, автоматически перебиравшую возможные настройки Enigma. К середине 1940 года сигналы люфтваффе регулярно читались.
Важный урок: за любым крупным достижением всегда стоит коллектив. Как документирует племянник Алана Дермот Тьюринг в книге «X, Y and Z: The Real Story of How Enigma Was Broken», заслуга принадлежит широкому сообществу — включая польских математиков, — а не одному гению в одиночку.
1.9.3 Искусственный интеллект: тест Тьюринга
В 1950 году Тьюринг опубликовал статью «Computing Machinery and Intelligence» в журнале Mind. Она начинается вопросом:
«Я предлагаю рассмотреть вопрос: могут ли машины мыслить?»
Поскольку «мышление» — слишком размытое понятие для прямой проверки, Тьюринг предложил игру в имитацию (сейчас её называют тестом Тьюринга):
- Человек-следователь (C) текстом общается с двумя скрытыми участниками: компьютером (A) и человеком (B).
- Следователь задаёт вопросы и пытается понять, кто есть кто.
- Если компьютер стабильно вводит следователя в заблуждение, заставляя думать, что он человек, машину считают интеллектуальной.
Тьюринг также отвечал на возражение леди Лавлейс — идею, что «машина может делать только то, что мы ей приказываем». Он считал, что возражение заслуживает серьёзного рассмотрения, но не опровергает возможность машинного интеллекта.
1.9.4 Биология и математический морфогенез
В 1952 году Тьюринг опубликовал «The Chemical Basis of Morphogenesis» — теперь это считают одной из основополагающих работ математической биологии. Он предположил, что сложные узоры у живых организмов — полосы зебры, пятна леопарда, расположение лепестков — могут возникать из простого математического механизма: систем реакции–диффузии.
Два химических вещества (он назвал их морфогены) диффундируют в ткани и реагируют друг с другом. При определённых условиях малые случайные флуктуации самопроизвольно усиливаются до устойчивых периодических структур. Это было биоинформатикой до биоинформатики — задолго до того, как у области появилось имя.
1.10 Исторический контекст: от людей-вычислителей до машин с хранимой программой
1.10.1 Люди-компьютеры
До электронных компьютеров слово computer обозначало человека, выполнявшего расчёты. В XIX — начале XX века (примерно до 1946 года) крупные организации содержали целые комнаты людей-вычислителей:
- Научные бюро, артиллерийские управления и актуарные фирмы организовывали вычисления как индустриальный процесс — своего рода фабрики вычислений.
- Работников выстраивали иерархически: на нижних уровнях считали вручную, на верхних проверяли и систематизировали результаты.
- Информацию рассматривали как индустриальный материал: стандартизировали, обрабатывали и передавали по цепочке, как на конвейере.
Так выглядела «бумажно-карандашная» индустриализация математики. Труд был монотонным и подверженным ошибкам.
1.10.2 ENIAC и первые компьютеры
Перелом произошёл в 1945 году с ENIAC (Electronic Numerical Integrator and Computer) — первым программируемым электронным универсальным цифровым компьютером.
- Ввод в ENIAC шёл через перфокарты — физические карты с отверстиями, кодирующими данные.
- Ранние программы вводили вручную, соединяя кабели (как на телефонной коммутаторной доске).
- Операторами ENIAC была команда женщин, ранее работавших людьми-вычислителями; они стали первыми в мире программистами электронных компьютеров.
1.10.3 Компьютер с хранимой программой
Ключевой концептуальный шаг — компьютер с хранимой программой: машина, в которой и команды программы, и данные лежат в одной памяти, а программу можно менять, изменяя память, а не перекоммутируя оборудование. Контрастируйте с ткацким станком Northrop, который всегда выполняет одну и ту же «программу ткачества», зашитую в физическую конструкцию.
1.10.4 Архитектура фон Неймана
Архитектура фон Неймана (имени Джона фон Неймана) — доминирующая модель компьютеров с хранимой программой:
- Центральный процессор (CPU), включающий:
- устройство управления — выборка и декодирование команд из памяти;
- арифметико-логическое устройство (ALU) — арифметические и логические операции.
- Блок памяти — хранит и данные, и команды программы в едином адресном пространстве.
- Устройства ввода и вывода.
1.10.5 Гарвардская архитектура
Гарвардская архитектура разделяет пути хранения и сигналов для команд и данных на физически разные памяти:
- Память команд — хранит код программы; CPU только читает отсюда.
- Память данных — хранит значения; CPU читает и пишет.
- ALU, устройство управления и ввод-вывод — отдельные блоки с выделенными шинами.
Главное отличие от фон Неймана: в гарвардской схеме нет риска случайно перезаписать команды данными (и наоборот), и CPU может одновременно выбирать команду и читать данные по разным шинам. Современные микроконтроллеры и DSP часто используют эту архитектуру.
1.10.6 TM и машины фон Неймана
TM и машины фон Неймана (VNM) эквивалентны по выразительной силе — они вычисляют один и тот же класс функций. Разница в доступе к памяти:
- TM: последовательный доступ — головка движется по ленте шаг за шагом.
- VNM: прямой (произвольный) доступ — к любому адресу памяти за один шаг.
Это различие не меняет класс разрешимых задач. Оно может влиять на вычислительную сложность (число шагов), но не на саму вычислимость. TM может симулировать VNM и наоборот.
Зачем тогда изучать TM? Из-за простоты они удобны для доказательств. Проще рассуждать об одной ленте и таблице переходов, чем о современном CPU с кэшами, конвейерами и прерываниями.
1.11 Общая модель многоленточной TM
Наиболее общая форма TM имеет:
- одну входную ленту — только чтение, головка движется влево/вправо;
- одну выходную ленту — только запись, головка движется вправо;
лент памяти — чтение/запись, головки движутся влево/вправо/стоят.
Все
В нашем курсе в основном работаем с TM с одной лентой памяти, для которых функция переходов имеет вид:
1.12 Математическая логика и Entscheidungsproblem
1.12.1 Principia Mathematica и мечта о формализации
В начале XX века математики стремились поставить всю математику на прочный логический фундамент. Бертран Рассел и Альфред Норт Уайтхед опубликовали Principia Mathematica (1910–1913) — монументальный труд на ~2000 страниц, в котором предпринималась попытка:
- аксиоматизировать всю математику — вывести любую истину из небольшого набора логических аксиом;
- доказать, что система полна (всякая истинная формула выводима) и непротиворечива (ложные формулы недоказуемы).
Философию этого направления называют логицизмом: вера в то, что математика сводится к чистой логике. Доказательная система опиралась на строгие формальные правила вывода, главным из которых был modus ponens. Работа была настолько дотошной, что вывод
1.12.2 Программа Гильберта и Entscheidungsproblem
Давид Гильберт (1862–1943) — один из самых влиятельных математиков своей эпохи. В 1900 году он опубликовал 23 нерешённые задачи — дорожную карту математики XX века. В 1928 году вместе с Вильгельмом Аккерманом он сформулировал Entscheidungsproblem («проблему разрешимости»):
Найти алгоритм, который по данным предпосылкам — формулам логики первого порядка — и данному заключению определяет, выводимо ли это заключение из предпосылок по правилам логики первого порядка.
Иными словами: является ли математика полной, непротиворечивой и разрешимой? Гильберт спрашивал, существует ли механическая процедура, которая по любому математическому утверждению за конечное время выясняет, истинно оно или ложно.
1.12.3 Крах программы: Гёдель и Тьюринг
Мечта о полной, непротиворечивой и разрешимой математике рухнула под ударом двух последовательных результатов:
Курт Гёдель (1931) — теоремы о неполноте: любая логическая система достаточной выразительности (способная выразить элементарную арифметику) неполна: существуют истинные утверждения, которые нельзя доказать внутри системы. Полнота и непротиворечивость не могут выполняться одновременно. Математику нельзя полностью аксиоматизировать.
Сам Тьюринг отмечал связь, писал в статье 1936 года: «выводы поверхностно сходны с выводами Гёделя».
Чёрч и Тьюринг (1936) — неразрешимость Entscheidungsproblem: независимо Алонзо Чёрч (через λ-исчисление) и Алан Тьюринг (через машины Тьюринга) доказали, что общего алгоритма для проблемы разрешимости не существует. Доказательство Тьюринга строит конкретную задачу — проблему остановки — и показывает, что её нельзя разрешить ни одной TM.
Связь с верификацией программ: это напрямую касается разработки ПО. Задача верификации программ — даны
Формально:
Однако при ограничении модели вычислений с полной TM до конечного автомата задача верификации становится разрешимой. В этом смысл model checking — техники, удостоенной премии Тьюринга.
1.12.4 Тьюринг, Гёдель и бесконечность
Идеи Тьюринга связаны с глубокими вопросами о природе математики и сознания. Вопрос о том, превосходит ли человеческий разум машину Тьюринга, остаётся открытым:
- «Если у нас есть хоть одно свойство — пусть даже тривиальное, — которого нет у машин Тьюринга, то мы не можем быть просто машинами Тьюринга».
Это соприкасается с теорией бесконечных множеств (числа
2. Определения
- Automaton (автомат): абстрактная математическая машина, обрабатывающая входные символы и переходящая между состояниями по правилам.
- Automata Theory (теория автоматов): раздел теоретической информатики об абстрактных машинах (автоматах) и вычислительных задачах, которые они решают.
- Turing Machine (TM, машина Тьюринга): математическая модель вычислений: конечное множество состояний, входная лента, одна или несколько лент памяти с чтением/записью и функция переходов. Сильнейшая последовательная модель; задаёт границу алгоритмической вычислимости.
- Finite State Automaton (FSA): 5‑кортеж
, распознающий регулярные языки при фиксированной конечной памяти (текущее состояние). Не может сосчитать до произвольного . - Pushdown Automaton (PDA): 7‑кортеж
, расширяющий FSA стеком LIFO; распознаёт контекстно-свободные языки. - Input Alphabet (
или ): конечное множество символов входной ленты. - Memory Alphabet (
): конечное множество символов, записываемых на лент(ы) памяти TM или PDA; отличается от входного алфавита. - Blank Symbol (
): специальный символ ( ) для пустых ячеек; ленты бесконечны и заполнены пустыми ячейками за пределами записи. - Initial Memory Symbol (
): символ в начале каждой ленты памяти при старте TM; маркер дна ленты. - Transition Function (
): частичная функция, задающая поведение TM: по текущему состоянию и символам под головками — следующее состояние, новые символы и движения головок. - Configuration (Snapshot) (конфигурация):
‑кортеж — полное состояние TM: состояние, ленты, положения головок. - Initial Configuration (
) (начальная конфигурация): , где — входная строка. - Final Configuration (
) (финальная конфигурация): любая конфигурация с состоянием . - Acceptance (принятие): строка
принимается TM , если — за конечное число шагов достижима финальная конфигурация. (отношение шага): один шаг вычисления TM ( — за один шаг из в ). (рефлексивно-транзитивное замыкание): ноль или более шагов.- Chomsky Hierarchy (иерархия Хомского): классификация формальных языков по выразительной силе: регулярные (FSA)
КС (PDA) рекурсивно перечислимые (TM). - Church–Turing Thesis (тезис Чёрча — Тьюринга): неформальное утверждение, что всякая эффективно вычислимая функция вычислима на TM. Не теорема (формально не доказывается), но общепринято.
- Entscheidungsproblem: проблема разрешимости Гильберта (1928): существует ли алгоритм, который по любому математическому утверждению определяет, выводимо ли оно из аксиом? Ответ: нет (Чёрч, Тьюринг, 1936).
- Gödel’s Incompleteness Theorems (теоремы Гёделя о неполноте): два результата (1931): любая достаточно мощная формальная система либо неполна (есть недоказуемые истины), либо противоречива (доказуемы ложные утверждения).
- Turing Test (Imitation Game) (тест Тьюринга): критерий «интеллекта» машины (1950): если компьютер вводит человека-следователя в заблуждение, его считают интеллектуальным.
- Model Checking: автоматическая проверка, удовлетворяет ли конечная модель системы спецификации. Разрешимо (в отличие от общей верификации программ), так как модель ограничена уровнем FSA.
- Von Neumann Architecture: архитектура с единой памятью для команд и данных и CPU (устройство управления + ALU).
- Harvard Architecture: архитектура с физически раздельными путями и памятью для команд и данных; возможна одновременная выборка команды и доступ к данным.
- Stored-Program Computer: компьютер, в котором команды хранятся в памяти и могут изменяться (в отличие от жёстко «прошитых» программ).
- Reaction-Diffusion System (система реакции–диффузии): модель Тьюринга (1952) биологических узоров: два морфогена диффундируют и реагируют, порождая периодические пространственные структуры (полосы, пятна).
3. Формулы
- Определение TM (
лент): - Функция переходов (
лент памяти): - Функция переходов (1 лента памяти):
- Конфигурация (
лент памяти): - Начальная конфигурация:
- Условие принятия:
, где при - Язык TM:
- Определение FSA:
с - Определение PDA:
с
4. Примеры
4.1. Спроектировать TM для (Лаба 8, Задание 1)
Спроектируйте машину Тьюринга, распознающую c. Примеры: aca (abcab (bcb (
Показать решение
Идея: чтобы проверить
Стратегия (1 лента памяти):
- Фаза копирования (
): читать символы доcс входа, записывая каждый на ленту памяти. Обе головки движутся вправо. - Фаза перемотки (
): при встречеcвернуть головку памяти к (перемотка). - Фаза сравнения (
): синхронно двигать вход и память вправо, сравнивая символы. - Принятие (
): если одновременно на входе и в памяти достигнут пустые ячейки.
Ключевые переходы:
— копироватьaв память. — копироватьbв память. — разделитель; начать перемотку памяти. при — перемотка памяти. — память в начале; начать сравнение. — совпадениеa. — совпадениеb. — обе ленты исчерпаны: принять.- Любое несовпадение: перехода нет; отвергнуть.
Ответ: TM записывает первую половину в память, перематывает, затем посимвольно сравнивает. Принимает тогда и только тогда, когда строка имеет вид
4.2. Спроектировать TM для (Лаба 8, Домашнее задание 1)
Спроектируйте TM, распознающую ab: ab, abab, ababab, …
Показать решение
Идея:
Наглядно как у FSA:
- Состояние
(старт, принимающее): ожидаетсяaили конец строки. - Состояние
: только что прочитанa, ожидаетсяb. - Любой другой символ ведёт в мёртвое (отвергающее) состояние.
Переходы TM (лента памяти не нужна или игнорируется):
— пустой вход: принять ( ). — прочитанa, переход в . — послеaпрочитанb, возврат в .- Все прочие переходы: не определены (отвергнуть).
Вернувшись в b, если вход пуст: принять. Иначе продолжать.
Ответ: TM чередует ожидание a (состояние b (
4.3. Спроектировать TM для (Лаба 8, Задание 2)
Спроектируйте TM, распознающую abcba (bcb (
Показать решение
Идея:
Стратегия (1 лента памяти):
- Фаза копирования (
): читать символы доc, писать в память (обе головки вправо). - На
c: оставить головку памяти на месте (сразу после последнего символа ), сдвинуть вход. Переход к фазе сравнения. - Фаза сравнения (
): вход движется вправо (читается слева направо), память — влево (читается справа налево). На каждом шаге сравнение. - Принятие (
): на входе пусто, в памяти у .
Ключевые переходы:
— копироватьa. — копироватьb. — найденc; вход проходитc, память на шаг назад к последнему символу . — совпадениеa: вход вправо, память влево. — совпадениеb. — достигнуты оба конца: принять.
Ответ: TM «укладывает»
4.4. Спроектировать TM для (Лаба 8, Домашнее задание 2)
Спроектируйте TM, распознающую abbccc (aabbbbcccccc (
Показать решение
Идея: обобщение схемы для a.
Стратегия:
На каждый a на входе записываем на ленту памяти две маркеры B и три маркеры C. Далее:
- каждый
bснимает одну маркерB; - каждый
cснимает одну маркерC; - принимаем, когда одновременно исчерпаны вход и память.
Раскладка ленты памяти после чтения a:
Фазы:
- Фаза
a( ): на каждыйaзаписать в памятьBB+CCC(5 шагов по памяти на символ входа). Сдвинуть вход. - Фаза
b( ): на каждыйbснять однуBс памяти (дойти вправо до следующейB, стереть). - Переход к фазе
c: когда всеBсняты (головка у первойC), перейти в . - Фаза
c( ): на каждыйcснять однуC. - Принятие (
): вход пуст и память пуста одновременно.
Ключевые переходы (схематично):
записатьB, сдвинуть память, записатьB, сдвинуть память, записатьC,C,C; затем сдвинуть вход; вернуться в . — первыйb; начать сниматьB. — снять следующуюB. — всеBсняты; начать сниматьC. — снять следующуюC. — принять.
Ответ: TM кодирует соотношение a писать
4.5. Спроектировать TM для палиндромов (Лаба 8, Задание 3)
Спроектируйте TM, распознающую a, b, aba, abba. Опишите стратегию.
Показать решение
Идея: для палиндрома
Стратегия (1 лента памяти):
- Фаза копирования (
): скопировать весь вход на ленту памяти (обе головки вместе вправо). - Перемотка памяти (
): после полного чтения входа вернуть головку памяти к . - Фаза сравнения (
): одновременно двигать головку памяти вперёд и головку входа назад, сравнивая символы. - Принятие (
): головки встречаются в середине (или одновременно достигают и пустого символа).
Замечание: у TM головка входа может двигаться влево, в отличие от обычного FSA или PDA. Такой двунаправленный доступ — часть большей мощности TM.
Альтернатива — двухпроходное сравнение:
- Найти центр строки (чередуя движения вперёд и назад).
- Сравнивать первый символ с последним, второй с предпоследним и т. д.
Смысл: проверка палиндрома для
Ответ: TM принимает тогда и только тогда, когда вход — палиндром. Лента памяти хранит копию
4.6. Спроектировать TM для (Лаба 8, Задание 4)
Спроектируйте TM, распознающую
Показать решение
Идея: для объединения
Почему одному детерминированному PDA трудно: после чтения блока a и помещения b. В детерминированном случае решение нужно принять, ещё не видя b — это невозможно. Недетерминированный PDA мог бы «угадывать»; детерминированная TM может сначала проверить один вариант, затем другой.
Стратегия TM:
Фаза 1: проверка
- На каждый
aзаписать в память одинM. Обе головки вправо. - На каждый
bснять одинM(память влево). Вход вправо. - Если вход кончился и память у
: принять (случай : сразу пусто). - Если вход кончился, а в памяти ещё есть
M: отвергнуть. - Если
bкончились, аMещё есть: перейти к фазе 2 (предварительно сброс).
Фаза 2: проверка
- Сброс: перемотать память к
; вернуть головку входа в начало. - На каждый
aзаписать одинMв память. - На каждую пару
bснять одинM. - Если вход кончился, память у
и число прочитанныхbчётно: принять. - Иначе: отвергнуть.
Ответ: возможность TM перечитывать и перематывать ленты позволяет проверять несколько гипотез подряд. Это сила неразрушительного двунаправленного доступа к ленте — недоступного PDA с разрушительным однонаправленным стеком.
4.7. Трассировка TM на (Лекция 8, Пример 1)
Рассмотрим TM
(петля) (петля)
Выполните трассировку на входе
Показать решение
Идея: на ленте памяти считаем a, записывая маркеры M. В каждой конфигурации символ
- Начальная конфигурация:
читаетa, память читает : переход в , головка памяти вправо, головка входа на месте. читаетa, память читает_(пусто): записатьM, обе головки вправо. читаетa, память читает_: записатьM, обе головки вправо. читаетb, память читает_: вход на месте, головка памяти влево. Переход в . читаетb, память читаетM: вход вправо, головка памяти влево. читаетb, память сдвигается влево мимо . читает_(конец входа), память читает : переход в .
Имеем
Ответ: строка aabb принимается. Машина записала 2 маркера M (по одному на каждый a), сняла их при чтении двух b и достигла
4.8. Трассировка TM на (Лекция 8, Пример 2)
Рассмотрим TM
Дайте частичную трассировку на входе
Показать решение
Идея: к машине для b и возврата головки памяти к c, снова двигая головку памяти вправо — второй раз «съедая» маркеры M.
Начиная с
читаетb, память читаетM: вход вправо, память влево. читаетb, память читает … головка памяти сдвинулась влево к . читаетc, память читает : переход в , головки на месте. читаетc, память читаетM: вход вправо, память вправо. читаетc, память читаетM: вход вправо, память вправо. читает_, память читает_: переход в .
Ответ: строка aabbcc принимается. Лента памяти M проходятся один раз на фазе b (справа налево) и один раз на фазе c (слева направо). Вход и память исчерпываются одновременно.
4.9. Спроектировать TM для (Туториал 8, Пример 1)
Спроектируйте детерминированную машину Тьюринга, распознающую язык
Показать решение
Идея: классический нерегулярный контекстно-свободный язык. TM справляется, используя ленту как счётчик — помечая согласованные пары
Идея: многократно сканировать ленту: пометить одну несопоставленную
Состояния:
Функция переходов:
| Состояние | Чтение | Запись | Движение | Далее |
|---|---|---|---|---|
| R | ||||
| R | ||||
| S | ||||
| R | ||||
| R | ||||
| L | ||||
| S | ||||
| L | ||||
| L | ||||
| R |
Условие принятия: в
Трасса на
Далее: пометить вторую
4.10. Спроектировать TM для (Туториал 8, Пример 2)
Спроектируйте TM, распознающую контекстно-зависимый язык
(Замечание: этот язык не распознаётся ни конечным автоматом, ни автоматом с магазином — только машина Тьюринга.)
Показать решение
Идея: расширить схему для
Идея: на каждой итерации основного цикла: 1. Идти вправо, пометить крайнюю слева немаркированную
Состояния:
Функция переходов (высокий уровень):
| Состояние | Чтение | Запись | Движение | Далее |
|---|---|---|---|---|
| R | ||||
| R | ||||
| R | ||||
| R | ||||
| R | ||||
| R | ||||
| R | ||||
| R | ||||
| L | ||||
| любой | тот же | L | ||
| R | ||||
| R | ||||
| R | ||||
| S |
Отвергнуть, если в какой-то момент не найден ожидаемый символ (например, нет
Трасса на
Проход 1:
Проход 2:
Проход 3: