Vse o Računalništvu 1 (2021/22)

Odgovori na vprašanja s predstavitev Kratkih vprašanj 2. del

Odgovori na vprašanja s predstavitev Kratkih vprašanj 2. del

od Matija Lokar -
Število odgovorov: 21


Ker je tema   Odgovori na vprašanja s predstavitev Kratkih vprašanj že zelo "polna" in dolga, predlagam, da sedaj stvari (torej odgovore na nova vprašanja iz SN objavljate tukaj, pri tej temi  ...

V odgovor na Matija Lokar

Kogovšek: Preverjanje ali sta dva izraza z oklepaji enaka

od Petra Kogovšek -

Problem: Primerjati izraza in preveriti ali predstavljata isti izraz.

V odgovor na Petra Kogovšek

kakšna je časovna zahtevnost predstavljenega algoritma?

od Petra Kogovšek -
Časovna zahtevnost predstavljenega algoritma je O(n), kjer n predstavlja dolžino najdaljšega začetnega izraza, se pravi n = max(len(izraz1), len(izraz2)).
V odgovor na Petra Kogovšek

kaj storimo, če imamo več zaporednih oklepajev?

od Petra Kogovšek -

Če je znak, ki ga pregledujemo oklepaj in je naslednji znak prav tako oklepaj, v tabelo s predznaki dodamo zadnji element tabele (to v primeru, da je pred prvim oklepajem - ali pa +).

V odgovor na Petra Kogovšek

če sem prav zasledila smo na začetku predpostavli potem da se vsaka črka pojavi enkrat? v nasprotnem primeru bi morali pogledati tudi število pojavitev določene črke?

od Petra Kogovšek -

Naloga predpostavlja, da se vsaka črka pojavi samo enkrat. Ja morali bi pregledovati število pojavitev vsake črke tako z znakom plus, kot minus – to seveda le za tisti izraz, ki ga nato zapišemo v obliki slovarja (npr. za izraz = '-b+b' bi potem slovar izgledal takole slovar = {'b' : {'+': 1, '-': 1}}).


V odgovor na Petra Kogovšek

na kak način si zapomnimo da smo v oklepaju? kako to naredimo imamo ugnezden oklepaj?

od Petra Kogovšek -

V oklepaju smo, če dolžina tabele ni enaka 0. Če je pred ugnezdenim oklepajem predznak, ga vstavimo v tabelo. Če pa je pred njem oklepaj pa v tabelo ponovno vstavimo zadnji element tabele.

V odgovor na Petra Kogovšek

zakaj je potrebno elemente shranjevati v slovar?

od Petra Kogovšek -

Zaradi preverjanja enakosti izrazov saj je lahko vrstni red črk v izrazih različen, kar ne bi bilo ugodno za primerjanje dveh skladov med seboj.

V odgovor na Matija Lokar

Lilija: Iskanje naslednika v IDD

od Jure Lilija -

Problem: Danemu vozlišču je treba poiskati naslednika v IDD

V odgovor na Jure Lilija

časovna zahtevnost v najboljšem/najslabšem primeru?

od Jure Lilija -

V najslabšem primeru je O(n), ko imamo izrojeno drevo. V najboljšem primeru pa O(1) takrat, ko gledamo koren drevesa, ki pa nima desnega poddrevesa ali pa je njegovo desno poddrevo samo njegov desni sin. Prav tako, če iščemo naslednika levega sina korena, ki nima desnega poddrevesa.


V odgovor na Jure Lilija

kako si prišel do časovne odvisnosti o(logn)

od Jure Lilija -

Časovna zahtevnost uravnoteženega dvojiškega iskalnega drevesa je O(logn) saj v vsakem koraku izgubimo polovico možnosti.


V odgovor na Jure Lilija

kakšna je razlika med obema predstavljenima algoritmoma?

od Jure Lilija -

Sam način iskanja je enak, samo da pri enemu rekurzivno kličemo poddrevesa, ko iščemo iskano vozlišče. Prav tako je prostorska zahtevnost večja zaradi rekurzivnih klicov.


V odgovor na Jure Lilija

kakšna je povezava med algoritmom in vmesnim pregledom? v naslovu je bil omenjen vmesni pregled...

od Jure Lilija -

Iskali smo naslednika glede na vmesni pregled. Torej ko algoritem najde iskani element, moramo mi vrniti isti element, kot bi bil naslednji na vrsti glede na vmesni pregled.

V odgovor na Jure Lilija

bi se dalo algoritem nekoliko spremeniti, da bi iskali prednika?

od Jure Lilija -

Narediti bi morali nov algoritem, ki bi pa bil dokaj podoben našemu. Če pogledamo iterativno verzijo, bi iskanje elementa potekalo enako kot pri nasledniku, edina razlika bi bila, da si kot možnega prednika označimo tisti koren, ki je manjši od iskanega elementa. Potem pa ko bi našli iskan element bi najprej preverili, če ima naše vozlišče levo poddrevo. Če ga ima bi vrnili največji element v levem poddrevesu, torej premikali bi se desno po poddrevesu dokler bi se lahko in tako dobili prednika. Če pa nima levega poddrevesa, bi pa vrnili zadnji element, ki smo si ga shranili kot prednika. Če pa nima ne enega ne drugega pa vemo, da naš element nima prednika.


V odgovor na Jure Lilija

kakšna je prednost katerega izmed algoritmov?

od Jure Lilija -

Rekurzivni algoritem ima večjo prostorsko zahtevnost, saj daje rekurzivne klice v sklade. Časovno zahtevnost pa imata enako.


V odgovor na Jure Lilija

kaj če števila ni v drevesu?

od Jure Lilija -

Problem predvideva, da če števila ni v drevesu, vrnemo kot naslednika naslednje večje število od iskanega.