APS2 teorija Flashcards
Zapiši definicijo f(n) = O(g(n))
f(n) = O(g(n)): f(n) je omejena navzgor z g(n)
(∃c1, n0 > 0)(∀n ≥ n0) [0 ≤ f(n) ≤ c1*g(n))]
Zapiši definicijo f(n) = Ω(h(n))
f(n) = Ω(h(n)): f(n) je omejena navzdol z h(n)
(∃c2, n1 > 0)(∀n ≥ n1) [c2*h(n)) ≤ f(n)]
Zapiši definicijo f(n) = Θ(k(n))
f(n) = Θ(k(n)): f(n) je enaka funkciji k(n) (f je od zgoraj in spodaj omejena z k)
(∃c1, c2, n2 > 0)(∀n ≥ n2) [c1k(n) ≤ f(n) ≤ c2k(n)]
Kakšni sta asimptotični zahtevnosti funkcij f(n) in g(n), kjer je
f(n) = 2n^2logn + 2n^2loglogn in
g(n) = n^2logn + 10n^2loglogn
Θ(n^2*logn)
Izpeljite asimptotično (Θ) zahtevnost funkcije f(n) = 8^(log2(n))
f(n) = 8^(log2(n)) = n^(log2(8)) = n^3 => Θ(n^3)
Izpeljite asimptotično (Θ) zahtevnost funkcije f(n) = 4^(log2(n))
f(n) = 4^(log2(n)) = n^(log2(4)) = n^2 => Θ(n^2)
Kaj hitreje narašča?
f(n) = e^n + n!
g(n) = n^(n+1)
f(n) (n -> ∞) = n!
g(n) (n -> ∞) = n^n
g(n) > f(n)
g(n) narašča hitreje
Izpeljite asimptotično (Θ) zahtevnost za naslednji funkciji.
f(n) = n^2 + 3n
g(n) = n^2 - e^(-π/2)
T(n) = n^2 + 3n -> n^2 => Θ(n) = n^2 T(n) = n^2 - e^(-π/2) -> n^2 => Θ(n) = n^2
Definiraj urejanje zaporedij
Dani so a1, a2 ,…, an in relacija popolne urejenosti ≼.
Cilj je poiskati tako razporeditev, da velja ai1 ≼ ai2 ≼ … ≼ ain.
Naštejte 5 algoritmov za notranje urejanje.
(Če je n takšno število, da so vsi elementi v glavnem pomnilniku v neki tabeli.)
urejanje z izbiranjem (Selection sort), urejanje z zamenjavami (Bubble sort), urejanje z zamenjavami (Bubble sort), urejanje s kopico (Heap sort), hitro urejanje (Quick sort) in zlivanje (Merge sort)
Najboljši, povprečen in najslabši case scenario časovne zahtevnosti za heapsort
Ω(n log n), Θ(n log n), O(n log n)
Najboljši, povprečen in najslabši case scenario časovne zahtevnosti za quicksort
Ω(n log n), Θ(n log n), O(n2)
Naštejte 5 metod za razvoj algoritmov
Dinamično programiranje, deli in vladaj, sestopanje, požrešni algoritmi, rekurzivni razcep
Opiši razliko med dinamičnim programiranjem in deli in vladaj ter načelo optimalnosti
Dinamično programiranje temelji na pravilu optimalnosti, kjer sistematično pregleduje delne rešitve in
sestavlja optimalno rešitev. Če v danem koraku ugotovimo, da delna rešitev ne pripelje do optimalne, jo
zavržemo. Vsaka naloga ima svojo Bellmanovo enačbo.
Primer: nahrbtnik
Pri Deli in vladaj problem najprej razdelimo na manjše podprobleme, le-te rešimo z uporabo rekurzije in iz
njihovih rešitev sestavimo rešitev problema.
Primer: QuickSort (urejanje podtabele t1 in urejanje podtabele t2 ∪ t3)
Zaporedje odločitev D1, D2, . . . , Dm (ki jih sprejmemo med računanjem rešitve naloge N) je optimalno, če
nas privede do optimalne rešitve naloge N.
Načelo optimalnosti: Vsako podzaporedje optimalnega zaporedja odločitev je tudi optimalno.
Kdaj rečemo, da ima algoritem psevdo-polinomsko časovno zahtevnost?
Časovna kompleksnost algoritma odvisna od numerične vrednosti vhoda, in ne od velikosti vhoda.
Zapišite glavni izrek (Master Theorem) metode deli & vladaj. Pojasnite pomen uporabljenih oznak.
T(n) =
b, če n = 1;
aT(n/c) + b*n^d, če n > 0;
kjer so a ≥ 1, b > 0, c ≥ 2 in d ≥ 0, velja naslednje:
T(n) =
Θ(n^d), če c^d/a > 1;
Θ(n^d log n) če c^d/a = 1;
Θ(n^(logc(a))) če c^d/a < 1;
a = število podnalog b = konstanta brez bistvenega pomena c = faktor delitve naloge d = red velikosti zahtevnosti pri delitvi in združevanju n = velikost naloge
Psevdokoda za navadno matrično množenje
procedure MatProdukt(A,B,C); begin C := 0; for i = 1 to n do for j = 1 to n do for k = 1 to n do C[i,j] := C[i,j] + A[i,k]*B[k,j] end.
Psevdokoda za Strassenovo matrično množenje
procedure Strassen(A,B) return C; begin if n=1 then C := AB else begin P_11 := Strassen(A_11 + A_22, B_11 + B_22) ... C_11 := P_11 + P_12 - P_13 - P14 ... C := (C_11,C_12,C_21,C_22) end end.
P11 = (A11 + A22)(B11 + B22) P21 = (A22 + A11)(B22 + B11) P12 = (A12 - A22)(B21 + B22) P22 = (A21 - A11)(B12 + B11) P13 = (A11 + A12)B22 P23 = (A22 + A21)B11 P14 = A22(B11 - B21) P24 = A11(B22 - B12)
C11 = P11 + P12 - P13 - P14 C12 = P13 - P24 C21 = P23 - P14 C22 = P21 + P22 - P23 - P24
Asimptotična zashtevnost za Strassenovo množenje
T(n) = Θ(n^(logc(a))) = Θ(n^(log2(7))) = Θ(n^2,80735)
Zapišite definicijo n-tega primitivnega korena.
- ω^d = 1 // ω je koren enote
- ω^k ≠ 1 za k = 1, …, d-1 // ω je primitivni koren enote
V kompleksnem (C) obsegu je ω = e^(i*(2π/d))
Zapišite definicijo Fourierove matrike F
Fij = ω^(i*j), 0 ≤ i, j < d
Kakšna je inverzna matrika F-1?
Fij^-1 = 1/d * ω^(-i*j), 0 ≤ i, j < d