
- •Міністерство Освіти і Науки України Національний Університет “Львівська Політехніка”
- •Алгоритми та методи обчислень
- •Параметрична модель алгоритму
- •Лабораторна робота №1.
- •Порядок виконання роботи
- •Контрольні запитання
- •Лабораторна робота №2.
- •Порядок виконання роботи
- •Лабораторна робота № 3. "Формальні алгоритмічні системи (фас). Машина Тьюрінга (мт)".
- •Математичні фас
- •Структура мт.
- •Способи зменшення часової складності мт .
- •Обмеженність використання мт.
- •Послідовність розв’язання задач на мт.
- •Порядок виконання роботи
- •Лабораторна робота № 4. " Побудова алгоритмів ефективних за часовою складністю. Задача квадратичного призначення".
- •Фіксуємо елемент х1 в позиції р3
- •Фіксуємо елемент х2 в позиції р5
- •Фіксуємо елемент х3 в позиції р4
- •Фіксуємо елемент х4 в позиції р1 Фіксуємо елемент х5 в позиції р2
- •Підраховуємо сумарну довжину з'єднань
- •Порядок виконання роботи
- •Лабораторна робота № 5. "Використання способів зменшення часової складності алгоритму на прикладі алгоритму швидкого перетворення Фурье".
- •Перетворення Фурье
- •Застосування дискретного перетворення фурье (дпф)
- •К омплексне дискретне перетворення фурье (дпф)
- •П еретворення дійсних та уявних компонент дпф в амплітуду ( mag ) і фазу ( φ )
- •Швидке перетворення Фурье
- •Властивості симетрії і періодичності повертаючих множників wn r
- •Швидке перетворення фурье (шпф) в порівнянні з дискретним перетворенням фурье (дпф)
- •Базова операція метелик в алгоритмі шпф з проріджуванням за часом
- •Обчислення 8-точкового дпф в трьох каскадах з використанням проріджування за часом
- •Розширення спектрУ сигналу
- •Шпф синусоїдального сигналу з цілим числом періодів у вибірці
- •Шпф синусоїдального сигналу з нецілим числом періодів у вибірці
- •Методи зменшення часової складності
- •Порядок виконання роботи
- •Лабораторна робота № 6.
- •Порядок виконання роботи
- •Навчально-методичні матеріали
- •Навчальне видання Методичні вказівки
- •" Алгоритми та методи обчислень "
Параметрична модель алгоритму
Деяка
змінна величина, яка визначає значення
характеристик математичного об’єкту,
називається параметром.
Прикладом може бути частотна характеристика
RC
– ланцюга.
R
і
C
– параметри,
затримка
прямокутного
сигналу τ
= RC
Характеристики алгоритму визначаються наступними параметрами Рис. 2 :
1. Правило початку.
2. Правило вводу даних.
3. Система вхідних даних.
4. Правило безпосереднього перероблення .
5. Система проміжних результатів.
6. Система кінцевих результатів.
7. Правило виводу.
8. Правило закінчення.
Рис. 2
Зміна будь-якого параметру алгоритму змінює часову складність та інші характеристики. Зміна параметру алгоритму з метою мінімізації часової складності алгоритму називається параметричною оптимізацією алгоритму.
До способів мінімізації часової складності відносяться:
1. Зміна правила початку визначає
= вибір черговості використання даних в процесі обчислень
= векторизація,
= конкурентизація, тощо.
2. Зміна системи вхідних даних, наприклад, 10-вої, 16 річної тощо
3. Зміна системи проміжних результатів наприклад, використання двійкової системи,
4. Зміна правила вводу даних:
== генерування,
= читання,
= інкапсуляція
5. Зміна правил безпосереднього перероблення:
= розбиття масивів вхідних, вихідних даних проміжних,
= еквівалентні перетворення,
= апроксимація,
= використання попередніх обчислень
Зміст
Визначення
Параметрична
модель алгоритму це сімка параметрів
алгоритму об’єднаних зв’язками, які
задають послідовність операцій
виконання задачі
,
де
А – множина символів зовнішнього алфавіту. А охоплює множини символів систем проміжних і кінцевих результатів,
Q – множина символів алфавіту станів
q0,
qf
–
початковий та кінцевий стани роботи
моделі алгоритму; q
0,
q
f
Q
I,O – операції вводу та виводу даних
P – правило безпосереднього перероблення
Правило безпосереднього перероблення може бути задано деякою функцією, словесно, таблицею, графом, блок-схемою, тощо.
Рис.3
На Рис 3 зображено блок-схема параметричної моделі пари задача-алгоритм. Від блок-схеми алгоритму вона відрізняється доданим блоком ”сформульоване намагання”. Крім того в системі вхідних даних та системі кінцевих результатів виділений набір вхідних даних {X} та набір кінцевих результатів {Y}, які належать безпосередньо до задачі, яка розв’язується
Зміст
Лабораторна робота №1.
" Алгоритм, властивості, параметри та характеристики складності алгоритму".
Мета роботи: засвоїти основні поняття та визначення теорії алгоритмів, проаналізувати вплив параметрів алгоритму на характеристики складності алгоритму
МЕТОДИЧНІ МАТЕРІАЛИ
Здавна найбільшу увагу приділяли дослідженням алгоритму з метою мінімізації обсягу досліджень – часовій складності розв’язання задач. Але зміст складності алгоритму не обмежується однією характеристикою. В ряді випадків не менше значення має складність логіки побудови алгоритму, різноманітність його операцій, зв’язаність їх між собою. Ця характеристика алгоритму називається програмною складністю. В теорії алгоритмів, крім часової та програмної складності, досліджуються також інші характеристики складності, наприклад, ємкістна, але найчастіше розглядають дві з них - часову і програмну. Якщо у кінцевому результаті часова складність визначає час розв’язання задачі, то програмна складність характеризує степінь інтелектуальних зусиль, що потрібні для синтезу алгоритму. Вона впливає на витрати часу проектування алгоритму.
Вперше значення зменшення програмної складності продемонстрував аль-Хорезмі у своєму
трактаті “Про індійський рахунок”. Алгоритми реалізації арифметичних операцій, описані аль-Хорезмі у словесній формі, були першими у позиційній десятковій системі числення. Цікаво спостерігати, як точно і послідовно описує він алгоритм сумування, користуючись арабською системою числення і кільцем (нулем). В цьому опису є всі параметри алгоритму. [1] Це один з перших відомих у світі вербальних арифметичних алгоритмів.
Схема розроблення будь-якого об’єкту складається з трьох операцій: синтез, аналіз, оптимізація (Рис.1)
Рис. 1
Існує два види синтезу: структурний і параметричний. Вихідними даними для структурного синтезу параметри задачі – сформульоване намагання і набори вхідних даних. В результаті структурного синтезу отримують алгоритм, який розв’язує задачу в принципі.
Параметричний синтез змінами параметрів дозволяє таку його структуру, яка дозволяє зменшити часову складність попередньої моделі. Існує багато способів конструювання ефективних алгоритмів на основі зміни параметрів. Розглянемо спосіб зміни правила безпосереднього перероблення на прикладі задачі знаходження найбільшого спільного дільника двох натуральних чисел..
Алгоритм знахождення найбільшого спільного дільника, яким ми користуємось для цієї цілі і донині, був запропонований Евклідом приблизно в 1150 році до н.е. у геометричній формі, в ньому порівняння величин проводилося відрізками прямих, без використання арифметичних операцій Алгоритм розв'язку передбачав повторювання віднімання довжини коротшого відрізка від довжини довшого.
Опис алгоритму
Маючи два натуральні числа a та b:
якщо b=0, то a є шуканим НСД,
інакше повторюємо обчислення для пари b та залишку від ділення a на b (тобто a mod b).
Версія ітераційна:
НСД( a, b)
поки b ≠ 0
c := остача від ділення a на b
a := b
b := c
поверни a
Версія рекурсивна:
НСД( a, b)
якщо b = 0
поверни a
інакше
поверни НСД( b, остача від ділення a на b)
Для того, щоб довести ефективність алгоритму, потрібно порівняти його з таким, який
приймається за неефективний. Прикладом такого неефективного алгоритму є процедура послідовного перебору можливих розв’язань задачі. Будемо вважати, що алгоритм перебору утворений в результаті структурного синтезу, на основі вхідних даних та намагання знайти серед всіх допустимих чисел такє, що є найбільшим дільником двох заданих чисел.
Ефективність, як правило, визначається такою характеристикою як часова складність, що вимірюється кількістю операцій, необхідних для розв’язання задачі.
Дослідимо розв’язання задачі знаходження найбільшого спільного дільника двох цілих чисел (N1>0,N2 >0, N1≥N2 ) алгоритмом перебору і алгоритмом Евкліда.[10] Алгоритм перебору заснований на операції інкременту змінної (n) від одиниці до меншого (N2) з двох заданих чисел і перевірці, чи ця змінна є дільником заданих чисел. Якщо це так, то значення змінної запам’ятовується і операції алгоритму продовжуються. Якщо ні, то операції алгоритму продовжуються без запам’ятовування. Операції алгоритму закінчуються видачею з пам’яті знайденого останнім спільного дільника. Блок-схема алгоритму приведена на рис.2(а).
a) б)
Рис2. Блок-схема алгоритму перебору (а) і Евкліда (б).
Адаптований до сучасної арифметики алгоритм Евкліда використовує циклічну операцію ділення більшого числа на менше, знаходження остачі (r) і заміну числа, яке було більшим, на число, яке було меншим, а менше число на остачу. Всі перераховані операції виконуються в циклі. Операції циклу закінчуються, коли ділення не дає
остачу. Останній дільник є найбільшим спільним дільником. Блок-схема алгоритму приведена на рис.2(б).
Аналіз цих двох алгоритмів показує, що часова складність алгоритму перебору значно перевищує часову складність алгоритму Евкліда. Для обох алгоритмів часова складність є функцією від вхідних даних, а не їх розміру. В таких випадках при порівнянні ефективності алгоритмів користуються порівнянням часових складностей визначених для найгіршого випадку.[5] Часова складність для найгіршого випадку (Lmax) представляє собою максимальну часову складність серед всіх вхідних даних розміру N.
Очевидно,
що часова складність для алгоритму
перебору
(1)
дe
, яка дорівнює кількості операцій в
кожній ітерації.
Д
ля
цілих чисел n алгоритм
Евкліда знаходження
н
айбільшого
спільного дільника має найбільшу часову
складність для пари чисел і
,
де
1 , 2 , 3 , ... , , , - числа Фібоначчі.
Алгоритм Евкліда є ефективним за часовою складністю у порівняні з алгоритмом перебору. Мінімізація часової складності дозволяє за всіх інших рівних умова збільшити продуктивність розв’язання задачі. Якщо розв’язання задач з різними початковими даними проводиться багаторазово, мінімізація часу дозволяє одержати економічний ефект.
Приклад
Рис.3 Головне вікно програми Lab_NSD.exe.
На Рис.3 наведено головне выкно програми Lab_NSD.exe Дана програма може бути використана для дослідження ефективності різних алгоритмів знаходження найбільшого спільного дільника, зокрема для пошуку таких пар чисел, для яких часова складність буде найбільшою.