Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Музичко М.В. Курсова робота(Теорія алгоритмів).doc
Скачиваний:
15
Добавлен:
26.11.2018
Размер:
636.93 Кб
Скачать

Міністерство культури і туризму України

Київський національний університет культури і мистецтв

Факультет менеджменту та економіки

Кафедра комп’ютерних наук

Курсова робота

З дисципліни «Теорія алгоритмів»

На тему <<Машина Тюрінга для опису алгоритмів >>

Виконав:

Студент 2 курсу групи КН-20

Музичко .М.В

Перевірила:

Ткаченко О.І.

Кан. фіз. мат. Наук, доцент

Київ-2011

ЗМІСТ

СПИСОК СКОРОЧЕНЬ

МТ-(машина Тюрінга).

Q - осередок зберігає символ стану, а Р - осередок - символ зсуву.

ВСТУП

РОЗДІЛ I

ІСТОРІЯ РОЗВИТКУ МАШИНИ ТЮРІНГА ТА ПРИНЦИП ЇЇ ВИКОРИСТАННЯ

  1. Машина Тюрінга — математичне поняття, введене для формального уточнення інтуїтивного поняття алгоритму. Названа на честь англійського математика Алана Тюрінга, який запропонував це поняття у 1936. Аналогічну конструкцію машини згодом і незалежно від Тюрінга ввів американський математик Еміль Пост.

Основна ідея, що лежить в основі машини Тюрінга, дуже проста.

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

  1. Історія виникнення Машини Тюрінга,

Формальні визначення алгоритму з'явилися в тридцятих-сорокових роках 20 століття. Одним із перших було визначення англійського математика Алана Тюрінга, який у 1936 році описав схему деякої гіпотетичної (абстрактної) машини і запропонував називати алгоритмами те, що вміє робити така машина. При цьому визначенні, якщо щось не може бути зроблено машиною Тюрінга, це вже не алгоритм. Інакше кажучи, Тюрінг формалізував правила виконання дій за допомогою опису роботи деякої конструкції.

  1. Визначення,

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

Нарешті, є голівка, яка у кожен даний момент часу знаходиться на одній із комірок стрічки. Машина діє не безупинно, а лише у дискретні моменти часу. Якщо у якийсь момент t голівка сприймає комірку (тобто знаходиться на комірці), що містить символ Si, і машина знаходиться у внутрішньому стані qj, то дія машини визначена однією із чотирьох дій,

  1. голівка затирає символ Si, і записує у тій же комірці новий символ Sk,

  2. голівка пересувається в сусідню ліву комірку,

  3. голівка пересувається в сусідню праву комірку,

  4. машина зупиняється.

У випадках (1)-(3) машина переходить у новий внутрішній стан qr, і готова знову до дії у наступний момент t + 1. Припустимо, що символ S0 представляє порожню комірку, і отже, голівка завжди сприймає деякий символ.

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

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

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

  1. Можливості машини Тюрінга,

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

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

Реалізованість таких композицій доводиться у загальному вигляді, незалежно від особливостей конкретних алгоритмів A та B. Доведення полягає в тому, що вказується засіб побудови з програм A та B програми потрібної композиції. Нехай, наприклад, потрібно побудувати машину , еквівалентну послідовному виконанню алгоритмів A та B. Поки виконується алгоритм A, у програмі

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

Аналогічно конструюють й інші композиції машин Тюрінга; щораз будуються загальні правила: що на що змінювати у вихідних програмах.

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

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

усе, що реалізовано в одній з цих конструкцій, можна зробити і в інших

Ці твердження доводяться строго, тому що в них мова йде вже про тотожність формальних схем.

Лямбда-числення, або λ-числення — формальна система, що використовується в теоретичній кібернетиці для дослідження визначення функції, застосування функції, та рекурсії. Це числення було запропоноване Алонсо Черчем та Стівеном Кліні в 1930-ті роки, як частина більшої спроби розробити базис математики на основі функцій, а не множин (задля уникнення таких перешкод, як Парадокс Рассела). Однак, Парадокс Кліні-Россера демонструє, що лямбда числення не здатне уникнути теоретико-множинних парадоксів. Не зважаючи на це, лямбда числення виявилось зручним інструментом в дослідженні обчислюваності функцій, та лягло в основу парадигми функціонального програмування. Лямбда числення може розглядатись як ідеалізована, мінімалістича мова програмування, в цьому сенсі лямбда числення подібне до машини Тюринга, іншої мінімалістичної абстракції, здатної визначати будь-який алгоритм. Відмінність між ними полягає в тому, що лямбда числення відповідає функціональній парадигмі визначення алгоритмів, а машина Тюринга, натомість — імперативній. Тобто, машина Тюринга має певний «стан» — перелік символів, що можуть змінюватись із кожною наступною інструкцією. На відміну від цього, лямбда числення уникає станів, воно має справу з функціями, котрі отримують значення параметрів та повертають результати обчислень (можливо, інші функції), але не спричиняють до зміни вхідних даних (сталість).

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

Вони не такі складні, як здаються на перший погляд. Просто треба трохи звикнути до префіксної форми запису. Більше немає ні інфіксних (), ні постфіксних (x2) операцій. Крім того, аргументи функцій просто записуються в список після функції, розділені пропуском. Тому, всюди де математики пишуть sin(x) в лямбда-численні пишуть sin x (хоча математики самі часто грішать опусканням дужок. Програмісти в цьому плані культурніші). Так само замість пишуть , а замість x2 - .

РОЗДІЛ I I

СТВОРЕННЯ МАШИНИ ТЮРІНГА

Побудувати МТ для опису алгоритмів арифметичних дій (віднімання) в шістнадцятковій системі числення.

Арифметичні операції у всіх позиційних системах обчислення

виконуються за одними і тими ж правилами:

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

стає рівним або завбільшки основи;

- складання багаторозрядних чисел відбувається з урахуванням можливих

перенесень з молодших розрядів в старші;

- віднімання багаторозрядних чисел відбувається з урахуванням

можливих заїмок в старших розрядах;

- множення багаторозрядних чисел відбувається з послідовним

множенням множеного на чергову цифру множника;

- перенесення в наступний розряд при складанні і заїмка із старшого

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

- для проведення арифметичних операцій над числами, представленими в

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

Складання

В основі складання двійкової системи обчислення лежить таблиця

складання однорозрядних двійкових чисел:

0 + 0 = 00

0 + 1 = 01

1 + 0 = 01

1 + 1 = 10

Як приклад складемо в стовпчик двійкові числа 1102 і 112.

1102

+

112

______

10012

Віднімання

Розглянемо віднімання двійкових чисел. В основі лежить таблиця

віднімання однозначних двійкових чисел. При відніманні з меншого числа (0)

більшого (1) проводиться заїмка із старшого розряду (в таблиці заімки

позначена 1 з межею):

13

0 - 0 = _0

0 - 1 = 11

1 - 0 = 01

1 - 1 = 00

Як приклад проведемо віднімання двійкових чисел 1102 і 112.

1102

-

112

_____

112

Множення

В основі множення лежить таблиця множення однозначних чисел:

0 · 0 = _0

0 · 1 = 11

1 · 0 = 01

1 · 1 = 0

Як приклад проведемо множення двійкових чисел 1102 і 112.

1102

х

112

______

110

110

_________

100102

Ділення

Як приклад проведемо розподіл числа 1102 на 112.

110 | 11

|____

11 10

0

14

Аналогічно, можна виконувати арифметичні дії у вісімковій і

шістнадцятковій системах обчислення.