
- •Контрольні питання до курсу “Комбінаторні методи та алгоритми”
- •Класифікація оптимізаційних задач
- •Задачі лінійної, нелінійної, цілочисельної, булевої, стохастичної та комбінаторної оптимізації
- •Формулювання комбінаторних оптимізаційних задач
- •Типові приклади задач комбінаторного типу. Комбінаторні задачі в програмній інженерії (приклади, формулювання).
- •5. Класифікація комбінаторних оптимізаційних задач.
- •6. Задачі поліноміальних та неполіноміальних типів. Класи р та np. Приклади.
- •7. Критерії оптимізації.
- •8. Багатокритеріальні задачі.
- •9. Зона Парето.
- •10. Елементи теорії графів та гіперграфів
- •11. Характеристичні числа графів
- •12. Числа внутрішньої та зовнішньої стійкості
- •13. Хроматичне число
- •14. Планарність графів. Теорема Понтрягіна-Куратовського.
- •15. Проектування алгоритмів. Точність, обчислювальна та ємнісна складність. Проблема стопу.
- •16. Алгоритми пошуку найбільшого (найменшого елемента) списку. Обчислювальна та ємнісна складність алгоритму.
- •17. Алгоритми впорядкування списку. Обчислювальна та ємнісна складність алгоритму.
- •Характеристики алгоритмів сортування:
- •Алгоритм сортування вибіркою (Selection Sort)
- •Алгоритм сортування бульбашкою (Bubble Sort)
- •Алгоритм вставки або включення (Insertion Sort)
- •Алгоритм швидкого сортування (Quick Sort)
- •Алгоритм злиття (Merge Sort)
- •Алгоритм позиційного сортування (Radix Sort)
- •Блокове сортування або сортування комірками (Bucket Sort)
- •18. Алгоритми визначення мінімальних зв'язувальних дерев, їх обчислювальна та ємнісна складність. Алгоритм Прима
- •Алгоритм Краскала (Крускала)
- •19. Алгоритми визначення оптимальних шляхів в графах, їх обчислювальна та ємнісна складність. Жадібний алгоритм (задача комівояжера)
- •Алгоритм найближчого сусіда
- •Алгоритм Ліна-Кернігана
- •Алгоритм Дейкстри
- •Алгоритм:
- •Хвильовий алгоритм
- •Алгоритм:
- •Транспортні мережі. Алгоритми визначення найбільшого потоку.
- •Методи розв'язування задач дискретної оптимізації.
- •Метод гілок та границь. Переваги та недоліки.
- •Жадібні алгоритми. Переваги та недоліки.
- •Алгоритми найближчого сусіда. Переваги та недоліки.
- •Метод моделювання відпалу. Переваги та недоліки.
- •Генетичні та еволюційні методи. Переваги та недоліки.
- •39 Класифікація методів та алгоритмів для розв'язування задачі трасування, їх переваги та недоліки. Обчислювальна складність.
15. Проектування алгоритмів. Точність, обчислювальна та ємнісна складність. Проблема стопу.
Проектування алгоритмів – це процес використання специфічних методів для створення математичного способу вирішення проблем. Прикладною розробкою алгоритму є інжиніринг алгоритму .
Проектування алгоритму - це ототожнення і об'єднання в безліч рішень теорій дослідження операцій, наприклад: динамічне програмування, "розділяй і володарюй". Сьогодні застосування проектування алгоритмів можна знайти в пошукових процесах сканування Інтернету, маршрутизації пакетів і кешуванні.
Процес проектування алгоритмів може бути ручним або цифровим.
Етапи розробки алгоритмів:
Визначення проблеми;
Розробка моделі;
Специфікація алгоритму;
Проектування алгоритму;
Перевірка правильності алгоритму;
Аналіз алгоритму;
Реалізація алгоритму;
Тестування алгоритму;
Підготовка документації.
Точність (визначеність) алгоритму означає, що будь-яка його команда повинна визначати однозначну дію виконання. Іншими словами, алгоритм не повинен бути розрахований на прийняття будь-яких самостійних рішень ЕОМ.
Основними мірами обчислювальної складності алгоритмів є:
* часова складність, яка характеризує час, необхідний для виконання алгоритму на даній машині; цей час, як правило, визначається кількістю операцій, які потрібно виконати для реалізації алгоритму;
* ємнісна складність, яка характеризує пам'ять, необхідну для виконання алгоритму. Часова та ємнісна складність тісно пов'язані між собою. Обидві є функціями від розміру вхідних даних.
Проблема стопу – це проблема, яку описав ще Алан Тьюринг. Суть полягає в тому, що не можливо побудувати алгоритм, який би визначав, коли завершить виконання інший алгоритм. Тобто, це – перевірка термінальності умови роботи алгоритму.
16. Алгоритми пошуку найбільшого (найменшого елемента) списку. Обчислювальна та ємнісна складність алгоритму.
Є 2 варіанти здійснення пошуку найбільшого або найменшого значення у списку: при відсортованій послідовності і невідсортованій. Ємнісна складність буде тут залежати від структури даних, яка представляє послідовність: масив, список (стек, черга), дерево чи ін.
Якщо послідовність відсортована, то найменший елемент буде завжди на її початку, а найбільший – в кінці. Тому, обчислювальна складність тут полягатиме лише у отриманні першого або останнього елемента послідовності, що є дуже малою (наприклад, O(1)). Додаткового виділення пам'яті тут не потрібно.
Якщо ж послідовність не відсортована, то алгоритм буде наступним. Беремо перше значення послідовності і запам'ятовуємо його як поточне найбільше(найменше) число. Далі, проходячись по всій послідовності, перевіряємо, чи поточне значення мінімуму/максимуму є меншим/більшим за черговий елемент послідовності. Якщо так, то присвоюємо мінімуму/максимуму значення поточного елементу послідовності. Переходимо до наступного елементу послідовності. Тобто, обчислювальна складність такого алгоритму є O(n), бо ми маємо переглянути всі елементи послідовності. Ємнісна складність буде залежати розміру даних і необхідно буде додатково одну комірку пам'яті для поточного мінімуму/максимуму.