Теория алгоритмов и математическая логика

Тема 12

Алгоритмічні моделі


Алгоритмічні моделі

12.1. Основні визначення

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

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

Відповідно до цієї думки вчені створили в точних математичних термінах машинні моделі (математичні абстракції), на яких вдалось імітувати дію алгоритмів. Це було зроблено Постом і Тюрінгом у 1936-1937 рр. незалежно один від одного і майже одночасно із працями Черча. Пізніше, у 50-х роках двадцятого століття, до їх приєднався А. А. Марков. Алгоритмічні моделі цих вчених є претендентами на право бути основними формалізаціями поняття алгоритм. Це означає, що вони повинні бути універсальними, тобто в їх рамках можна описати будь-який алгоритм. Це дійсно так, тому що, по-перше, можна довести зведення однієї моделі до іншої, тобто будь-який алгоритм, описаний засобами однієї моделі, може бути описаний засобами іншої; по-друге, завдяки взаємному зведенню моделей у теорії алгоритмів удалося виробити інваріантну по відношенню до моделей систему понять, що дозволяє вести мову про властивості алгоритмів незалежно від того, яка формалізація обрана. Ця система понять базується на понятті обчислювальної функції, тобто для обчислення якої існує алгоритм.

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

 

12.2. Машини Тюрінга

Перший важливий і достатньо широкий клас алгоритмів був уведений

А. Тюрінгом та Е. Постом у 1936-1937 рр. Алгоритми цього класу здійснюються особливими машинами, що називаються зараз машинами Тюрінга-Поста, або просто машинами Тюрінга. Машини Тюрінга копіюють в істотних рисах роботу людини і часто розглядаються як математичні моделі для вивчення функціонування людського мозку.

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

Зафіксуємо два скінченних алфавіти – А = {a0,a1,…,an}, де n0, і Q = ={q0,q1,…,qm}, де m ≥ 1. При цьому А будемо називати зовнішнім алфавітом, а Q – внутрішнім алфавітом, або алфавітом станів. Додатково поставимо вимогу, щоб А ∩ Q =Ø і символи → , L, R не належать А[TEX]\smile [/TEX] Q. Один символ з А називають порожнім, зазвичай його позначають [TEX]\wedge [/TEX]. Усі інші букви з А називають непорожніми.

Візьмемо об’єднаний алфавіт B= А[TEX]\smile [/TEX] Q {→ , L, R}. Виділимо серед слів алфавіту В команди, які представляють слова одного з трьох видів:

  1. qiajqkal; 2) qiajqkL; 3) qiajqkR;

де 1im, 0jn, 0km, 0ln.

Ці команди читаються відповідно так:

  1. перебуваючи у стані qi і спостерігаючи символ aj, перейти у стан qk і написати символ al;

  2. перебуваючи в стані qi і спостерігаючи символ aj, перейти у стан qk і переміститися вліво на один символ ;

  3. перебуваючи в стані і спостерігаючи символ, перейти у стан qk і переміститися вправо на один символ .

Скінченна послідовність команд становить програму P із зовнішнім алфавітом А і внутрішнім алфавітом Q. У кожній команді програми виділимо її ліву частину – це підслово до символу “ і праву частину – підслово після символу “.

Означення 12.2.1. Машиною Тюрінга (МТ) називають упорядковану шістку { A, Q, a0, q0, q1, P }, яка задовольняє такі умови:

  1. множини А і Q скінченні, не перетинаються і не містять символів → , L, R;

  2. a0 [TEX]\in [/TEX] А, q0 [TEX]\in [/TEX] Q, q1 [TEX]\in [/TEX] Q. При цьому a0 називається символом порожньої комірки, q1 - початковий стан машини, q0 - стан, у якому машина зупиняється;

  3. Р – програма із зовнішнім алфавітом А і внутрішнім алфавітом Q, причому

а) програма не містить двох різних команд з однаковими лівими частинами;

б) будь-яка з команд не починається символом q0.

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

Пристрій оглядає стрічку, поділену на комірки, яку можна уявити необмеженою в обох напрямках. У кожний конкретний момент часу пристрій знаходиться в деякому стані qi, спостерігаючи символ aj, записаний в одній із комірок. Залежно від того, в якому стані перебуває пристрій ті який символ він спостерігає, пристрій здійснює дію, яка може полягати в тому, що пристрій на місце aj запише al, а сам перейде в новий стан qk (виконується команда першого виду), або переміститься вліво на одну комірку і змінить свій стан на qk (виконується команда другого виду), або переміститься вправо на одну комірку і змінить стан на qk (виконується команда третього виду).

Охарактеризуємо тепер роботу машини Тюрінга більш детально.

Означення 12.2.2. Машинним словом, або конфігурацією, називається будь-яке слово в алфавіті А[TEX]\smile [/TEX] { qi }, для якого qi[TEX]\in [/TEX] Q, причому символ qiвходить у це слово один раз і не на останньому місці.

Приклад 12.2.1 Нехай задані алфавіти А={a0, 1}, Q={q0,q1,q2}.

Тоді слова a01a0a0q1a0 , a01q21, q0111a0 є конфігураціями, а слова a0111q1 , q11a0q21a0, a0q1q11 – до конфігурацій не належать.

У процесі роботи МТ здійснюється перехід від одного машинного слова до іншого. При цьому відбувається певне перетворення слів алфавіту А. Будемо говорити, що МТ перетворює машинне слово α в машинне слово γ

( записують МТ(α)= γ ), якщо існує скінченна послідовність слів γ0, γ1,…, γn , для яких виконуються умови :

  1. γ0 = α, γn = γ;

  2. слово γі+1 одержане з γі дією МТ в один крок за визначеним правилом.

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

Приклад 12.2.2. Знайти результат застосування МТ із зовнішнім алфавітом {a0, 1,2}, внутрішнім алфавітом {q0,q1,q2,q3,q4,q5} і програмою q11 q2R , q22 q21,q21 q3R, q32 q3R, q31 q42, q42 q4R, q4a0 q5L, q52 q5L, q51 q5L, q5a0 q0R до слова 1221.

Розв’язання. Виходячи з початкової конфігурації q11221, знайдемо кінцеву конфігурацію, якщо вона існує. Маємо перетворення МТ за заданою програмою:

q112211 q22211 q212111 q321112q31112q42→1122q4 a0112q5211 q5221 q5122q51122q5 a01122q01122.

Отже, слово 1221 МТ перетворює в слово 1122.

Значно складнішою, ніж задача застосування конкретних машин до конкретних слів, є задача створення МТ із наперед заданими властивостями.

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

Нагадаємо, що числовою називають функцію f(x1,x2,…,xn) , значеннями якої та значеннями її аргументів є невід’ємні цілі числа. Розглянемо часткові числові функції, визначені загалом не для всіх значень аргументів.

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

Для обчислення числових функцій на МТ часто використовують спеціальне кодування чисел. Наприклад, невід’ємне ціле число m можна позначити словом (задати набором) з (m +1) одиниць, або скорочено 1m +1. Тобто 0 задають як 1, 1 – як 11, 2 – як 111 тощо. Символом порожньої комірки буде слово 0. Тоді для побудови МТ буде достатньо зовнішнього алфавіту А={0,1}.

12.3. Нормальні алгоритми Маркова

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

Нормальні алгоритми Маркова (НАМ) перетворюють рядки, які задані у будь-якому скінченному алфавіті , у рядки у тому самому алфавіті.

Перейдемо до точних означень. Алфавітом будемо називати не порожню скінченну множину Е деяких символів. Символи та не повинні належати алфавіту Е. Елементи алфавіту називатимемо також буквами. Слово в алфавіті Е це скінченна, або порожня, послідовність його букв. Порожнє слово позначимо [TEX]\wedge [/TEX] . Множину всіх слів в алфавіті Е позначимо через Е*. Нехай Р, Q [TEX]\in [/TEX] Е*, тоді вирази Р Q, Р Q називаються відповідно формулами простої та заключної підстановки. При цьому перша з них означає, що замість Р потрібно вставити слово Q та перейти до наступної підстановки, а в другій формулі після підстановки процес закінчується.

Нехай Р ( )Q означає будь-яку з формул підстановки (просту чи заключну). Нормальний алгоритм в алфавіті Е вважається заданим, якщо задана скінченна схема (таблиця) формул підстановок слів алфавіту Е

                                                                                                                                                                                                               (12.3.1)

  1. Означення 12.3.1. Нормальним алгоритмом Маркова (НАМ) в алфавіті Е називають пару{ Е,S}, яка складається з алфавіту Е та схеми S в цьому алфавіті.
  2. Роботу нормального алгоритму Маркова можна описати у такий спосіб. Нехай задане слово α [TEX]\in [/TEX] Е*. Знаходимо першу в схемі S таку формулу підстановки αi →( •)βi, що αiє підсловом α. Підставляємо в слово α слово βi замість першого входження αiв α. Нехай γi – результат цієї підстановки. Якщо формула підстановки виявилася заключною, тобто αi •βi , то робота алгоритму закінчується і А(α) = γi. Якщо формула підстановки виявилась простою, тобто αi βi, то до слова γi застосовуємо той самий пошук, який застосовувався до слова α і так далі. Якщо врешті-решт одержимо таке слово γi, що жодне із слів α1, α2, … αn не входить в γi як підслово, то робота алгоритму закінчується і А(α) = γi . Якщо описаний процес не закінчується ніколи, то говоримо, що алгоритм А не застосовний до слова α.
  3. Приклад 12.3.1. Розглянемо алгоритм який заданий у алфавіті Е={a,b} схемою підстановок :

(12.3.1)

Застосуємо його дію до слова Х = abba.

Першою підстановкою зі слова abba одержимо слово Х1 = bbba. Далі перша і друга підстановка до слова Х1не діє, за третьою підстановкою зі слова bbba одержимо слово Х2= bbaa, до якого застосовна лише третя підстановка, яка перетворює його у слово Х3=baaa. До слова Х3 застосовні друга і третя підстановки, причому спочатку повинна виконуватися друга підстановка, але оскільки вона є заключною, то після її дії процес перетворення слів закінчується. Отже, слово «baaa» переходить в слово Х4 = =ba. Таким чином, А(abba) =ba.

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

Означення 12.3.2. Функція називається нормально обчислювальною, якщо існує такий нормальний алгоритм, який обчислює значення цієї функції для будь-якого набору значень аргументів із області визначення функції і не застосовний до наборів значень аргументів, що не входять до області визначення цієї функції.

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

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

Аналогічно тому, як не можна довести гіпотези Черча і Тюринга, неможливо довести і принцип нормалізації Маркова.

 

 


© 2014 СумГУ
created with Lectur'EDbeta