
- •Тема 3. Алгоритмічні системи
- •3.1. Визначення алгоритмічної системи
- •3.2. Рекурсивні функції
- •3.3. Нормальні алгоритми Маркова
- •3.4. Машини Поста
- •3.5. Машини Тьюринга
- •3.6. Абстрактні автомати
- •Недетермінований скінченний автомат
- •Детермінований скінченний автомат
- •3.7. Формальні граматики
- •Класифікація формальних граматик.
- •6.2. Приклади, що ілюструють первинні поняття
- •3.8. Алгоритмічні основи еом
- •3.9. Термінологічний словник
6.2. Приклади, що ілюструють первинні поняття
Розглянемо кілька прикладів, що ілюструють введені поняття.
1. Задана граматика Г6.0, і потрібно визначити мову, породжувану цією граматикою:
Г6.0:
T =
{a, b, c}, N =
{P}, R =
{P bac}.
Схема граматики містить одне правило, тому Г6.0 породжує мову з одного слова
L (Г6.0) = {bac}.
2. Задана граматика Г6.1. Потрібно визначити мову, породжувану цією граматикою:
Г6.1: T =
{a, b, c, d}, N =
{P, B, C},
R =
{P aB
B
Cd
B
dc
С
b
C
$}.
Побудуємо всі виведення в цій граматиці:
P aB
aCd
abd,
P
aB
aCd
ad,
P
aB
adc.
Отже, мова L(Г6.1) = {abd, ad, adc}.
3. Задана граматика Г6.2. Потрібно визначити мову, породжувану цією граматикою:
Г6.2: T =
{0, 1}, N =
{P, A},
R =
{P 0A1
0A
00A1
A
$}.
Розглянемо кілька виведень за допомогою правил граматики Г6.2. Застосовуючи перше і третє правила, одержуємо
P 0A1
01.
Застосовуючи два рази перше правило і третє, маємо
P 0A1
00A11
0011.
У загальному випадку, застосовуючи k разів перше правило, одержимо в результаті ланцюжок, що містить k нулів і k одиниць.
Отже, мова, породжувана граматикою Г6.2, містить всякі ланцюжки, в яких число нулів дорівнює числу одиниць.
4. Задана граматика Г6.3. Потрібно визначити мову, породжувану цією граматикою.
Г6.3: T =
{a, b}, N
=
{P, A},
R =
{P aA
A
bA}.
Спроба побудови виведення результату в цій граматиці приводить нас до ланцюжка:
P aA
abA
abbA
...
,
який виявляється нескінченним. Іншими словами, граматика Г6.3 породжує порожню мову.
3.8. Алгоритмічні основи еом
Всі попередні розглянуті алгоритмічні системи мали суто теоретичний характер і навіть коли називались машинами, то це були гіпотетичні (уявні) машини. Першою фізичною реалізацією алгоритмічної системи стала ЕОМ.
Кожний абстрактний автомат реалізує деякий алгоритм обробки інформації. Для більш складних алгоритмів виконується блочний синтез автоматів, іноді він може бути багатоступінчастим. Але як би не ускладнювався такий автомат, він все одно реалізуватиме один і той самий алгоритм. Щоб автомат став універсальним, щоб міг виконувати будь-які алгоритми перетворення інформації, необхідно, щоб він функціонував саме під управлінням того алгоритму, який йому задано. Це є клас універсальних програмних автоматів, які ще називають універсальними обчислювальними машинами з програмним управлінням, або, ще простіше, — електронними обчислювальними машинами. Основою цих автоматів є принцип програмного управління, суть його полягає в тому, що інформацію, якою оперує автомат, хоча й можна вважати одним словом, поділяють на дві частини: власне вхідну інформацію для обробки та інформацію про алгоритм, який необхідно реалізувати, тобто програму. Отже, є інформаційні слова та програмні слова (команди). Кожна команда виконує одну операцію перетворення інформації. Команди виконуються послідовно у порядку їх розміщення у комірках пам’яті, або за командою, яка передає управління деякій команді, відмінній від наступної.
ЕОМ як алгоритмічна система успадкувала деякі риси вже відомих алгоритмічних систем (машин Поста і Тьюринга). Вона використовує три алфавіти: вхідний, зумовлений можливостями пристроїв вводу, внутрішній — двійковий та вихідний, зумовлений можливостями програмного забезпечення та пристроїв виводу.
ЕОМ має практично нескінченну стрічку пам’яті, розділену на окремі комірки — біти, в кожному з яких міститься 0 або 1, об’єднані в групи — байти (мінімальні адресовані поля пам’яті для розміщення будь-якої інформації). Є зчитувальний пристрій, що здійснює доступ до поля пам’яті для запису або зчитування інформації. Зчитування інформації не псує її, а запис знищує попередній зміст поля пам’яті й записує новий.
Є сукупність припустимих операцій у двійковому алфавіті: це двійкові функції від двійкових змінних. Основними елементарними операціями (їх називають логічними), які їх визначають, є: заперечення, логічне множення (кон’юнкція), логічне додавання (диз’юнкція), рівнозначність. За ними визначено операції додавання двійкових чисел.
Кожна з цих операцій реалізується елементарними електронними схемами.
Всі інші операції обробки інформації, якими б складними вони не були, конструюються з цих елементарних операцій за допомогою комбінацій електронних схем або програмно.
Отже, ЕОМ — це єдина алгоритмічна система, де фізично реалізовано принцип програмного управління, тобто система, що здійснює обробку інформації автоматично за допомогою програми, яку аналізує і виконує управляючий пристрій, тоді як у всіх інших алгоритмічних системах обробку інформації виконувала людина.