Konstrukcija i analiza algoritamapoincare.matf.bg.ac.rs/~nina/KIAA/KIAAslides2.pdfSloženost...
Transcript of Konstrukcija i analiza algoritamapoincare.matf.bg.ac.rs/~nina/KIAA/KIAAslides2.pdfSloženost...
Složenost algoritamaDokazivanje korektnosti algoritma
Konstrukcija i analiza algoritama
Nina Radojičić[email protected]
Matematčki fakultet
februar 2018.
Nina Radojičić [email protected] Konstrukcija i analiza algoritama
Složenost algoritamaDokazivanje korektnosti algoritma
Sadržaj1 Složenost algoritama
Složenost algoritamaOznake O, Ω, ΘZadaci
2 Dokazivanje korektnosti algoritmaZadaci
Nina Radojičić [email protected] Konstrukcija i analiza algoritama
Složenost algoritamaDokazivanje korektnosti algoritma
Sadržaj1 Složenost algoritama
Složenost algoritamaOznake O, Ω, ΘZadaci
2 Dokazivanje korektnosti algoritmaZadaci
Nina Radojičić [email protected] Konstrukcija i analiza algoritama
Složenost algoritamaDokazivanje korektnosti algoritma
Složenost algoritamaOznake O, Ω, ΘZadaci
Složenost algoritama
Postoje 3 mere na osnovu kojih se porede efikasnosti algoritama:1 najgori mogući slučaj,2 prosečan slučaj,3 brzina izvršavanja na unapred određenom skupu instanci (eng.
benchmarks).
Za merenje u druga 2 slučaja potrebno je imati više informacija oproblemu: koji je to prosečan ulaz i koliko se često javlja, kakva jepriroda problema i kakve instance problema se najčešće susreću.U prvom slučaju prednost je što se pomoću matematičkog proračunačesto lako odredi efikasnost nekog algoritma.Prvi način se pokazao dobar i zato je opšte prihvaćen.
Nina Radojičić [email protected] Konstrukcija i analiza algoritama
Složenost algoritamaDokazivanje korektnosti algoritma
Složenost algoritamaOznake O, Ω, ΘZadaci
Oznake O, Ω, Θ
Veliko O notacija koristi se za procenu efikasnosti algoritama.
Definicija 1:Neka su f: N→N i g: N→N proizvoljne funkcije argumenta n. Kažemoda je g(n)=O(f(n)) ako postoje pozitivne konstante c ∈ R i N ∈ N,takve da ∀ n ≥ N važi: g(n) ≤ c · f(n).
Napomena: U profesorovoj knjizi prethodna definicija je data za ∀ n >N (što je suštinski isto).
Nina Radojičić [email protected] Konstrukcija i analiza algoritama
Složenost algoritamaDokazivanje korektnosti algoritma
Složenost algoritamaOznake O, Ω, ΘZadaci
Oznake O, Ω, Θ
Oznaka O(f (n)) u stvari se odnosi na klasu funkcija, tako da je
g(n) = O(f (n))
drugi zapis zag(n) ∈ O(f (n))
.
O(1) oznaka za klasu ograničenih funkcija.
Primer:
5n2 + 8 = O(n2) jer je
5n2 + 8 ≤ 112n2
za n ≥ 4, tj. c = 112 ,N = 4
Nina Radojičić [email protected] Konstrukcija i analiza algoritama
Složenost algoritamaDokazivanje korektnosti algoritma
Složenost algoritamaOznake O, Ω, ΘZadaci
Oznake O, Ω, Θ
Funkcije se smeštaju u različite klase u zavisnosti od njihove brzinerasta. U prethodnom primeru se pokazuje da funkcija 5n2 + 8 ne rastebrže od 6 · n2.Umesto
O(a · n + b)
se koristitiO(n),
gde su a i b proizvoljne konstante.Isto važi za O(n2),O(log n) itd...Osnova logartima nije relevantna, što sledi iz jednakosti
loga n = loga(blogbn) = logbn · logab = logbn · c
Nina Radojičić [email protected] Konstrukcija i analiza algoritama
Složenost algoritamaDokazivanje korektnosti algoritma
Složenost algoritamaOznake O, Ω, ΘZadaci
Oznake O, Ω, Θ
Definicija 2:Neka su f:N→N i g:N→N proizvoljne funkcije argumenta n. Kažemo daje f (n) asimptotska donja granica funkcije g(n) i pišemog(n) = Ω(f (n)) ako postoje pozitivne konstante c ∈ R i N ∈ N, takveda ∀n ≥ N važi: g(n) ≥ c · f (n).
Definicija 3:
Ako za funkcije f (n) i g(n) istovremeno važi
g(n) = O(f (n))
ig(n) = Ω(f (n))
onda pišemog(n) = Θ(f (n)).
Nina Radojičić [email protected] Konstrukcija i analiza algoritama
Složenost algoritamaDokazivanje korektnosti algoritma
Složenost algoritamaOznake O, Ω, ΘZadaci
Oznaka O
Važi:O(f (n)) + O(g(n)) = O(f (n) + g(n)),O(f (n)) · O(g(n)) = O(f (n) · g(n)),
a ne važi:O(f (n))− O(g(n)) = O(f (n)− g(n)) (kontraprimer:3n = O(n), 2n = O(n)),O(f (n))/O(g(n)) = O(f (n)/g(n)) (kontraprimer:n = O(n), n = O(n2)).
Nina Radojičić [email protected] Konstrukcija i analiza algoritama
Složenost algoritamaDokazivanje korektnosti algoritma
Složenost algoritamaOznake O, Ω, ΘZadaci
Zadaci
Zadatak 1.
Dokazati da važi: T (n) = 2n2 + n − 1 = Θ(n2).
Nina Radojičić [email protected] Konstrukcija i analiza algoritama
Složenost algoritamaDokazivanje korektnosti algoritma
Složenost algoritamaOznake O, Ω, ΘZadaci
Zadaci
Zadatak 1.
Dokazati da važi: T (n) = 2n2 + n − 1 = Θ(n2).
Nadjimo konstante c1, c2,N, td: ∀ n ≥ N važi:
c1n2 ≤ 2n2 + n − 1 ≤ c2n
2
Nina Radojičić [email protected] Konstrukcija i analiza algoritama
Složenost algoritamaDokazivanje korektnosti algoritma
Složenost algoritamaOznake O, Ω, ΘZadaci
Zadaci
Zadatak 1.
Dokazati da važi: T (n) = 2n2 + n − 1 = Θ(n2).
Nadjimo konstante c1, c2,N, td: ∀ n ≥ N važi:
c1n2 ≤ 2n2 + n − 1 ≤ c2n
2, to jest
c1 ≤ 2 + 1n −
1n2 ≤ c2
Pronalazimo prvo konstante c1 i N1 za koje je zadovoljena levanejednakost, pa konstante c2 i N2 za koje je zadovoljena desnanejednakost.
Nina Radojičić [email protected] Konstrukcija i analiza algoritama
Složenost algoritamaDokazivanje korektnosti algoritma
Složenost algoritamaOznake O, Ω, ΘZadaci
Zadaci
Zadatak 1.
Dokazati da važi: T (n) = 2n2 + n − 1 = Θ(n2).
Nadjimo konstante c1, c2,N, td: ∀ n ≥ N važi:
c1n2 ≤ 2n2 + n − 1 ≤ c2n
2, to jest
c1 ≤ 2 + 1n −
1n2 ≤ c2
Pronalazimo prvo konstante c1 i N1 za koje je zadovoljena levanejednakost, pa konstante c2 i N2 za koje je zadovoljena desnanejednakost. Odatle dobijamo c1, c2 i N = maxN1,N2.Jedno rešenje je c1 = 2, c2 = 3,N = 1.
Nina Radojičić [email protected] Konstrukcija i analiza algoritama
Složenost algoritamaDokazivanje korektnosti algoritma
Složenost algoritamaOznake O, Ω, ΘZadaci
Zadaci
Zadatak 3.Navesti primer dve monotono rastuće funkcije (niza) f (n) i g(n), takveda nije ni f (n) = O(g(n)), ni g(n) = O(f (n)).
Nina Radojičić [email protected] Konstrukcija i analiza algoritama
Složenost algoritamaDokazivanje korektnosti algoritma
Složenost algoritamaOznake O, Ω, ΘZadaci
Zadaci
Zadatak 3.Navesti primer dve monotono rastuće funkcije (niza) f (n) i g(n), takveda nije ni f (n) = O(g(n)), ni g(n) = O(f (n)).
f (n) =
n!, n parno(n − 1)! + 1, n neparno
(1)
g(n) =
(n − 1)! + 1, n parnon!, n neparno
(2)
Nina Radojičić [email protected] Konstrukcija i analiza algoritama
Složenost algoritamaDokazivanje korektnosti algoritma
Složenost algoritamaOznake O, Ω, ΘZadaci
Rešenje
f (n) =
n!, n parno(n − 1)! + 1, n neparno
(3)
g(n) =
(n − 1)! + 1, n parnon!, n neparno
(4)
Tada je:f (n)
g(n)=
n(1 + 1
(n−1)! )−1, n parno1n (1 + 1
(n−1)! ), n neparno(5)
Nina Radojičić [email protected] Konstrukcija i analiza algoritama
Složenost algoritamaDokazivanje korektnosti algoritma
Složenost algoritamaOznake O, Ω, ΘZadaci
Rešenje
f (n) =
n!, n parno(n − 1)! + 1, n neparno
(6)
g(n) =
(n − 1)! + 1, n parnon!, n neparno
(7)
Tada je:f (n)
g(n)=
n(1 + 1
(n−1)! )−1, n parno1n (1 + 1
(n−1)! ), n neparno(8)
Dakle, ni f (n)/g(n) niti g(n)/f (n) nisu ograničene funkcije.
Nina Radojičić [email protected] Konstrukcija i analiza algoritama
Složenost algoritamaDokazivanje korektnosti algoritma
Složenost algoritamaOznake O, Ω, ΘZadaci
Rešenje
f (n)
g(n)=
n(1 + 1
(n−1)! )−1, n parno1n (1 + 1
(n−1)! ), n neparno(9)
Važi da je za parno n:
f (n)/g(n) ≥ n(1 + 1/1)−1 = n/2,
a za neparno n:
g(n)/f (n) ≥ n/2.
Nina Radojičić [email protected] Konstrukcija i analiza algoritama
Složenost algoritamaDokazivanje korektnosti algoritma
Složenost algoritamaOznake O, Ω, ΘZadaci
Zadaci
Zadatak 4.Ako elementi niza an zadovoljavaju rekurentnu relaciju:
an+2 + ban+1 + can = 0, n ≥ 0,
gde su b i c konstante i važi a0 = 0, a1 = 1, a2 = 4 i a3 = 37, odreditian.
Zadatak 5.Naći rekurentnu relaciju za broj nizova binarnih brojeva dužine n kojinemaju susedne nule.
Nina Radojičić [email protected] Konstrukcija i analiza algoritama
Složenost algoritamaDokazivanje korektnosti algoritma
Složenost algoritamaOznake O, Ω, ΘZadaci
Zadaci
Zadatak 6.Rešiti rekurentnu jednačinu:
a2n+2 − 5a2
n+1 + 4a2n = 0, n ≥ 0
za koju važi a0 = 4 i a1 = 13.
Zadatak 7.Rešiti sledeću rekurentnu jednačinu:
T (n) =n−1∑i=1
T (i) + 1, n ≥ 2
za koju važi T (1) = 1.
Nina Radojičić [email protected] Konstrukcija i analiza algoritama
Složenost algoritamaDokazivanje korektnosti algoritma
Složenost algoritamaOznake O, Ω, ΘZadaci
Master teorema:
Rešenje diferencne jednačine: T (n) = aT (nb ) + cnk gde su a,b, c ,k ≥ 0, b 6= 0 je:
T (n) =
O(nlogb a), a > bk
O(nk log n), a > bk
O(nk), a < bk
Nina Radojičić [email protected] Konstrukcija i analiza algoritama
Složenost algoritamaDokazivanje korektnosti algoritma
Složenost algoritamaOznake O, Ω, ΘZadaci
Master teorema:
Rešenje diferencne jednačine: T (n) = aT (nb ) + cnk gde su a,b, c ,k ≥ 0, b 6= 0 je:
T (n) =
O(nlogb a), a > bk
O(nk log n), a = bk
O(nk), a < bk
Zadatak 8.Rešiti rekurentnu jednačinu:
T (n) = 2T (n
2) + 6n − 1, n ≥ 2
za koju važi T (1) = 1.
Nina Radojičić [email protected] Konstrukcija i analiza algoritama
Složenost algoritamaDokazivanje korektnosti algoritma Zadaci
Dokazivanje korektnosti algoritma
Invarijanta petlje je relacija izmedju promenljivih koja važi nakonsvakog izvršenja bloka naredbi u okviru petlje.
Nina Radojičić [email protected] Konstrukcija i analiza algoritama
Složenost algoritamaDokazivanje korektnosti algoritma Zadaci
Zadaci
Zadatak 1.Napisati algoritam za odredjivanje najvećeg zajedničkog delioca dvaprirodna broja i dokazati korektnost napisanog algoritma.
Rešenje: Euklidov algoritam se bazira na sledećem tvrdjenju:Tvrdjenje: NZD(a, b) = NZD(b, r), pri čemu je r = a mod b.
Nina Radojičić [email protected] Konstrukcija i analiza algoritama
Složenost algoritamaDokazivanje korektnosti algoritma Zadaci
Algoritam nzd(m,n)Ulaz: m,n;Izlaz: nzd; /* najveci zajednicki delioc brojeva m i n */begin
a:=max(m,n);b:=min(m,n);r:=b;while r>0 dobegin
r:=a mod b;a:=b;b:=r;
end;nzd:=a;
end.
Nina Radojičić [email protected] Konstrukcija i analiza algoritama
Složenost algoritamaDokazivanje korektnosti algoritma Zadaci
Zadaci
Zadatak 2.Neka je P funkcija koja prirodni broj n preslikava u prirodni broj saistim ciframa, ali u obrnutom poretku (npr: P(12345) = 54321).Konstruisati algoritam koji za ulaznu vrednost - prirodan broj n,izračunava vrednost P(n). Dokazati korektnost napisanog algoritma.
Dokaz korektnosti izvesti za brojeve n koji se ne završavaju nulom.
Nina Radojičić [email protected] Konstrukcija i analiza algoritama
Složenost algoritamaDokazivanje korektnosti algoritma Zadaci
Algoritam Inverzija(n);Ulaz: n;Izlaz: m; /*vrednost broja sa obrnutim ciframa*/begin
m:=0;k:=n;i:=0;while k>0 dobegin
m:=m*10+k mod 10;k:=k div 10;i:=i+1;
endend.
Nina Radojičić [email protected] Konstrukcija i analiza algoritama