P1.2 Analiza efikasnosti algoritama 2

Слични документи
Microsoft PowerPoint - 03-Slozenost [Compatibility Mode]

P1.1 Analiza efikasnosti algoritama 1

Konstrukcija i analiza algoritama vežbe 10 Nina Radojičić 15. decembar Algoritamske strategije - podeli pa vladaj (divide and conquer) Ova stra

P11.3 Analiza zivotnog veka, Graf smetnji

6-8. ČAS Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: Gde pretpostavljamo da je A celobrojna matrica dimenzije,. Takođe

Microsoft Word - AIDA2kolokvijumRsmerResenja.doc

Konstrukcija i analiza algoritama Nina Radojičić februar Analiza algoritama, rekurentne relacije 1 Definicija: Neka su f i g dve pozitivne fun

Celobrojno programiranje Rešavamo sledeći poblem celobrojnog programiranja: min c T x Ax = b x 0 x Z n Gde pretpostavljamo da je A celobrojna matrica

P2.1 Projektovanje paralelnih algoritama 1

Microsoft PowerPoint - C-4-1

Uvod u računarstvo 2+2

Programski jezici i strukture podataka 2018/2019. Programski jezici i strukture podataka Računarske vežbe vežba 10 Zimski semestar 2018/2019. Studijsk

Inženjering informacionih sistema

Dinamičko programiranje Primer 1: Za dati niz naći njegov najduži neopadajući podniz. Defnicija: podniz nekog niza je niz koji se dobija izbacivanjem

SAŽETAK Diplomski rad, kroz teorijsku razradu i prikaz praktične primjene na primjeru aplikacije za pretragu studentskih poslova, obrađuje temu računa

Univerzitet u Novom Sadu Tehnički fakultet Mihajlo Pupin Zrenjanin Seminarski rad Predmet: Konkuretno programiranje doc. dr Dejan Lacmanovic Zorica Br

Microsoft PowerPoint - 07-DinamickeStrukturePodataka

Рачунарска интелигенција

MIP-heuristike (Matheuristike) Hibridi izmedu metaheurističkih i egzaktnih metoda Tatjana Davidović Matematički institut SANU

P9.1 Dodela resursa, Bojenje grafa

Classroom Expectations

P1.3 Projektovanje makroasemblera

Microsoft Word - 6ms001

Tutoring System for Distance Learning of Java Programming Language

Grafovi 1. Posmatrajmo graf prikazan na slici sa desne strane. a) Odrediti skup čvorova V i skup grana E posmatranog grafa. Za svaku granu posebno odr

Програмирај!

Algoritmi

Microsoft PowerPoint - 13-Funkcije_2.ppt [Compatibility Mode]

Microsoft PowerPoint - PS9_Linijski raspored i redosled

13E114PAR, 13S113PAR DOMAĆI ZADATAK 2018/2019. Cilj domaćeg zadatka je formiranje petlje softverske protočnosti za minimalni broj ciklusa.

Maksimalni protok kroz mrežu - Ford-Fulkerson, Edmonds-Karp

PowerPoint Presentation

Microsoft PowerPoint - 10-Jednodimenzionalni nizovi.ppt [Compatibility Mode]

Programiranje 2 0. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/4

ТРОУГАО БРЗИНА и математичка неисправност Лоренцове трансформације у специјалној теорији релативности Александар Вукеља www.

Funkcije predavač: Nadežda Jakšić

Programiranje 1 9. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, 9. predavanje p. 1/6

Oblikovanje i analiza algoritama 5. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 5. pr

P3.2 Paralelno programiranje 2

2015_k2_z12.dvi

Programiranje 2 1. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 1. predavanje p. 1/7

Matematika 1 - izborna

Slide 1

My_P_Trigo_Zbir_Free

Postavka 2: Osnovni graf algoritmi 1 DISTRIBUIRANI ALGORITMI I SISTEMI Iz kursa CSCE 668 Proleće 2014 Autor izvorne prezentacije: Prof. Jennifer Welch

Microsoft Word - 7. cas za studente.doc

PITANJA I ZADACI ZA II KOLOKVIJUM IZ MATEMATIKE I Pitanja o nizovima Nizovi Realni niz i njegov podniz. Tačka nagomilavanja niza i granična vrednost(l

Oblikovanje i analiza algoritama 4. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb OAA 2017, 4. pr

Задатак 4: Центрифугална пумпа познате карактеристике при n = 2900 min -1 ради на инсталацији приказаној на слици и потискује воду из резервоара А у р

Увод у организацију и архитектуру рачунара 1

08 RSA1

Postavka 12: Uzročnost 1 DISTRIBUIRANI ALGORITMI I SISTEMI Iz kursa CSCE 668 Proleće 2014 Autor izvorne prezentacije: Prof. Jennifer Welch

PowerPoint Presentation

1 Konusni preseci (drugim rečima: kružnica, elipsa, hiperbola i parabola) Definicija 0.1 Algebarska kriva drugog reda u ravni jeste skup tačaka opisan

Programski jezik QBasic Kriteriji ocjenjivanja programiranje(b) - QBasic razred 42

Programski jezik QBasic Kriteriji ocjenjivanja programiranje(b) - QBasic razred 42

Vjezbe

Model podataka

My_P_Red_Bin_Zbir_Free

Задатак 4: Центрифугална пумпа познате карактеристике при n = 1450 min -1 пребацује воду из резервоара A и B у резервоар C кроз цевовод приказан на сл

PROGRAMIRANJE Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Algoritam je postupak raščlanjivanja problema na jednostavnije

Microsoft PowerPoint - X i XI termin - odredjivanje redosleda poslova [Compatibility Mode]

Tutoring System for Distance Learning of Java Programming Language

06 Poverljivost simetricnih algoritama1

OSNOVNA ŠKOLA, VI RAZRED MATEMATIKA

Microsoft Word - SIORT1_2019_K1_resenje.docx

PRIRODNO MATEMATIČKI FAKULTET U NIŠU DEPARTMAN ZA RAČUNARSKE NAUKE Utorak, godine PRIJEMNI ISPIT IZ INFORMATIKE 1. Koja od navedenih ekste

Analiticka geometrija

Projektovanje tehnoloških procesa

MAT KOL (Banja Luka) ISSN (p), ISSN (o) Vol. XX (2)(2014), PELLOVA JEDNAČINA I PITAGORIN

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvornog_Programa_I_Greske [Compatibility Mode]

Skripte2013

Република Србија МИНИСТАРСТВО ПРОСВЕТЕ, НАУКЕ И ТЕХНОЛОШКОГ РАЗВОЈА ЗАВОД ЗА ВРЕДНОВАЊЕ КВАЛИТЕТА ОБРАЗОВАЊА И ВАСПИТАЊА ТЕСТ МАТЕМАТИКА школска 2015/

STABILNOST SISTEMA

Microsoft Word - Matematika_emelt_irasbeli_0911_szerb.doc

Optimizacija

Teorija skupova - blog.sake.ba

Република Србија МИНИСТАРСТВО ПРОСВЕТЕ, НАУКЕ И ТЕХНОЛОШКОГ РАЗВОЈА ЗАВОД ЗА ВРЕДНОВАЊЕ КВАЛИТЕТА ОБРАЗОВАЊА И ВАСПИТАЊА ТЕСТ МАТЕМАТИКА УПУТСТВО ЗА О

Osnovi programiranja Beleške sa vežbi Smer Računarstvo i informatika Matematički fakultet, Beograd Jelena Tomašević i Sana Stojanović November 7, 2005

Microsoft Word - VEROVATNOCA II deo.doc

Microsoft Word - ASIMPTOTE FUNKCIJA.doc

Microsoft Word - NULE FUNKCIJE I ZNAK FUNKCIJE.doc

Natjecanje 2016.

Matematka 1 Zadaci za vežbe Oktobar Uvod 1.1. Izračunati vrednost izraza (bez upotrebe pomoćnih sredstava): ( ) [ a) : b) 3 3

РЕПУБЛИКА СРПСКА МИНИСТАРСТВО ПРОСВЈЕТЕ И КУЛТУРЕ РЕПУБЛИЧКИ ПЕДАГОШКИ ЗАВОД Милоша Обилића 39 Бањалука, Тел/факс 051/ , 051/ ; p

Microsoft Word - 1.Operacije i zakoni operacija

Електротехнички факултет Универзитета у Београду Катедра за рачунарску технику и информатику Kолоквијум из Интелигентних система Колоквију

PowerPoint Presentation

I колоквијум из Основа рачунарске технике I СИ- 2017/2018 ( ) Р е ш е њ е Задатак 1 Тачка А Потребно је прво пронаћи вредности функција f(x

Kombinatorno testiranje

Algoritmi SŠ P1

Slide 1

Упутствo за РАДНУ ГРУПУ за израду ПЛАНА ИНТЕГРИТЕТА на wеb апликацији Нацрти плана интегритета налазе се на линку integritet.acas.rs или на сајту Аген

Рационални Бројеви Скуп рационалних бројева 1. Из скупа { 3 4, 2, 4, 11, 0, , 1 5, 12 3 } издвој подскуп: а) природних бројева; б) целих броје

Microsoft Word - tumacenje rezultata za sajt - Lektorisan tekst1

PEDAGOŠKI ZAVOD TUZLA u saradnji s UDRUŽENJEM MATEMATIČARA TUZLANSKOG KANTONA Takmičenje učenika srednjih škola Tuzlanskog kantona iz MATEMATIKE Tuzla

Verovatnoća - kolokvijum 17. decembar Profesor daje dva tipa ispita,,,težak ispit i,,lak ispit. Verovatnoća da student dobije težak ispit je

Dijagrami sekvenci

I grupa 1. Napisati program koji izračunava i ispisuje zbir 4 najveća od pet brojeva unetih sa standardnog ulaza. ulaz izlaz Analiza: 1.

Транскрипт:

Analiza efikasnosti algoritama II Alg. uređivanja (sortiranja) sa umetanjem elemenata Alg. uređivanja (sortiranja)sa spajanjem podnizova 1

Algoritam uređivanja sa umetanjem elemenata (1/4) Uređivanje ulaznog niza od n brojeva <a 1, a 2,...,a n > naizlazudajepermutaciju <a 1 ', a 2 ',...,a n '>: a 1 ' a 2 '... a n (a i se nazivajuključevima) Engl. insertion sort je efikasan algoritma za uređivanje malog broja elemenata Imitira način na koji čovek uređuje karte u levoj ruci: Kartau desnojrucise poredisakartamau levoj s desnau levo 2

Algoritam uređivanja sa umetanjem elemenata (2/4) Karte u levoj ruci su sve vreme uređene! Pripada klasi INKREMENTALNIH algoritama Procedura Insertion-Sort Ulazni niz brojeva u nizu A[1..n] Broj elemenata nje zadat atributom niza A.length. Uređuje brojeve u istom tom nizu (engl. in place ) Na kraju procedure, niz Asadrži uređen niz brojeva 3

Algoritam uređivanja sa umetanjem elemenata (3/4) Insertion-Sort(A) 1. for j = 2 to A.length 2. key = A[j] 3. // Umetni A[j] u sortirani A[1..j-1] 4. i = j 1 5. while i > 0 and A[i] > key 6. A[i + 1] = A[i] 7. i = i 1 8. A[i + 1] = key Indeks j odgovara tekućoj karti u desnoj ruci Elementi u A[1..j-1] odgovaraju uređenim kartama u levoj ruci Elementi u A[j+1..n] odgovaraju kartama u špilu na stolu Osobina da je A[1..j-1] uvek uređen se zove INVARIJANTA PETLJE 4

Algoritam uređivanja sa umetanjem elemenata (4/4) (a) (c) 2 5 2 4 6 1 3 1 1 2 4 5 6 1 3 (b) (d) 2 2 5 4 6 1 3 1 5 2 4 5 6 1 3 Insertion-Sort(A) 1.for j = 2 to A.length 2. key = A[j] 3. // Umetni A[j] u A[1..j-1] 4. i = j 1 5. while i > 0 and A[i] > key 6. A[i + 1] = A[i] 7. i = i 1 8. A[i + 1] = key 4 3 2 1 4 (e) 1 2 4 5 6 3 (f) 1 2 3 4 5 6 3 2 1 Koraci (a) do (f) odgovaraju iteracijama for petlje, linije 1-8 crna kockica = ključ uzet iz A[j], koji se poredi u liniji 5 sa brojevima u osenčenim kockicama s leve strane Svetlije strelice -pomeranje u liniji 6, Crna strelica prebacuje ključ u liniji 8 (numeracija prema redosledu premeštanja) 5

Provera koreknosti algoritma Invarijanta petlje se koristi za dokaz da je algoritam korektan Potrebno pokazati tri osobine invarijante petlje : Inicijalizacija: Istinita je pre prve iteracije petlje Održavanje: Ako je istinita pre iteracije petlje, ostaje istinita posle iteracije Završetak: Kada se petlja završi, invarijanta daje korisnu osobinu za dokazivanje korektnosti Velika sličnost sa matematičkom indukcijom Ovde se postupak zaustavlja kada se petlja završi 6

Provera korektnosti procedure Insertion-Sort Inicijalizacija: Pre prve iteracije j= 2, podniz A[1..j-1] je A[1]i on je uređen Održavanje: Povećanje indeksa jza sledeću iteraciju ne utiče na već uređeni podniz A[1..j-1] Završetak: Uslov da je j> A.length= n, izaziva završetak for petlje Tada jmora imati vrednost j= n+ 1 Zamenom u invarijantu: A[1..j-1] =A[1..(n+1-1)] = A[1..n], a to je ceo niz! Pošto je ceo niz uređen, algoritam je korektan 7

Analiza algoritma Vreme izvršenja zavisi od veličine ulaza uređivanje 10 3 brojeva traje duže od uređivanja 3 broja Vremena za dva niza brojeva iste veličine zavisi koliko dobro su oni već uređeni Vreme izvršenja = broj operacija, tj. koraka KORAK što je moguće više mašinski nezavisan Npr. za svaku liniju pseudo koda potrebna neka konstantna količina vremena Neka je c i konstantno vreme potrebno za i-tu liniju 8

Analiza procedure Insertion-Sort (1/3) Insertion-Sort(A) Cena Broj izvršenja 1. for j = 2 to A.length c 1 n 2. key = A[j] c 2 n - 1 3. // Umetni A[j] u A[1..j-1] c 3 = 0 n - 1 4. i = j 1 c 4 n - 1 5. while i > 0 and A[i] > key c 5 Σ j=2..n t j 6. A[i + 1] = A[i] c 6 Σ j=2..n (t j 1) 7. i = i 1 c 7 Σ j=2..n (t j 1) 8.A[i + 1] = key c 8 n - 1 t j je broj ispitivanja uslova whilepetlje u liniji 5 Ispitivanje uslova petlje se izvršava jednom više nego telo petlje Vreme izvršenja T(n) se dobija sabiranjem proizvoda: 9

Analiza procedure Insertion-Sort (2/3) Vreme izvršenja zavisi od toga kakav ulaz te veličine je zadat Najbolji slučaj se dobija kada je ulaz već uređen Tada je A[i] key, za svako j, u liniji 5, pa je t j = 1, te jenajbolje (najkraće) vreme izvršenja: Ako je ulazni niz uređen u obratnom redosledu,dobija se najgore (najduže) vreme izvršenja Svaki A[j] se mora porediti sa celim podnizom A[1..j-1], pa je t j = j Uzimajući u obzir: 10

Analiza procedure Insertion-Sort (3/3) sledi da je najgore vreme izvršenja: Najgore vreme izvršenja je dakle kvadratna funkcija veličine ulaza an 2 + bn c, gde konstante a, bi czavise od cena iskaza. 11

Analiza najgoreg slučaja i prosečnog slučaja Najčešće je od interesa samo vreme izvršenja algoritma u najgorem slučaju. Tri razloga: To je gornja granica izvršenja za bilo koji ulaz nikada se neće izvršavati duže Najgori slučaj se dešava veoma često, npr. kod DB - najgori slučaj je da tražena informacija nije u DB Prosečan slučaj je često loš skoro kao najgori slučaj Npr. za slučajno generisan niz brojeva polovina elemenata u A[1..j-1] je manja od A[j], a polovina elemenata je veća, pa je t j = j/2 vreme izvršenja je takođe kvadratna funkcija n 12

Asimptotsko ponašanje algoritma Niz uprošćenja Prvo su zanemarene cene iskaza, putem konstanti c i Zatim se prešlo na konstante a, b, c Dalje uprošćenje asimptotske notacije Procenjivanje stope rasta, ili VELIČINE RASTA, vremena izvršenja algoritma Ranije je izveden zaključak da asimptotski uska granica za funkciju f(n) = an 2 + bn ciznosi Θ(n 2 ) Dakle, asimptotski uska granica za vreme izvršenja algoritma uređivanja sa umetanjem elemenat, u najgorem slučaju, je jednaka Θ(n 2 ) 13

Spajanje dva uređena podniza Spajanje obavlja procedura Merge(A, p, q, r) Aje niz, a p, qi rsu indeksi niza:p q< r Pretpostavka:A[p..q] i A[q+1..r] već uređeni Merge ih spaja u jedan uređeni niz A[p..r] Potrebno Θ(n) vremena, n= r p+1, to jebroj elemenata koje treba spojiti Dve gomilekaratana stolu, okrenute licem na gore Već uređene,najmanja karta jena vrhugomile Spojiti u jednu uređenu gomilu na stolu, okrenutu licem na dole 14

Osnovi korak procedure Merge Osnovni korak se sastoji od: izbor manjekarte sa vrhova dve polazne gomile, Uklanjanje tekarte sa vrha gomile (karta ispod nje postaje vidljiva) Smeštanje kartedole na izlaznu gomilu Osnovni korak se ponavljasvedok se jedna ulazna gomila ne isprazni; onda 2. gomilu stavimo, licem na dole na izlaznu gomilu Korak uzima Θ(1), pošto se samo porede 2karte nkoraka ukupnouzima Θ(n) vremena 15

Specijalna karta Da li je neka od polaznih gomila ispražnjena? Zamena: Da li se došlo do specijalne karte? U pseudo kodu ta specijalna vrednost je ona ne može biti manjaili jednaka ( )karta osim ako se nije došlo do dna obe gomile kad se to desi, sve karte pre specijalne karte su već prebačene na izlaznu gomilu Ukupno ima r p+1 običnih karata Procedura ponavljaosnovni korak toliko puta 16

Pseudo kod procedure Merge Merge(A, p, q, r) 1.n 1 = q p + 1 2.n 2 = r q 3.dodeli L[1.. n 1 +1] i R[1.. n 2 +1] 4. for i = 1 to n 1 5. L[i] = A[p + i 1] 6. for j = 1 to n 2 7. R[j] = A[q + j] 8.L[1.. n 1 +1] = 9.R[1.. n 2 +1] = 10.i = 1 11.j = 1 12. for k = p to r 13. if L[i] R[j] 14. A[k] = L[i] 15. i = i + 1 16. else A[k] = R[j] 17. j = j + 1 1: računa dužinu n 1 podnizaa[p..q] 2: računa dužinu n 2 podniza A[q+1..r] 3: pravi nizove Li R(levi i desni), dužinen 1 +1 i n 2 +1 4-5: kopira niza[p..q] u nizl[1..n 1 ] 6-7: kopira niz A[q+1..r] u niz R[1..n 2 ] 8-9: smeštaju specijalnu vrednost na kraj nizova Li R 10-17: ponavljaju osnovni korak r p+1 puta 17

Ilustracija rada procedure Merge poziv Merge(A, 9, 12, 16), niz A[9..16] sadrži brojeve <2,4,5,7,1,2,3,6> L L L L... 2 4 5 7 1 2 3 6... 2 4 5 7 INF R 1 2 3 6 INF i (a)... 1 4 5 7 1 2 3 6... 2 4 5 7 INF R 1 2 3 6 INF i A A A 9 10 11 12 13 14 15 16 k (b)... 1 2 5 7 1 2 3 6... 2 4 5 7 INF R 1 2 3 6 INF A i k k (c)...... 1 2 2 3 4 5 6 7... 2 4 5 7 INF R 1 2 3 6 INF i (d) j j j k j Nakon kopiranja i umetanja specijalne vrednosti, niz L sadrži <2, 4, 5, 7, >, niz R sadrži <1, 2, 3, 6, > Neosenčene pozicije u Asu njihove konačne vrednosti Osenčene pozicije u Li Rsu kopirane u A Indeks kpozicija u izl. nizu A Indeks ipozicija u ul. nizu L Indeks jpozicija u ul. nizu R Slika (b): L[1]=2 i R[1]=1, R[1] sadrži manju vrednost (1), koja se kopira u A[9] O korak se ponavlja još 6 puta 18

Invarijanta petlje Na početku svake iteracije forpetlje, lin. 12-17, A[p..k-1] sadrži k-pnajmanjih elemenata iz L[1..n 1 +1] i R[1..n 2 +1], u sortiranom redosledu Pored toga, L[i] i R[j] sadrže najmanje elemente njihovih nizova koji još nisu kopirani nazad u niz A Da se podsetimo: Provera korektnosti? Odgovor: inicijalizacija, održavanje, završetak 19

Provera korektnosti algoritma Provera tri svojstva: Inicijalizacija: Pre 1.iteracije petlje, k= p, pa je niz A[p..k-1] prazan. Prazan niz sadrži k -p= 0 min elem iz Li R; kako je i= j= 1, L[1] i R[1] su min elementi Održavanje: I deo: pp da je L[i] R[j], L[i] je min elem. A[p..k-1] sadrži k -pmin elem, a nakom kopiranja L[i] u A[k], A[p..k] će sadržatik -p+1 min elem. II deo: Ako je L[i] > R[j], onda lin. 16-17 održavaju inv. Završetak: Na kraju je k=r+1.a[p..k-1], postaje A[p..r], i sadrži k p=r -p+1 min elem.li Rzajedno sadrže n 1 +n 2 +2 = r -p+3 elem, i svi oni su kopirani nazad u niz A, osim 2 spec. elem. 20

Procedura Merge-Sort Merge-Sort(A, p, r) 1. if p < r 2. q = (p+r)/2 3. Sort(A, p, q) 4. Sort(A, q+1, r) 5. Merge(A, p, q, r) Procedura Merge-Sort(A, p, r) uređuje podniz A[p..r]. Ako je p r, taj podniz ima najviše jedan element, pa je on već uređen. U suprotnom slučaju, korak podelijednostavno računa indeks q, koji deli A[p..r] na dva podniza: A[p..q] i A[q+1..r] Prvi podniz sadrži n/2 a drugi n/2 elemenata Poziv: Merge-Sort(A, 1, A.length) 21

Procedura Merge-Sort Merge-Sort(A, p, r) 1. if p < r 2. q = (p+r)/2 3. Merge-Sort(A, p, q) 4. Merge-Sort(A, q+1, r) 5. Merge(A, p, q, r) Procedura Merge-Sort(A, p, r) uređuje podniz A[p..r]. Ako je p r, taj podniz ima najviše jedan element, pa je on već uređen. U suprotnom slučaju, korak podelijednostavno računa indeks q, koji deli A[p..r] na dva podniza: A[p..q] i A[q+1..r] Prvi podniz sadrži n/2 a drugi n/2 elemenata Inicijalni poziv: Merge-Sort(A, 1, A.length) 22

Algoritam sortiranja sa spajanjem podnizova (1/2) Koristi pristup PODELI I ZAVLADAJ Ti algoritmi su rekurzivni Na svakom nivou rekurzije sledeća 3 koraka: Podeliproblem na nekoliko podproblema, koji su manje instance istog problema Zavladajpodproblemima rešavajući ih rekurzivno. Ako su podproblemi dovoljno mali, reši ih direktno Kombinujrešenja podproblema u ukupno rešenje originalnog problema 23

Algoritam sortiranja sa spajanjem podnizova (2/2) Ovaj konkretan algoritam radi na sledeći način: Podeli: Podeli niz od nelemenata u dva podniza od po n/2 elemenata Zavladaj: Uredi dva podniza rekurzivno korišćenjem istog aloritma Kombinuj: Spoj dva uređena podniza da bi proizveo uređen niz Rekurzija se spušta do dna, do niza dužine 1, a niz sa jednim elementom već je uređen. 24

Rad procedure Merge-Sort Ulazni niz (na dnu): <5,2,4,7,1,3,2,6> algoritam započinje spajanjem nizova sa po 1 elem u urešene nizove dužine 2, itd. sve do spajanja dva niza dužine n/2 u konačnan niz dužine n 25

Analiza rekurzivnih algoritama (1/2) Kada algoritam sadrži rekurzivne pozive, vreme izvršenja se opisuje rekurentnom jednačinom, ili kratko rekurencijom Npr. podeli i zavladaj Direktno rešenje za n cuzima Θ(1) vreme Podela problema na apodproblema, veličina 1/b Podproblem uzima Θ(n/b) vremena apodproblema uzima a Θ(n/b) vremena Podela problemana podprob. uzima D(n) vremena Kombinovanje rešenja uzima C(n) vremena 26

Analiza rekurzivnih algoritama (2/2) Opšta rekurentna jednačina za T(n) algoritma zasnovanog na pristupu podeli i zavladaj: 27

Analiza procedure Merge-Sort Vremena po koracima Podeli: računa sredinu podniza, pa je D(n) = Θ(1) Zavladaj: dva podproblema, svaki veličine n/2, što daje doprinos ukupnom vremenu izvršenja od 2T(n/2) Kombinuj: Merge nad nizom od nelemenata uzima Θ(n) vremena, pa je C(n) = Θ(n) Pošto je C(n)+D(n)=Θ(n), rekurentna jednačina za T(n) za proceduru Merge-Sort glasi: 28

Rešenje (1/3) Primenom master metode, slučaj 2, dobija se rešenje T(n) = Θ(nlg n) Intuitivno razumevanje rešenjat(n) = Θ(nlg n) bez master teoreme Napišimo gornju jednačinu ovako: cje vreme za problem veličine 1, kao i vreme po elementu niza za korake podeli i kombinuj Sledi grafičko rešenje poslednje jednačine Pretpostavka: nje neki stepen za osnovu 2 29

Rešenje (2/3) Rekurzivno stablo za T(n) = 2T(n/2)+cn (a): T(n), koji se na (b) proširuje u stablo prema rekurenciji cnje cena na najvišem nivou, a dva podstabla su rekurencijet(n/2) (c): rezultat proširenja T(n/2) (d): celo rekurzivno stablo 30

Rešenje (3/3) Dalje se sabiraju cene za svaki nivo stabla najviši nivo:cenacn sledeći novo: cenac(n/2) + c(n/2) = cn sledeći novo:c(n/4)+c(n/4)+c(n/4)+c(n/4) = cn, itd. najniži nivo:nčvorovaxcenac= cn. Uvek cn. Ukupnonivoau stablu: lg n+ 1,nbroj listova Ukupna cena rekurencije: Br nivoa x Cena nivoa = (lg n+ 1)cn= cnlg n+ cn Zanemarujući niži člancn, kao i konstantu c, dobijamo: T(n) = Θ(nlg n) 31