Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпора комбінаторні методи (Питання).doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.42 Mб
Скачать

15. Проектування алгоритмів. Точність, обчислювальна та ємнісна складність. Проблема стопу.

Проектування алгоритмів – це процес використання специфічних методів для створення математичного способу вирішення проблем. Прикладною розробкою алгоритму є інжиніринг алгоритму .

Проектування алгоритму - це ототожнення і об'єднання в безліч рішень теорій дослідження операцій, наприклад: динамічне програмування, "розділяй і володарюй". Сьогодні застосування проектування алгоритмів можна знайти в пошукових процесах сканування Інтернету, маршрутизації пакетів і кешуванні.

Процес проектування алгоритмів може бути ручним або цифровим.

Етапи розробки алгоритмів:

  1. Визначення проблеми;

  2. Розробка моделі;

  3. Специфікація алгоритму;

  4. Проектування алгоритму;

  5. Перевірка правильності алгоритму;

  6. Аналіз алгоритму;

  7. Реалізація алгоритму;

  8. Тестування алгоритму;

  9. Підготовка документації.

Точність (визначеність) алгоритму означає, що будь-яка його команда повинна визначати однозначну дію виконання. Іншими словами, алгоритм не повинен бути розрахований на прийняття будь-яких самостійних рішень ЕОМ.

Основними мірами обчислювальної складності алгоритмів є:

* часова складність, яка характеризує час, необхідний для виконання алгоритму на даній машині; цей час, як правило, визначається кількістю операцій, які потрібно виконати для реалізації алгоритму;

* ємнісна складність, яка характеризує пам'ять, необхідну для виконання алгоритму. Часова та ємнісна складність тісно пов'язані між собою. Обидві є функціями від розміру вхідних даних.

Проблема стопу – це проблема, яку описав ще Алан Тьюринг. Суть полягає в тому, що не можливо побудувати алгоритм, який би визначав, коли завершить виконання інший алгоритм. Тобто, це – перевірка термінальності умови роботи алгоритму.

16. Алгоритми пошуку найбільшого (найменшого елемента) списку. Обчислювальна та ємнісна складність алгоритму.

Є 2 варіанти здійснення пошуку найбільшого або найменшого значення у списку: при відсортованій послідовності і невідсортованій. Ємнісна складність буде тут залежати від структури даних, яка представляє послідовність: масив, список (стек, черга), дерево чи ін.

Якщо послідовність відсортована, то найменший елемент буде завжди на її початку, а найбільший – в кінці. Тому, обчислювальна складність тут полягатиме лише у отриманні першого або останнього елемента послідовності, що є дуже малою (наприклад, O(1)). Додаткового виділення пам'яті тут не потрібно.

Якщо ж послідовність не відсортована, то алгоритм буде наступним. Беремо перше значення послідовності і запам'ятовуємо його як поточне найбільше(найменше) число. Далі, проходячись по всій послідовності, перевіряємо, чи поточне значення мінімуму/максимуму є меншим/більшим за черговий елемент послідовності. Якщо так, то присвоюємо мінімуму/максимуму значення поточного елементу послідовності. Переходимо до наступного елементу послідовності. Тобто, обчислювальна складність такого алгоритму є O(n), бо ми маємо переглянути всі елементи послідовності. Ємнісна складність буде залежати розміру даних і необхідно буде додатково одну комірку пам'яті для поточного мінімуму/максимуму.