- •2.3. Арифметичні операції в різних системах числення.
- •3.8. Розв'язати системи рівнянь з регулярними коефіцієнтами.
- •Має два виводи
- •1.4. Скінченний автомат а заданий графом:
- •4.2. Приклад. Побудувати дса, еквівалентний до нса
- •Лекція 5. Скінченні автомати і регулярні мови. Лема про роздування.
- •6.3. Приклад. Побудувати мп-автомат, який розпізнає мову
- •(Д, аЬЬа, е) ь (д, ьЬа, а) ь (д, Ьа, Ьа) ь (р, Ьа, Ьа) ь (р, а, а) ь (р, е, е); (д, аЬЬа, е) ь (д, ьЬа, а) ь (д, Ьа, Ьа) ь (д, а, ьЬа) ь (р, а, ьЬа);
- •Зліва записуються всі стани, крім кінцевого ду, з множини станів
- •Проаналізуйте роботу мт на наступних вхідних словах:
- •3.7. Приклад. Побудуємо машину Тюрінґа, яка переводить натуральні числа з унарної системи числення в десяткову.
- •Лекція 4. Частково рекурсивні та примітивно рекурсивні функції
- •Приклад. Застосувати кожну з підстановок з попереднього прикладу до слова аЬЬасЬа максимальну можливу кількісить разів.
- •5.3. Приклад. Застосувати кожен з нам
- •8.7. Оцінити часову та ємнісну складність мт, заданої графом:
3.7. Приклад. Побудуємо машину Тюрінґа, яка переводить натуральні числа з унарної системи числення в десяткову.
Ідея розв'язання задачі така. Спершу зліва від унарного запису числа, перебуваючи в конфігурації (5, | ... |), в станах д1 і д2 дописуємо допоміжний знак " = " і цифру 0 та переходимо в стан дз. В результаті цього отримуємо конфігурацію (дз, 0=| ... |). Далі, від унарного числа, розміщеного праворуч, віднімаємо одиницю (витираємо одну паличку) в стані д4, переміщуємося ліворуч та в стані до десяткового числа додаємо одиницю, діючи за правилами десяткової арифметики. Після цього знову повертаємося до унарного числа праворуч і повторюємо циклічно всі операції доти, доки всі палички не будуть витерті. Наостанок, востаннє зсуваємося праворуч, в стані витираємо знак " = " і зупиняємося. Граф МТ матиме вигляд:
п/п,=/
= ,|/|;
П, п=0,9
3.1. Композиція МТ. Нехай маємо дві машини Тюрінґа МТ1 = ($1 ,А1 = X1 Ц У1 Ц Б1,51 ,з0,зп) і МТ2 = (^,А2 = X2 Ц У2 Ц Р2, 52, д0, дт), причому вважаємо, що вихідний алфавіт першої машини співпадає з вхідним алфавітом другої, тобто У1 = X2. Нехай ці МТ обчислюють словесні функції /1 : )* ^ (У1 )* та /2 : (X2)* ^ (У2)* відповідно. Побудуємо МТ, яка обчислює їх композицію /2 о /1. Нагадаємо, що композицією функцій /1 та /2 називають таку функцію / = /2 о /1, що для кожного х з області визначення функіції /1 значення /(х) = /2 (/1 (х)). При цьому вимагається, щоб функція /2 була визначена на значенні /1 (х) .
Машина Тюрінґа МТ = (Я, А = X Ц У Ц Б, 5, з, ) для функції / = /2 о /1 будується наступним чином. Вразі потреби, стани машини МТ2 перепозначаємо так, щоб вони відрізнялися від станів машини МТ1. Вхідний алфавіт X співпадає із вхідним алфавітом X1 машини МТ1, вихідний алфавіт У - з вихідним алфавітом У2 машини МТ2, а допоміжний алфавіт Б = X2 Ц Б1 Ц Б2. Початковим станом МТ є початковий стан з0 машини МТ1, а кінцевим - кінцевий дт машини МТ2. Програми роботи 51 і 52 об'єднуємо і записуємо в одну таблицю. Доозначивши, що в стані зп шукана МТ переміщується ліворуч до початку слова і потім переходить в стан д0.
Нехай ш Є (X;!)* і розглянемо початкову конфігурацію (з,ш). Оскільки з = з0, то на початку роботи МТ працює так як МТ1 і якщо МТ1 застосовна до слова ш, то на деякому кроці буде одержана конфігурація (зп, /1 (ш)). Далі, в стані зп головка машини МТ
переміститься ліворуч під першу букву слова /і (ш) і керуючий пристрій перейде в стан д0, тобто одержимо конфігурацію (д0, /і(ш)). Якщо МТ2 застосовна до слова /і (ш), то на деякому кроці отримаємо конфігурацію (дт, /2(/і(ш))), яка є заключною для МТ, оскільки Яї = Ят. Таким чином, якщо МТі застосовна до ш і МТ2 застосовна до /і (ш), то і МТ застосовна до ш. Машина МТ називається композицією машин МТі та МТ2 і позначається через МТ2 о МТі.
Означення композиції залишаються без змін, якщо МТі та МТ2 обчислюють функції кількох змінних. Важливо лише, щоб дані для МТ2 були у зумовленому вигляді підготовлені машиною МТі.
3.8. Приклад. Побудуємо МТ, яка обчислює функцію / : N0 х N ^ N /(п,т) = НСД(п, т) і видає результат в десятковій системі числення.
Шукана МТ є композицією МТ, побудованих в прикладах 3.6 та 3.7. її граф має наступний вигляд.
|/|;Д а/а,Ь/Ь;Д а/а,Ь/Ь;Ь
3.2. Теза Тюрінґа-Черча. Аналізуючи попередні приклади, у читача складається враження, що процес, який відбувається на МТ, є сповільненим переглядом процесу обчислення, який виконується людиною відповідно до деякого алгоритму. Разом з тим, розглянуті приклади наштовхують на думку, що з допомогою МТ можна задавати і інші відомі нам алгоритми. Природньо виникає питання: чи спосіб задання алгоритмів з допомогою МТ є універсальним в тому сенсі, що будь-який алгоритм можна подати таким чином? На це питання сучасна теорія алгоритмів дає відповідь з допомогою наступної гіпотези:
Теза Тюрінґа-Черча. Будь-який алгоритм можна реалізувати на відповідній машині Тюрінґа.
Перш за все, звернемо увагу на наступну характерну особливість даної гіпотези. В її формулюванні мова йде, з одного боку, про загальне поняття алгоритму, яке не є точним математичним поняттям; з другого боку, в цьому ж формулюванні мова йде про таке точне математичне поняття як машина Тюрінґа. Тому не може йти і мови про доведення даної гіпотези подібно до того як доводяться теореми в математиці. Значення гіпотези полягає саме в тому, що вона уточнює загальне, але розпливчасте поняття "будь-якого алгоритму" з допомогою цілком точного математичного поняття МТ. Таким чином, теорія алгоритмів оголошує об'єктом своїх досліджень машини Тюрінґа. Тепер вже стають коректними питання можливості чи неможливості побудови алгоритму для задачі того чи іншого типу.
Справидливість гіпотези підтверджується практикою, яка, як відомо з філософії, є єдиним критерієм істини. Всі відомі алгоритми, які були придумані впродовж багатьох тисячоліть історії математики, можуть бути задані з допомогою МТ.
Вправи до лекції 3.
Побудувати машину Тюрінґа, яка обчислює числову функцію / : N0 — N0, аргументи якої задані в трійковій системі числення.
б) /(х) = 0;
) /( ) /0, х = 0
а) /(х) = <
|1, х = 0;
б) /(х) = х + 2;
в) /(х) = х - 2;
г) /(х) = 2 • х +1;
д) /(х) = 9ю • х + 2.
Побудувати машину Тюрінґа, яка обчислює числову функцію Р4 : (Ж0)4 — N0, Р4(х1 ,х2,хз,х4) = хі, де і = 1, 2, 3, 4 (вважаємо, що аргументи хк задані в унарній системі числення).
3.3. Побудувати машину Тюрінґа, яка обчислює частково визначену числову функцію / : (N0 )2 — N0, аргументи якої задані в унарній системі числення.
ч ,/ ч /х - ^ х > У а) /(х,У) = <п ,
0 х < у;
б) /ху)= х —у
в) /(х,у) = хУ;
г) /(х,У) = тіп(х,у};
д) /(х,У) = тах(х,у};
е) /(х,у) = [§1;
є) /(х,У) = х -у[X].
Побудувати машину Тюрінґа, яка обчислює частково визначену числову функцію / : N0 ^ N0, аргументи якої задані в унарній системі числення.
IX, х - парне
а) /(х) = < 2
І |, х — непарне;
б) /(х) = [§ 1.
Побудувати машину Тюрінґа, яка обчислює частково визначену числову функцію / : (N0 )2 ^ N0.
а) /(х,у) = х + у;
б) /(х,у) = х — у.
Важаємо, що аргумент х заданий в четвірковій системі числення, а у - в трійковій системі. Результат отримати в четвірковій системі числення.
Доведіть, що функція
І 1, якщо х ділиться на р
/р (х) = <п
І 0, якщо х не ділиться на р
обчислюється деякою МТ.
Побудувати машину Тюрінґа, яка обчислює словесну функцію / : {а,ЬУ ^{а,ЬУ.
а) /(ш) = шаЬ;
б) /(ш) = шн;
в) /(ш) = шш;
г) /(ш) = шшн.
Побудувати машину Тюрінґа, яка переводить натуральні числа з трійкової системи числення в унарну.
Побудувати машину Тюрінґа, яка переводить натуральні числа з четвіркової системи числення в двійкову.
Побудувати машину Тюрінґа, яка переводить натуральні числа з двійкової системи числення в четвіркову (підказка: врахуйте, що в двійковому числі може бути непарна кількість букв).
Скориставшись композицією МТ, побудуйте машину Тюрінґа, яка за записом числа в унарній системі числення визначає, чи є це число степенем 3 (1,3, 9, 27,...). Відповідь: 1 якщо так, 0 - в протилежному випадку.