Машина Тюрінга — Вікіпедія

Комбінаційна логікаСкінчений автоматАвтомат з магазинною пам'яттюМашина ТюрінгаТеорія автоматів
Класи автоматів (Клацання на кожному шарі скеровує до статті на відповідну тему)

Маши́на Тю́рінга — математичне поняття, введене для формального уточнення інтуїтивного поняття алгоритму. Названа на честь англійського математика Алана Тюрінга, який запропонував це поняття у 1936. Аналогічну конструкцію машини згодом і незалежно від Тюрінга ввів американський математик Еміль Пост.[1]

Основна ідея, що лежить в основі машини Тюрінга, дуже проста. Машина Тюрінга — це абстрактна машина (автомат), що працює зі стрічкою, що складається із окремих комірок, в яких записано символи. Машина також має голівку для запису та читання символів із комірок і яка може рухатись вздовж стрічки. На кожному кроці машина зчитує символ із комірки, на яку вказує голівка та, на основі зчитаного символу та внутрішнього стану, робиться наступний крок. При цьому, машина може змінити свій стан, записати інший символ у комірку або пересунути голівку на одну комірку ліворуч або праворуч.[2]

Історія

[ред. | ред. код]

Формальні визначення алгоритму з'явилися в тридцятих-сорокових роках XX століття. Одним із перших було визначення англійського математика Алана Тюрінга, який у 1936 році описав схему деякої гіпотетичної (абстрактної) машини і запропонував називати алгоритмами те, що вміє робити така машина. При цьому визначенні, якщо щось не може бути зроблено машиною Тюрінга, це вже не алгоритм. Інакше кажучи, Тюрінг формалізував правила виконання дій за допомогою опису роботи деякої конструкції.

Визначення

[ред. | ред. код]

У кожної машини Тюрінга є стрічка, потенційно нескінченна в обидві сторони. Є скінченна множина символів стрічки S0, …, Sn, що називається алфавітом машини. У кожен момент часу кожна комірка може бути зайнята не більш ніж одним символом. Машина має деяку скінченну множину внутрішніх станів q0, q1, …, qn. У кожен даний момент часу машина знаходиться лише в одному із цих станів.

Нарешті, є голівка, яка у кожен даний момент часу знаходиться на одній із комірок стрічки. Машина діє не безупинно, а лише у дискретні моменти часу. Якщо у якийсь момент t голівка сприймає комірку (тобто знаходиться на комірці), що містить символ Si, і машина знаходиться у внутрішньому стані qj, то дія машини визначена однією із чотирьох дій:

  1. голівка затирає символ Si, і записує у тій же комірці новий символ Sk,
  2. голівка пересувається в сусідню ліву комірку,
  3. голівка пересувається в сусідню праву комірку,
  4. машина зупиняється.

У випадках (1)-(3) машина переходить у новий внутрішній стан qr, і готова знову до дії у наступний момент t + 1. Припустимо, що символ S0 представляє порожню комірку, і отже, голівка завжди сприймає деякий символ.

Перші три з можливих дій машини можуть бути описані відповідно такими упорядкованими четвірками, які називаються командами:

Тут перші два символи — це відповідно внутрішні стани машини і сприйнятий символ, наступні три визначають дію машини (запис голівкою символу Sk, або переміщення голівки на одну комірку вліво, або переміщення голівки на одну комірку вправо) та новий стан машини. Якщо стрічка вкладена в машину Тюрінга, голівка машини встановлена на одну із комірок стрічки і машина приведена в один із своїх внутрішніх станів, то машина починає оперувати на стрічці: її голівка пише і стирає символи і пересувається з однієї комірки в іншу. Якщо при цьому машина колись зупиняється, то стрічка, яка розташована в ній в цей момент, називається результатом застосування машини до даної стрічки.

Незважаючи на свій простий устрій, машина Тюрінга може виконувати складні перетворення слів. Спочатку, коли стрічка містить вхідне слово, автомат знаходиться проти деякої з комірок і у якомусь стані. У залежності від вибору початкової комірки, утворяться різні результати роботи машини Тюрінга. У процесі своєї роботи машина Тюрінга буде ніби перестрибувати з однієї комірки програми на іншу, відповідно до інформації на стрічці і вказівками в командах програми, поки не дійде до команди, яка переведе автомат у кінцевий стан.

Можливості машини Тюрінга

[ред. | ред. код]
Схематична ілюстрація роботи машини Тюрінга.

Багатство можливостей конструкції Тюрінга виявляється в тому, що якщо якісь алгоритми A та B реалізуються машинами Тюрінга, то можна будувати програми машин Тюрінга, які реалізують композиції алгоритмів A та B, наприклад, виконати A, потім виконати B або виконати A. Якщо в результаті утворилося слово так, то виконати B. У протилежному випадку не виконувати B або виконувати по черзі A, B, поки B не дасть відповідь ні.

У інтуїтивному сенсі такі композиції є алгоритмами. Тому їхня реалізація за допомогою машини Тюрінга служить одним із засобів обґрунтування універсальності конструкції Тюрінга.

Реалізованість таких композицій доводиться у загальному вигляді, незалежно від особливостей конкретних алгоритмів A та B. Доведення полягає в тому, що вказується засіб побудови з програм A та B програми потрібної композиції. Нехай, наприклад, потрібно побудувати машину , еквівалентну послідовному виконанню алгоритмів A та B. Поки виконується алгоритм A, у програмі працює частина A без урахування частини B. Коли алгоритм A дійде до кінця, то замість зупинки відбудеться перехід у перший стан частини B, і потім частина B буде працювати звичайним чином, наче частини A і не було.

Аналогічно конструюють й інші композиції машин Тюрінга; щораз будуються загальні правила: що на що змінювати у вихідних програмах.

Описуючи різноманітні алгоритми для машин Тюрінга і стверджуючи реалізованість усіляких композицій алгоритмів, Тюрінг переконливо показав розмаїтість можливостей запропонованої ним конструкції, що дозволило йому виступити з такою тезою:

Всякий алгоритм може бути реалізований відповідною машиною Тюрінга.

Це основна гіпотеза теорії алгоритмів у формі Тюрінга. Одночасно ця теза є формальним визначенням алгоритму. Завдяки їй можна доводити існування або неіснування алгоритмів, створюючи відповідні машини Тюрінга або доводячи неможливість їхньої побудови. Завдяки цьому з'являється загальний підхід до пошуку алгоритмічних рішень.

Якщо пошук рішення наштовхується на перешкоду, то можна використовувати цю перешкоду для доведення неможливості рішення, спираючись на основну гіпотезу теорії алгоритмів. Якщо ж при доказі неможливості виникає своя перешкода, то вона може допомогти просунутися в пошуку рішення, хоча б частково усунувши стару перешкоду. Так, по черзі намагаючись довести то існування, то відсутність рішення, можна поступово наблизитися до розуміння суті поставленої задачі.

Довести тезу Тюрінга не можна, тому що в його формулюванні не визначене поняття всякий алгоритм, тобто, ліва частина тотожності. Його можна тільки обґрунтувати, представляючи різноманітні відомі алгоритми у вигляді машин Тюрінга. Додаткове обґрунтування цієї тези складається в тому, що пізніше було запропоновано ще декілька загальних визначень поняття алгоритму і щораз вдавалося довести, що, хоча нові алгоритмічні схеми і виглядають інакше, вони в дійсності еквівалентні машинам Тюрінга:

усе, що реалізовано в одній з цих конструкцій, можна зробити і в інших

Ці твердження доводяться строго, тому що в них мова йде вже про тотожність формальних схем.

Машини еквівалентні звичайній МТ

[ред. | ред. код]

Недетермінована МТ

[ред. | ред. код]

Може перебувати в кількох конфігураціях одночасно. Еквівалентна звичайній МТ.

Стрічка обмежена зліва

[ред. | ред. код]

Читаюча голівка не може переміщуватись лівіше початкового символу. Еквівалентна звичайній МТ.

k-доріжкова машина

[ред. | ред. код]

Голівка може змінювати символ на певній доріжці окремо. Моделюється звичайною МТ, якщо брати алфавіт звичайної як k-ту степінь алфавіту k-доріжкової.

k-стрічкова машина

[ред. | ред. код]

На відміну від k-доріжкової, тут кожна стрічка має свою головку, які можуть рухатись окремо. Моделюється 2k стрічковою машиною, тому теж еквівалентна звичайній МТ.

k-голівкова машина

[ред. | ред. код]

Машина яка має k-голівок, і одну стрічку.

Машина з k-вимірною стрічкою

[ред. | ред. код]

Обмежені машини Тюрінга

[ред. | ред. код]

Машина без запису на вхідну стрічку (off-line)

[ред. | ред. код]

Такі машини поділяються на односторонні (голівка може рухатись в обидві сторони), та двосторонні (тільки в одну). Наприклад скінченний автомат є односторонньою off-line МТ.

Лінійно обмежений автомат (ЛОА)

[ред. | ред. код]

МТ з стрічкою що обмежена розмірами вхідного слова

Магазинний автомат (МА)

[ред. | ред. код]

Такий автомат має обмежений набір операцій зі стрічкою, а саме:

  1. Дописати символ в кінці робочої зони, і пересунутись вправо.
  2. Пересунутись вліво, і витерти символ під голівкою (замінити на ).

За допомогою автомата з двома магазинами[de] (англ. TPDA, 2-PDA) можна промоделювати роботу машини Тьюрінга.[3]

Магазин з унарним алфавітом називається лічильником. Два лічильники можуть промоделювати роботу магазину.

Стековий автомат (СА)

[ред. | ред. код]

Аналогічний МА, але крім цього вміє читати символи з середини стрічки.

Автомат з гніздовою стековою пам'яттю

[ред. | ред. код]

Аналогічний стековому автомату, але вміє в будь-який момент поділити стек на два, додавши спеціальний символ C. Стек склеюється назад, як тільки цей символ видаляється. Працюючи з певною частиною стеку, її теж можна ділити.

Примітки

[ред. | ред. код]
  1. Енциклопедія кібернетики, т. 2, с. 444—446.
  2. Good Math, Bad Math, Basics: The Turing Machine (with an interpreter!) [Архівовано 2012-02-11 у Wayback Machine.], 9 лютого 2007.
  3. Is a push-down automaton with two stacks equivalent to a turing machine?. Computer Science Stack Exchange (англ.). Процитовано 21 жовтня 2024.

Література

[ред. | ред. код]
Українською
  • Гаврилків В. М. Формальні мови та алгоритмічні моделі. — І.-Ф.  : Голіней, 2023. — 180 с.
Іншими мовами

Див. також

[ред. | ред. код]

Посилання

[ред. | ред. код]