Search
 
 
  Engleski
 
 
 
Open in this window (click to change)
Forum@DeGiorgi: Početna
Forum za podršku nastavi na PMF-MO
Login Registracija FAQ Smajlići Članstvo Pretražnik Forum@DeGiorgi: Početna

Rjesenja zadataka za vjezbu
WWW:
Idite na Prethodno  1, 2
Moja sarma
 
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 2. godine -> Strukture podataka i algoritmi
Prethodna tema :: Sljedeća tema  
Autor/ica Poruka
Atomised
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 04. 09. 2007. (15:33:59)
Postovi: (399)16
Sarma = la pohva - posuda
70 = 95 - 25
Lokacija: Exotica

PostPostano: 22:15 čet, 27. 12. 2012    Naslov: Citirajte i odgovorite

Ne slušam kolegij i nemam se baš vremena sad uživljavati u zadatak, ali čini mi se da ti treba nešto tipa...
[code:1]
MAX(1,1) = sir[1,1]
MAX(1,j) = MAX(1,j-1) + sir[1][j] za j != 1
MAX(i,1) = MAX(i-1,1) + sir[i][1] za i != 1
MAX(i,j) = max( MAX(i-1,j), MAX(i, j-1) ) za i, j != 1[/code:1]

U prijevodu, za miša koji je išao najboljim putem vrijedi...
Do (1,1) može doći samo na jedan način i na tom putu pojede sir[1,1] sira.
Ako je skroz gore, u prethodnom koraku je sigurno bio lijevo od tog mjesta.
Ako je skroz lijevo, u prethodnom koraku je sigurno bio iznad tog mjesta.
Ako je na nekom mjestu (i,j) koje nije ni skroz lijevo ni skroz gore, u prethodnom koraku je bio ili jedno mjesto iznad ili jedno mjesto lijevo, tj. bio je na onom od ta dva mjesta do kojeg postoji "bolji" put.
Ne slušam kolegij i nemam se baš vremena sad uživljavati u zadatak, ali čini mi se da ti treba nešto tipa...
Kod:

MAX(1,1) = sir[1,1]
MAX(1,j) = MAX(1,j-1) + sir[1][j] za j != 1
MAX(i,1) = MAX(i-1,1) + sir[i][1] za i != 1
MAX(i,j) = max( MAX(i-1,j), MAX(i, j-1) ) za i, j != 1


U prijevodu, za miša koji je išao najboljim putem vrijedi...
Do (1,1) može doći samo na jedan način i na tom putu pojede sir[1,1] sira.
Ako je skroz gore, u prethodnom koraku je sigurno bio lijevo od tog mjesta.
Ako je skroz lijevo, u prethodnom koraku je sigurno bio iznad tog mjesta.
Ako je na nekom mjestu (i,j) koje nije ni skroz lijevo ni skroz gore, u prethodnom koraku je bio ili jedno mjesto iznad ili jedno mjesto lijevo, tj. bio je na onom od ta dva mjesta do kojeg postoji "bolji" put.


[Vrh]
Korisnički profil Pošaljite privatnu poruku
kkarlo
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 19. 05. 2010. (08:43:59)
Postovi: (1B2)16
Spol: zombi
Sarma = la pohva - posuda
64 = 72 - 8

PostPostano: 23:13 čet, 27. 12. 2012    Naslov: Citirajte i odgovorite

[quote="Redeemer"]moze skica rjesenja za zadatke 9 i 10 (vjezbe za drugi kolokvij)

ovo za misa i sir ...

ako krene od (1,1)

onda slijedeci korak je ili (2,1) ili (1,2) ...
(m+1,n) ili (m,n+1)

kako uopce postaviti rekurziju da obilazi apsolutno sve moguce korake od (1,1) do (m,n) i onda izbaci onaj sa najvecim zbrojem?

koja je uopce ideja tog dinamickog programiranja?


jasno mi je za fibonaccijeve brojeve
[code:1]fib(1)=1
fib(2)=1
fib(n)=fib(n-2)+fib(n-1)[/code:1]

ovdje bi trebalo biti

[code:1]mis(1,1)=a
mis(1,2)=b
mis(1,3)=c
(...)

mis(m,n)=mis(m-1,n)+mis(m,n)
ili
mis(m,n)=mis(m,n-1)+mis(m,n)
dok ne dodje do (1,1)

obrnuto
i=1
mis(m,n)=mis(x,y) + mis(x+i,y)
ili
mis(m,n)=mis(x,y) + mis(x,y+i)
...while (x<=m) && (y<=n)[/code:1]


van sebe sam... please please help


hvala![/quote]

Također ne slušam kolegij, ali čini mi se da ide ovako:
Kriterij zaustavljanja je naravno kada miš dođe u točku (m,n) a ne kad dođe u (1,1)
ako je u točki (m,n) return(matrica(m,n));
ako je u točki (nešto<m, n) onda može ići samo dolje
ako je u točki (m,nešto<n) onda može ići samo desno
ako nije ništa od navedenog onda ide i desno i dolje.
Naravno sumiraš vrijednosti i uzimaš najveće.

Nest tipa ovoga bi trebalo radit:
int s=0;
if x==m && y==n return matrica[x][y];
else if x==m return(pozovi sa x+1, n);
else if y==n return(pozovi sa m,y+1);
else
{
int a=(pozovi sa x+1,n),b=(pozovi sa m,y+1);
s=s+max(a,b);
return s;
}


Koristeći dinamičko programiranje... Koliko se sjećam to bi bilo da upisuješ u novu globalnu matricu najbolje puteve, dakle ako si od 1,1 do 3,3 dosao i sakupio 20, a nakon toga isao drugim putem i sakupio 10, taj drugi put ne trebas vise razmatrat...tj. tu se već možeš zaustavit. Znači trebao bi kada dođeš u neku točku gledat koliko si sakupio sireva, te to zapisat na to mjesto, slijedeći put gledaš da li si drugim putem sakupio više, ako jesi nastavljaš, ako nisi prekidaš taj put....
Naravno, moguće da se misli na nešto sasvim drugo te da sam u krivu... Ovo ti je za prvu ruku, dok me netko ne ispravi! :D

A za pohlepu nisi pitao, pa neću ni pisat. Ionako smatram da je to najlakše za napisat, objasnit...štogod se traži...

I da ideja dinamičkog programiranja jest da se na uštrb memorije dobije na brzini izvođenja programa. Ja sam to najbolje shvatio na slijedećem primjeru:
recimo da radiš sa faktorijelama. Svaki put kad izračunaš neku faktorijelu spremiš je u polje na njezin indeks. Sad kad bi u nekom djelu programa trebao 20! ne bi morao sve isponova računati nego bi pogledao da li imaš već izračunato, ako imaš super, ako ne, pogledaš koji si zadnji izračunao pa računaš dalje... i naravno prije dođeš do svojeg broja sa manje operacija jer koristiš nešto što si već prije dobio.
Ili isto možeš gledat sa fibonačijevim brojevima... ako ti zatreba 101 fibonačijev broj pogledaš ako imaš već super,ako ne nastaviš od zadnja dva koja si izračunao.
To bi bili ti neki jednostavni primjeri... Nadam se da je pomoglo... i da je točno to što sam pisao.
:P
Redeemer (napisa):
moze skica rjesenja za zadatke 9 i 10 (vjezbe za drugi kolokvij)

ovo za misa i sir ...

ako krene od (1,1)

onda slijedeci korak je ili (2,1) ili (1,2) ...
(m+1,n) ili (m,n+1)

kako uopce postaviti rekurziju da obilazi apsolutno sve moguce korake od (1,1) do (m,n) i onda izbaci onaj sa najvecim zbrojem?

koja je uopce ideja tog dinamickog programiranja?


jasno mi je za fibonaccijeve brojeve
Kod:
fib(1)=1
fib(2)=1
fib(n)=fib(n-2)+fib(n-1)


ovdje bi trebalo biti

Kod:
mis(1,1)=a
mis(1,2)=b
mis(1,3)=c
(...)

mis(m,n)=mis(m-1,n)+mis(m,n)
ili
mis(m,n)=mis(m,n-1)+mis(m,n)
dok ne dodje do (1,1)

obrnuto
i=1
mis(m,n)=mis(x,y) + mis(x+i,y)
ili
mis(m,n)=mis(x,y) + mis(x,y+i)
...while (x<=m) && (y<=n)



van sebe sam... please please help


hvala!


Također ne slušam kolegij, ali čini mi se da ide ovako:
Kriterij zaustavljanja je naravno kada miš dođe u točku (m,n) a ne kad dođe u (1,1)
ako je u točki (m,n) return(matrica(m,n));
ako je u točki (nešto<m, n) onda može ići samo dolje
ako je u točki (m,nešto<n) onda može ići samo desno
ako nije ništa od navedenog onda ide i desno i dolje.
Naravno sumiraš vrijednosti i uzimaš najveće.

Nest tipa ovoga bi trebalo radit:
int s=0;
if x==m && y==n return matrica[x][y];
else if x==m return(pozovi sa x+1, n);
else if y==n return(pozovi sa m,y+1);
else
{
int a=(pozovi sa x+1,n),b=(pozovi sa m,y+1);
s=s+max(a,b);
return s;
}


Koristeći dinamičko programiranje... Koliko se sjećam to bi bilo da upisuješ u novu globalnu matricu najbolje puteve, dakle ako si od 1,1 do 3,3 dosao i sakupio 20, a nakon toga isao drugim putem i sakupio 10, taj drugi put ne trebas vise razmatrat...tj. tu se već možeš zaustavit. Znači trebao bi kada dođeš u neku točku gledat koliko si sakupio sireva, te to zapisat na to mjesto, slijedeći put gledaš da li si drugim putem sakupio više, ako jesi nastavljaš, ako nisi prekidaš taj put....
Naravno, moguće da se misli na nešto sasvim drugo te da sam u krivu... Ovo ti je za prvu ruku, dok me netko ne ispravi! Very Happy

A za pohlepu nisi pitao, pa neću ni pisat. Ionako smatram da je to najlakše za napisat, objasnit...štogod se traži...

I da ideja dinamičkog programiranja jest da se na uštrb memorije dobije na brzini izvođenja programa. Ja sam to najbolje shvatio na slijedećem primjeru:
recimo da radiš sa faktorijelama. Svaki put kad izračunaš neku faktorijelu spremiš je u polje na njezin indeks. Sad kad bi u nekom djelu programa trebao 20! ne bi morao sve isponova računati nego bi pogledao da li imaš već izračunato, ako imaš super, ako ne, pogledaš koji si zadnji izračunao pa računaš dalje... i naravno prije dođeš do svojeg broja sa manje operacija jer koristiš nešto što si već prije dobio.
Ili isto možeš gledat sa fibonačijevim brojevima... ako ti zatreba 101 fibonačijev broj pogledaš ako imaš već super,ako ne nastaviš od zadnja dva koja si izračunao.
To bi bili ti neki jednostavni primjeri... Nadam se da je pomoglo... i da je točno to što sam pisao.
Razz


[Vrh]
Korisnički profil Pošaljite privatnu poruku
Redeemer
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 12. 06. 2006. (21:57:04)
Postovi: (B9)16
Spol: muško
Sarma = la pohva - posuda
-11 = 31 - 42
Lokacija: Wo'liegt'dieses'verdammte'dorf

PostPostano: 11:38 ned, 30. 12. 2012    Naslov: Citirajte i odgovorite

cijelo vrijeme razmisljam o ovom zadatku, tj ne mogu dokuciti kako napraviti sve moguce obilaske..

nekak sam dosao na ideju da bi trebalo napraviti "binarno stablo"

R-desno
D-dolje

start
/\
R D
/\/\
RDRD
...

ili

start
/\
01
/\/\
0101
....

jasno mi da je rekurzija u pitanju ali ne mogu ju osmisliti,
hint please :)
cijelo vrijeme razmisljam o ovom zadatku, tj ne mogu dokuciti kako napraviti sve moguce obilaske..

nekak sam dosao na ideju da bi trebalo napraviti "binarno stablo"

R-desno
D-dolje

start
/\
R D
/\/\
RDRD
...

ili

start
/\
01
/\/\
0101
....

jasno mi da je rekurzija u pitanju ali ne mogu ju osmisliti,
hint please Smile



_________________
Nigdje ne piše da morate studirati ovdje.
[Vrh]
Korisnički profil Pošaljite privatnu poruku
linus
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 20. 11. 2011. (16:59:13)
Postovi: (46)16
Sarma = la pohva - posuda
= 2 - 2
Lokacija: subnet mask

PostPostano: 19:30 čet, 31. 1. 2013    Naslov: Citirajte i odgovorite

zanima me jedna stvar: cesto za razne ATPove pise da je implementacija [tex]EMPTY()[/tex] odnosno [tex]MAKE\_NULL()[/tex] trivijalna, npr preko vezane liste ili stabla jer se svodi na pridruzivanje NULL pointeru pa je slozenost [tex]O(1)[/tex]. Pa zar ne bi trebali osloboditi memoriju za svaki element iz vezane liste, sto slozenost cini [tex]O(n)[/tex] jer se mora pristupiti svakom elementu da se dealocira memorija?
zanima me jedna stvar: cesto za razne ATPove pise da je implementacija [tex]EMPTY()[/tex] odnosno [tex]MAKE\_NULL()[/tex] trivijalna, npr preko vezane liste ili stabla jer se svodi na pridruzivanje NULL pointeru pa je slozenost [tex]O(1)[/tex]. Pa zar ne bi trebali osloboditi memoriju za svaki element iz vezane liste, sto slozenost cini [tex]O(n)[/tex] jer se mora pristupiti svakom elementu da se dealocira memorija?



_________________
Eat all the grass

Eat all the grass that you want
Accidents happen in the dawn
[Vrh]
Korisnički profil Pošaljite privatnu poruku
kslaven
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 17. 10. 2010. (18:07:06)
Postovi: (52)16
Spol: muško
Sarma = la pohva - posuda
33 = 36 - 3

PostPostano: 13:24 sri, 13. 11. 2013    Naslov: Citirajte i odgovorite

Stavio sam vam na web stranicu kolegija rješenja nekih zadataka za vježbu, koje je riješio viši asistent Bujanović.

[url]http://web.math.pmf.unizg.hr/nastava/spa/files/zadaci_za_vjezbu_kolokvij1_rjesenja.pdf[/url]
Stavio sam vam na web stranicu kolegija rješenja nekih zadataka za vježbu, koje je riješio viši asistent Bujanović.

http://web.math.pmf.unizg.hr/nastava/spa/files/zadaci_za_vjezbu_kolokvij1_rjesenja.pdf


[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
BlameGame
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 14. 09. 2011. (19:17:53)
Postovi: (6C)16
Sarma = la pohva - posuda
= 4 - 3

PostPostano: 21:50 sri, 13. 11. 2013    Naslov: Citirajte i odgovorite

http://web.math.pmf.unizg.hr/nastava/spa/files/zadaci_za_vjezbu_kolokvij1.pdf

Ja bi molila nekog da mi netko u dvije recenice objasni:

1.zad Ako pise: Pretpostavite da pozicije svih elemenata liste nakon poziva funkcije LiDelete( ) ostaju oˇcuvane (osim
naravno onog elementa kojeg briˇsemo). da li to znaci da ako smo obrisali neki element na njegovom mjestu ostaje supljina ili kako je definirana funkcija u skripti to se popuni nakon koristenja funkcije?

2.zad
Ako ja ista dobro shvacam ne trebam se opredijeliti ni za polje ni za strukture, kako da onda uopce definiran to sve, da li da od elementtype napravim struct u koji to sve stavim a onda njega promatram kao klijetku neovisno da li kasnije ide jos u struct ili u polje?
http://web.math.pmf.unizg.hr/nastava/spa/files/zadaci_za_vjezbu_kolokvij1.pdf

Ja bi molila nekog da mi netko u dvije recenice objasni:

1.zad Ako pise: Pretpostavite da pozicije svih elemenata liste nakon poziva funkcije LiDelete( ) ostaju oˇcuvane (osim
naravno onog elementa kojeg briˇsemo). da li to znaci da ako smo obrisali neki element na njegovom mjestu ostaje supljina ili kako je definirana funkcija u skripti to se popuni nakon koristenja funkcije?

2.zad
Ako ja ista dobro shvacam ne trebam se opredijeliti ni za polje ni za strukture, kako da onda uopce definiran to sve, da li da od elementtype napravim struct u koji to sve stavim a onda njega promatram kao klijetku neovisno da li kasnije ide jos u struct ili u polje?


[Vrh]
Korisnički profil Pošaljite privatnu poruku
kslaven
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 17. 10. 2010. (18:07:06)
Postovi: (52)16
Spol: muško
Sarma = la pohva - posuda
33 = 36 - 3

PostPostano: 3:46 čet, 14. 11. 2013    Naslov: Citirajte i odgovorite

1.zad. Svaki element liste ima svoju poziciju. Nakon što provedem LiDelete, svi elementi imaju i dalje iste pozicije, osim onog elementa kojeg sam obrisao. Znači, na njegovom mjestu "ostaje šupljina". Nemaju sve implementacije iz skripte to svojstvo, ali u rješenju koristite funkcije iz ATP-a List i pretpostavljate da su one implementirane tako da imaju to svojstvo.

2.zad. Upravo tako: elementtype će biti struktura koja sadrži identifikator procesa, vlasnika procesa itd. U rješenju zadatka koristite f-je iz ATP-a List i rješenje bi trebalo biti neovisno o njihovoj implementaciji.
1.zad. Svaki element liste ima svoju poziciju. Nakon što provedem LiDelete, svi elementi imaju i dalje iste pozicije, osim onog elementa kojeg sam obrisao. Znači, na njegovom mjestu "ostaje šupljina". Nemaju sve implementacije iz skripte to svojstvo, ali u rješenju koristite funkcije iz ATP-a List i pretpostavljate da su one implementirane tako da imaju to svojstvo.

2.zad. Upravo tako: elementtype će biti struktura koja sadrži identifikator procesa, vlasnika procesa itd. U rješenju zadatka koristite f-je iz ATP-a List i rješenje bi trebalo biti neovisno o njihovoj implementaciji.


[Vrh]
Korisnički profil Pošaljite privatnu poruku Posjetite Web stranice
Prethodni postovi:   
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 2. godine -> Strukture podataka i algoritmi Vremenska zona: GMT + 01:00.
Idite na Prethodno  1, 2
Stranica 2 / 2.

 
Forum(o)Bir:  
Ne možete otvarati nove teme.
Ne možete odgovarati na postove.
Ne možete uređivati Vaše postove.
Ne možete izbrisati Vaše postove.
Ne možete glasovati u anketama.
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2002 phpBB Group
Theme created by Vjacheslav Trushkin
HR (Cro) by Ančica Sečan