- •До лабораторної роботи № 1
- •6.050102 “Комп’ютерна інженерія”
- •1. Мета роботи
- •2. Теоретичні відомості
- •2.1. Поняття алгоритму
- •2.2. Машина Тьюрінга
- •2.3. Структура машини Тьюрінга
- •2.4. Такт роботи машини Тьюрінга
- •2.5. Програма для машини Тьюрінга
- •2.6. Правила виконання програми
- •2.7. Приклади створення програм для мт
- •2.8. Емулятор машини Тьюрінга
- •2.9. Дослідження ефективності машин Тьюрінга
- •3. Порядок виконання роботи
- •4. Завдання на лабораторну роботу
- •4.1. Вибір варіанту індивідуального завдання
- •4.2. Варіанти завдань
- •5. Вимоги до оформлення звіту
- •1. Мета роботи
- •6. Контрольні завдання
- •Список літератури
- •Мета роботи……………………………………..………………………………………...…3
- •Теоретичні відомості..........….………………………………………………………….…. .3
- •2.1. Поняття алгоритму….………………………………………………………...….…. .3
- •Методичні вказівки
- •" Програмування машин Тьюрінга"
- •6.050102 “Комп’ютерна інженерія”
2.5. Програма для машини Тьюрінга
Сама по собі МТ нічого не
робить. Для того щоб змусити її працювати,
треба написати для неї програму. Ця
програма записується у вигляді таблиці,
в якій рядки відповідають станам, а
стовпці відповідають символам. Які саме
символи і стани вказувати в таблиці
визначає автор програми. В комірках
таблиці вказуються ті такти, які повинна
виконати каретка, коли вона перебуває
у відповідному стані і розпізнає на
стрічці відповідний символ. Наприклад,
команда
R
в таблиці буде записана наступним чином:
Q A |
|
|
... |
|
|
|
|
|
|
|
|
|
|
|
... |
|
|
|
|
|
|
|
|
|
У цілому таблиця визначає дії МТ при всіх можливих конфигурациях і тим самим повністю задає поведінку МТ. Описати алгоритм у вигляді МТ - значить пред'явити таку таблицю.
На практиці частіше використовують скорочену таблицю. Скорочення полягають в наступному:
а) якщо стан машини після виконання команди не змінюється, то він другий раз вже не записується;
б) якщо команда записує в комірку ту саму букву, що й була записана там, то ця буква другий раз вже не записується.
Якщо заздалегідь відомо, що в процесі виконання програми не може з'явитись деяка конфігурація, тоді, щоб підкреслити це явно, в відповідній комірці таблиці малюється хрестик.
Наприклад:
Табличне представлення |
Скорочена таблиця |
||||||||||||||||||||||||
|
|
2.6. Правила виконання програми
До виконання програми потрібно проробити наступні попередні дії.
По-перше, треба записати на стрічку вхідне слово, до якого буде застосована програма. Вхідне слово - це кінцева послідовність символів, записаних у сусідніх комірках стрічки; усередині вхідного слова не повинно бути порожніх комірок, а зліва і справа від нього повинні бути тільки порожні комірки (зазначені в таблиці першим стовпцем). Порожнє вхідне слово означає, що всі комірки стрічки порожні.
По-друге, треба встановити
каретку в початковий стан
(зазначений в таблиці першим рядком)
і розмістити його під першим символом
вхідного слова:
-
a
b
b
Якщо вхідне слово порожнє, то каретка може вказувати на будь-яку комірку, тому що всі вони порожні.
Після цих попередніх дій починається виконання програми. У таблиці відшукується комірка на перетині першого рядка (тому що каретка перебуває в початковому стані ) і того стовпця, що відповідає першому символу вхідного слова, і виконується такт, записаний у цій комірці. В результаті каретка опиниться в новій конфігурації. Тепер такі ж дії повторюються, але вже для нової конфігурації: у таблиці відшукується комірка, що відповідає стану і символу цієї конфігурації, і виконується такт із цієї комірки. І так далі.
Коли завершується виконання
програми? Будемо позначати стан зупинки
через
.
Такт, що містить стан зупинки називається
тактом зупинки. Потрапивши в нього,
машина припиняє роботу.
Під k-тою
конфігурацією
будемо розуміти зображення стрічки
машини з інформацією, що склалася на
ній на початку k-того
такту з зазначенням того, яка саме
комірка розпізнається в цей такт і в
якому стані перебуває машина. Позначати
будемо наступним чином:
.
Така конфігурація відповідає такому
стану машини:
Нехай задана послідовність
конфігурацій К0 =>
К1 =>
К2 => ...
=>Кp
, де К0
- початкова конфігурація,
Кp
- кінцева конфігурація.
Така послідовність конфігурацій
називається протоколом.
Будемо говорити, що вхідне слово
переробляється
машиною в вихідне слово
,
якщо від слова
,
що знаходиться в початковому положенні,
машина після виконання кінцевого числа
команд приходить до слова
,
що знаходиться в кінцевому положенні,
тобто в положені зупинки.
В цілому можливі два результати роботи МТ над вхідним словом:
1) Перший результат - «гарний»: це коли в якийсь момент МТ зупиняється (попадає на такт зупинки). В такому випадку говорять, що МТ може бути застосована до заданого вхідного слова. А то слово, що на цей момент отримано на стрічці, вважається вихідним словом, тобто результатом роботи МТ, відповіддю.
В момент останова повинні бути виконані наступні обов'язкові умови:
- всередині вихідного слова не повинно бути порожніх комірок (хоча в процесі виконання програми всередині слова порожні комірки можуть бути, але в кінці їх вже не повинно залишитися);
- каретка зобов'язана зупинитись під одним із символів вихідного слова (під яким саме - не має значення), а якщо слово порожнє - під будь-якою коміркою стрічки.
2) Другий результат - «поганий»: це коли МТ зациклюється, ніколи не потрапляючи на такт зупинки (наприклад, каретка на кожному кроці переміщується вправо і не може зупинитись, тому що стрічка нескінченна). В цьому випадку говорять, що МТ не може бути застосована до заданого вхідного слова.
Відзначимо, що один і той самий алгоритм (програма МТ) може бути застосований до одних вхідних слів (тобто зупинятися) і бути непридатним до інших (тобто зациклюватись). Таким чином, застосовність або незастосовність залежить не тільки від самого алгоритму, але і від вхідного слова.
На яких вхідних словах алгоритм повинен зупинятися? На, так званих, гарних словах, тобто на таких, які відносятся до допустимих вхідних даних задачі, для яких задача є змістовною. Але на стрічці можуть бути записані будь-які вхідні слова, у тому числі й ті, для яких задача не має змісту; на таких словах поводження алгоритму не фіксується, він може зупинитись (при будь-якому результаті), а може і зациклитися.
