Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Музичко М.В. Курсова робота(Теорія алгоритмів).doc
Скачиваний:
15
Добавлен:
26.11.2018
Размер:
636.93 Кб
Скачать

Системи числення, правила переведення чисел з однієї системи числення в іншу

Системою числення назива.ться сукупн.сть правил запису чисел. Системи числення

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

Класичним прикладом такої системи числення і римська. В н.й для запису чисел

використовуються букви латинського алфав.ту. При цьому буква I означає одиницю, V – п’ять,

Х – десять, L – п’ятдесят, C– сто, D – п’ятсот, M – тисячу. Для отримання кількісного

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

Далі нижче буде наведено принцип роботи машини Тюрінга.

Здвиг праворуч: [ {1}1111111-111= ]"

Здвиг праворуч: [ 1{1}111111-111= ]"

Здвиг праворуч: [ 11{1}11111-111= ]"

Здвиг праворуч: [ 111{1}1111-111= ]"

Здвиг праворуч: [ 1111{1}111-111= ]"

Здвиг праворуч: [ 11111{1}11-111= ]"

Здвиг праворуч: [ 111111{1}1-111= ]"

Здвиг праворуч: [ 1111111{1}-111= ]"

Здвиг праворуч: [ 11111111{-}111= ]"

Здвиг праворуч: [ 11111111-{1}11= ]"

Здвиг праворуч: [ 11111111-1{1}1= ]"

Здвиг праворуч: [ 11111111-11{1}= ]"

Здвиг праворуч: [ 11111111-111{=} ]"

Здвиг ліворуч: [ 11111111-11{1} ]"

Здвиг ліворуч: [ 11111111-1{1}= ]"

Здвиг ліворуч: [ 11111111-{1}1= ]"

Здвиг ліворуч: [ 11111111{-}11= ]"

Перевірка: [ 1111111{1}-11= ]"

Здвиг праворуч: [ 1111111 {-}11= ]"

Здвиг праворуч: [ 1111111 -{1}1= ]"

Здвиг праворуч: [ 1111111 -1{1}= ]"

Здвиг праворуч: [ 1111111 -11{=} ]"

Здвиг ліворуч: [ 1111111 -1{1} ]"

Здвиг ліворуч: [ 1111111 -{1}= ]"

Здвиг ліворуч: [ 1111111 {-}1= ]"

Перевірка: [ 1111111{ }-1= ]"

Перевірка: [ 111111{1} -1= ]"

Здвиг праворуч: [ 111111 { }-1= ]"

Здвиг праворуч: [ 111111 {-}1= ]"

Здвиг праворуч: [ 111111 -{1}= ]"

Здвиг праворуч: [ 111111 -1{=} ]"

Перевірка: [ 111111 -{1} ]"

Вихід на мінус: [ 111111 {-}= ]"

Перевірка: [ 111111 { }-= ]"

Перевірка: [ 111111{ } -= ]"

Перевірка: [ 11111{1} -= ]"

Здвиг праворуч: [ 11111 { } -= ]"

Здвиг праворуч: [ 11111 { }-= ]"

Здвиг праворуч: [ 11111 {-}= ]"

Здвиг праворуч: [ 11111 -{=} ]"

Вихід на мінус : [ 11111 {-} ]"

Кінець: [ 11111 { }- ]"

Машина Тьюрінга

Одне з уточнень понять алгоритму було дано Е. Постом і А. Тьюрінгом незалежно один від одного в 1936-1937гг. Основна думка їх полягала в тому, що алгоритмічні процеси - це процеси, які може здійснити відповідним чином влаштована "машина". Ними були описані гіпотетичні (умовні) пристрої, які отримали назву «Машина Поста» і «Машина Тьюрінга» (МТ). Так як в них багато спільного, то розглянемо тільки машину Тьюрінга.

Машина Тьюрінга складається з наступних частин:

1. Інформаційної стрічки, що представляє нескінченну пам'ять машини. Це нескінченна стрічка, розділена на осередки. У кожній клітинці можна помістити лише один символ з можливого їх безлічі S = {S 1, S 2, ...., S m}, яка складає зовнішній алфавіт МТ. У цьому алфавіті один з символів (нехай це буде S 1) відповідає порожньому символу.

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

3. Керуючого пристрою (УУ), яке в кожний момент часу знаходиться в деякому стані. Число станів звичайно. Позначимо множину станів як {q 1, q 2, ..., q n}. Серед станів одне відповідає заключного, при якому МТ зупиняється. УУ пов'язано зі зчитування голівкою.

Крім того, УУ виробляє три команди на переміщення стрічки: П, Л, Н, де

П - переміститися на сусідню праворуч осередок;

Л - переміститися сусідню зліва осередок;

Н - продовжувати оглядати ту ж комірку.

Сукупність символів {q 1, q 2, ..., q n} і {П, Л, Н} утворюють внутрішній алфавіт МТ.

Робота машини відбувається в дискретному часі. У початковий момент часу в обмежений ділянка стрічки записано слово в алфавіті S, що представляє вихідна умова завдання. В інших осередках передбачається записаним порожній символ. Керуючий пристрій знаходиться в початковому стані q 1. На кожному кроці роботи МТ оглядає на стрічці символ S k і залежно від нього і від стану q i, переходить в стан q j, замінює S k на символ S l і пересуває стрічку (або ні) на одну клітинку.

Кожна елементарна операція має вигляд

q i S k ® q j S l П (Л, Н).

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

Зчитує головка і керуючий пристрій утворюють логічний блок, який представляє собою (2,3)-полюснік.

SHAPE \ * MERGEFORMAT S k

S 1

ЛБ

q i

q j

{П, Л, Н}

Рис. 2

Структура МТ має наступний вигляд:

S 1

S 2

...

S k

...

S m

Q

P

S l

S k

q i

q j

П (Л, Н)

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

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

Якщо зупинка і сигнал про зупинку ніколи не надходять, то говорять, що МТ не може бути застосована до послідовності U.

Розглянемо функціонування МТ на прикладі складання двох чисел, які будемо зображати у вигляді набору одиниць.

Зовнішній алфавіт буде складатися з символів: {1, +, Ù}, де Ù - порожній символ.

Внутрішній алфавіт буде складатися з чотирьох символів {q 1, q 2, q 3,!}, Де символ q 1 означає початковий стан, а! - Заключне стан.

Нехай на стрічці записана початкова інформація:

1 2 3 4

1

1

+

1

Абстрактна програма, що реалізує операцію складання, буде мати вигляд: 1q 1 → Ùq 3 П

1q 3 → 1q 3 П

+ Q 3 → + q 3 П Ùq 3 → 1q 2 H + q 2 → + q 2 Л

1q 2 → 1q 2 Л Ùq 2 → Ùq 1 П

+ Q 1 → Ù! Н

  1. Основна гіпотеза теорії алгоритмів (теза Черча),

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

Обґрунтування гіпотези.

Мова не йде про доведення гіпотези, так як вона містить не формалізовані математичні поняття.

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

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

  1. Універсальна машина Тюрінга,

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

Вимоги до кодування:

1. різним буквах повинні зіставлятися різні кодові групи, і одна і та ж буква скрізь замінюється однієї і тієї ж кодової групою;

2. Рядок тексту повинна однозначним чином розбиватися на кодові групи.

Складність універсальної машини Тюрінга визначається твором числа символів її зовнішнього алфавіту на число станів пристроєм управління.

Теорема Триттера визначає, що мінімальна універсальна машина Тюрінга має 4 символу в зовнішньому алфавіті та її УУ має 6 станів.

Застережні СКЛАДНОСТІ Алгоритм

Оцінка алгоритму

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

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

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

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

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

Реальний час роботи програми на комп'ютері залежить не тільки від вибраного алгоритму. Значною мірою воно визначається типом ЕОМ, структурою подання даних, програмною реалізацією.

Найпростішим способом оцінити алгоритм - зіставити йому число елементарних операцій в описі. При реалізації це може бути кількість команд у програмі або обсяг пам'яті, яку займає програма. У цьому випадку оцінка d алгоритму A є деяке число k: d (A) = k.

Більш цікавою може бути оцінка пари: алгоритму A і конкретного завдання a, яка їм вирішується. Наприклад, оцінкою може бути обсяг пам'яті під програму, вихідні та проміжні дані, необхідні для вирішення даної задачі a, або час для вирішення цього завдання з допомогою алгоритму A. У будь-якому випадку це буде число d (A (a)) = k (a).

Властивість масовості алгоритму припускає, що алгоритм буде використовуватися для вирішення класу A подібних завдань, з різними вихідними даними. Тому більш складною оцінкою буде оцінка як функція властивості завдання. Cопоставім кожній задачі з класу задач, що розв'язуються алгоритмом, деякий вектор числових параметрів задачі N = (n1, n2, ..., nt). У цьому випадку оцінка d (A (A)) = k (N), і це вже буде функція від параметрів задачі.

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

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

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

Приклад. Нехай функція оцінки має вигляд як на мал.1. Необхідно вирішувати задачі з параметром n, що лежить в межах від 5 до 15. У цьому випадку необхідно вибрати для реалізації алгоритм A1. Якщо параметр змінюється від 20 до 30, краще використовувати алгоритм A2. Якщо параметр змінюється в межах від 10 до 35, то можливо або вибрати будь-який з даних алгоритмів, або побудувати новий алгоритм, який, наприклад, перевіряє кожен раз значення параметра і вибирає відповідний алгоритм.