Машина Тюринга

Матеріал з Вікіпедії — вільної енциклопедії.

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

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

Зміст

[ред.] Історія

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

[ред.] Визначення

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

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

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

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

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

  1. S_i q_j \to S_k q_r S
  2. S_i q_j \to S_k q_r L
  3. S_i q_j \to S_k q_r R

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

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

[ред.] Можливості машини Тюринга

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

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

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

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

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

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

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

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

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

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

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

[ред.] Джерела інформації

  1. Енциклопедія кібернетики, т. 2, с. 444—446.
  2. Good Math, Bad Math, Basics: The Turing Machine (with an interpreter!), 9 лютого 2007.

[ред.] Дивіться також

[ред.] Ресурси інтернет


Ця стаття або абзац не містить джерел (літератури, веб-посилань тощо) Допоможіть Вікіпедії поповнити їх.