You are on page 1of 4

Національний технічний університет України

«Київський політехнічний інститут імені Ігоря Сікорського»


Інституту атомної та теплової енергетики
Кафедра ЦТЕ

Проектування та аналіз обчислювальних алгоритмів

ЗВІТ
до Модульної Контрольної Роботи № 1

Дата «19» березня 2024 Виконав: студент 1 курсу


гр. ТР-33
Мазуренко Д Б
(П.І.Б.)

Оцінка «_________» Перевірив: _____________


Дата «___» _______ 2024 _______________________
(П.І.Б., підпис)

Київ – 2024
Завдання:
1. Наведіть визначення обчислювального алгоритму та його основні
складові.
2. Поясніть різницю між алгоритмом та програмою.
3. Що таке алгоритмічна складність?
4. Як визначається алгоритмічна складність алгоритмів?
5. Поясніть поняття коректності та ефективності алгоритму.
6. Як визначається найкращий, середній та найгірший випадки в контексті
аналізу алгоритмів?
7. Назвіть загальні функції оцінки алгоритмічної складності.
8. Що таке рекурсивний алгоритм? Наведіть приклад рекурсивного
алгоритму та поясніть його роботу.

1. Обчислювальний алгоритм - це послідовність кроків, які виконуються для


розв'язання певної задачі. Він складається зі вхідних даних, які алгоритм
отримує для обробки, операцій, які виконуються над цими даними, і
вихідних даних, які є результатом роботи алгоритму.
Основні складові обчислювального алгоритму - це вхідні дані, які
алгоритм отримує для обробки; операції, які він виконує над цими
даними; та вихідні дані, які представляють собою результат алгоритму
після обробки вхідних даних.
2. Алгоритм - це послідовність кроків, які необхідно виконати для
вирішення певної задачі, без прив'язки до конкретного обчислювального
середовища. Тобто, це ідея або план дій. Програма ж - це конкретний
набір інструкцій, написаних мовою програмування, який реалізує
алгоритм на практиці і призначений для виконання на комп'ютері. Таким
чином, програма є конкретною реалізацією алгоритму.
3. Алгоритмічна складність - це міра складності алгоритму, яка вказує на те,
як швидко зростає час або кількість ресурсів (таких як пам'ять чи
обчислювальна потужність), необхідних для виконання алгоритму зі
збільшенням обсягу вхідних даних. Вона допомагає оцінити ефективність
алгоритму при обробці різноманітних вхідних даних. Чим менша
алгоритмічна складність, тим швидше та ефективніше працює алгоритм
при великих обсягах даних.
4. Алгоритмічна складність алгоритмів визначається за допомогою аналізу
часу виконання та використання ресурсів (таких як пам'ять) у залежності
від обсягу вхідних даних. Існують два основних підходи до оцінки
алгоритмічної складності: аналіз часу виконання (часова складність) та
аналіз використання пам'яті (просторова складність).
5. Коректність алгоритму означає, що він працює так, як очікується, тобто
даватиме правильні результати при правильних вхідних даних та умовах.
Це означає, що алгоритм повинен вирішувати поставлену задачу вірно та
без помилок, якщо вхідні дані відповідають вимогам алгоритму.
Ефективність алгоритму визначає, наскільки швидко та ефективно він
вирішує поставлену задачу з урахуванням обсягу вхідних даних. Це
означає, що алгоритм має виконувати свою роботу швидко та з
використанням мінімальної кількості ресурсів, таких як час виконання,
пам'ять, обчислювальна потужність тощо.
6. Найкращий випадок - це сценарій, коли алгоритм працює найшвидше або
займає мінімальну кількість ресурсів, таких як час виконання або пам'ять,
при конкретних вхідних даних.
Середній випадок - це сценарій, коли алгоритм працює в середньому
приблизно так само ефективно для різних вхідних даних.
Найгірший випадок - це сценарій, коли алгоритм працює найповільніше
або займає максимальну кількість ресурсів при конкретних вхідних
даних.
7. Часова складність, просторова складність, найгірщий, середній та
найкращий випадки.
8. Рекурсивний алгоритм - це алгоритм, який використовує самовикликання
для розв'язання задачі, розбиваючи її на більш прості частини. Такий
підхід дозволяє вирішувати складні завдання шляхом викликів функцій
або методів зсередини себе.
Один із класичних прикладів рекурсивного алгоритму - це обчислення
факторіалу числа. Факторіал числа n (позначається як n!) визначається як
добуток всіх натуральних чисел від 1 до n.
#include <iostream>

// Рекурсивна функція для обчислення факторіалу числа


unsigned long long factorial(int n) {
if (n == 0 || n == 1) {
return 1;
}
else {
return n * factorial(n - 1);
}
}

int main() {
int number;
std::cout << "Enter a number to calculate the factorial: ";
std::cin >> number;

// Виклик рекурсивної функції для обчислення факторіалу


unsigned long long result = factorial(number);
std::cout << "Factorial " << number << " = " << result << std::endl;

return 0;
}

You might also like