
- •ТЕОРІЯ АЛГОРИТМІВ
- •Мета курсу
- •Основна література
- •Додаткова література
- •Структура курсу
- •Оцінювання роботи
- •Атестація
- •Рейтинги дифзаліку
- •Розділ 1.
- •1.1. Від задачі до програми
- •Постановка задачі
- •Приклад
- •Що дано?
- •Що ми хочемо знайти?
- •Тому ми повертаємося до Андрія і вимагаємо в нього додаткову інформацію. Він повідомляє,
- •Побудова моделі
- •На вибір відповідної математичної структури будуть впливати такі фактори:
- •Зробивши пробний вибір математичної структури, задачу слід переформулювати в термінах відповідних математичних об’єктів.
- •Приклад.
- •Що ми шукаємо в задачі?
- •Розробка алгоритму
- •Алгоритм повинен задовольняти вимогам, які дещо суперечать одна одній:
- •Якщо маємо справу із завданням, рішення якого вимагає значних обчислювальних витрат, то вартість
- •Приклад.
- •Алгоритм ETS (вичерпний комівояжер)
- •Правильність алгоритму
- •Приклад.
- •Реалізація алгоритму
- •По-друге, реалізація може виявитися складним процесом тому, що перед написанням програми потрібно побудувати
- •По-третє, одна справа – довести правильність конкретного алгоритму, описаного в словесній формі, інша
- •Аналіз алгоритму та його складності
- •Нехай А – алгоритм для розв’язку певного класу задач, а n – розмірність
- •Наступне позначення стандартне в багатьох математичних дисциплінах, в тому числі в аналізі алгоритмів.
- •Математичне визначення порядку зростання функції
- •Класи складності алгоритмів
- •Будемо користуватися критерієм оцінки часу виконання для оцінки якості алгоритму А.
- •Звичайно, хотілося б провести якомога точніший аналіз, тобто знати якомога більше про функцію
- •Важливо також знати, наскільки погано працює експоненційний алгоритм. Існує багато важливих задач, для
- •Приклад. Розглянемо алгоритм ETS.
- •Припустимо, що у нашого комівояжера 20 міст і що у нас є феноменальний
- •Необхідно підкреслити, що ступінь зростання якнайгіршого часу виконання - не єдиний або найважливіший
- •2.Якщо програма працюватиме тільки з "малими" вхідними даними, то степінь зростання часу виконання
- •3.Ефективні, але складні алгоритми можуть бути небажаними, якщо готові програми підтримуватимуть особи, що
- •Коли варто проводити аналіз алгоритму?
- •Перевірка програми
- •Перевірка правильності підтверджує, що програма робить саме те, для чого вона була призначена.
- •Міри безпеки.
- •Локальні перевірки.
- •Перевірка на неприпустимі значення. В кожному операторі, якщо це можливо, розгляньте можливість появи
- •Перевірка усіх частин програми.
- •Тестові дані.
- •Перевіряйте програму на даних, що лежать на границях допустимих діапазонів. Якщо діапазон для
- •Перевіряйте програму на даних, що виходять за межі припустимого діапазону вхідних даних. Остерігайтеся
- •Пошук скритих помилок.
- •Повторна перевірка.
- •Перевірка ефективності реалізації направлена на відшукання способів змусити правильну програму працювати швидше або
- •Методи підвищення ефективності програми машинно незалежні:
- •Порядок в логічних виразах.
- •Профілі виконання.
- •Профілі виконання корисні не тільки для перевірки ефективності реалізації, але і для інших
- •Перевірка обчислювальної складності зводиться до експериментального аналізу складності алгоритму або до експериментального порівняння
- •Документація
- •Зовнішня документація.
- •Програмна документація.
- •Слід використовувати мнемонічні імена для змінних та підпрограм. Вони повинні натякати на їх
- •Уникайте поганого або заплутаного тексу програми.
- •Уникайте нестандартних засобів версії мови. Якщо ви передбачаєте, що програма повинна використовуватися широким
- •Можна стверджувати, що вихідна інформація є найбільш важливим документом будь-якої програми, оскільки вона
- •Розробник програми повинен допомагати користувачу, складаючи осмислені повідомлення про помилки. Слід намагатися передбачити
- •Обслуговування
- •На простоту та якість обслуговування впливають такі фактори:
- •1.2. Час виконання програм
- •На час виконання програми впливають наступні чинники:
- •Розглянемо, як виконуються операції додавання і множення з використанням О-символіки.
- •Приклад. Правило сум використовується для обчислення часу послідовного виконання програмних фрагментів з циклами
- •Правило добутків. Якщо T1(n) і Т2(n) мають степені зростання O(f(n)) і O(g(n)) відповідно,
- •Приклад. Визначення часу виконання програми. procedure bubble ( var A: array [1.. n]
- •Число елементів n, що підлягають сортуванню, може служити мірою об'єму вхідних даних.
- •Тепер підрахуємо час виконання умовних і циклічних операторів. Оператори if і for вкладені
- •Далі розглянемо групу (2)–(6) операторів внутрішнього циклу. Загальне правило обчислення часу виконання циклу
- •Тепер перейдемо до зовнішнього циклу, який містить всі виконувані оператори програми. Оператор (1)
- •Загальні правила обчислення часу виконання програми
- •3.Час виконання умовних операторів складається з часу виконання умовно виконуваних операторів і часу
- •4.Час виконання циклу є сумою часу всіх виконуваних ітерацій циклу, операторів тіла циклу,
- •5.Для програм, що містять декілька процедур (серед яких немає рекурсивних), можна підрахувати загальний
- •Домашнє завдання

ТЕОРІЯ АЛГОРИТМІВ

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

Основна література
1.Ахо А., Хопкрофт Д., Ульман Д. Структуры данных и алгоритмы / М.: Вильямс, 2000 – 384с.
2.Гудман С., Хидетниеми С. Введение в разработку и анализ алгоритмов/М.: Мир, 1981 – 368 с.
3.Ахо А., Хопкрофт Д., Ульман Д. Построение и анализ вычислительных алгоритмов / М.: Мир, 1978 – 519с.
4.Ковалюк Т.В. Основи програмування / К.: BHV, 2005 – 384 с.

Додаткова література
1.Кнут Д. Искусство программирования, т.3. Сортировка и поиск./ М.: Мир, 1978 – 355 с.
2.Седжвик Р. Фундаментальные алгоритмы на С++ / К.: ДиаСофт, 2001 – 688с.
3.Гери М., Джонсон Д. Вычислительные машины и труднорешаемые задачи / М.: Мир, 1982 – 419с.

Структура курсу
Побудова і аналіз алгоритмів
Методи розробки алгоритмів
Основні абстрактні типи даних
Оператори обробки множин
Оператори обробки графів
Алгоритми сортування
Методи аналізу рекурсивних алгоритмів

Оцінювання роботи
Практичні роботи (по 10 балів):
–Побудова і аналіз алгоритмів
–Методи розробки алгоритмів
–Абстрактні типи даних
–Оператори обробки множин
–Оператори обробки графів
–Алгоритми сортування
Контрольні роботи – 40 балів

Атестація
І атестація 25 березня набрати 20 балів
ІІ атестація |
30 квітня |
набрати 50 балів |
|

Рейтинги дифзаліку
Рейтинг |
Оцінка за |
RD |
шкалою |
|
ECTS |
95…100 |
А |
85…94 |
B |
75…84 |
C |
65…74 |
D |
60…64 |
E |
RD < 60 |
Fx |
не здано всі |
F |
практичні роботи |
|
Традиційна
оцінка
відмінно
добре
задовільно
незадовільно не допущений

Розділ 1.
Побудова і аналіз алгоритмів

1.1. Від задачі до програми
Література для самостійного читання:
Постановка задачі |
с.16 [2] |
Побудова моделі |
с.17 [2] |
Розробка алгоритму |
с.19 [2] |
Правильність алгоритму |
с.21 [2] |
Реалізація алгоритму |
с.22 [2] |
Аналіз алгоритму та його складності с.23 [2] |
|
Перевірка програми |
с.26, с.197 [2] |
Документація |
с.28, с.216 [2] |