Частина 1. Тема 3. Методи відображення та синтез алгоритмів


3.1 Методи відображення алгоритмів

3.1.1 Вербальне та аналітичне подання алгоритму

3.1.2 Подання алгоритму псевдокодом або з використанням формальних мов

3.1.3 Схематичне подання алгоритму

3.1.3.1 Просте графічне подання алгоритму

3.1.3.1.1 Блок-схема алгоритму

3.1.3.1.2 Граф потоку керування

3.1.3.1.3 Граф алгоритму

3.1.3.1.4 Потоковий граф алгоритму

3.1.3.2 Структурограма

3.1.3.2.1 Діаграма Нассі-Шнайдермана

3.1.3.3 Діаграми UML

3.1.3.3.1 Множина структурних та поведінкових діаграм UML

3.1.3.3.2 Подання задачі поведінковими діаграмами

3.1.3.3.2.1 Діаграма прецедентів (діаграма варіантів використання)

3.1.3.3.3 Подання обчислень поведінковими діаграмами

3.1.3.3.3.1 Діаграма послідовності

3.1.3.3.3.2 Діаграма комунікації

3.1.3.3.3.3 Узагальнена діаграма взаємодій

3.1.3.3.3.4 Діаграма стану

3.1.3.3.3.5 Діаграма діяльності

3.1.3.3.4 Структурні діаграми

3.1.3.3.4.1 Діаграма класів

3.1.3.3.4.2 Діаграма компонентів

3.1.3.3.4.3 Діаграма розгортання

3.1.4 Подання алгоритму структурною матрицею потокового графу алгоритму

3.2 Типи та структури даних

3.2.1 Представлення даних в пам’яті комп’ютера

3.2.2 Класифікація типів даних

3.2.3 Базові типи даних

3.2.4 Похідні типи даних

3.2.5 Перетворення типів

3.2.6 Абстрактні типи даних (АТД)

3.2.6.1 Поняття абстрактоного типу даних. Контейнери та колекції

3.2.6.2 Стек

3.2.6.3 Черга. Черга з пріоритетом. Двобічна черга та двобічна черга з пріоритетом.

3.2.6.4 Список

3.2.6.5 Граф

3.2.6.6 Дерево

3.2.6.7 Множина. Мультимножина.

3.2.6.8 Асоціативний масив (словник). Мультисловник

3.2.7 Класифікація структур даних

3.2.8 Деякі важливі структури даних для реалізації АТД

3.2.8.1 Геш-таблиця

3.2.8.2 Одно- та двобічно зв'язні списки. Список з пропусками. Розгорнутий зв'язаний список.

3.2.8.3 Бінарне дерево пошуку

3.2.8.3.1 Збалансоване дерево

3.2.8.3.2 АВЛ-дерево

3.2.8.3.3 Червоно-чорне дерево

3.2.8.4 Б-дерево (англ. B-tree) та R-дерево

3.2.8.5 Купа

3.2.8.5.1. Двійкова купа

3.2.8.5.2. Біноміальна купа

3.2.8.5.3. Фібоначчієва купа

3.2.8.6 Оцінювання складності операцій при реалізації АТД

3.3 Синтез алгоритмів

3.3.1 Покрокове проектування алгоритмів

3.3.2 Підходи при синтезі алгоритмів (алгоритмічні стратегії)

3.3.2.1 Повний перебір

3.3.2.2 Метод зменшення розміру задачі

3.3.2.3 Метод декомпозиції («розділяй та володарюй»)

3.3.2.4 Метод перетворень

3.3.2.5 Динамічне програмування

3.3.2.6 Дерево розв’язків та його застосування при проектуванні алгоритмів

3.3.2.6.1 Дерево розв’язків (дерево рішень)

3.3.2.6.2 Бектрекінг (перебір з поверненням)

3.3.2.6.3 Метод гілок і границь

3.3.2.6.4 Альфа-бета відсікання

3.3.2.7 Евристичні алгоритми

3.3.2.7.1 Особливості евристичних алгоритмів

3.3.2.7.2 Метод спроб і помилок (trial and error)

3.3.2.7.3. Скупі (жадібні) алгоритми та локальний пошук

3.3.2.7.3.1 Особливості скупих алгоритмів

3.3.2.7.3.2 Локальний пошук

3.3.2.8 Ітераційне вдосконалення алгоритму

3.3.2.9 Просторово-часовий компроміс (просторово-часове балансування) при проектуванні алгоритмів

3.3.2.10 Прогнозування складності алгоритму під час застосування відповідних стратегії