Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пояснювальна записка.docx
Скачиваний:
5
Добавлен:
30.08.2019
Размер:
366.14 Кб
Скачать

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

ДОНЕЦЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСІТЕТ

КАФЕДРА КОМП’ЮТЕРНИХ СИСТЕМ МОНІТОРИНГУ

ПОЯСНЮВАЛЬНА ЗАПИСКА ДО КУРСОВОГО ПРОЕКТУ

ПО КУРСУ «ТЕОРІЯ АЛГОРИТМІВ І ФОРМАЛЬНИХ МОВ»

Тема: «Побудова аналітичних моделей алгоритмів

і оцінка їх складності»

Керівники:

__________________ Назарова І.А.

«____» _____________ 2011 р.

__________________ Родрігес А.Е.

«____» _____________ 2011 р.

Виконавець:

студент групи КЕМ-08

__________________ Григор’єв Є.А.

«____» _____________ 2011 р.

Донецьк, 2011 р.

РЕФЕРАТ

Курсовий проект: 36 аркушів пояснювальної записки, 11 рисунків, 4 формули, 10 таблиць, 3 посилання, 4 додатки.

Об’єктом дослідження виступають рекурсивні функції, машини Тьюринга (МТ), нормальні алгоритми Маркова (НАМ).

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

При створення проекту застосовується науковий та експериментально-аналітичний підхід.

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

МАШИНА ТЬЮРИНГА, ФОРМАЛЬНА МОВА, РЕКУРСИВНА ФУНКЦІЯ, НОРМАЛЬНІ АЛГОРИТМИ МАРКОВА, АЛФАВІТ.

ЗМІСТ

ВСТУП......................................................................................................................4

1 ОПИСАННЯ ФОРМАЛЬНОЇ МОДЕЛІ АЛГОРИТМА НА ОСНОВІ РЕКУРСИВНИХ ФУНКЦІЇ....................................................................................5

1.1 Описання алгоритму у вигляді рекурсивної функції.....................................5

1.2 Тестові приклади...............................................................................................6

2 ОПИСАННЯ АНАЛІТИЧНОЇ МОДЕЛІ АЛГОРИТМУ У ВИГЛЯДІ ЕЛЕМЕНТАРНОЇ МАШИНИ ТЬЮРИНГА ТА КОМПОЗИЦІЇ МТ.................7

2.1 Реалізація алгоритму у вигляді МТ.................................................................7

2.1.1 Система команд МТ.......................................................................................7

2.1.2 Функціональна таблиця МТ..........................................................................8

2.1.3 Діаграма переходів МТ..................................................................................8

2.1.4 Тестові приклади............................................................................................9

2.2 Реалізація алгоритму у вигляді композиції МТ............................................11

3 РОЗРОБКА АНАЛІТИЧНОЇ І ПРОГРАМНОЇ МОДЕЛІ АЛГОРИТМУ МАШИНИ ТЬЮРИНГА, ЩО РОЗПІЗНАЄ МОВУ..........................................14

3.1 Побудова алгоритму МТ.................................................................................14

3.2 Розробка програми-емулятора.......................................................................16

3.3 Тестові приклади. Перевірка працездатності програми..............................16

4. РОЗРОБКА АНАЛІТИЧНОЇ МОДЕЛІ АЛГОРИТМУ ІЗ ВИКОРИСТАННЯМ НОРМАЛЬНИХ АЛГОРИТМІВ МАРКОВА................19

4.1 Реалізація алгоритму у вигляді Марковських підстановок.........................19

4.2 Тестові приклади.............................................................................................19

ВИСНОВОК...........................................................................................................22

ПЕРЕЛІК ПОСИЛАНЬ.........................................................................................23

ДОДАТОК А..........................................................................................................24

ДОДАТОК Б...........................................................................................................26

ДОДАТОК В..........................................................................................................33

ДОДАТОК Г...........................................................................................................35

ВСТУП

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

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

Інша її область виникла у зв’язку зі створенням швидкодіючих електронних обчислювальних та керуючих машин.

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

1 Описання формальної моделі алгоритма на основі рекурсивних функції

1.1 Описання алгоритму у вигляді рекурсивної функції

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

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

(1.1)

Простим називається число, яке має рівно два натуральних дільника (лише 1 і саме число). Тому для реалізації предикату (1.4) використовуються функції та предикат рівності , зображені відповідно у формулах (1.2) та (1.3).

(1.2)

(1.3)

(1.4)

Нарешті функція прийме наступний вигляд (рисунок 1.1):

Рисунок 1.1 – Функції добутку простих дільників числа

Оскільки числа 0 та 1 не мають простих дільників, у формулі передбачено такі варіанти (результат помножується на ).

1.2 Тестові приклади

Перевірка формули (1.5) на множині тестових прикладів приведена нижче.

Процеси обчислення функції при та при зображені на рисунках 1.2 та 1.3 відповідно. В обох випадках простих дільників числа не мають, тому їх добуток дорівнює 0.

Рисунок 1.2 – Процес обчислення функції при

Рисунок 1.3 – Процес обчислення функції при

У випадку, коли , процес обчислення примітивно-рекурсивної функції приведений на рисунку 1.4. Число 4 ділиться без залишку лише на одне просте число 2, отже добуток простих дільників числа 4 дорівнює 2.

Рисунок 1.4 – Процес обчислення функції при

2 Описання аналітичної моделі алгоритму у вигляді елементарної машини тьюринга та композиції мт

2.1 Реалізація алгоритму у вигляді МТ

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

2.1.1 Система команд МТ

Машина Тьюринга в алфавіті має 10 станів. Команди МТ з поясненнями приведені в таблиці 2.1.

Таблиця 2.1 – Система команд МТ

Після вхідних даних додаємо символ = та переміщуємося на перший символ дільника

Основна частина алгоритму: якщо дільник повністю входить у ділене, дописуємо | у результат и перевіряємо знову

Дописуємо до результату якщо дільник повністю увійшов у ділене

Переміщення після зміни результату на перший символ дільника

Продовження таблиці 2.1

Відновлення вихідних даних

Перевірка кінцевого результату

Повернення у початкове положення

2.1.2 Функціональна таблиця МТ

Описання машини Тьюринга у вигляді функціональної таблиці приведене у таблиці 2.2.

Таблиця 2.2 – Функціональна таблиця МТ

2.1.3 Діаграма переходів МТ

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

Рисунок 2.1 – Діаграма переходів МТ

2.1.4 Тестові приклади

Робота машини Тьюринга перевіряється на прикладах нижче.

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

Таблиця 2.3 – Приклад роботи МТ

Стан

Слово

λ|||||*||λλλλ

λ|||||*||λλλλ

λ|||||*||λλλλ

λ|||||*||λλλλ

λ|||||*||=λλλ

λ|||||*||=λλλ

λ|||||*||=λλλ

λ|||||*||=λλλ

λ|||||*a|=λλλ

λ|||||*a|=λλλ

λ||||a*a|=λλλ

Продовження таблиці 2.3

λ||||a*a|=λλλ

λ||||a*a|=λλλ

λ||||a*aa=λλλ

λ||||a*aa=λλλ

λ|||aa*aa=λλλ

λ|||aa*aa=λλλ

λ|||aa*aa=λλλ

λ|||aa*aa=|λλ

λ|||aa*aa=|λλ

λ|||aa*a|=|λλ

λ|||aa*||=|λλ

λ|||aa*||=|λλ

λ|||aa*a|=|λλ

λ|||aa*a|=|λλ

λ||aaa*a|=|λλ

λ||aaa*a|=|λλ

λ||aaa*aa=|λλ

λ||aaa*aa=|λλ

λ|aaaa*aa=|λλ

λ|aaaa*aa=|λλ

λ|aaaa*aa=|λλ

λ|aaaa*aa=|λλ

λ|aaaa*aa=||λ

λ|aaaa*aa=||λ

λ|aaaa*aa=||λ

λ|||||*aa=||λ

λ|||||*||=||λ

λ|||||*||=||λ

λ|||||*||=||λ

λ|||||*||=||λ

λ|||||*||=||λ

λ|||||*||=||λ

λ|||||*||=||λ

λ|||||*||=||λ

λ|||||*||=||λ

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

Таблиця 2.4 – Приклад роботи МТ

Стан

Слово

λ|*||λλλ

λ|*||λλλ

λ|*||λλλ

λ|*||λλλ

λ|*||=λλ

λ|*||=λλ

λ|*||=λλ

λ|*||=λλ

λ|*a|=λλ

λ|*a|=λλ

λa*a|=λλ

λa*a|=λλ

λa*a|=λλ

λa*aa=λλ

λa*aa=λλ

λa*aa=λλ

λa*aa=λλ

λa*aa=λλ

λ1*aa=λλ

λ1*aa=λλ

λ1*1a=λλ

λ1*11=λλ

λ1*11=λλ

λ1*11=0λ

λ1*11=0λ

λ1*11=0λ

λ1*11=0λ

λ1*11=0λ

λ1*11=0λ

λ1*11=0λ

2.2 Реалізація алгоритму у вигляді композиції МТ

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

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

зображена на рисунку 2.2.

Рисунок 2.2 – Блок-схема алгоритму

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

Рисунок 2.3 – Композиція МТ

Таблиця 2.5 – Елементарні МТ

Позначення

Елементарна МТ

Обчислення предикату >1

Копіювання вхідного слова

Обчислення предикату ≤

Обчислення предикату

Збільшення аргументу на 1 в унарному коді

Обчислення предикату

Вибір i-го аргументу з n

Встановлення константи m

Добуток аргументів