Správná odpověď macimálně 13 bodů, nesmyslná -4 body
Zadání
Proveďte analýzu třídícího algoritmu BubbleSort daného následujícím pseudokódem.
Vstup: Dvě čtvercové matice A a B řádu n
Vyˊstup: Čtvercová matice C řádu n, kde C=AB
1 for i ← 0 to n−1 do
2 for j ← 0 to n−1 do
3 C[i,j]←0;
4 for j ← 0 to n−1 do
5 C[i,j] ← C[i,j]+A[i,k]∗B[k,j];
6 end
7 end
8 end
9 return C;
Vaším úkolem provést analýzu algoritmu. Očekávají se odpovědi na následující otázky:
(a) (1 bod) Volba parametru reprezentujícího velikost vstupu.
(b) (1 bod) Nalezení základních operací algoritmu.
(c) (3 body) Je nutné u daného algoritmu rozlišovat nejhorší, průměrný a nejlepší případ? Nebo tyto případy splývají? Na čem závisí rozhodnutí? Poznámka: Pokud by bylo nutné zkoumat více případů,bude stačit, když vypracujete řešení pro nejhorší případ.
(d) (3 body) Sestavení rovnic, vyjadřujících počet základních operací vykonaných algoritmem v závislostina velikosti vstupu.
(e) (3 body) Zjednodušení rovnic sestavených v předcházejícím bodě.
(f) (2 body) Stanovení řádového růstu složitosti algoritmu.
Řešení
(a) n (počet řádků u čtvercových matic je stejný jako počet sloupců)
(b) Základní operace jsou:
- Inicializace matice C na hodnotu 0, pro každý prvek jedna operace (Iterace pomocí i,j)
- Násobení matic A a B a přičtení hodnoty C pro daný prvek (Přes iteraci k)
[//]: # (End list)
(c) V tomto případě není nutné rozlišovat, protože procházíme vždy všechny okolní prvky pole. Jeho složitost tudíž závisí na velikosti vstupu.
(d)
M(n)=i=0∑n−1j=0∑n−1k=0∑n−11
(e)
M(n)=i=0∑n−1j=0∑n−1k=0∑n−11=i=0∑n−1j=0∑n−1n=i=0∑n−1n2=n3
(f) O(n3)
Správná odpověď maximálně 5 bodů, nesmyslná -1 bod
Zadání
Je dána následující posloupnost písmen: JDPHTRBXNLFV. Písmena z této posloupnosti byla postupně, v pořadí jak jsou zapsána, vložena do binárního vyhledávacího stromu. Nakreslete výsledný strom. Jen pro připomenutí, abeceda vypadá takto: ABCDEFGHIJKLMNOPQRSTUVWXYZ.
Řešení
B↙DF↙↘↙HLJ↙N↘↙PR↘↙TV↘↙X
Správná odpověď maximálně 5 bodů, nesmyslná -2 body
Zadání
Máte dánu funkci f(n)=12n4−3n3+n2−7n−8. Formálně matematicky dokažte, zda platí f(n)∈Ω(n3) nebo f(n)