
- •Контрольні питання до курсу “Комбінаторні методи та алгоритми”
- •Класифікація оптимізаційних задач
- •Задачі лінійної, нелінійної, цілочисельної, булевої, стохастичної та комбінаторної оптимізації
- •Формулювання комбінаторних оптимізаційних задач
- •Типові приклади задач комбінаторного типу. Комбінаторні задачі в програмній інженерії (приклади, формулювання).
- •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 Класифікація методів та алгоритмів для розв'язування задачі трасування, їх переваги та недоліки. Обчислювальна складність.
17. Алгоритми впорядкування списку. Обчислювальна та ємнісна складність алгоритму.
Алгоритм сортування - це алгоритм для впорядкування елементів у списку. У випадку, коли елемент списку має кілька полів, поле, що служить критерієм порядку, називається ключем сортування. На практиці в якості ключа часто виступає число, а в інших полях зберігаються будь-які дані, ніяк що не впливають на роботу алгоритму.
Для типових алгоритмів в середньому обчислювальна складність O(n*log n), а в найгіршому – O(n2). Щодо пам'яті, то, зазвичай, необхідно O(log n) пам'яті.
Характеристики алгоритмів сортування:
Стійкість – стійке сортування не змінює взаємного розташування елементів з однаковими ключами;
Природність поведінки – ефективність методу при обробці вже впорядкованих або частково впорядкованих даних. Алгоритм поводиться природно, якщо враховує цю характеристику вхідної послідовності і працює краще.
Використання операції порівняння. Алгоритми, що використовують для сортування порівняння елементів між собою, називаються заснованими на порівняннях. Мінімальна трудомісткість гіршого випадку для цих алгоритмів становить O (n log n), але вони відрізняються гнучкістю застосування. Для спеціальних випадків (типів даних) існують більш ефективні алгоритми.
Алгоритм сортування вибіркою (Selection Sort)
Може бути як стійким, так і не стійким.
Кроки виконання алгоритму:
1) знаходимо номер мінімального значення в поточному списку;
2) проводимо обмін цього значення зі значенням першої невідсортованої позиції (обмін не потрібен, якщо мінімальний елемент вже знаходиться на даній позиції);
3) тепер сортуємо хвіст списку, виключивши з розгляду вже відсортовані елементи.
Для реалізації стійкості алгоритму необхідно в пункті 2 мінімальний елемент безпосередньо вставляти в першу невідсортовану позицію, не змінюючи порядок інших елементів.
Обчислювальна складність алгоритму: O(n2).
Ємнісна складність: O(1).
Алгоритм сортування бульбашкою (Bubble Sort)
Алгоритм працює таким чином — у поданому наборі даних (списку чи масиві) порівнюються два сусідні елементи. Якщо один з елементів, не відповідає критерію сортування (є більшим, або ж, навпаки, меншим за свого сусіда), то ці два елементи міняються місцями. Прохід по списку продовжується до тих пір, доки дані не будуть відсортованими. Алгоритм отримав свою назву від того, що процес сортування за ним нагадує поведінку бульбашок повітря у резервуарі з водою.
Обчислювальна складність: O(n2).
Ємнісна складність: додаткових затрат пам'яті немає.
Алгоритм вставки або включення (Insertion Sort)
На кожному кроці алгоритму ми вибираємо один з елементів вхідних даних і вставляємо його на потрібну позицію у вже відсортованому списку, до тих пір, поки набір вхідних даних не буде вичерпано. Метод вибору чергового елемента з вихідного масиву довільний; може використовуватися практично будь-який алгоритм вибору. Зазвичай (і з метою отримання стійкого алгоритму сортування), елементи вставляються по порядку їх появи у вхідному масиві.
Обчислювальна складність алгоритму: O(n2)
Ємнісна складність: O(1).