Частина 1. Тема 4. Базові алгоритми обробки інформації


4.1 Алгоритми пошуку

4.1.1 Послідовний пошук та оцінка його складності

4.1.2 Послідовний пошук з бар’єром та оцінка його складності

4.1.3 Бінарний пошук та оцінка його складності

4.1.4 Порозрядний пошук та оцінка його складності

4.1.5 Зовнішній пошук

4.1.6 Застосування геш-таблиць для пошуку. Розв’язання колізій при гешуванні відкритою адресацією та методом ланцюжків.

4.2 Алгоритми сортування даних

4.2.1 Сортування вибором та оцінка його складності

4.2.2 Сортування вставками та оцінка його складності

4.2.3 Сортування обміном та оцінка його складності

4.2.4 Сортування злиттям та оцінка його складності

4.2.5 Сортування Шелла та оцінка його складності

4.2.6 Швидке сортування та оцінка його складності

4.2.7 Пірамідальне сортування та оцінка його складності

4.2.8 Сортування деревом та оцінка його складності

4.2.9 Порозрядне сортування та оцінка його складності

4.2.10 Мережі сортування

4.2.11 Зовнішнє сортування

4.3 Алгоритми порівняння зі взірцем

4.3.1 Примітивний алгоритм пошуку підрядка та оцінка його складності

4.3.2 Алгоритм Рабіна-Карпа та оцінка його складності

4.3.3 Алгоритм Кнута-Морріса-Пратта та оцінка його складності

4.3.4 Алгоритм Бойєра-Мура та оцінка його складності

4.3.5 Пошук підрядків за допомогою скінчених автоматів

4.3.6 Наближене порівняння рядків

4.4 Чисельні алгоритми
(більш глибоко тему розкрито в додатковій частині курсу, яка присвячена чисельним методам(тема №10))

4.4.1 Матриці та дії з ними. Алгоритм Копперсміта-Вінограда та алгоритм Штрассена. 

4.4.2 Робота з довгими числами

4.4.3 Многочлени та швидке перетворення Фур’є

4.4.4 Системи алгебраїчних рівнянь

4.4.5 Розв’язання систем лінійних рівнянь

4.4.6 Розв’язання нелінійних рівнянь

4.4.7 Алгоритми апроксимації і інтерполяція чисельних функцій

4.5 Алгоритми на графах та мережеві алгоритми

4.5.1 Пошук у графі. Пошук в ширину і глибину.

4.5.2 Побудова кістякового дерева (каркасу графа)

4.5.3 Каркас мінімальної ваги. Метод Дж. Крускала.  Метод Р. Пріма.

4.5.4 Досяжність. Визначення зв’язності. Пошук зв'язних компонентів. Двозв’язність.

4.5.5 Ейлерові цикли

4.5.6 Гамільтонові цикли

4.5.7 Фундаментальна множина циклів

4.5.8 Побудова найкоротших шляхів з виділеної вершини. Алгоритм Дейкстри. Алгоритм Беллмана-Форда.

4.5.9 Побудова найкоротших шляхів між двома вершинами

4.5.10 Алгоритм Флойда-Воршелла

4.5.11 Метод генерації всіх максимальних незалежних множин графа. Задача про найменше покриття.

4.5.12 Задача про найменше розбиття

4.5.13 Розфарбування графа. Пошук мінімального розфарбування вершин графа.

4.5.14 Потоки в мережах

4.5.15 Метод побудови максимального потоку в мережі

4.5.16 Методи наближеного рішення задачі комівояжера: алгоритм Ейлера, алгоритм Крістофідеса, застосування локальної оптимізації

4.5.17 Складність алгоритмів на графах

4.6 Паралельні та розподілені алгоритми

4.6.1 Методи паралельного виконання програми за допомогою спільної пам’яті або за допомогою передачі повідомлень

4.6.2 Організація паралельних обчислень відповідно до принципу консенсусу і на основі вибору

4.6.3 Методи визначення завершення паралельних обчислень

4.6.4 Паралельний пошук, паралельне сортування, паралельні чисельні алгоритми, паралельні алгоритми на графах