Частина 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.6.9 Дерево

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

3.2.8 Реалізації абстрактних типів даних

3.2.8.1 Кортеж

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

3.2.8.3 Реалізція множин за допомогою геш-таблиці

3.2.8.4 Реалізція словників за допомогою геш-таблиці

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

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

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

3.2.8.6.2 АВЛ-дерево

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

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

3.2.8.8 Купа

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

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

3.2.8.8.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 Оцінювання складності алгоритму під час застосування кожної стратегії