Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МП до ЛР алгоритми і методи обчислень.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.3 Mб
Скачать

Міністерство освіти і науки, молоді та спорту України

Державний вищий навчальний заклад

«Чернігівський технікум транспорту та комп’ютерних технологій»

Розглянуто і схвалено Затверджую

на засіданні циклової комісії Заступник директора

Протокол № 5 з навчальної роботи

від „___”________ 2012р. __________ О. В.Тканко

__________________ „___”___________2012 р.

Методичний посібник до лабораторних робіт

з предмету „Алгоритми і методи обчислень”

для студентів спеціальності 5.05010201

„Обслуговування комп’ютерних систем і мереж”

Розробили

Данилова В. А.

Кондратенко В.В.

2012

Пояснювальна записка

Дисципліна „Алгоритми і методи обчислень” входить до переліку циклу професійно орієнтованих дисциплін освітньо-професійної програми вищої освіти за професійним спрямуванням 5.05010201 „Обслуговування комп’ютерних систем і мереж” і розглядається як складова частина підготовки студентів з вказаного напрямку. Вивчення дисципліни сприяє удосконаленню навичок роботи з програмним забезпеченням, оволодінню чисельними методами, вивченню фундаментальних питань з основ алгоритмізації, формуванню базових знань в області застосування алгоритмічного апарату.

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

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

Забезпечення: програма Algo2000, MS Excel.

Лабораторна робота № 1 Тема Побудова машин Поста, Тьюринга

Мета: навчитися створювати алгоритми роз’язування задач за допомогою абстрактних моделей обчислювальних машин Поста та Тьюринга

Теоретичні відомості

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

Машину Поста можна розглядати як спрощену модель комп’ютера. Насправді, як комп’ютер, так і машина Поста мають:

неподільні носії інформації (комірки — біти), які можуть бути заповненими або незаповненими;

обмежений набір елементарних дій — команд, кожна з яких виконується за один такт (крок).

Машина Поста складається із стрічки та каретки (яка також називається головкою зчитування/запису). Стрічка є безмежною і розділена на комірки однакового розміру. Комірка стрічки може бути порожньою, або у ній може перебувати мітка V. Інформація про те, які комірки порожні, а які містять мітки, утворює стан стрічки. Іншими словами, стан стрічки — це розподіл міток по комірках. Стан стрічки змінюється у процесі роботи машини. Зауважимо, що наявність міток у комірці можна інтерпретувати як «1», а відсутність як «0». Таке двійкове представлення інформації подібне до уявлення, яке використовується практично у всіх сучасних комп’ютерах.

Каретка може пересуватися вздовж стрічки вліво і вправо. Коли вона нерухома — вона перебуває навпроти однієї комірки стрічки. У такому випадку говорять, що каретка оглядає одну комірку. За одиницю часу каретка може зробити одну із трьох дій: стерти мітку, поставити мітку, зробити рух до сусідньої комірки. Стан машини Поста складається із стану стрічки і розташування каретки. Дії каретки підпорядковані програмі, яка складається з пронумерованого набору команд (команди можна представляти як рядки програми). Команди бувають шести типів:

1. записати 1 (мітку), перейти до i-го рядка програми;

2. записати 0 (стерти мітку), перейти до i-го рядка програми;

3. переміститися вліво, перейти до i-го рядка програми;

4. переміститися вправо, перейти до i-го рядка програми;

5. зупинка;

6. якщо 0, то перейти до i-го рядка програми, інакше перейти до j-го рядка програми.

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

спроба записати 1 (мітку) в заповнену комірку;

спроба стерти мітку в порожній комірці;

нескінченне виконання (зациклення).

Обидві машини працюють на основі програми. Проте у машині Поста інформація розташовується лінійно і читається підряд, а в комп’ютері можна читати інформацію за адресою; набір команд комп’ютера значно ширший і виразніший за команди машини Поста.

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

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

Пояснення до умов задач Машини Поста

1) У завданнях під масивом розуміється послідовність міток, обмежена порожніми комірками.

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

3) В задачах при описі початкового стану стрічки запис починається з першої лівої непорожньої комірки і закінчується останньою правою непорожньою коміркою. При цьому використовуються наступні позначення: мітки, які йдуть підряд позначають 1n, а m порожніх комірок - 0m. При позначенні однієї заповненої або порожньої комірок записують 1 або 0, відповідно.

Наприклад, запис "12012" буде відповідати запису "11011" на стрічці.

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

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

Розв’язання

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

Програма для машини Поста:

  1. → 2

  2. ? 1,3

  3. X 4

  4. ← 5

  5. !

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

Розв’язання

Машина повинна додати одиницю до останньої цифрі числа. Якщо остання цифра дорівнює 9, то її замінити на 0 і додати одиницю до попередньої цифри. Програма для даної машини Тьюринга може виглядати так:

a\q

q0

0

1! q0

1

2! q0

2

3! q0

3

4! q0

4

5! q0

5

6! q0

6

7! q0

7

8! q0

8

9! q0

9

0< q0

Пробіл

1! q0

Хід роботи

Ознайомитись з розділом довідки програми Algo2000.

Розглянути приклади з теоретичних відомостей та перевірити їх на практиці, використовуючи програму Algo2000.

Варіант 1

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

Початковій стан стрічки:

  1. 130212

  2. 13013

  3. 10[01]21

  1. На стрічці заданий масив міток. Збільшити довжину масиву на 2 мітки. Каретка знаходиться або ліворуч від масиву, або над однією з комірок масиву.

  2. На стрічці машини Тьюринга міститься послідовність символів "+". Напишіть програму для машини Тьюринга, яка кожен другий символ "+" замінить на "-". Заміна починається з правого кінця послідовності. Автомат в стані q1 оглядає один із символів зазначеної послідовності. Крім самої програми-таблиці, описати словами, що виконується машиною в кожному стані.

Варіант 2

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

Початковій стан стрічки:

  1. 1401

  2. 13012

  3. 16

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

  2. Дано число n у вісімковій системі числення. Розробити машину Тьюринга, яка збільшувала б задане число n на 1. Автомат в стані q1 оглядає якусь цифру вхідного слова. Крім самої програми-таблиці, описати словами, що виконується машиною в кожному стані.

Варіант 3

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

Початковій стан стрічки:

  1. 1012

  2. 12021

  3. [10]21

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

  2. Дано десятковий запис натурального числа n > 1. Розробити машину Тьюринга, яка зменшувала б задане число n на 1. Автомат в стані q1 оглядає праву цифру числа. Крім самої програми-таблиці, описати словами, що виконується машиною в кожному стані.

Варіант 4

  1. Визначити стан, в якому виявиться машина Поста в результаті виконання програми при заданому початковому стані стрічки.

Пояснення: виділена цифра, наприклад 1, означає, що цю комірку каретка оглядає в початковий момент часу.

Початковій стан стрічки:

  1. 1211201

  2. 12113

  1. На стрічці задані два масиви - m і n, m> n. Обчислити різницю цих масивів. Каретка розташовується над лівою коміркою правого масиву.

  2. Дано натуральне число n> 1. Розробити машину Тьюринга, яка зменшувала б задане число n на 1, при цьому у вихідному слові старша цифра не повинна бути 0. Наприклад, якщо вхідним словом було "100", то вихідним словом має бути "99", а не "099". Автомат в стані q1 оглядає праву цифру числа. Крім самої програми-таблиці, описати словами, що виконується машиною в кожному стані.

Варіант 5

  1. Визначити стан, в якому виявиться машина Поста в результаті виконання програми при заданому початковому стані стрічки.

Пояснення: виділена цифра, наприклад 1, означає, що цю комірку каретка оглядає в початковий момент часу.

Початковій стан стрічки:

  1. 1114

  2. 11201

  3. 10113

  1. На стрічці задані два масиви. Знайти модуль різниці довжин масивів. Каретка розташовується над першою коміркою лівого масиву.

  2. Дано масив з відкриваючих і закриваючих дужок. Побудувати машину Тьюринга, яка видаляла б пари взаємних дужок, тобто розташованих підряд "()".

Наприклад, дано ") (() (()", треба отримати ") ... ((". Автомат в стані q1 оглядає крайній лівий символ рядка. Крім самої програми-таблиці, описати словами, що виконується машиною в кожному стані.

Контрольні питання

  1. Охарактеризувати машину Поста.

  2. Охарактеризувати машину Тьюринга.

  3. Яка структура машини Поста, Тьринга?

  4. Чим відрізняються машини Поста, Тьюринга?

  5. Дати характеристику командам машини Поста.

  6. Дати характеристику командам машини Тьюринга.

  7. Які команди недопустимі в машині Поста?

  8. Які команди недопустимі в машині Тьюринга?

  9. Дати характеристику програмному засобу Algo2000.

Вимоги до оформлення звіту

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

Література

  1. Глибовець М. М. Основи комп’ютерних алгоритмів. – К.: Видавничий дім „КМ Академія”, 2003. – 452 с.

  2. Задачи и упражнения по математической логике и теории алгоритмов: / В.И. Игошин. – М.: Издательский центр «Академия», 2004. – 400 с.

  3. Клакович Л.М., С.Левицька С.М., О.Костів. Теорія алгоритмів. Львів, Вид-во Львів ун-ту, 2008.

  4. Кормен Т., Лейзерсон Ч., Ривест Р. Алгоритмы: построение и анализ. – М.: МЦНМО, 2000. – 960 с.