Professional Documents
Culture Documents
Istrazivacki Rad Treci
Istrazivacki Rad Treci
Istrazivacki Rad Treci
Научни рад
1
бити на било ком индексу.Друга група су од осталих тек за велики обим
података биће смештена у низ тако ће података.Због тога се време извршавања
подаци бити обрнуто сортирани од изажава бројем операција који
жељеног сотирања (од већег ка функционално зависи од величиине
мањем).Трећа група података је ппроблема, априликом поређења се
организована у низу тако да је низ у разматра асимптотско понашање ових
великој мери сортиран тј. биће функција.Испитивањем описаних
потребноо да алгоритми које тестирамо алгоритама утврђене су перформансе за
пронађу индексе „залуталих“ података карактеристичне случајеве. Најтеже је
,у низу на своје место, према утврђеном утврдити особине Shell sort-а, јер је
правилу.Све три групе података биће његову сложеност најтеже утврдити.
тестиране на следећим алгоритмима : Међутим, показно је да временска
bubble sort, selection sort, insertion sort, сложеност за одговарајућу секвенцу
quick sort, merge sort и shell инкремената може апроксимирати.
sort.Побијеним подацима се жели
Експериментално је доказано да овај
утврдити брзина извршавања сортирања
за различито урећене скупове и доказати метод може имати сложеност О(𝑛1.5 ),
појава да се одрећени алгоритам боље што је побољшање у односу на
понаша за одређени скуп у односу на директно уметање, али и даље не
алгоритам који има боље перформансе представља довољно малу сложеност.
за неку другу врсту урећења података. Што се тиче Selection сорт-а, његова
сложеност није променљива и износи
О(𝑛2 ), јер се алгоритам увек одвија у
2. Преглед литературе
n-1 корака. Овај алгоритам је погодан за
врло мало n на коме показује најбоље
Анализа алгоритама је област резултате, док за веће листе је ова
рачунарских наука која проучава
перформансе алгоритама, посебно сложеност неприхватљива.(Сарановац и
времена извршавања и меморијске Рајковић, 2014).Алгоритам quick sort не
захтеве.Представља важан део теорије захтева додатну меморију, само nlog(n)
сложености,која даје теоријске оцене операција у просеку за сортирање n
ресурса који су потребнин било ком елемената, и има изузетно кратку
алгоритму који решава посматрани унутрашњу петљу. Лоше стране
рачунарски проблем. Анализе и оцене алгоритма су што је рекурзиван
до којих се долази истраживањем на ову (нерекурзивна варијанта је много
тему омогућавају боље сагледавање у сложенија), у најгорем случају извршава
својства алгоритма, усмеравају развој око 𝑛2 операција. Постоје и верзије овог
ефикаснијих алгоритама и омогућавају алгоритма које га побољшавају.
међусобно поређење различитих Алгоритам је врло осетљив на
алгоритама.Један од фактора који имплементацију (ефикасност се може
свакако утичу на анализу алгоритама нарушити лошим избором у
јесте обим података.Алгоритми имају имплементацији). Ако се не жели
често различите перформансе за анализирати најбоља имплементација,
различит обим улазних података.Неки боље је применити Shell-sort.
алгоритми сортирања су бржи за мали (Сарановац и Рајковић, 2014) На основу
обим података, док зсу за већи обим резултата овог истраживања долазимо
података релативно спорији од других, а до закључка да у зависности од
неки други алгоритми сортирања бржи структуре података и броја
2 Никола Николић
елмената листе можемо бирати време извршавања.(Живковић, 2010)
одговарајући алгоритам сортирања. Чак Приметићемо да је, то време, мера
и ако бирамо један од најпоузданији брзине раста тачног времена
алгоритам, qуицксорт, не мора да значи извршавања алгоритма са повећањем
да ћемо имати загарантоване добре броја његових улазних података.Када
перформансе. То представља главни постоји велики број података, битно је
проблем код унутрашњег сортирања. одредити асимптотско време
Иако се заинтересованост за овај извршавања алгоритма.
проблем смањила, и даље се трага за Са порастом броја података расте и
алгоритмом чије перформансе не време извршавања сваког
варирају и који даје оптималне алгоритма.Ако имамо проблем за који
резултате без обзира на какву листу се имамо више алгоритама а притом је
примењује.(Сарановац и Рајковић, 2014) велики број улазних података онда је
време извршавања јако битно.Уколико
имамо два алгоритма од којих је један
3. Асимптотско време ефикаснији за мали број улазних
извршавања алгоритма података све једно је који би смо
изабрали.Ако је време извршавања
Анализирајући алгоритме могу се једног 5 милисекунди а другог 3, то је за
добити врло компликоване функцијеј за људе неприметна разлика.Мећутим ако
њихова времена извршшавања.Могуће један алгоритам за милион улазних
је да за неки алгоритам добијемо време података ради 10 минута а други 200
извршавања изражено функцијом, нпр. онда је то значајна разлика.
Т1 (𝑛) = 10𝑛3 + 𝑛2 + 40𝑛 + 80 Уколико имамо велике вредности
аргумената, вредност функције времена
Узмимо још један алгоритам нпр.
извршавања је преовладујуће одређена
Т2 (𝑛) = 17𝑛 𝑙𝑜𝑔𝑛 − 23𝑛 − 10 доминантним термом.(Живковић, 2010)
Ако узмемо још компликованију У следећој табели 1 приказани су
функцију времена извршавања, резултати извршавања три алгоритма а
доћићемо до питања, да ли нам овај то су : 2𝑛 , 5𝑛2 и 100𝑛.
израз може створити слику о
временском извршавању алгоритма или
нам само смојом компликованошћу
одмаже у томе.Да ли на основу функције
Т1 и Т2 можемо рећи који алгоритам ће
се пре извршити?Одговор би био тај да
Табела 1. Вредности функција за
када би се упоредо нацртале функције Т1
променљиву n
и Т2 видело бисе да за разне вредности
аргумента n која функција има мање
вредности, односно који алгоритам је N 𝟐𝒏 𝟓𝒏𝟐 𝟏𝟎𝟎𝒏
бржи.Према томе, за време извршавања 1 2 5 100
неког алгоритма узимамо једноставну
10 1024 500 1000
функцију која за велике вредности
њеног аргумента најбоље апроксимира 100 2100 50000 10000
тачну функцију времена извршавања тог 1000 21000 5 ∙ 106 100000
алгоритма.То приближно време
извршавања се назива асимптотско
3
Табела 2. Време извршавања маљег број најмањи број долази на
алгоритама место првог члана.Следећи минимум од
преосталог дела низа се проналази као у
N A1 𝑨𝟐 𝑨𝟑 претходном случају a[n+1] и доводи до
последњег минимума и све тако док сви
1 1µ𝑠 5 µ𝑠 100 µ𝑠
чланови небуду порећани по растућем
10 1 𝑚𝑠 0.5 𝑚𝑠 1 𝑚𝑠 редоследу.На слици 1 приказан је
100 270 𝑔 0.05s 0.01s псеудо код „Selection-sort“ –a.
1000 2970 𝑔 5s 0.1s
SELECTION-SORT
Вредност времена извршавања
алгоритама А1, А2 и А3приказани су у for i = 1 to n - 1 do
табели 2.Из табеле 2 се може закључити min = a[i]
да за велики експонент 𝑛 > 100 pos = i
алгоритам А1 ради најнеефикасније док for j = i + 1 to n do
га следи А2 а затим најефикаснији if (a[j] < min) then
А3.Како би смо једноставније рачунали min = a[j]
да ли је неки алгоритам ефикасан или не pos = j
довољноје да видимо његов ред.Па је end_if
тако Т1 (𝑛) = 𝑛 је најефикаснији затим, end_for
Т2 (𝑛) = 𝑛2 , са повећањем n расте и a[pos] = a[i]
време извршавања Т2 (𝑛) = 2𝑛 . a[i] = min
end_for
4 Никола Николић
алгоритам пролази кроз низ,бирајући
кроз сваки пролаз најмањи елемент а
потом га смешта на почетак низа.У
сваком пролазу дужина коју пролази се
смањује за један елемент и тако до краја
низа све док бројеви не буду порећани
по растућем редоследу.Алгоритам има
асимптотско време O(𝑛2 ).
Слика 4 Сортирање уметањем
На почетку је на левој страни само
један број док је остатак на десној.При
4.1 Алгоритам Insertion sort сваком пролазу први број са десне
стране се умеће на место са леве тако
Insertion Sort је још један алгоритам који да бројеви лево припадају урећеном
има споро време извршавања.Време низу од манмањег ка највећем.
извршавања је дуго због O(𝑛2 )
квадратног реда.На слици 3 приказан је 4.1 Алгоритам „Shell-sort“
псеудо код алгоритма
Insertion Sort
Shell алгоритам за сортирање
представља напреднију верзију
i←1 предходо описаног алоритма са
while i < length(A) уметањем (Insertion Sort).Упоређењем
елемената са варијабилним
j←i
инкрементом резултирао је сложеност
while j > 0 and A[j-1] > A[j] алгоритма O(𝑛 𝑙𝑜𝑔𝑛), што је свакако
swap A[j] and A[j-1] ефикасније за разлику од insertion Sort-а
и selection sort чија је сложеност
j←j-1 O(𝑛2 ).На слици 5 приказан је код
end while алгоритма.
i←i+1 Shell-Sort
end while
for i = 1 to t do
inc = h[i]
for j = inc + 1 to n do
Слика 3 Псеудо код алгоритма
y =a[j]
„Insertion Sort“
k = j – inc
Алгоритам сортира низ на тај начин while (k 1) and (y < a[k]) do
што је скуп података подељен на два a[k + inc] = a[k]
дела.Лево се налази сортиран низ, док k = k – inc
се на десној страни налази остатак end_while
низа. Да би био јаснији рад алгоритма a[k + inc] = y
сликом 4 је представљен начин рада end_for
алгоритма end_for
Слика 5 Псеудо код алгоритма „shell-
sort“
5
На слици 6 приказан је рад напредног
алгоритма са уметањем.
6 Никола Николић
програмском језику пајтон (Python). алгоритма.Међутим фокус је био на
Дужина низа за прву групу тестних томе како различита структура података
података износила је 1000. Касније су утиче на алгоритам који има мању
тестирани низови који броје 10 000 сложеност даје слабије ефикасно
чланова. За сваки алгоритам поновљен сортирање.У табели 3 се налазе подаци
је тест пет пута. Време извршавања добијени тестирањем једнодимензионих
алгоритма мерено је функцијом која даје низова за случај насумично генерисаних
тренутно време. Када одузмемо време елемената.
сачувано у променљивој пре
извршавања сортирања од времена
након извршавања добићемо време
трајања сваког сортирања.Циљ је био
доказати како слошеност О(𝑐 𝑛 )
алгоритма утиче на ефикасност
7
Табела 4. Подаци о брзинама алгоритама коришћених за сортирање друге групе
8 Никола Николић
Последња група података организована је алгоритам селективног одабира.Као
у једнодимензиони низ сачињавали су код алгоритма са уметањем код друге
елементи који су били готово групе где је имао велики број
сортирани.Међутим намерно је компарација због саме природе рада
неколико елемената измењено како би алгоритма тако и овде постоји велики
показали понашање алгоритма при овој број поређења па је зато и такав
појави.У табели 5 се налазе времена резултат.Насупрот томе најефикаснији
извршавања алгоритама за трећу групу је био Shell-sort, а затим Insertion-
(Сортирани низ за 98-99% елемената). sort.Поставња се питање како је могуће
да алгоритам сортирања са лошијим
9
6. Закључак усавршавају алгоритме тако да буду што
ефикаснији.Зато је важно истражити
Према добијеним резултатима који су
сваки алгоритам понаособ.Правити низ
били анализирани показало се да је
анализа различитих улазних вредности,
сложеност алгоритма битан фактор.Треба
једном речју тестирати што
тежити увек О(nlogn)
више.Подаци ће бити од користи
сложености.Анализа алгоритама за
људима који имплементирају алгоритме
сортирање је показала да брзина и
у софтвере који требају да извршавају
ефикасност зависе и он начина на који
сложене операције.
су елементи смештени у низове.Тема је
врло актуелна и има простора
напредку.Постоји велики број људи који
10 Никола Николић
Literatura:
Granville Barnett & Luca Del Tongo (2008). Data Structures and Algorithms:
Annotated Reference with Examples, University of Florence
Малбашки Д., Обрадовић Д.( 1994.). Основне структуре података, Технички факултет
„Михајло Пупин“, Зрењанин,
Никола Николић
378/2018,
Крагујевац,
Србија
nikola.nikkolic@gmail.com
11