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

problem dama
WWW:

Moja sarma
 
Započnite novu temu   Odgovorite na temu   printer-friendly view    Forum@DeGiorgi: Početna -> Kolegiji 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2
Prethodna tema :: Sljedeća tema  
Autor/ica Poruka
observer
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 26. 04. 2004. (18:28:26)
Postovi: (8)16
Sarma = la pohva - posuda
= 0 - 0

PostPostano: 15:11 uto, 9. 11. 2004    Naslov: problem dama Citirajte i odgovorite

čuveni problem dama glasi,kako raspodjeliti 8 dama na šahovskoj tabli da se one medjusobno ne napadaju.evo mojeg razmišljanja za tablu 4*4...
imamo dakle 4 retka i 4 stupca.postoje uvjeti koji moraju biti zadovoljeni.znači recimo dama je na a2 na a9 na a15 i na a8(jedno rješenje) i ne napadaju se...

a1 a2 a3 a4
a5 a6 a7 a8
a9 a10 a11 a12
a13 a14 a15 a16
to su pozicije od a1 do a 16 (4*4 tablica)
uvjeti su ,kad umjesto četiri dame na svaku od tih četiri pozicija stavljamo jedinicu a ostalo nule...dakle rješenje će sadržavati 4 jedinice rasporedjenje tako da vrijedi
za redove(samo jedna dama smije biti u svakom retku): ,suma u retku ne smije biti veća ili jednaka od 2
dakle(da je recimo dama i na a1 i na a4 to bi značilo da su dvije u )
(istom retku i suma bi bila 2,znači napadaju se)


a1+a2+a3+a4 mora biti jedan
a5+a6+a7+a8 mora biti jedan
a9+a10+a11+a12 mora biti jedan
a13+a14+a15+a16 mora biti jedan

za stupce vrijedi:
a1+a5+a9+a13 mora biti jedan
a2+a6+a10+a14 mora biti jedan
a3+a7+a11+a15 mora biti jedan
a4+a8+a12+a16 mora biti jedan

za dijagonale :

a5+a2
a9+a6+a3
a13+a10+a7+a4
a14+a11+a8
a15+a12
a3+a8 svaki uvjet mora biti jedan
a2+a7+a12 u slučaju da je dva ili više
a1+a6+a11+a16 to bi značilo da su barem
a5+a10+a15 dvije dame na istoj dijagonali
a9+a14


e sad treba kombinirati razmještaj dama,kako porazmještati 4 dame u tablicu(ili vektor od 16 mjesta)
da one zauzmu sve moguće pozicije i za svaku od pojedine mogućnosti (kad su sve 4 dame na tablici) provjeriti sve ove uvjete..da li je to dobro razmišljanje ima li drugih rješenja..problem sam započeo sa 4 dame a u stvarnosi se radi sa osam...princip bi bio isti samo bi bilo puno više uvjeta
... da li bi netko mogao napraviti algoritam za to...da li griješim negdje,može li jednostavnije....pozdrav observer!
čuveni problem dama glasi,kako raspodjeliti 8 dama na šahovskoj tabli da se one medjusobno ne napadaju.evo mojeg razmišljanja za tablu 4*4...
imamo dakle 4 retka i 4 stupca.postoje uvjeti koji moraju biti zadovoljeni.znači recimo dama je na a2 na a9 na a15 i na a8(jedno rješenje) i ne napadaju se...

a1 a2 a3 a4
a5 a6 a7 a8
a9 a10 a11 a12
a13 a14 a15 a16
to su pozicije od a1 do a 16 (4*4 tablica)
uvjeti su ,kad umjesto četiri dame na svaku od tih četiri pozicija stavljamo jedinicu a ostalo nule...dakle rješenje će sadržavati 4 jedinice rasporedjenje tako da vrijedi
za redove(samo jedna dama smije biti u svakom retku): ,suma u retku ne smije biti veća ili jednaka od 2
dakle(da je recimo dama i na a1 i na a4 to bi značilo da su dvije u )
(istom retku i suma bi bila 2,znači napadaju se)


a1+a2+a3+a4 mora biti jedan
a5+a6+a7+a8 mora biti jedan
a9+a10+a11+a12 mora biti jedan
a13+a14+a15+a16 mora biti jedan

za stupce vrijedi:
a1+a5+a9+a13 mora biti jedan
a2+a6+a10+a14 mora biti jedan
a3+a7+a11+a15 mora biti jedan
a4+a8+a12+a16 mora biti jedan

za dijagonale :

a5+a2
a9+a6+a3
a13+a10+a7+a4
a14+a11+a8
a15+a12
a3+a8 svaki uvjet mora biti jedan
a2+a7+a12 u slučaju da je dva ili više
a1+a6+a11+a16 to bi značilo da su barem
a5+a10+a15 dvije dame na istoj dijagonali
a9+a14


e sad treba kombinirati razmještaj dama,kako porazmještati 4 dame u tablicu(ili vektor od 16 mjesta)
da one zauzmu sve moguće pozicije i za svaku od pojedine mogućnosti (kad su sve 4 dame na tablici) provjeriti sve ove uvjete..da li je to dobro razmišljanje ima li drugih rješenja..problem sam započeo sa 4 dame a u stvarnosi se radi sa osam...princip bi bio isti samo bi bilo puno više uvjeta
... da li bi netko mogao napraviti algoritam za to...da li griješim negdje,može li jednostavnije....pozdrav observer!



_________________
U znanju je moć
[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail
veky
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 09. 12. 2002. (19:59:43)
Postovi: (5B0)16
Sarma = la pohva - posuda
22 = 24 - 2
Lokacija: negdje daleko...

PostPostano: 16:27 uto, 9. 11. 2004    Naslov: Re: problem dama Citirajte i odgovorite

[quote="observer"]za redove(samo jedna dama smije biti u svakom retku): ,suma u retku ne smije biti veća ili jednaka od 2[/quote]

Preciznije, mora biti točno jednaka 1 .

Za stupce isto.

[quote]za dijagonale :
a3+a8 svaki uvjet mora biti jedan
a2+a7+a12 u slučaju da je dva ili više
a1+a6+a11+a16 to bi značilo da su barem
a5+a10+a15 dvije dame na istoj dijagonali
[/quote]

Ne. Može biti i 0 . Štoviše, za neke dijagonale i mora biti, jer općenito imaš 2n-1 (tebi n=4 ili 8 ) dijagonalâ, a samo n damâ. Dakle, n-1 nulâ i n jedinicâ (duž svakog smjera dijagonale).

[quote]da one zauzmu sve moguće pozicije i za svaku od pojedine mogućnosti (kad su sve 4 dame na tablici) provjeriti sve ove uvjete..[/quote]

Prvo, provjeravanje svih tih uvjeta je puno lakše ako dodaješ jednu po jednu damu na ploču. Za svaku novu ( i-tu) koju dodaš
-stavljaš je u i-ti red
-stavljaš je na mjesto (stupac) koje u prethodnim redovima još nije iskorišteno
-provjeravaš za svaku od prethodno postavljenih dama ( j-tu, na mjestu dama[j] (taj stupac u j-tom retku) ), je li i-j=dama[i]-dama[j] (jesu li na istoj dijagonali jednog smjera), te je li i+j=dama[i]+dama[j] (jesu li na istoj dijagonali drugog smjera). ( not(uvjet1 or uvjet2) )

Drugo, vidiš da je prirodna struktura podataka zapravo jedno polje integera 1..n , indeksirano s 1..n (ili 0..n-1 , kako je prirodnije u Cu) - dama[i] je redni broj stupca u kojem je i-ta dama (u i-tom retku).

Treće, whole point je _ne_ generirati _sve_ rasporede - odustati na vrijeme, odnosno kad recimo šesta dama od njih 8 ne zadovoljava gornje uvjete (s prethodnih 5 ), sedmu i osmu uopće ne postavljaš. Tehnika koja ti ovdje treba zove se backtracking.

http://www.cs.auc.dk/~normark/eciu-recursion/html/recit-note-8q-solution.html
http://students.ceid.upatras.gr/~papagel/project/kef5_8.htm
observer (napisa):
za redove(samo jedna dama smije biti u svakom retku): ,suma u retku ne smije biti veća ili jednaka od 2


Preciznije, mora biti točno jednaka 1 .

Za stupce isto.

Citat:
za dijagonale :
a3+a8 svaki uvjet mora biti jedan
a2+a7+a12 u slučaju da je dva ili više
a1+a6+a11+a16 to bi značilo da su barem
a5+a10+a15 dvije dame na istoj dijagonali


Ne. Može biti i 0 . Štoviše, za neke dijagonale i mora biti, jer općenito imaš 2n-1 (tebi n=4 ili 8 ) dijagonalâ, a samo n damâ. Dakle, n-1 nulâ i n jedinicâ (duž svakog smjera dijagonale).

Citat:
da one zauzmu sve moguće pozicije i za svaku od pojedine mogućnosti (kad su sve 4 dame na tablici) provjeriti sve ove uvjete..


Prvo, provjeravanje svih tih uvjeta je puno lakše ako dodaješ jednu po jednu damu na ploču. Za svaku novu ( i-tu) koju dodaš
-stavljaš je u i-ti red
-stavljaš je na mjesto (stupac) koje u prethodnim redovima još nije iskorišteno
-provjeravaš za svaku od prethodno postavljenih dama ( j-tu, na mjestu dama[j] (taj stupac u j-tom retku) ), je li i-j=dama[i]-dama[j] (jesu li na istoj dijagonali jednog smjera), te je li i+j=dama[i]+dama[j] (jesu li na istoj dijagonali drugog smjera). ( not(uvjet1 or uvjet2) )

Drugo, vidiš da je prirodna struktura podataka zapravo jedno polje integera 1..n , indeksirano s 1..n (ili 0..n-1 , kako je prirodnije u Cu) - dama[i] je redni broj stupca u kojem je i-ta dama (u i-tom retku).

Treće, whole point je _ne_ generirati _sve_ rasporede - odustati na vrijeme, odnosno kad recimo šesta dama od njih 8 ne zadovoljava gornje uvjete (s prethodnih 5 ), sedmu i osmu uopće ne postavljaš. Tehnika koja ti ovdje treba zove se backtracking.

http://www.cs.auc.dk/~normark/eciu-recursion/html/recit-note-8q-solution.html
http://students.ceid.upatras.gr/~papagel/project/kef5_8.htm


[Vrh]
Korisnički profil Pošaljite privatnu poruku Pošaljite e-mail Posjetite Web stranice
Melkor
Forumaš(ica)
Forumaš(ica)


Pridružen/a: 07. 10. 2004. (18:48:00)
Postovi: (291)16
Spol: kućni ljubimac
Sarma = la pohva - posuda
140 = 152 - 12
Lokacija: Void

PostPostano: 21:10 uto, 9. 11. 2004    Naslov: Citirajte i odgovorite

Evo mojeg rješenja; zadatak se između ostalog pojavljuje i na http://train.usaco.org/ (toplo preporučam ako se želite natjecati u informatici, a i općenito ako želite naučiti rješavati zadatke s informatičkih olimpijada).

[url=http://web.studenti.math.hr/~fniksic/sources/c/dame.c]http://web.studenti.math.hr/~fniksic/sources/c/dame.c[/url]

Pozdrav
Evo mojeg rješenja; zadatak se između ostalog pojavljuje i na http://train.usaco.org/ (toplo preporučam ako se želite natjecati u informatici, a i općenito ako želite naučiti rješavati zadatke s informatičkih olimpijada).

http://web.studenti.math.hr/~fniksic/sources/c/dame.c

Pozdrav


[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 1. godine, preddiplomski studij Matematika -> Programiranje 1 i 2 Vremenska zona: GMT + 01:00.
Stranica 1 / 1.

 
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