Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Теор_алг_ЛАБ1(1).doc
Скачиваний:
4
Добавлен:
25.11.2019
Размер:
112.13 Кб
Скачать

I k j, де I — номер команди, k — дія каретки, j — номер наступної команди відсилання.

Всього для машини Поста існує шість типів команд: V j — поставити мітку, перейти до j-му рядку програми. X j — стерти позначку, перейти до j-му рядку програми.

J — зрушити вправо, перейти до j-му рядку програми. ? j1; j2 — якщо в комірці немає мітки, то перейти до j1-й рядку програми, інакше перейти до j2-й рядку програми. ! — Кінець програми стоп. У команди стоп відсилання немає.

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

Машина Поста

13 Гру

Категорія: Новини

М ашина Поста (МП) — абстрактна обчислювальна машина, запропонована Емілем Леоном Постом (Emil L. Post), яка відрізняється від машини Тьюринга більшою простотою. Обидві машини «еквівалентні» і були створені для уточнення поняття « алгоритм ».

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

Синтаксис команд можете прочитати тут .

Досить цікава річ, яка змушує подумати і поламати мізки:)

Для початку спробуємо скласти / відняти / поділити два різних числа.

Якщо тобі цікаво самому поламати голову над цими завданнями, то НЕ ЧИТАЙ РІШЕННЯ.

Отже, Задача № 1: Написати для машини Поста програму складання двох чисел, записаних на стрічці і розташованих через одну порожню клітину один від одного. Початкове положення каретки — під порожньою клітинкою, що відокремлює числа.

РІШЕННЯ:

  1. V 2

  2. < - 3

  3. ? 4,2

  4. -> 5

  5. X 6

  6. !

Нічого складного, чи не так? :)

А тепер віднімання, трохи складніше.

Завдання:

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

РІШЕННЯ:

  1. X 2

  2. -> 3

  3. ? 4,8

  4. < - 5

  5. ? 4,6

  6. X 7

  7. !

  8. < - 9

  9. ? 8,10

  10. X 11

  11. -> 12

  12. ? 11,1

І зовсім просте — поділ.

Завдання:

Написати для машини Поста програму ділення числа, записаного позначками на 2. вихідне число має ділитися на 2 без залишку.

v 00111111011000

РІШЕННЯ:

  1. -> 2

  2. ? 4,3

  3. X 1

  4. < - 5

  5. ? 4,6

  6. < - 7

  7. X 8

  8. < - 9

  9. ? 10,6

  10. -> 11

  11. ? 10,12

  12. X 13

  13. -> 14

  14. ? 15,13

  15. V 16

  16. -> 17

  17. ? 18,19

  18. !

  19. < - 20

  20. ? 21,19

  21. -> 12