на тему: "Асимптотичні характеристики складності алгоритму. Алгоритми з поліноміальною та експоненціальною складністю".

абораторна робота №2

з дисципліни " Алгоритми та методи обчислень "

на тему: "Асимптотичні характеристики складності алгоритму. Алгоритми з поліноміальною та експоненціальною складністю".

 

 

Виконав:

студент групи КІ-22

Толочко О.В.

Прийняв:

старший викладач

Мітюков В.С.

 

 

Львів – 2012

Мета роботи: ознайомитись з асимптотичними характеристиками складності та класами складності алгоритмів.

 

 

Теоретична частина

В процесі розв’язку задачі вибір алгоритму викликає певні труднощі. Алгоритм повинен задовільняти вимогам, які часом суперечать одна одній:

= бути простим для розуміння, переводу в програмний код, відлагодження.

= ефективно використовцвати комп'ютерні ресурси і виконуватись швидко.

 

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

 

На час виконання програми впливають наступні чинники:

= ввід інформації в програму

= якість скомпільованого коду

= машинні інструкції, які використовуються для виконання програми

= часова складність алгоритму (ЧС)

 

Часова складність є функцією від вхідних даних. Для деяких задач ЧС залежить від самих вхідних даних (знаходження найбільшого спільного дільника двох чисел), для інших – від їх "розміру" (задачі сортування).

Коли ЧС є функцією від самих даних, її визначають як ЧС для найгіршого випадку, тобто як найбільшу кількість інструкцій програми серед всіх можливих вхідних даних для цього алгоритму.

Використовується також ЧС в середньому ( в статистичному сенсі ), як середня кількість інструкцій по всім можливим вхідним даним. На практиці ЧС в середньому важче визначити ніж ЧС для найгіршого випадку, черезте що це математично важка для розв'язання задача, та, крім того, іноді важко визначити, що означає "середні" вхідні дані.

Коли ЧС є функцією від кількості вхідних даних, аналізується швидкість зростання цієї функції.

 

 

Практична частина

Використавши правило сум і правило добутків знайдемо O(n) :

O1(n) = n O2(n) = O3(n) = n6 O4(n) = en

Розташуємо функції Oi(n) у порядку зростання

O1(n) = n O2(n) = O3(n) = n6 O4(n) = en

Функція O4(n) = en має найбільшу степінь зростання.

 

 

Побудуємо графіки, для k = 3,4,5; n = (1,2,…,10)

Для спрощення виберемо відповідно до к наступні поліноми , та

Побудуємо графіки :

n = 1,2,…

 

 

К = 3

 

 

К = 4

 

К = 5

 

 

Висновок:Графіки показують, що існують такі значення n0(при зростанні к значення n0 теж зростає ),починаючи з яких значення функції порядку зростання часової складності буде приймати більші значення ніж значення відповідного поліному. Це ілюструє приналежність алгоритму до класу алгоритмів з експоненціальною складністю .