Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теорія алгоритмів Лекції.docx
Скачиваний:
41
Добавлен:
20.11.2019
Размер:
3.94 Mб
Скачать

Лекція 4 Композиції машин т'юрінга

З математичної точки зору машина Т'юрінга - просто певний алгоритм для переробки слів.

Операції композиції, виконувані над алгоритмами, дозволяють утворювати нові, більше складні алгоритми з раніше відомих простих алгоритмів. Оскільки машина Т'юрінга - алгоритм, то операції композиції застосовні й до машин Т'юрінга. Розглянемо основні з них, а саме: добуток, зведення в ступінь, ітерацію.

Нехай задані машини Т'юрінга T1 і Т2, що мають якийсь загальний зовнішній алфавіт А = {а0, a1, ..., аm} і внутрішні алфавіти Q1 = {q0, q1, .., qn} і відповідно Q2 = {q’0, q’1 , ..., q't). Композитом, або добутком, машини Т1 на машину Т2 будемо називати машину Т с тим же зовнішнім алфавітом А = 0, a1, ..., аm}, внутрішнім алфавітом Q= {q0, q1, ..., qn, qn+1, ..., qn+t } і програмою, що виходить наступним чином. У всіх командах Т1, що містять заключний символ q0, заміняємо його на символ qn+i. Всі інші символи в командах Т1 залишаємо незмінними. У командах Т2, навпроти, символ q0 залишаємо незмінним, але зате кожний з інших символів qj1(j = 1, 2, ..., t) заміняємо символом qn+j. Сукупність всіх команд T1 і Т2, змінених зазначеним способом, і буде, програмою композита або добутку машин T1 и T2.

Добуток машини Т1 на машину Т2 позначається через Т = Т1 . T2, або Т = Ti * T2.

Таким чином, машина Т є добуток машин T1 і Т2, якщо послідовна робота цих двох машин еквівалентна роботі однієї машини T.

Таблиця відповідності такої машини будується за наступним правилом: якщо керуючий пристрій машин T1 і Т2 мають k1 й k2 станів відповідно (без урахування заключних станів), то керуючий пристрій машини Т має k1 + k2 станів, причому початковим станом машини Т є q11 (початковий стан T1), а заключним — q02 (заключний стан машини Т2). Таблиця відповідності машини Т складається із двох частин: верхня описує машину T1, нижня — машину T2. При цьому заключний стан машини T1 ототожнюється з початковим станом машини Т2.

Нехай машина T1 задана таблицею відповідності:

Ця машина відшукує найближчу ліворуч групу одиниць після групи нулів.

Машина Т2 задана таблицею відповідності:

Машина стирає всі одиниці ліворуч, якщо вони є, до найближчого ліворуч нуля.

У вихідному стані головки, що зчитують, машин T1 і Т2 перебувають у крайньої правої заповненої комірки. Тоді, машина T, що є їхнім добутком, буде мати таблицю з 2+1=3 станами, q0 = q02 — заключний стан машини Т2:

Якщо для машини Т застосувати нову нумерацію станів, то таблиця відповідності прийме вид:

Машина Т відшукує найближчу групу одиниць і стирає їх.

У такий же спосіб визначається операція зведення в ступінь: п-й ступенем машини Т називається добуток T... Т с п співмножниками.

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

Так, наприклад, якщо машина Т1 має два заключних стани, то добуток Т1 й T2 будемо позначати через

T=T1 або T=T1

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

Машина Т у цьому випадку також має два заключних стани: перше — один із заключних станів машини T1, друге — заключний стан T2.

У прикладі

T=T1

множення провадиться незалежно по двох каналах, пов'язаним з першими й другим заключними станами машини T1.

Операція ітерації застосовна до однієї машини.

Суть цієї операції полягає в наступному. Нехай машина Т1 має кілька заключних станів. Виберемо яке-небудь r-тий заключний стан й ототожнимо його в основній таблиці машини T1 з її початковим станом. Отримана машина позначається через

T=T1

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

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

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

Наприклад, запис

T=

означає, що заключний стан Т3 ототожнюється з початковим станом T1, а заключний стан T5 ототожнюється з початковим станом T2.

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

Нехай вихідними є машина T2, розглянута в композиції добутку машин, і машини T3, Т4 і Т5, що мають наступні таблиці відповідності.

Машина Т3:

Машина відшукує першу після групи нулів групу одиниць праворуч від початкової комірки й зупиняється біля останньої із цих одиниць.

Машина T4:

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

Машина Т5:

Маючи два заключних стани — q0' й q0" машина «розпізнає», напроти якого осередку перебуває зчитуюча голівка, і залежно від цього переходить у перший або другий заключний стан.

Тоді машина, обумовлена формулою

Т= T5

має наступну таблицю відповідності:

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

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

Машина Т6:

Якщо в початковий момент машина перебуває в стані q1 і головка, що зчитує, перебуває над коміркою, у якій записа

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

Машина Т7:

Ця машина «стирає» одиницю в тій комірці, де перебуває голівка, якщо комірка не порожня, пересуває стрічку вправо на одну комірку і зупиняється. Якщо голівка в початковий момент часу перебувала над порожньою коміркою, то стрічка пересувається вправо доти, поки не опиниться над коміркою, що містить «I», і працює так, як описано вище.

Машина Т8:

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

Машина Т9 має два заключних стани q0'— і q0":

Вона заносить одиницю ліворуч від групи одиниць через одну порожню комірку.

Перебуваючи в початковому стані завжди проти заповненої комірки, машина виявляє, що записано в сусідній комірці ліворуч: 0 або 1. Залежно від цього вона переходить у стан q0' або q0" і зупиняється у початковійкомірці.

Мишина Т10:

Машина T11:

Починаючи роботу із заповненої комірки, машина стирає в ній одиницю й «переносить» її в найближчу порожню комірку ліворуч.

Машина T12:

Машина стирає одну одиницю в комірці, розташованій правіше початкової (якщо там є «I»).

Розглянемо приклад побудови машини Р з машин T3, T5, Tб, Т11, T12 за допомогою композицій ітерації й добутки по наступній формулі:

P= 11T5

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

До такого ж результату може привести машина з більш простою таблицею відповідності:

С

Машина Rт строится из машин T1, Т3 T6, Т7, Т8, Т9, Ті0 по формуле

где т — степень соответствующей машины.

В частности,

приймаючи в початковий момент часу систему чисел x1, ..., хт у стандартному положенні, машина Rт друкує праворуч від подання чисел x1, ..., хm перше із цих чисел (тобто x1) і зупиняється, сприймаючи в стандартному положенні систему m + 1 чисел (х1, ..., xт, x1). Якщо ж машина Rm сприймає в початковий момент часу в стандартному положенні систему чисел х1, ..., хп, де п> т, то вона віддруковує праворуч від цієї системи чисел число хn-т + 1 і зупиниться, сприймаючи систему (x1, x2, …, xn, xn-m+1)...

Легко можна переконатися, що т-я ступінь машини Rm — Rmm копіює систему чисел (х1, ..., xm), сприйняту в стандартному положенні праворуч так, що результатом роботи буде система 2т чисел (х1,…, хт, х1, ..., хт), розділених одним проміжком.

Якщо початкова конфігурація 0011110000, те, заключна - 001111011110000.

Машина Sm будується по формулі:

Sm=T6 T7 T7

Машина Sm робить майже те ж, що й машина Rmm, тобто копіює систему чисел 1, …, хт) праворуч, але не з одним проміжком, а із двома (тобто між числами хm й x1 розташовані дві порожні комірки).

Нехай є система чисел 1, x2), де x1 = 2, х2 = 4. Тоді якщо початкова конфігурація була 011011110000, то скінченна конфігурація буде мати вигляд: 01101111001101111000.

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

Дамо визначення поняттю обчислення на машині Т'юрінга. Нехай задана машина T і нехай у початковий момент часу виконані наступні умови:

  1. машина Т перебуває в початковому стані q1;

  2. на стрічці представлена система п чисел 1, …, хп), яку голівка сприймає в стандартному положенні;

3) всі осередки, розташовані правіше тієї, напроти якої перебуває голівка, порожні.

Будемо вважати, що T обчислює функцію x=φ(x1, …, xn) від п змінних, якщо які б не були числа х1,…,хп існує такий момент часу, у який:

1) машина Т досягає заключного стану q0;

  1. на стрічці буде представлена система п + 1 чисел х1, … хп, х, де х = φ (х1, хп), що голівка машини сприймає в стандартному положенні;

  2. всі комірки, розташовані правіше тієї, напроти якої перебуває голівка, порожні.

Якщо ж для якої-небудь системи чисел (х1, ..., хп) машина ніколи не зупиняється або зупиняється, але при цьому не виконано 2 або 3 умова, то така машина не обчислює значення функції φ при цих значеннях аргументів.

Розглянемо приклад. Нехай п = 3, φ (x1, х2, х3) = х1 + x2 + х3. Тоді при x1 = 3, x2 = 3, x3 = 4 початкова конфігурація на стрічці буде мати вигляд 00 111 0 11 0 1111 0, а заключна ситуація запишеться так 00 111 0 11 0 1111 0 1111111110. Зчитуюча голівка, при цьому розташована над крайньою правою одиницею.

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

Функцію безпосереднього проходження S(x) =х + 1 обчислює машина Т = R1T6. Дійсно, сприймаючи в початковий момент число х у стандартному положенні, машина запише S(x) = х + 1 правіше числа х і зупиниться в стандартному положенні (х, х + 1), тобто обчислить функцію безпосереднього проходження.

Константну функцію Оп1,…, хп) = q обчислює машина Т = Т10Т6q, що правіше системи чисел (x1, ..., хп) записує q і зупиняється.

Тотожну функцію Iin(x1,…, xп) = xi обчислює машина Т=Rn-i+1. Дійсно, ця машина правіше системи чисел 1, ..., хп) записує (п — i + 1) -е число, тобто Хi.

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

Має місце наступна теорема Т'юрінга (1). Для кожної частково рекурсивної словникової функції f(x1, ...,xg), певної в деякому алфавіті а1 , ..., аm існує машина Т'юрінга із символами a0, a1, ..., аm і підходящими внутрішніми станами, що обчислює функцію f(x1, ..., xg).

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

1. Побудувати машини Т'юрінга, що обчислюють найпростіші арифметичні функції.

2. Маючи машини Т'юрінга, що обчислюють функції f, f1, …, fs, побудувати машину, що обчислює суперпозицію цих функцій.

3. Маючи машини Т'юрінга, що обчислюють якісь функції g й h побудувати машину, що обчислює функцію, що виникає з g й h примітивною рекурсією.

4. Побудувати машину Т'юрінга, що здійснює обіг функції.

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

Вправи:

1. Машина Т'юрінга задана зовнішнім алфавітом А = {0, 1,*}, внутрішнім алфавітом Q = {q0, q1, q2, q3}, де 0 -порожній символ, а q3заключний стан. Програма машини Т'юрінга задана у вигляді наступної таблиці відповідності:

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

q0

2. Задано машину Т'юрінга:

А = {0,1}, Q = {q0, q1, q2, q3, q4, q5, q6, q7, q8, q9, q10, q11, q12},

де 0 — порожній символ, а q12— заключний стан.

Програма задана у вигляді:

Записати алгоритм додавання чисел, заданих на стрічці у вигляді

1

1

1

1

1

0

1

1

1

Машина починає перегляд із самої лівої одиниці, перебуваючи в стані q0.

Результат підсумовування повинен бути представлений у вигляді

1

1

1

1

1

0

1

1

1

0

1

1

1

1

1

1

1

1

3. Машина Т'юрінга задана наступною таблицею:

Записати алгоритм повторного додавання чисел тип, заданих у вигляді

Процес додавання полягає в наступному: ліве число т додається до першого числа п, потім т додається до отриманої суми п + т и т.д.

Перегляд стрічки починається із самої лівої одиниці. Машина перебуває в стані q0.

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

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

q3

1

1

1

1

1

*

1

1

Результат множення повинен бути представлений у вигляді:

Записати алгоритм із вказівкою відповідних конфігурацій.

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

Записати алгоритм із вказівкою для кожної команди відповідної конфігурації.

  1. Скласти таблицю відповідності для машини Т'юрінга, що виконує алгоритм віднімання, записати алгоритм і відповідній кожній команді конфігурації.

  2. Скласти таблицю відповідності для машини Т'юрінга, що виконує алгоритм ділення, записати алгоритм із відповідними конфігураціями.

9. Користуючись поняттям машини Поста, записати алгоритми:

а) додавання двох чисел;

б) вирахування двох чисел;

в) множення двох чисел;

г) ділення одного числа на інше.

10. Машина Т'юрінга задана наступною таблицею відповідності:

Записати алгоритм лічильника одиниць із вказівкою відповідних конфігурацій.

11. Скласти таблицю відповідності для машини Т'юрінга, що виконує алгоритми додавання й віднімання. Записати алгоритм одного приклада із вказівкою конфігурацій, що відповідають кожній команді.

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