АСП1/К2 2016 — разлика између измена
м (Dodate postavke ostalih zadataka) |
м (Ispravke označavanja sintakse; sve promenljive bi trebalo da su deklarisane pre korišćenja; ne smeju se menjati ulazni parametri (ako se dobro sećam šta nam je Milica pričala); obično se koristi FREENODE umesto samo FREE) |
||
| Ред 31: | Ред 31: | ||
<u>CHECK_SYMMETRIC(''root'', ''node'')</u> | <u>CHECK_SYMMETRIC(''root'', ''node'')</u> | ||
''path'' = nil | ''path'' = nil | ||
'''while''' '' | ''step'' = nil | ||
''parent'' = nil | |||
''p'' = ''node'' | |||
'''while''' ''p'' ≠ ''root'' '''do''' | |||
''step'' = GETNODE | ''step'' = GETNODE | ||
''parent'' = ''parent''('' | ''parent'' = ''parent''(''p'') | ||
'''if''' ''left''(''parent'') = '' | '''if''' ''left''(''parent'') = ''p'' '''then''' | ||
info(''step'') = 0 | ''info''(''step'') = 0 | ||
'''else''' | '''else''' | ||
info(''step'') = 1 | ''info''(''step'') = 1 | ||
'''end_if''' | '''end_if''' | ||
'' | ''p'' = ''parent'' | ||
next(''step'') = ''path'' | ''next''(''step'') = ''path'' | ||
''path'' = ''step'' | ''path'' = ''step'' | ||
'''end_while''' | '''end_while''' | ||
'''while''' '' | '''while''' ''p'' ≠ nil '''do''' | ||
'''if''' ''path'' = nil '''then''' | '''if''' ''path'' = nil '''then''' | ||
'''return''' true | '''return''' true | ||
'''end_if''' | '''end_if''' | ||
'''if''' info(''path'') = 0 '''then''' | '''if''' ''info''(''path'') = 0 '''then''' | ||
'' | ''p'' = ''right''(''p'') | ||
'''else''' | '''else''' | ||
'' | ''p'' = ''left''(''p'') | ||
'''end_if''' | '''end_if''' | ||
''step'' = ''path'' | ''step'' = ''path'' | ||
''path'' = next(''path'') | ''path'' = ''next''(''path'') | ||
FREENODE(''step'') | |||
'''end_while''' | '''end_while''' | ||
'''return''' false | '''return''' false | ||
Верзија на датум 5. април 2020. у 17:02
1. zadatak
Postavka
Na slici je dato jedno nekompletno prikazano binarno stablo (desno. Ukoliko preorder obilazak takvog stabla daje poredak čvorova ACBDFE, nacrtati sve moguće izglede ovog stabla.
A / \ C ... \ B
Rešenje
Pogledajmo najpre obilazak A CB DFE
Levi deo je kompletan i D mora biti koren desnog podstabla. Odatle dolaze kombinacije:
A A A A A
/ \ / \ / \ / \ / \
C D C D C D C D C D
\ / \ \ / \ / \ \ \ \
B F E B F B F B F B F
/ \ \ /
E E E E
2. zadatak
Postavka
Napisati u pseudokodu funkciju koja u binarnom stablu na čiji koren pokazuje pokazivač root utvrđuje da li postoji čvor čija pozicija u stablu (u odnosu na koren) je simetrična u odnosu na poziciju čvora na koji pokazuje pokazivač node. Smatrati da svaki čvor binarnog stabla pored informacionog sadržaja sadrži pokazivače na levo i desno podstablo i pokazivač na roditeljski čvor.
Rešenje
Rešenje se sastoji od toga da se vratimo unazad, pamteći put, i onda silazimo opet ali obrnutim putem. Ukoliko se isprazni ulančana lista (koja glumi stek), to znači da postoji simetrični član.
CHECK_SYMMETRIC(root, node)
path = nil
step = nil
parent = nil
p = node
while p ≠ root do
step = GETNODE
parent = parent(p)
if left(parent) = p then
info(step) = 0
else
info(step) = 1
end_if
p = parent
next(step) = path
path = step
end_while
while p ≠ nil do
if path = nil then
return true
end_if
if info(path) = 0 then
p = right(p)
else
p = left(p)
end_if
step = path
path = next(path)
FREENODE(step)
end_while
return false
3. zadatak
Postavka
Dekodovati poruku 0 1 3 3 4 5 4 9 primenom LZW algoritma, za dati početni sadržaj tabele simbola.
Rešenje
- Dekodovana poruka:
- Tablica kodova:
| Simbol | Kôd |
|---|---|
| A | 0 |
| B | 1 |
| C | 2 |
4. zadatak
Postavka
Ukoliko je usmereni graf sa n čvorova predstavljen listom susednosti, napisati u pseudokodu funkcije za izračunavanje ulaznog i izlaznog stepena zadatog čvora i.
Rešenje
VERTEX IN DEG(G, n, i)
VERTEX OUT DEG(G, n, i)
5. zadatak
Postavka
Korišćenjem dinamičkih Huffman-ovih kodova, kodirati sekvencu simbola CBCBDAAABABA, ako se simboli A, B, C i D kodovima fiksne dužine kodiraju sa po dva bita 00, 01, 10, 11, respektivno
Rešenje
6. zadatak
Postavka
Dato je binarno stablo B, na čiji koren pokazuje pokazivač root. Stablo B dobijeno je konverzijom m-arnog stabla T u odgovarajuće binarno. Napisati u pseudokodu iterativnu funkciju koja određuje red stabla T.
Rešenje
TREE ORDER BIN(root)
7. zadatak
Postavka
Pitanja:
- Komentarisati strategiju obrade istih prioriteta u prioritetnom redu primenjenom u statičkom Huffman-ovom algoritmu.
- Kolika je minimalna, a kolika maksimalna dubina steka korišćenog u iterativnoj realizaciji preorder obilaska binarnog stabla sa n čvorova. Nacrtati takva stabla.
Rešenje
8. zadatak
Postavka
Dato je binarno stablo povezano po inorder-u. Napisati i objasniti pseudokod algoritma obilaska po inverznom inorder poretku.
Rešenje
INVERSE INORDER T(root)