VPRAŠANJA
Vsak na izpitu izvleče štiri številke od 1 do
80.
Nato ima nekaj časa (15-20 minut) za samostojno pripravo na odgovor.
Med pripravo lahko uporablja poljubno literaturo in je lahko kjerkoli. Nato dobi zastavljeni dve vprašanji od teh štirih.
Pri
odgovarjanju ne sme uporabljati nobenih zapiskov, literature, ...
- Na primeru analiziraj časovno in prostorsko zahtevnost določenega algoritma.
- Ugotovi in primerjaj časovno in prostorsko zahtevnost
dveh algoritmov za izračun potence števila: z zaporednim množenjem in z
razpolavljanjem.
- Razloži vsaj dva algoritma za izračun maksimalne vsote
podzaporedja v zaporedju celih števil.
- Primerjaj časovni zahtevnosti algoritma za iskanje v
neurejenem zaporedju in z bisekcijo v urejenem zaporedju. Pokaži najboljši
in najslabši primer.
- Razloži in s primerom pokaži, zakaj je dobro
uporabljati stabilno metodo urejanja. Pokaži primer vsaj dveh nestabilnih in
dveh stabilnih metod urejanja.
- Opiši hitro urejanje: algoritem, časovna zahtevnost,
...
- Primerjaj vstavljanje, izbiranje in urejanje z mehurčki.
- Razloži algoritem za urejanje z vstavljanjem. Dokaži,
da deluje pravilno.
- Na praktičnem primeru pokaži, kako deluje hitro
urejanje in urejanje z zlivanjem.
- Napiši algoritem za urejanje z vstavljanjem in analiziraj njegovo časovno zahtevnost.
- Opiši urejanje z izbiranjem.
- Sestavi algoritem, ki poišče maksimalno dolžino čete
na datoteki.
- Na primeru pokaži, kako bi potekalo dvofazno naravno
zlivanje s petimi datotekami.
- Razloži postopek naravnega zlivanja.
- Razloži razliko med naravnim in navadnim zlivanjem.
- Opiši polifazno zlivanje.
- Na primeru določi, kako bi pri polifaznem zlivanju
razporedil čete na k datotek.
- Sestavi algoritem, ki zlije dve urejeni zaporedji
predstavljeni v linearnem kazalčnem seznamu. Pri tem ne prestavljaj
elementov.
- Sestavi algoritem, ki vstavi nov element na začetek
dvojno povezanega seznama, podanega s kazalcema na začetek in konec.
- Sestavi algoritem, ki na ustrezno mesto vstavi nov
element v urejeni linearni seznam.
- Sestavi algoritem, ki iz linearnega seznama, v katerem
hranimo cela števila, naredi dva seznama. V prvem so liha števila in v
drugem soda števila. Pri tem ne smeš narediti prelagati elementov!
- Sestavi algoritem, ki izračuna povprečno dolžino
besed, ki jih hranimo v enojno povezanem linearnem seznamu.
- Sestavi algoritem, ki vrne kazalec na element linearnega
seznama v katerem je najdaljša beseda.
- Sestavi algoritem, ki določi, katera sta zadnja
preostala elementa krožnega seznama, če izločamo vsak tretji element.
- Naštej nekaj podatkovnih struktur in na kratko opiši njihove osnovne značilnosti.
- Formalno opiši podatkovno strukturo sklad.
- Formalno opiši podatkovno strukturo vrsta.
- Formalno opiši podatkovno strukturo dvojiško drevo.
- S pomočjo osnovnih operacij nad vrsto in skladom obrni vrstni red elementov v skladu.
- Razloži, kako bi lahko vrsto predstavil s pomočjo
tabele in opiši osnoven algoritme.
- Sestavi algoritem, ki z osnovnimi operacijami nad vrsto
pove, kateri je n-ti element vrste (če obstaja).
- Imamo dve vrsti, v katerih so elementi urejeni naraščajoče.
Sestavi algoritem, ki s pomočjo osnovnih operacij nad vrsto sestavi novo
vrsto, kjer so elementi (iz prvih dveh vrst) urejeni prav tako naraščajoče.
- Imamo dva sklada, v katerih so elementi urejeni naraščajoče
(prvi element v skladu je najmanjši). Sestavi algoritem, ki s pomočjo
osnovnih operacij nad skladom sestavi nov sklad, kjer so elementi (iz prvih
dveh skladov) urejeni prav tako naraščajoče.
- Pregledi dvojiškega drevesa. Opiši in na praktičnem
primeru izvedi.
- Sestavi algoritem, s katerim iz premega in vmesnega vrstnega reda rekonstruiraš drevo.
- Sestavi algoritem, s katerim poiščeš element v dvojiškem iskalnem drevesu.
- Sestavi algoritem s katerim vstaviš nov element v dvojiško
iskalno drevo.
- Sestavi algoritem, s katerim ugotoviš višino dvojiškega drevesa. Uporabi le osnovne operacije nad drevesom.
- V dvojiškem drevesu hranimo cela števila. Sestavi
algoritem, s katerim izračunaš povprečno vrednost elementov v drevesu.
- Dano je dvojiško iskalno drevo. Izpiši elemente
urejeno.
- V dvojiškem drevesu hranimo cela števila. Naj bo vsota
poti lista enaka vsoti elementov, ki jih prehodimo od korena do lista.
Sestavi algoritem, ki ugotovi, če v danem drevesu obstaj list, ki ima vsoto
poti enako danemu številu.
- Sestavi algoritem, ki s pomočjo osnovnih operacij nad dv.
drevesom, dano dvojiško drevo prezrcali (t.j. zamenja vlogo levega in desnega
poddrevesa vsakega vozlišča).
- Sestavi algoritem, ki s pomočjo osnovnih operacij nad dv.
drevesom, ugotovi, če sta dve drevesi identični (imata enako strukturo in
hranita enake vrednosti)
- Sestavi algoritem, ki v iskalnem dvojiškem drevesu poišče
minimalni in maksimalni element.
- Sestavi algoritem, ki s pomočjo osnovnih operacij nad dv.
drevesom,v dvojiškem drevesu poišče minimalni in maksimalni element.
- Razloži, kaj je to kopica in sestavi algoritem, ki vstavi nov podatek v kopico.
- Sestavi kopico, če vse elemente poznaš vnaprej.
- Elementi so shranjeni v kopici.
Sestavi algoritem s katerim jih preložiš v tabelo tako, da so v tabeli
urejeni.
- Sestavi algoritem s katerim odstraniš vrhnji podatek iz kopice.
- Sestavi algoritem s katerim odstraniš poljubni podatek iz kopice.
- Razloži pojme: poln graf, usmerjen graf, pot, cikel,
stopnja vozlišča, stopnja grafa, izolirano vozlišče, povezan graf,
sosednji točki, razdalja med točkami.
- Opiši možne načine predstavitve grafa.
- Sestavi algoritem, s katerim bi pregledal povezan graf.
- Graf je predstavljen z matriko sosednosti. Sestavi algoritem, ki za vsako vozlišče ugotovi njegovo stopnjo.
- V povezanem grafu hranimo števila. Sestavi algoritem s
pomočjo katerega od vsakega števila odšteješ vrednost maksimalnega števila
v grafu.
- Vemo, da ima neusmerjen graf n vozlišč. Sestavi algoritem, s katerim ugotoviš, če je povezan.
- Razloži zakaj gre pri problemih barvanja grafa,
Eulerjeve poti, Hamiltonove poti.
- Nariši primer grafa s šestimi vozlišči in desetimi
povezavami. Sestavi vsaj tri predstavitve tega grafa.
- Dvodelni (bipartitni) graf je neusmerjen graf, v katerem
lahko množico vozlišč razdelimo v dve disjunktni množici (vsako vozlišče
je samo v eni množici) tako, da vozlišča znotraj vsake množice med seboj
niso povezana. Sestavi postopek, ki ugotovi, če je dani graf dvodelen ali ne.
- Dan je graf za katerega vemo, da je dvodelen. Sestavi
postopek, ki ugotovi, katere točke spadajo v prvo in katere v drugo množico.
- Opiši metodo deli in vladaj.
- Opiši, kako bi z metodo deli in vladaj poiskal k-ti največji element v tabeli števil.
- Razloži, kako z bisekcijo poiščeš element v urejeni tabeli števil.
- Naštej probleme, ki jih lahko rešiš s pomočjo metode deli in vladaj in opiši algoritem za enega od teh.
- Analiziraj časovno zahtevnost iskanja minimalnega elementa z
direktnim iskanjem (zaporedno primerjanje) in z metodo deli in vladaj.
- S pomočjo metode deli in vladaj sestavi algoritem, ki
poišče dve točki v ravnini, ki sta med sabo najmanj oddaljeni.
- Razloži zakaj gre pri problemu iskanja Vornoievega
diagrama in pri problemu iskanja konveksne ovojnice točk.
- Razloži osnovno idejo požrešne metode in navedi nekaj problemov, ki jih
rešujemo z njo.
- Problem enostavnega nahrbtnika.
- Na praktičnem primeru razloži, kako deluje Primov
in Kruskalov postopek.
- Razlike med Primovim in Kruskalovim postopkom, kdaj bi
lahko uporabili ta postopek?
- Naštej nekaj problemov, ki jih lahko
prevedemo na problem trgovskega potnika. Za vsakega sestavi neko konkretno
omrežje in opiši, kaj pomenijo vrednosti in kaj rešitev.
- Sestavi algoritem, s katerim določiš
spodnjo mejo za dolžino krožne poti v omrežju z nenegativnimi povezavami.
- Na praktičnem primeru razloži, kako poteka reševanje problema trgovskega potnika z metodo razveji in omeji.
- Problem trgovskega potnika.
- V hiši je n razdelilnih vtičnic. Predlagaj podatkovno
strukturo in algoritem s katerim bi določil, kako bi te vtičnice povezal med
sabo, da bi bila skupna dolžina kabla najmanjša. Od vsakega razdelilca lahko
potegneš kabel do drugega.
- V hiši je n sob. Med nekaterimi sobami so mačja in
pasja vrata, prehodna le v eno smer. Maček lahko hodi le skozi mačja in pes
le skozi pasja vrata. Kako bi ugotovil, če se maček in pes lahko srečata.
Predlagaj ustrezno podatkovno strukturo in algoritem.
- V zelo visoki stolpnici z n nadstropji je m dvigal. Za
vsako dvigalo veš, v katerem nadstropju se ustavi. Ugotovi, če je mogoče iz
poljubnega nadstropja priti v poljubno nadstropje. Na katerega od znanih
problemov lahko prevedeš ta problem.
- Za metodi deli in vladaj in sestopanje opiši vsaj en
problem (drugačen od tistih, ki so bili omenjeni na predavanjih), ki bi ga reševali
s to metodo in opiši, kako bi svoj problem prevedel na enega od znanih.
- Za metodi požrešna metoda in problem trgovskega potnika opiši
vsaj en problem (drugačen od tistih, ki so bili omenjeni na predavanjih), ki
bi ga reševali s to metodo in opiši, kako bi svoj problem prevedel na enega
od znanih.