• Детермінована однострічкова машина Тьюринга. • Багатострічкові машини. • Еквівалентність машин. • Ієрархія класів DTIME. Основне з теорії алгоритмів • Усі команди, які може виконувати певний виконавець алгоритму, складають систему команд виконавця (СКВ). • Алгоритм будується з команд СКВ. • Об’єкти, над якими виконавець може виконувати дії, складають так зване середовище виконавця. • Клас задач, на розв’язання яких орієнтований виконавець, визначається його системою команд. • В теорії алгоритмізації прийнято виокремлювати дві категорії виконавців: виконавці, що працюють в певній ситуації, виконавці, що працюють з величинами. Машина з натуральнозначними регістрами (МНР) • МНР є ідеалізованою моделлю комп'ютера. • МНР складається із необмеженої послідовності регістрів, вмістом яких є натуральні числа. • Регістри нумеруємо натуральними числами, починаючи з 0, позначаючи їх R0, R1, ..., Rn, ... • Вмiст регiстру Rn позначаємо 'Rn . • Послiдовнiсть ('R0, 'R1,..., 'Rn, ...) вмiстiв регiстрiв МНР називається конфiгурацiєю МНР. • МНР може змiнити вмiст регiстрiв згiдно до команди, яку виконує. Скiнченний список команд утворює програму МНР. • Команди програми послідовно нумеруємо натуральними числами, починаючи з 1. Номер команди в програмі називаються адресою команди. • МНР-програму з командами I1, I2,..., Ik позначимо I1I2...Ik. • Довжину (кiлькiсть команд) МНР-програми P позначимо |P|. • Команди МНР бувають 4-х типiв. • Тип 1. Обнуління n-го регістру Z(n): 'Rn : 0. • Тип 2. Збільшення вмісту n-го регістру на 1 S(n): 'Rn : 'Rn+1 – інкремент регістру (n=n+1). • Тип 3. Копіювання вмісту регістру T(m, n): 'Rn : 'Rm (при цьому 'Rm не змiнюється). • Тип 4. Умовний перехід J(m, n, q): якщо 'Rn = 'Rm, то перейти до виконання q-ї команди, інакше виконувати наступну за списком команду програми. • Число q в команді J(m, n, q) назвемо адресою переходу. • Виконання однiєї команди МНР назвемо кроком МНР. • Формальними моделями алгоритмів є саме МНР- програми. • Якщо МНР-програма P нiколи не зупиняється при роботi над початковою конфiгурацiєю (a0, a1, ...), це позначаємо P(a0, a1, ...), якщо коли-небудь зупиниться, це позначаємо P(a0, a1,...). • Якщо МНР-програма P при роботi над початковою конфiгурацiєю (a0, a1, ...) зупиняється iз фiнальною конфiгурацiєю (b0, b1, ...), це позначаємо P(a0, a1, ...)(b0, b1, ...). • Конфiгурацiю вигляду (a0, a1, ..., aп, 0, 0, ...), в якiй 'Rm = 0 для всiх m > n, назвемо скiнченною. Таку конфігурацію позначаємо (a0, a1, ..., aп). • МНР-програма P стандартна, якщо в P для кожної команди вигляду J(m, n, q) виконується умова q |P| + 1. • Конкатенацією стандартних МНР-програм P = І1I2...Ik та Q = I1I2...Im назвемо стандартну МНР-програму I1...IkIk+1...Ik+m, де команди Ik+1,..., Ik+m по суті є командами програми Q, у яких кожна команда вигляду J(m, n, q) замінена командою J(m, n, q + k). • МНР-програми P та Q еквiвалентнi, якщо при роботi над однаковими початковими конфiгурацiями вони або обидві зупиняються з однаковими фiнальними конфiгурацiями, або обидвi не зупиняються. • МНР-програма P обчислює часткову n-арну функцiю f : Nn→N, якщо • f(a1, a2, ..., aп) = b P(a1, a2, ..., aп)(b, ...). • Функцiя f : Nп→N МНР-обчислювана, якщо iснує МНР- програма, яка обчислює цю функцiю. Машина Тьюринга • Машина Тьюрінга – це абстрактна машина, що працює зі стрічкою, що складається із окремих комірок, в яких записано символи. • Машина також має голівку для запису та читання символів із комірок і яка може рухатись вздовж стрічки. • На кожному кроці машина зчитує символ із комірки, на яку вказує голівка та, на основі зчитаного символу та внутрішнього стану, робиться наступний крок. • При цьому, машина може змінити свій стан, записати інший символ в комірку або пересунути голівку на одну комірку ліворуч або праворуч. • У кожної машини Тьюрінга є стрічка, потенційно нескінченна в обидві сторони. • Є скінченна множина символів стрічки S0,...,Sn, що називається алфавітом машини. • У кожен момент часу кожна комірка може бути зайнята не більш ніж одним символом. • Машина має деяку скінченну множину внутрішніх станів q0, q1,...,qn. У кожен даний момент часу машина знаходиться лише в одному із цих станів. • Голівка у кожний даний момент часу знаходиться на одній із комірок стрічки. Дія машини Тьюрінга визначена однією із чотирьох дій: 1. голівка затирає символ Si, і записує у тій же комірці новий символ Sk, 2. голівка пересувається в сусідню ліву комірку, 3. голівка пересувається в сусідню праву комірку, 4. машина зупиняється.
• Перші три з можливих дій машини можуть бути описані
відповідно такими упорядкованими четвірками, які називаються командами: 1. Siqj → SkqrS 2. Siqj → SkqrL 3. Siqj → SkqrR • Зафіксуємо два скінчених алфавіти – А={а0, а1,…, аn}, де n ≥0, і Q={q1, q2,…qm}, де m ≥1. • При цьому А будемо називати зовнішнім алфавітом, а Q внутрішній алфавіт або алфавіт станів. • Додатково поставимо вимогу, що А∩Q=Ø і символи →, L, R не належать А∪Q. • Один символ А називають порожнім, зазвичай його позначають ∧. Усі інші букви з А називають непорожніми. Машиною Тьюрінга (МТ) називають упорядковану шістку {A, Q, a0, q0, q1, P}, яка задовольняє таким умовам: •Множини A і Q скінчені, не перетинаються і не містять символів →, L, R; •a0∈А, q0∈Q, q1∈Q. При цьому a0 називається символом порожньої комірки, q1 – початковий стан машини, q0 – стан, у якому машина зупиняється; •Р – програма із зовнішнім алфавітом А і внутрішнім алфавітом Q, причому: a)програма не містить двох різних команд з однаковими лівими частинами; b)будь-яка з команд не починається символом q0. • Алфавітом називається довільна не порожня злічена множина. • Зазвичай розглядають кінцеві алфавіти. • Елементи алфавіту називаються символами або буквами. • Словом в алфавіті A називається кінцева послідовність літер з цього алфавіту. • Кількість букв в слові x називається довжиною слова і позначається |x|. • A* = множина всіх слів над алфавітом A. • Ak = множина всіх слів довжини k.
• Машинним словом або конфігурацією називається
будь-яке слово в алфавіті А∪{qi}, для якого qi∈Q, причому символ qi входить у це слово один раз і не на останньому місці. Детермінована однострічкова машина Тьюринга (ДМТ) – це четвірка M = (Q, A, S, Π), де A – «стрічковий» алфавіт (містить спеціально виділений символ ∧ - «пробіл»), Q = {q0, q1, ..., qm} – алфавіт станів, S = {- 1, 0, +1} – алфавіт зрушень (рос. сдвигов), і Π – програма, що представляє собою відображення Q × A → Q × A × S. Багатострічкові машини Тьюринга
• Нехай k - ціле число, k ≥ 1, k- стрічкова
машина Тьюринга – це п'ятірка: M = (k, A, Q, S, Π), де Π: Q × Ak →Q × (A × S)k. Еквівалентність машин • ТЕОРЕМА 3. Для будь-якого k ≥ 1 існує універсальна (k +1) – стрічкова машина Тьюрінга.
• Будемо говорити, що машини M і M' еквівалентні,
якщо вони обчислюють одну і ту ж функцію.
• ТЕОРЕМА 4. Для будь-якої k-стрічкової машини M,
що має часову складність T(n), існує еквівалентна їй однострічкова машина M' з тимчасовою складністю T'(n) = O(T2(n)). Ієрархія класів DTIME • Визначення. DTIME (f (n)) – це клас задач, для кожної з яких існує детермінована МТ, що розв’язує цю задачу з часовою складністю O(f(n))). • Визначимо також класи: P = PTIME =∪k> 0DTIME (nk) – клас задач, що розв’язуються за поліноміальний час. EXPTIME =∪k> 0DTIME (2 ^ (nk)) – клас задач, що розв’язуються за експоненціальний час. • Клас P – це клас ефективно розв’язуваних задач. Алгоритм, що має поліноміальну тимчасову складність, називається ефективним. • Задача, для якої в даний час ніхто не знає ефективний алгоритм або для якої доведено відсутність такого алгоритму, називається складнорозв’язаною. • ТЕОРЕМА 5. (Теорема про лінійне прискорення). Для будь-якої машини M з часовою складністю T(n) і будь-який константи c> 0, існує еквівалентна машина Тьюринга M' з тимчасовою складністю T '(n) = з T (n) + n. • Визначення. Функція f називається той, що конструюється за часом, якщо існує машина Тьюринга M, яка для даного вхідного слова довжини n зупиняється рівно через f (n) кроків. • Визначення. Функція f називається той, що конструюється за місткістю, якщо існує машина Тьюринга M, яка для даного вхідного слова довжини n переглядає рівно f (n) комірок на однієї зі своїх стрічок і не більше f (n) комірок на інших стрічках. • Визначення. Розглянемо машину Тьюринга M, що має два заключних стану qY (допускає стан) і qN (відхилює стан) і довільне слово x ∈ A*. Якщо M на вході x через кінцеве число кроків зупиняється в стані qY, то будемо говорити, що машина M допускає рядок x. Якщо M на вході x зупиняється в стані qN або «зациклюється», то будемо говорити, що машина M відхиляє рядок x. • Визначення. Через L (M) позначимо множину всіх слів x ∈ A*, що допускаються машиною Тьюринга M. • Визначення. Нехай L – мова над алфавітом A. Кажуть, що машина M розпізнає мову L, якщо L(M) = L. Теорема про ієрархію • Нехай f і g – дві функції, що обчислюються і конструюються за часом, і g(n)=ω(f(n)logf(n)).