Информ_04_АЛГОРИТМ.ppt
- Количество слайдов: 25
АЛГОРИТМ Алгоритм — заздалегідь задане зрозуміле і точне розпорядження можливому виконавцеві зробити певну послідовність дій для отримання рішення задачі за кінцеве число кроків.
Назва "алгоритм" відбулася від латинської форми імені найбільшого середньоазіатського математика Мухаммеда ибн Муса ал-Хорезми (Alhorithmi), що жив в 783— 850 рр. У своїй книзі "О індійському рахунку" він виклав правила запису натуральних чисел за допомогою арабських цифр і правила дій над ними "стовпчиком", знайомі тепер кожному школяру. У XII столітті ця книга була переведена на латинь і набула широкого поширення в Європі. Алгоритми є об'єктом систематичного дослідження прикордонною між математикою і інформатикою наукової дисципліни, що примикає до математичної логіки - теорії алгоритмів. 2
"ВИКОНАВЕЦЬ АЛГОРИТМУ" Виконавець алгоритму — це деяка абстрактна або реальна (технічна, біологічна або біотехнічна) система, здатна виконати дії, що вказані алгоритмом. Виконавця характеризують: • середовище; • елементарні дії; • система команд; • відмови. Середовище (або обстановка) — це "житло" виконавця. Система команд. Кожен виконавець може виконувати команди тільки з деякого строго заданого списку — системи команд виконавця. Після виклику команди виконавець здійснює відповідну елементарну дію. Відмови виконавця виникають, якщо команда викликається при неприпустимому для неї стані середовища. 3
ВЛАСТИВОСТІ АЛГОРИТМУ 1. Зрозумілість для виконавця — виконавець алгоритму повинен розуміти, як його виконувати. 2. Дискретність — алгоритм повинен представляти процес рішення задачі як послідовне виконання простих кроків. 3. Визначеність — кожне правило алгоритму повинне бути чітким, однозначним і не залишати місця для свавілля. 4. Результативність полягає в тому, що за кінцеве число кроків алгоритм або повинен приводити до рішення задачі, або після кінцевого числа кроків зупинятися із-за неможливості отримати рішення з видачею відповідного повідомлення, або необмежено продовжуватися протягом часу, відведеного для виконання алгоритму, з видачею проміжних результатів. 5. Кінцевий – виконується за кінцеву кількість кроків. 6. Масовість означає, що алгоритм рішення задачі розробляється в загальному вигляді, тобто він повинен бути застосовний для деякого класу завдань, що розрізняються лише початковими даними. 4
ФОРМА ЗАПИСУ АЛГОРИТМУ • словесна – запис на природній мові; • графічна – зображення з графічних символів); • Псевдокоди – напівформалізовані описи алгоритмів на умовній алгоритмічній мові, що включають як елементи мови програмування, так і фрази природної мови; • програмна – тексти на мовах програмування). СЛОВЕСНИЙ СПОСІБ ЗАПИСУ АЛГОРИТМІВ Словесним способом запису алгоритмів є опис послідовних етапів обробки даних. Алгоритм задається в довільному викладі на природній мові. Словесний спосіб не має широкого розповсюдження, оскільки такі описи: • строго не формалізуються; • страждають багатослівністю записів; • допускають неоднозначність тлумачення окремих розпоряджень. 5
АЛГОРИТМ ЕВКЛІДА (знаходження найбільшого загального дільника) 1. Находження залишку r: = m mod n. 2. Заміна m: =n; n: =r. 3. Зупинка процесу? Якщо n > 0, то перейти до п. 1 4. Зупинка процесу m – шукане число. 6
ГРАФІЧНИЙ СПОСІБ ЗАПИСУ АЛГОРИТМІВ При графічному уявленні алгоритм зображується у вигляді послідовності зв'язаних між собою функціональних блоків, кожен з яких відповідає виконанню одного або декількох дій. Таке графічне уявлення називається схемою алгоритму або блоксхемою. Назва символу Позначення і приклад Пояснення заповнення Процес Обчислювальна дія або послідовність дій Рішення Перевірка умов Модифікація Початок циклу 7
ПСЕВДОКОД Псевдокод є системою позначень і правил, призначеною для одноманітного запису алгоритмів. Псевдокод займає проміжне місце між природною і формальною мовами. З одного боку, він близький до звичайної природної мови, тому алгоритми можуть на нім записуватися і читатися як звичайний текст. З іншого боку, в псевдокоді використовуються деякі формальні конструкції і математична символіка, що наближає запис алгоритму до загальноприйнятого математичного запису. Логічна структура будь-якого алгоритму може бути представлена комбінацією трьох базових структур: послідовні, розгалужені, цикли. 8
Алгоритми на алгоритмічній мові Основні службові слова Загальний вид алгоритму: алг назва алгоритму (аргументи і результати) дано умови застосовності алгоритму треба мету виконання алгоритму нач опис проміжних величин | послідовність команд (тіло алгоритму) кон 9
Алгоритм лінійної структури складається з послідовності дій і має одну гілку обчислень. Наприклад: Y = X 2. 10
Розгалужений алгоритм - присутні один чи декілька логічних операторів (перевірка умови) і декілька гілок рішення. Наприклад, вибір найбільшого з двох введених чисел. 11
Циклічний алгоритм - повторення певних дій багато разів. Сукупність таких дій називають циклом. В циклічних алгоритмах є параметр циклу – величина, яка визначає багатократне виконання циклу. Початкове і кінцеве значення параметрів циклу. Крок циклу – значення, на яке змінюється параметр циклу при кожному повторі Наприклад, визначення суми десяти довільних чисел. 12
ЗАПИС АЛГОРИТМА НА АЛГОРИТМІЧНІЙ МОВІ ЗАГАЛЬНИЙ ВИД АЛГОРИТМУ алг назва алгоритму (аргументи і результати) дано умови застосовності алгоритму треба мету виконання алгоритму нач опис проміжних величин | послідовність команд (тіло алгоритму) кон Частина алгоритму від слова алг до слова нач називається заголовком, а частина між словами нач і кон — тілом алгоритму. 13
алгоритмічна мова Мова блок-схем 1. якщо—то якщо умова то дії все 2. якщо—то—інакше якщо умова то дії 1 інакше дії 2 все 3. Вибір вибір при умова 1: дії 1 при умова 2: дії 2 . . . при умова N: дії N все 4. вибір—інакше вибір при умова 1: дії 1 при умова 2: дії 2 . . . при умова N: дії N інакше дії N+1 все 14
АБСТРАКТНІ МАШИНИ Абстрактні машини Поста і Тюрінга, призначені для доказів різних тверджень про властивості програм для них. Вони були запропоновані незалежно один від одного (і практично одночасно) в 1936 р. американським математиком Емілем Постом і англійським математиком Алланом Тьюрінгом. 15
МЕТОДИ РОЗРОБКИ АЛГОРИТМІВ 1. Програмування зверху вниз. По кроку поділяють алгоритм на все менші частини. 2. Метод частинних цілей. Складна задача зводиться поступово до більш простих. 3. Метод підйому. Починають «знизу» і поступово ускладнюють її просуваючись «вгору» 4. Програмування з відходом назад. Складання алгоритму перебором варіантів. 5. Алгоритм гілок і меж. Складання алгоритму методом перебору. Досліджують деревоподібну модель і шукають найкращу модель. 16
Абстрактна машина Поста є нескінченною стрічкою, розділеною на однакові клітки, кожна з яких може бути або порожньою, або заповненою міткою «V» , і головки, яка може переміщатися уздовж стрічки на одну клітку управо або вліво, наносити в клітку стрічки мітку, якщо цієї мітки там раніше не було, витирати мітку, якщо вона була, або перевіряти наявність мітки в клітці. Інформація про заповнені мітками клітки стрічки характеризує стан стрічки, який може мінятися в процесі роботи машини. У кожен момент часу головка ( «-» ) знаходиться над однією з кліток стрічки і, як то кажуть, оглядає її. Інформація про місцезнаходження головки разом із станом стрічки характеризує стан машини Поста. 17
Команда машини Поста має таку структуру: п Km де п - порядковий номер команди, K-дія, що виконується головкою, т - номер наступної команди, що підлягає виконанню. Існує всього шість команд машини Поста: 18
Розглянемо реалізацію деякого типового елементу програми машини Поста. Хай заданий початковий стан головки і потрібно на порожній стрічці написати дві мітки: одну в секцію під головкою, другу праворуч від неї. Це можна зробити за наступною програмою: 19
МАШИНА ТЮРІНГА Машина Тюрінга складається з стрічки (обмеженою зліва, але не справа), головки, що читає і пише, стрічкопротяжного механізму і операційного виконавчого пристрою, який може знаходитися в одному з дискретних станів qo, q 1. . . , qs, що належать деякій кінцевій сукупності (алфавіту внутрішніх станів), qо називається початковим станом. Машина Тюрінга починає роботу з початкового стану - q 0. Розглянемо приклад однієї з схем машини Тюрінга. Алгоритм запису числа в десятковій системі числення. Дана кінцева послідовність міток, записаних в клітки стрічки підряд, без пропусків. Потрібно записати в десятковій системі число цих міток перерахувати мітки. Суть алгоритму полягає в тому, що до 0, записаного на стрічці на початку роботи машини, машина додає 1, стирає мітку за міткою, так що замість нуля виникає число 0 + k. Легко можуть бути побудовані алгоритми складання чисел, їх перемножування, знаходження найбільшого загального дільника і так далі. 20
Головна мета введення машин Поста і Тюрінга: не програмування, а вивчення властивостей алгоритмів і проблеми алгоритмічної вирішуваної завдань. 21
НОРМАЛЬНІ АЛГОРИТМИ МАРКІВ Для формалізації поняття алгоритму російський математик А. А. Марків в 40 роки ХХ сторіччя запропонував використовувати асоціативне числення. Розглянемо деякі поняття асоціативного числення. Хай є алфавіт (кінцевий набір різних символів). Складові його символи назвемо буквами. Будь-яка кінцева послідовність букв алфавіту називається словом в цьому алфавіті. Сукупність всіх слів в даному алфавіті разом з системою допустимих підстановок називають асоціативним численням. Щоб задати асоціативне числення, треба задати алфавіт і певну систему підстановок. 22
Алгоритм в алфавіті А задається у вигляді системи допустимих підстановок, доповненої точним розпорядженням про те, в якому порядку потрібно застосовувати допустимі підстановки і коли наступає зупинка. Такий набір розпоряджень разом з алфавітом А і набором підстановок В визначають нормальний алгоритм. Процес зупиняється тільки в двох випадках: 1) коли відповідна підстановка не знайдена; 2) коли застосована остання підстановка з їх набору. 23
Нормальний алгоритм Маркова можна розглядати як універсальну форму завдання будь-якого алгоритму. Універсальність нормальних алгоритмів декларується принципом нормалізації: для будь-якого алгоритму в довільному кінцевому алфавіті А можна побудувати еквівалентний йому нормальний алгоритм над алфавітом А. 24
СПОСОБИ КОМПОЗИЦІЇ НОРМАЛЬНИХ АЛГОРИТМІВ. I. Суперпозиція алгоритмів. При суперпозиції двох алгоритмів А і У вихідне слово першого алгоритму розглядається як вхідне слово другого алгоритму В. II. Об'єднання алгоритмів. Об'єднанням алгоритмів А і У в одному і тому ж алфавіті називається алгоритм З в тому ж алфавіті, що перетворює будь-яке слово р, що міститься в перетині областей визначення алгоритмів А і В, в записані поряд слова А(р) і В(р). III. Розгалуження алгоритмів. IV. Ітерація алгоритмів. 25


