
- •Кафедра Iнформатики
- •«Наука вся - лишь море заблуждений, где нету дна, а правды нет и тени»
- •«Складні проблеми завжди мають прості, легкі для розуміння невірні розв'язання» (закон Гросмана) Формалізація алгоритму
- •«Ускладнювати просто. Спрощувати складно» (закон Мейера) Алгоритмічні системи
- •... Sk0 skj1 skj2 ... Qi sjk ... Skjr-1 skjr sk0 ..., k[1;n]
- •Відлагодження алгоритму
- •«Якщо факти не підтверджують теорію, то їх треба позбутися» (Закон Майєрса) Етапи розв’язання задач на комп’ютері
- •Математична модель
- •Інформаційна модель
- •«Перед тим, як увійти, подумай, як вийти» (Китайське прислів'я) Техноогії проектування алгоритмів
- •«Створіть систему, якою зможе скористатися навіть дурень, і тільки дурень захоче нею користуватися»
- •(Принцип Шоу)
- •Блок-схема алгоритму лінійної структури
- •Алгоритм розгалуженої структури
- •Блок-схема алгоритму розгалуженої структури
- •Алгоритми циклічної структури
- •Алгоритм циклічної структури (параметр циклу змінюється з кроком у заданому сегменті)
- •Блок-схема алгоритму циклічної структури (параметр циклу змінюється з кроком у заданому сегменті)
- •Алгоритм циклічної структури (параметр циклу є елементом масиву)
- •Блок-схема алгоритму циклічної структури (параметр циклу є елементом масиву)
- •Алгоритм складної циклічної структури
- •Блок-схема алгоритму складної циклічної структури
- •Алгоритм обліку суми і добутку
- •Блок-схема алгоритму обліку суми і добутку
- •Алгоритм пошуку мінімуму і максимуму
- •Блок-схема алгоритму пошуку мінімуму і максимуму
- •Алгоритми сортування наданих
- •«Маленька практика краща за велику теорію» (закон Букера)
- •Алгоритми розв’язання інженерних задач
- •Ізоляція кореня
- •Уточнення значення кореня
- •Блок-схема алгоритму методу хорд
- •Початок циклу
- •Кінець циклу
- •Алгоритм розв’язання системи лінійних рівнянь
- •1. Прямий хiд
- •2. Зворотній хiд
- •Блок-схема алгоритму методу Гауса
- •Алгоритми розв’язання диференціального рівняння
- •Алгоритми до методу Эйлера
- •Алгоритми до методу Рунге - Кутта
- •Блок-схеми алгоритмів розв’язання диференціальних рівнянь першого порядку
- •Блок-схеми алгоритмів розв’язання диференціальних рівнянь другого порядку
- •Алгоритм обліку визначеного інтегралу
- •Алгоритм до методу Ньютона - Котеса
- •Блок-схема алгоритму обліку визначеного інтегралу методом Ньютона - Котеса Функція «Інтеграл»
- •Алгоритми апроксимації і інтерполяції функції
- •Алгоритм до методу інтерполяції поліномами Лагранжа
- •Алгоритм до методу апроксимації та інтерполяції в-сплайнами
- •Блок-схеми алгоритмів інтерполяції і апроксимації функції
- •Алгоритм статистичної обробки результатів експерименту
- •Перспективи розвитку теорії алгоритмів «Як тільки теорія стає зрозумілою всім, її пора змінювати» (закон Джексо на)
Блок-схема алгоритму пошуку мінімуму і максимуму
3
4
5
(i>n)
8
1
6
7
2
11
Мал. 11
Так
Ні
Так
Ні
10
9
(i>n)
Алгоритми сортування наданих
Нехай задано множину {Xi}n, елементи якої індексовано довільним чином. Необхідно індексувати{Xi}n так, щоб із i < j (де i [1;n], j [1;n]) випливало чи Xi ≤ Xj (упорядкування за збільшенням), чи Xi ≥ Xj (упорядкування за зменшенням).
Аналіз задачі.
Процес сортування полягає у послідовних перестановках елементів {Xi}n доти, доки їхня індексація не узгодиться з їхнім упорядкуванням. Розгляньмо найпростіші алгоритми сортування наданих: метод обміну і метод вибору.
Основна ідея методу обміну (блок-схему алгоритму див. на мал. 12) полягає у тому, що на кожній i-ій ітерації (i [1; n-1]) циклу порівнюються два сусідніх даних Xi і Xi+1. Якщо Xi < Xi+1 (упорядкування за зменшенням) або Xi > Xi+1 (упорядкування за збільшенням), то елементи Xi і Xi+1 міняють місцями і реєструєть факт такої перестановки прапорцем Prapor = 1 (до того часу Prapor = 0). Таким чином, найменший (найбільший) елемент опиниться на своєму місці у множині {Xi}n. Після завершення циклу порівняння всіх елементів значення Prapor = 1 є ознакою того, що виконання циклу треба повторити з першої ітерації, зменшивши кількість ітерацій n на одну. Насправді, в упорядкованій множині не відбудеться жодної перестановки і прапорець Prapor залишить значення 0.
Метод має невелику швидкодію (середня кількість ітерацій складає 1,25• n• n), є малоефективним для великих множин, але ж має найбільш прозорий механізм виконання.
Основна ідея методу вибору (блок-схему алгоритму див. на мал. 13) полягає у тому, що на кожній i-ій ітерації (i [1; n-1]) зовнішнього циклу серед елементів {Xj}n (j [i+1; n]) шукається індекс k елементу Xk, що є найменшим (упорядкування за збільшенням) або найбільшим (упорядкування за зменшенням) у порівнянні з елементом Xi. Після цього елементи Xk і Xi міняють місцями. Метод має трохи більшу швидкодію, ніж метод обміну, оскільки на кожній (i+1)-ій ітерації розглядається множина {X}, менша, ніж на i-ій ітерації, за рахунок збільшення мінімального індексу множини на 1. У загальному випадку кількість порівнянь даних складає n• (n-1)/2.
Блок-схема алгоритму сортування наданих методом обміну
(за збільшенням)
5
6
7
(i>n)
1
8
Так
Ні
2
4
3
10
Мал. 12
Так
Ні
11
9
Блок-схема алгоритму сортування наданих методом вибору
( за збільшенням)
5
6
7
Мал. 13
Так
Ні
10
11
2
3
8
9
4
1
Алгоритм рекурсивної структури
А
ппарат
рекурсії
є
інструментом
моделювання абияких об'єктів
і
процесів
реального світу,
побудованого загальним методом вкладення
фрактально-рекурсивних структур від
мікро-
до макрорівня
(наприклад, фрактально-рекурсивною
є
система: «елементарна частка
планетна система
галактика
... »).
Наприклад,
геометричну фігуру,
подібну
кожній
своїй
частині,
називають рекурсивною
(мал. 14, ліворуч),
а зовнішній
контур рекурсивної
фігури
називають фракталом (див.
мал. 14, праворуч).
Кожна деталь фрактала подібна
повному зображенню у зменшеному масштабі.
Мал. 14
Використання аппарату рекурсії також дозволяє спростити громіздкі алгоритми розв'язання інженерних і наукових задач.
Алгоритм є рекурсивним, якщо він містить одне чи декілька звернень до самого себе чи до інших алгоритмів, в яких є звернення до такого алгоритму. Під час звернення до звичайного алгоритму вихід з нього завжди трапляється раніше ніж повторний вхід, але для рекурсивного алгоритму це необов'язково. Глибиною рекурсії n називають аргумент рекурсивної функції, який визначає кількість звернень алгоритму до себе. Цей аргумент зменшується на 1 при кожному рекурсивному зверненні, а при досягненні самого глибокого рівня рекурсії значення n дорівнює 0, що призводить до термінового звороту керування до викликаючої функції.
Розгляньмо найпоширеніший приклад алгоритму рекурсивної структури -алгоритм обліку факторіалу цілого позитивного числа n:
n! = 1· 2 · 3 · ... · n = (n - 1)! · n
Аналіз задачі.
Алгоритм Factorial (мал. 15) обліку факторіалу цілого позитивного числа
n (треба зауважити, що 0! = 1) звертається до самого себе так, що послідовність
цих викликів виглядає так:
Factorial (n) = n · Factorial (n-1)
= n · (n-1) · Factorial (n-2)
= n · (n-1) · (n-2) · Factorial (n-3)
........................................................................................
= n · (n-1) · (n-2) · ... · 1 · Factorial (1)
= n · (n-1) · (n-2) · ... · 1 · 1
Блок-схема алгоритму обліку N!
2
Алгоритму
передається параметр N.
3
Так
1
Мал. 15
Ні
Алгоритм
повертає значення Factorial.