» »

Kaj naj si zmislim za O(n^m)?

Kaj naj si zmislim za O(n^m)?

Arthur ::

alora, za seminarsko moram med drugim sprogramirat proceduro (iterativno in rekurzivno), ki ima časovno kompleksnost O(n^m), pa nimam pojma kaj bi si zmislil. omejitev je, da mora opravljat neko smiselno nalogo. bi lahko kdo kaj predlagal? ne preveč kompliciranega, ker nisem kak hud programer (smer Informatika pač :8) ). opis problema, psevdokoda, Java, kakorkoli...

tnx.

Sergio ::

Dzabe.

Mas drevo, ki ima n otrok ter m nadstropij. Skonstruirat drevo je O(n^m). Pa se rekurzija/iteracija ti ne bo povzrocala problemov.

Sej drevesa ste najbrz ze jemal?
Tako grem jaz, tako gre vsak, kdor čuti cilj v daljavi:
če usoda ustavi mu korak,
on se ji zoperstavi.

Arthur ::

ufff, smo ja, pri Heapsortu recimo. vseeno mi ni čisto jasno, kako naj bi to zgledal. lahko daš par vrstic psevdokode, da vidim kako naj bi to šlo?

Sergio ::

ok ...

mas "vejico v drevesu", ki ji bomo rekli "node". Iz vsake vejice veje n novih vejic. Drevo ima m nadstropij.

Primer binarnega drevesa je, ce si lahko predstavljas, hisa iz kart.

Torej. Imas Node, ki ima kot enega od parametrov Node[], kjer so njegovi otroci.

Potem si mors se izmislit ustrezen problem, pa je. Eden od problemov bi lahko bil de facto konstruiranje drevesa.

Podas stevilo sinov in stevilo stopenj.

V rekurziji skonstruiras 7 sinov korenu, in potem rekurzivno vsakemu sinu reces 'span new prodigies', nekje pa hranis, koliko globoko si ze prisel.

V iterativni verziji enakega algoritma pa operiras z gnezdenimi for stavki. Lahko si pa car, pa naredis stack, in na stack pushnes vsakega od elementov, za katerega moras narest sinove, vse skupaj pa ovijes v while zanko...

Upam da sem ti kaj pomaga. Good luck. :)
Tako grem jaz, tako gre vsak, kdor čuti cilj v daljavi:
če usoda ustavi mu korak,
on se ji zoperstavi.

Arthur ::

tnx, bom videl kaj bo ratalo. pol pa še main(), pa x drugih funkcij...

za par ur sem dober, hehe..

trs ::

Lahko napises program, ki najde kolko si je ena datoteka podobna z drugimi datotekami. Recimo da definiras da je block podatkov ki ga isces dolg najmanj 10 znakov ... lahko poskusas najt kje se X zaporednih znakov v nekem M bytov vhodnem fileu pojavlja v N drugih fileih. Primer:

Vhodna datoteka:
123
bla
helloworld

Datoteka 1:
if (a == fdlkfds) ... {
fksdjflsd
printf("helloworld\n")
dkslajdlasda
dsalklda

Datoteka 2:
blah blah ratatasalala
dasdashelloslsfksd
dsaldksa

Izhod bi lahko bil da se helloworld pojavi v Datoteki 1 na mestu tem in tem...

Sicer ne vem kako bi lahko naredil rekurzivno to stvar ;)

No, mogoce malo bolj zanimivo bi bilo iskat identicne kose slik(predpostavis da isces samo kvadratne dele slike) ... ali zvocnih datotek ...

lp,
trs

Arthur ::

primerjanje datotek (slik, mp3-jev) bi bilo precej bolj uporabno, kot pa gradnja drevesa, ki ne počne ničesar drugega razen kurjenja procesorja in pomnilnika.

ampak sem imel že z drevesom take psihe, da se raje ne spuščam v kaj težjega :D

trs ::

Ja, mogoce ni niti toliko zakomplicirano kot se zdi. Da poenostavis problem lahko reces da isces samo fixne bloke. Potem lepo gres datoteko po datoteko primerjat z izvorno datoteko in je ;) Lahko celo naredis recimo, da ti v vseh slikah, ki imajo iste kose kot izvorna slike, pobarvas s kako barvo, tako da zgleda fancy ;)

lp,
trs

Arthur ::

saj sem že končal drevo. še malo poročilo dodelam, pa bo.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Java metode;

Oddelek: Programiranje
354931 (4123) ragezor
»

algoritm za pot med dvema točkama

Oddelek: Programiranje
161688 (1381) detroit
»

Ne-rekurzivno iskanje po rekurzivni podatkovni strukturi

Oddelek: Programiranje
51132 (978) blaz_
»

Za programerske teoretike

Oddelek: Programiranje
478797 (5599) Jerry000
»

Fibonacci in čas računanja

Oddelek: Šola
81408 (1192) Pegaz

Več podobnih tem