Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
algoritmy_i_struktury_dannykh_gagarina.doc
Скачиваний:
1
Добавлен:
01.05.2025
Размер:
146.08 Mб
Скачать

Глава 14 Машина Тьюринга

У 1937 р. англійський математик Тьюринг опублікував ра ¬ боту, в якій уточнив поняття алгоритму, вдаючись до уявної обчислювальній машині.

Машина Тьюрінга - один із способів запису алгоритму, або алгоритм, записом якого є функціональна таблиця або функціональна діаграма, а правилом виконання - опис її пристрою.

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

Машиною Тьюринга називається часткове відображення

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

Зчитує (записуюча) головка машини оглядає в кожен момент часу один з осередків і за один такт, змінюють два послідовних моменту часу, може переміщатися вліво або вправо. Машина Тьюринга в кожен момент часу знаходиться в одному з станів , а в наступний момент часу переходить в інший стан або залишається в тому ж. Крім того, машина може змінювати символ, що стоїть в оглядає, комірці. Всі ці перетворення - зміни стану, інформації на стрічці, напрямки руху повністю визначаються відображенням М. Так, якщо , то в разі, коли машина знаходиться в стані Qi, а на оглядається в даний момент осередку написаний символ е, машина повинна записати в цю комірку замість е, перейти в стан Qj і зрушитися на одну комірку вліво. Если ті ж дії будуть супроводжуватися зрушенням вправо.

Наприклад, рівність М (2,1) = (1, П, 1) означає, що, перебуваючи в стані Q2 і оглядаючи клітинку, в якій написаний символ 1, машина повинна зберегти в цій комірці символ 1, зрушити вправо і перейти в стан Q1. Якщо ж М (i, е) не визначено, то машина, перебуваючи в стані Qi і оглядаючи осередок з символом е, припиняє свою роботу, не змінюючи свого стану, інформації на стрічці й нікуди не зрушуючи.

Примітка. Існують різні модифікації машини Тьюринга (машина Посту, машина Мінського і т.д.). Деякі модифікації передбачають на стрічці не символи 0 або 1, а літери якого кінцевого алфавіту

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

14.1. Структура машини Тьюринга

В якості виконавця алгоритмів Тьюринг запропонував автомат, що складається з:

нескінченної стрічки, розбитою на осередки;

головки (каретки), здатної пересуватися над стрічкою, від осередку до осередку, зчитувати символи, записані на стрічці, записувати символи в осередку.

У кожному осередку стрічки може бути записаний тільки один з певного безлічі символів, званого алфавітом. За одне спрацьовування каретка здатна виконати наступні дії:

вважати символ з комірки, над якою вона перебуває;

записати символ в комірку, над якою вона перебуває;

переміститися або вліво, або вправо на наступну комірку, або залишитися на місці;

змінити свій внутрішній стан.

Передбачається, що каретка може знаходитися в одному з состоя ¬ ний, визначених її становищем на нескінченній стрічці. Одним з її дій поряд з перерахованими вище є перехід з одного стану в інший.

На рис. 14.1 представлена ​​структурна схема машини Тьюринга, де позначені:

В - зовнішня пам'ять машини, яку можна інтерпретувати, як необмежену в обидві сторони стрічку, яка ділиться на елементарні комірки;

Q - внутрішня пам'ять машини, визначальна стану, в яких знаходиться машина в будь-який момент часу;

G - зчитує (записуюча) голівка;

Z - логічний блок машини. Цей блок формує символ, який буде записаний на стрічку, а також управляє переходами машини з одного стану в інший;

Р - пристрій, що управляє головкою. Основні кодові символи для керування машиною:

R - рух головки вправо;

L - рух головки вліво;

Н - продовжувати оглядати поточну комірку.

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

Алфавіт внутрішніх станів машини задається безліччю: - початковий стан, визначальний початок алгоритму; qk - кінцеве стан, що визначає кінець алгоритму.

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

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

14.2. Функціональні таблиці і діаграми

Закони функціонування машини визначаються трьома символами: Q, a, Р, гдe Q-стан машини; а-символ, який записується на стрічку; Р - управління рухом головки.

При цьому отримуємо систему правил (команд) виду

тобто після огляду символу головкою в стані qi в клітинку записується символ , головка переходить в стан , а стрічка робить рух Для кожної комбінації qi, aj є рівно одне правило перетворення. Це означає, що логічний блок реалізує функцію, сопоставляющую кожній парі вхідних сигналів qi, aj одну і тільки одну трійку вихідних - вона називається логічною функцією машини і зазвичай представляється у вигляді таблиці (функціональної схеми машини), рядки якої позначаються символами станів, а стовпці - знаками зовнішнього алфавіту. Якщо знаків зовнішнього алфавіту п, а число станів логічного управління (ЛУ) m, то, очевидно, загальне число правил перетворення складе nm

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

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

Записати конфігурацію можна наступним чином:

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

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

Запис алгоритму визначається набором правил перетворення. З табл. 14.1 видно, що вихідними даними є двійкові символи 0,1. Робота алгоритму визначається чотирма станами:

Трійка символів , записана на перетині рядка qo і стовпця 0, означає: якщо машина знаходиться в стані і з стрічки

буде лічений символ 0, тоді машина перейде в стан q \, на стрічку буде записаний символ 0, і головка зрушиться на один символ вправо.

Якщо інформація в комірці не оновлюється або машина залишається в колишньому стані, то функціональна таблиця спрощується (табл. 14.2).

Таблиця 14.2

Від функціональної таблиці можна перейти до функціональної діаграмі. Функціональна діаграма - спосіб запису алгоритму у вигляді графа або графовой структури (рис. 14.2).

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

Аналіз алгоритму.

Ш а р 1. Рухаємося вправо, поки не зустрінемо , ставимо на місце символ *.

Крок 2. Рухаємося вліво до і зрушуємося на один символ вправо, записуємо замість 1 символ а.

Ш а г 3. Рухаємося вправо до і замість ставимо 1.

Ш а р 4. Рухаємося вліво до будь-якого символу, відмінного від 1 і 0. Зрушуємося на один символ вправо. Міняємо 0 на B, 1 на а і т.д., поки не буде отримано копію двійкового коду. Після цього замінюємо а на

B на 0.

П р и м і р 2. Робота машини Тюрінга з вихідним алфавітом А = {1 } задана наступною функціональної таблицею:

Состояние

Исходный алфавит

1

А

Я1

XR

1R

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

Нижче наведена таблиця, що виконує ті ж самі операції до тих пір, поки на стрічці не зустрінеться символ 0:

Состояние

Исходное множество

1

А

0

Я1

1R

1R

QklH

Приклад 3. Скласти функціональну таблицю для інвертування двійкового коду.

Наприклад, вихідна безліч - результуюче безліч -

Рішення. Функціональна таблиця буде мати вигляд

Приклад 4. Скласти алгоритм для збільшення на одиницю числа, записаного в десятковій системі числення.

Наприклад, вихідна безліч - результуюче безліч -

Рішення. Функціональна таблиця буде мати вигляд:

Пр имер 5. Скласти алгоритм перетворення числа з множини {1, 2, 3, 4, 5} в унарні запис.

Примітка. Унарна запис - представлення числа паличками, наприклад 3 -> 111.

Рішення. Функціональна таблиця буде мати вигляд:

14.4. Композиція машин Тьюринга

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

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

Множення машин Тьюринга. Нехай задані дві машини Тьюрингу: Т \ і Т2. У початковий момент часу to на стрічці є деяка конфігурація, яку починає обробляти машина Т \, відправляючись від деякого початкового стану qq, причому голівка машини в момент to знаходиться навпроти осередку з номером Iq (рис. 14.3).

Рис. 14.3. Множення машин Тьюринга (робота машини )

Тоді до деякого моменту машина перейде в стан , а головка машини зупиниться навпроти осередку . У момент часу машину відключаємо, і з цього моменту починає працювати машина , відправляючись від свого початкового стану , причому в момент часу головка буде розташована навпроти комірки (рис. 14.4).

У момент часу машина закінчить роботу і зупиниться навпроти комірки .

З рис. 14.4 видно, що результатом подальшої роботи машин буде деяка машина Т, функціональна таблиця якій будується за правилом: верхня частина таблиці описує роботу машини , а нижня частина - роботу машини Т2, причому стан

останову машини (стан ) ототожнюється з початковим станом машини .

Пример 1. Нехай задані дві машини (стан ):

Тоді композиція машин буде виглядати наступним чином:

У тому випадку, коли одна з перемножуєте машин має не ¬ скільки станів останову, вказується, який із остановов предидущей сомножителя ототожнюється з початковим станом наступного.

Система команд (таблиця або діаграма) машини Т є резуль тат об'єднання системи команд машин . Зі сказаного нетрудно бачити, що машина працює так, як після завершення роботи машини Т1 почала б працювати машина T2. Очевидно, що твір машин Тьюринга НЕ комутативність, тобто

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

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

Ітерація машин Тьюринга. Ітерація машин Тьюринга полягає в ототожненні r-го стану останова машин Тюрінга з початковим станом.

Машина Т може бути задана наступним зразком:

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

Приклад 3. Нехай задана машина Тьюринга

Тут показано множення і ітерація машин Тьюринга. При цьому стан останову машини Тз ототожнюється з початковим відбутися у-яніем машини а стан останову машини - з початковим станом машини Т2.

Контрольні питання

Яка структура машини Тьюринга?

Чим машина Тьюринга відрізняється від машини Посту?

Що таке конфігурація машини?

Яким чином записується система команд (правил)?

Що таке внутрішня і зовнішня пам'ять машини Тьюринга?

У чому полягає особливість побудови функціональних таблиць?

Який зв'язок функціональної таблиці з функціональної диаграмu?

Що таке композиція машин?

У чому сенс множення машин Тьюринга?

Що таке ітерація машин Тьюринга?

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]