Алгоритми.ppt
- Количество слайдов: 35
Алгоритми: основні поняття Властивості алгоритмів Етапи розробки Основні типи задач Аналіз ефективності алгоритмів Основні класи алгоритмів
¡ Алгоритм - точна інструкція, яка задає обчислювальний процес і являє собою скінчену послідовність елементарних дій, що чітко визначає процес перетворення вихідних даних в кінцевий результат
Властивості алгоритмів ¡ Скінченість (1 — алгоритм складається з ¡ Детермінованість (визначеність) Елементарність (зрозумілість) Результативність Масовість Ефективність окремих елементарних дій, множина різних дій скінчена; 2 — алгоритм має закінчуватись за скінчену кількість кроків. ) ¡ Дискретність (кожен крок виконується за скінчений час) ¡ ¡
Виконавець алгоритму – це людина або , пристрій, здатний виконувати певний набір команд Алгоритм складають з оріентацією на певного виконавця. Виконавця характеризують середовище; ¡ елементаpні дії; ¡ cистема команд; ¡ відмови. ¡
Основні способи запису алгоритмів вербальний ¡ символьний ¡ графічний ¡ Блок-схема –графічне зображення алгоритму у вигляді певних чином зв’язаних між собою декількох типів блоків Мова програмування — формальна знакова система, призначена для запису комп’ютерних програм.
Основні елементи блок-схем Елемент блок-схеми Позначення початку і закінчення алгоритму Початок Опис вводу або вивиду даних, має один вход - зверху і один вихід - знизу. Дані Опис лінійної послідовності команд, має один вход - зверху і один вихід - знизу. Послідовність команд + Умова Лічильник Призначення елементу - Позначення умов в структурах «розгалуження» і «вибір» , має один вход - зверху , і два виходи – наліво, направо Початок циклу Виклик підпрограми (функції)
Лінійний алгоритм ¡ Лінійний алгоритм – набір команд, що виконуються послідовно в часі одна за одною
Алгоритмічна структура «розгалуження» ¡ Алгоритм, що містить хоча б одну умову, в результаті якої забезпечується перехід на один з двох можливих кроків, називається алгоритмом з розгалуженням.
Алгоритмічна структура «цикл» У алгоритмічній структурі «цикл» серія команд (тіло циклу) виконується багаторазово. Циклічні алгоритмічні структури бувають двох типів: ¡ Цикл з лічильником, в якому тіло циклу виконується певну кількість разів; ¡ Цикл з умовою, в якому тіло циклу виконується доки виконується умова
Алгоритмічна структура «цикл»
Мови програмування ¡ ¡ ¡ 1. 2. Машинні Машинно-орієнтовані (асемблери) Машинно-незалежні Процедурні Об’єктно-орієнтовані
Машинний код (платформенноорієнтований код), машинний мова - система команд (набір кодів операцій) конкретної обчислювальної машини, яка інтерпретується безпосередньо процесором або мікропрограмами цієї обчислювальної машини
Мова асемблера - система позначень, використовувана для подання в зручній формі програм, записаних в машинному коді. Мова асемблера дозволяє програмісту користуватися алфавітними мнемонічними кодами операцій, присвоювати символічні імена регістрів ЕОМ і пам'яті, а також задавати зручні для себе схеми адресації. Команди мови асемблера повністю відповідають командам процесора.
Компоненти алгоритмічної мови ¡ Алфавіт ¡ Синтаксис ¡ Семантика
Поняття мов програмування ¡ ¡ ¡ Імена (ідентифікатори) Операції Дані 1. 2. ¡ ¡ Константи Змінні Вирази Оператори
Базові структури даних Лінійні: масив і список ¡ рядки, бітові масиви ¡ одно- і двонапрямлені списки, черга, черга з пріоритетами Граф ¡ Орієнтований і неорієнтований ¡ Дерево Множина ¡ мультимножина
Важливі типи задач Сортування; ¡ Пошук; ¡ Обробка рядків; ¡ Задачі з теорії графів; ¡ Комбінаторні задачі; ¡ Геометричні задачі; ¡ Чисельні задачі. ¡
Етапи розробки і аналізу алгоритмів
Постановка задачі Збіp інфоpмації про задачу; ¡ Фоpмулювання умови задачі; ¡ Визначення кінцевої мети розв’язання задачі; ¡ Визначення форми виведення результатів; ¡ Опис даних (типів, діапазонів величин, структури). ¡
Аналіз і дослідження задачі аналіз існуючих аналогів; ¡ аналіз технічних і програмних засобів; ¡ pозробка математичної моделі; ¡ pозробка структур даних. ¡
Розробка алгоритму вибір методу проектування алгоритму; ¡ вибір форми запису алгоритму ¡ вибіp тестів і методу тестування; ¡ проектування алгоритму. ¡
Програмування вибір мови програмування; ¡ уточнення способів організації даних; ¡ запис алгоpитму на обраній мові пpогpамування. ¡
Відлагодження синтаксичне відлагодження; ¡ відлагодження семантики і логічної стpуктуpи; ¡ тестові розрахунки і аналіз pезультатів тестування; ¡ вдосконалення пpогpами. ¡
¡ Відлагодження програми —процес пошуку і ліквідації помилок в програмі, що відбувається за результатами її запуску на комп’ютері. Тестування— це випробування, перевірка правильности роботи програми в цілому або її складових частин.
Супровід програми Доробка програми для розв’язання конкретних задач; ¡ Складання документації до розв’язаної задачі, до математичної моделі, до алгоpитму, до пpогpами, до набору тестів, до використання. ¡
Вимоги до тестів ¡ ¡ ¡ ¡ Має бути випробувана кожна гілка алгоритму; Кожен наступний тест має перевіряти щось, що не перевірялося попередньо; Перший тест має бути максимально простим, щоб перевірити, чи працює програма взагалі; Арифметичні операції в тестах мають спрощуватись для зменшення обсягу обчислень; Кількість елементов послідовностей, точність для ітераційних обчислень, кількість проходів цикла в тестових прикладах мають задаватись з міркувань зменшення обсягу обчислень; Мінімізація обчислень не має знижувати надійність контролю; Тестування має бути цілеспрямованим і систематизованим; Ускладнення тестових даних має відбуватись поступово
Етапи тестування Перевірка в нормальних умовах ¡ Перевірка в граничних умовах ¡ Перевірка в екстремальних умовах ¡
Основні помилки ¡ ¡ ¡ ¡ Неправильна постановка задачі Невірний алгоритм Помилки аналізу Семантичні помилки Синтаксичні помилки Помилки виконання операцій Помилки даних Помилки вводу-виводу
Основи аналізу ефективності алгоритмів ¡ Часова ефективність є індикатором швидкості роботи алгоритму l l ¡ ¡ ¡ Оцінюється за кількістю основних операцій, які має виконати алгоритм при обробці вхідних даних розміру n Важливим є порядок росту часу виконання алгоритму в залежності від n Просторова ефективність показує, скільки додаткової оперативні пам’яти потрібно для роботи алгоритму Ефективність оцінюють в найгіршому, найкращому і середньому випадках Види аналізу: математичний і емпіричний
Вимірювання часу виконання алгоритму ¡ ¡ Безпосереднє (емпіричний аналіз) Визначення кількісті базових операцій, які має виконати алгоритм при обробці вхідних даних розміру n (математичний аналіз) T(n) Сор * С(n) Наприклад, С(n) = n(n — 1)/2
Порядок зростання У випадку малих розмірів вхідних даних неможливо помітити різницю в часі виконання між ефективним і неефективним алгоритмом. ¡ Для великих значень n обчислюють порядок зростання функції. ¡
Наближені значення функцій, важливих для аналізу алгоритмів n log 2 n n n·log 2 n n 2 n 3 2 n n! 101 3, 3· 101 102 103 3, 6· 106 102 6, 6· 102 104 106 1, 3· 1030 9, 3· 10157 103 10· 103 106 109 104 13· 104 108 1012 105 17· 105 1010 1015 106 20· 106 1012 1018
Основні класи ефективності Константа ¡ Логарифмічна ¡ Лінійна ¡ n-log-n ¡ Квадратична ¡ Кубічна ¡ Експоненційна ¡ Факторіальна ¡
Емпіричний аналіз алгоритмів 1. З’ясування мети експерименту. 2. Визначення метрики М і одиниць вимірювання (кількість операцій або час роботи). 3. Визначення характеристик вхідних даних (діапазон, розмір і т. д. ). 4. Створення програми, що реалізує алгоритм (алгоритми) для проведення експерименту. 5. Генерація зразка вхідних даних. 6. Виконання алгоритму (алгоритмів) над зразком вхідних даних і запис результатів спостереження. 7. Аналіз одержаних даних.
Різниця між математичним і эмпіричним аналізом алгоритмів Перевага математичного аналізу — незалежність від конкретних вхідних даних Недолік — обмежене застосування, особливо для дослідження ефективності в середньому випадку. Перевага емпіричного аналізу - можливість застосування для всіх алгоритмів Недолік - залежність результатів від конктретних набору вхідних даних і використаного комп’ютера.
Алгоритми.ppt