
- •Розділ 7 Основи теорії кодування План викладення матеріалу
- •7.1. Алфавітне й рівномірне кодування
- •7.2. Достатні умови однозначності декодування. Властивості роздільних кодів
- •7.3. Оптимальне кодування
- •7.4. Коди, стійкі до перешкод. Коди Хемінга
- •8.2. Алгебри булевих функцій
- •8.3. Спеціальні форми зображення булевих функцій в алгебрах Буля і Жегалкіна
- •8.3.1. Диз'юнктивні нормальні форми
- •8.3.2. Кон'юнктивні нормальні форми
- •8.3.3. Поліном Жегалкіна
- •8.4. Повнота і замкненість
- •8.4.1. Функціонально повні системи
- •8.4.2. Замкнені класи
- •8.4.4. Послаблена функціональна повнота
- •8.4.5. Передповні класи
- •8.5. Мінімізація булевих функцій
- •8.5.1. Основні результати
- •8.5.2. Методи побудови скороченої днф
- •8.5.3. Побудова тупикових днф
- •8.5.4. Властивості скороченої днф
- •8.5.5.Метод карт Карно побудови мінімальних днф
- •8.6. Реалізація булевих функцій схемами з функціональних елементів
- •Комп'ютерні проекти
- •Література
- •9.2. Формальні породжувальні граматики
- •9.3. Типи граматик (ієрархія Хомські)
- •9.4. Дерева виведення
- •9.5. Форми Бекуса-Наура
- •9.6. Скінченні автомати з виходом
- •9.7. Скінченні автомати без виходу
- •9.8. Подання мов
- •Комп'ютерні проекти
- •Література
- •Розділ 10
- •План викладення матеріалу
- •10.1. Основні вимоги до алгоритмів
- •10.2. Машини Тьюрінга
- •10.3. Обчислення числових функцій на машинах Тьюрінга
10.2. Машини Тьюрінга
Машина Тьюрінга - це математична модель пристрою, який породжує обчислювальні процеси. Використовується для теоретичного уточнення поняття алгоритму та його дослідження. Названа за ім'ям англійського математика А.Тьюрінга (A. Turing), який запровадив її 1936 р. У кожній машині Тьюрінга є три частини (рис. 10.1):
стрічка, поділена на комірки;
пристрій керування (ПК);
головка читання / запису (Г).
Рис. 10.1
З кожною машиною Тьюрінга пов'язані два скінченні алфавіти: алфавіт зовнішніх символів А і алфавіт внутрішніх станів Q={q0, q1, ..., qk}. З різними машинами Тьюрінга можуть пов'язуватись різні алфавіти.
Алфавіт зовнішніх символів А часто називають зовнішнім алфавітом, а його елементи - буквами. Один символ з А називають порожнім, зазвичай його позначають Λ. Всі інші букви з А, крім Λ, називають непорожніми. Комірку стрічки, у якій записано букву А, називають порожньою.
Машина Тьюрінга працює в часі, що вважають дискретним, і його моменти занумеровують 1, 2, З,... .У кожний момент часу стрічка містить скінченну кількість комірок. Головка пересувається поздовж стрічки; у кожний момент часу головка перебуває над певною коміркою стрічки. У такому разі кажуть, що головка зчитує букву, яка записана в цій комірці. У наступний момент часу головка залишається над цією ж коміркою (що позначають H), або пересувається на одну комірку вправо (що позначають П), або пересувається на одну комірку вліво (що позначають Л). Якщо у певний момент t головка перебуває над крайньою коміркою і зсувається на відсутню комірку, то автоматично прибудовується нова порожня (тобто з порожньою буквою Λ) комірка, над якою у момент часу t+1 перебуватиме головка. Отже, стрічка є потенціально нескінченною в обидва боки, тобто до неї завжди як зліва, так і справа можуть бути додані нові комірки.
Алфавіт внутрішніх станів Q ={q0, q1, ..., qk} - це внутрішня пам'ять. Внутрішня пам'ять скінченна (на відміну від нескінченної зовнішньої пам’яті на стрічці). Елемент q0 називають заключним внутрішнім станом, а елемент ^Я початковим внутрішнім станом. Пересування головки поздовж стрічки залежить від букви, яка зчитується, і від внутрішнього стану машини.
Пристрій керування в кожний момент часу t, залежно від букви, яка зчитується у цей момент на стрічці, і внутрішнього стану машини, виконує такі дії:
змінює букву аi , яка зчитується в момент t на стрічці на нову букву аj (зокрема, може бути aj=ai);
пересуває головку в одному із напрямів Н, П, Л;
змінює наявний у момент t внутрішній стан машини qi на новий стан щ у якому машина буде в момент часу t+1 (зокрема, може бути qj=qi).
Таку дію пристрою керування називають командою, і її записують так:
qiai→ajDqj ,
де qi — внутрішній стан машини в даний момент; аi - буква на стрічці, яка зчитується в цей момент; аj - буква, на яку змінюється буква аi (може бути аj=аi); символ D є або Н, або П, або Л і вказує напрямок пересування головки; qj - внутрішній стан машини у наступний момент часу (може бути qj=qi).
Вирази qiai та ajDqj називають, відповідно, лівою та правою частинами команди. У лівій частині жодної команди q0 не зустрічається. Всіх команд, у яких ліві частини попарно різні, скінченна кількість (оскільки множини Q\{q0} та А скінченні), і їх сукупність називають програмою машини. Зазначимо, що жодні дві команди не можуть мати однакові ліві частини.
Виконання однієї команди називають кроком. Обчислення (або робота) машини Тьюрінга - це послідовність кроків одного за другим без пропусків, починаючи з першого. Робота машини Тьюрінга повністю визначена заданням у перший (тобто початковий) момент:
слова на стрічці, тобто послідовності букв, записаних у комірках стрічки (слово одержують читанням цих символів у комірках стрічки зліва направо);
положення головки Г;
внутрішнього стану машини.
Сукупність цих трьох умов (у даний момент часу t) називають конфігурацією (у даний момент часу t). Зазвичай у початковий момент внутрішнім станом машини є q1 а головка перебуває над першою зліва коміркою стрічки.
Отже, у початковий момент конфігурація така: на стрічці, яка складається із деякої кількості комірок (не менше однієї), у кожній комірці записана одна з букв зовнішнього алфавіту А, головка перебуває над першою зліва коміркою стрічки і внутрішнім станом машини є q1. Наприклад, якщо в початковий момент на стрічці записано слово a1Λa2a1a1, то початкова конфігурація така:
-
q1
Λ
a2
a1
a1
q1
(біля комірки, над якою перебуває головка, вказано внутрішній стан машини).
Отже, програма і початкова конфігурація повністю визначають роботу машини над словом, яке є на стрічці у початковій конфігурації. Тому машину Тьюрінга вважають заданою, якщо відома її програма.
Якщо в роботі машини Тьюрінга в деякий момент t виконається команда, права частина котрої містить q0, то в такий момент роботу машини вважають завершеною і кажуть, що машина є застосовною до слова на стрічці у початковій конфігурації. Справді, q1 не зустрічається у лівій частині жодної команди, цим і пояснюється назва q0 - "заключний стан". Результатом роботи машини у такому випадку вважають слово, яке буде записане на стрічці в заключній конфігурації, тобто в конфігурації з внутрішнім станом q0.
Якщо ж у роботі машини в жодний момент часу не зустрічається заключний стан, то процес обчислень буде нескінченним. У такому випадку кажуть, що машина є незастосовною до слова на стрічці у початковій конфігурації.
Зазначимо, що q0∈Q для кожної машини Тьюрінга.
Приклад 10.1. Побудуємо машину Тьюрінга T1, яка застосовна до всіх слів в алфавіті {a, b} і довільне слово х1х2...хп, де хi∈{а, b}, i=1,..., n, перетворює у слово x2...хnх1.
Як зовнішній алфавіт машини візьмемо множину А={Λ, а, b}, а команди визначимо так:
Команда
q1a→ΛПq2
q1b→ΛПq3
|
Коментар
Перша буква а запам'ятовується переходом у стан q2 і стирається. Перша буква b запам'ятовується переходом у стан q3 і стирається.
Проходження головки через слово х2...хn і запис у його кінці букви х1=а.
Проходження головки через слово х2...хn і запис у його кінці букви х1=b. |
Ці команди можна записати у вигляді таблиці, яку називають ункціональною схемою Тьюрінга (табл. 10.1).
Таблиця 10.1
-
Λ
a
b
q1
-
ΛП q2
ΛПq3
q2
aНq0
aПq2
bПq2
q3
bНq0
aПq3
bПq3
У таблиці прочерком відзначена неістотна команда, тобто команда, яка не зустрінеться під час роботи цієї машини.
Розглянемо роботу машини Т1 над словом abb; конфігурації, які у цьому разі виникають, зображено на рис. 10.2. ▲
a |
b |
b |
Λ |
b |
b |
q1 q2
Λ |
b |
b |
Λ |
b |
b |
Λ |
q2 q2
Λ |
b |
b |
a |
q0
Рис. 10.2
Приклад 10.2. Побудуємо машину Тьюрінга Т2 яка є застосовною до всіх слів в алфавіті {а,b} і знімає копію слова на стрічці, тобто зі слова х1...хп у початковій конфігурації отримаємо слово х1...хп Λ х1...хп у заключній конфігурації.
Цю машину можна побудувати так. Нехай задано деяке слово в алфавіті {а, b}, що складається з п букв (n≥1). Робота машини буде складатись з n циклів. Для i≤n на початок і-го циклу конфігурацію зображено нарис. 10.3.
-
x1
x2
…
xi-1
xi
xi+1
…
xn
Λ
x1
x2
…
xi-1
q1
Рис. 10.3
Отже, скопійовано (i-l) букв заданого слова і головка зчитує букву xi. Черговий цикл здійснюватиметься в три етапи.
Перши етап. Запам'ятовування букви хi (при цьому вона позначається, тобто фактично замінюється іншою буквою) і пересування головки вправо.
Другий етап. Пошук правої крайньої порожньої комірки, в яку записується хi.
Третій етап. Повернення головки вліво до позначеної букви, стирання позначки (тобто відновлення букви хi) і пересування головки на одну клітку вправо.
Перший етап реалізують такі команди.
Команда |
Коментар |
|
а' - позначена буква a, q2 - стан запам'ятовування букви а. |
q1b→b'Пq3 |
b' - позначена буква b, q2 - стан запам'ятовування букви b. |
Другий етап.
Команда |
Коментар |
|
Проходження залишку слова у стані q2. |
|
Проходження залишку слова у стані q3. |
|
Проходження головки через Λ між словами; q4- копіюватиметься буква а; q5 - копіюватиметься буква b. |
|
Проходження початкової частини копії слова. |
|
Запис букви, яка копіюється. |
Третій етап.
Команда |
Коментар |
|
Рух головки вліво до позначеної букви, стирання позначки, пересування на одну клітку вправо з'переходом у початковий стан q1. Машина готова до виконання чергового циклу копіювання букви. |
q1Λ→ΛΗq0 |
Команда зупинки, копію слова побудовано. |
Таблиця 10.2
-
Λ
a
b
a'
b'
q1
ΛΗq0
a'Пq2
b'Пq3
-
-
q2
ΛПq4
aПq2
bПq2
-
-
q3
ΛПq5
aПq3
bПq3
-
-
q4
аЛq6
aПq4
bПq4
-
q5
bЛq6
aПq5
bПq5
-
-
q6
ΛЛq6
aЛq6
bЛq6
aПq1
bПq1
Зовнішнім алфавітом машини Т2 є множина A={Λ, а, b, а', b'}, множина внутрішніх станів Q={q0, q1, …, q6} Нарешті, запишемо команди у вигляді функціональної схеми Тьюрінга (табл. 10.2).
Звернемо увагу, що алфавіт зовнішніх символів А в цьому прикладі окрім порожньої букви Λ та букв аib,у яких записують слово для копіювання, містить ще додаткові букви а', b' які використовують у проміжних обчисленнях. ▲