[ StratOS @ 26.09.2002. 19:44 ] @
Probao sam da to uradim na papiru, ali nije islo.

Engleska verzija tog problema (original) se nalazi na :



http://www.angelfire.com/ma/BorisMacek/=%20=%20=/programming/12/



Evo malog prevoda :
Pocetna pozicija :



prvi je na redu crni ( kompjutor ).
I crni i bijeli treba da naprave najbolje poteze u svakom potezu.

Sve vrijednost i pozicije se kalkuliraju na kraju poteza.
Pazite na poteze kod kojih nije moguč sledeči potez ( pat polozaj ).

Crni (Comp) minimizira bodove od bijelog i obratno.

Funkcija vrijednosti polja je odvisna od 3 parametra :
f=f(M,S,A)

M (Mobility)
M=((broj svih mogucih nasih poteza)-(broj svih mogucih poteza suprotnika))*2


S (Structure)
To je vrijednost strateskog polozaja, a definirana kao :



GLEDAJ SLIKU :
Ako je tko otisao van iz unutrasnjeg 4x4 kvadrata vrednosti unutrasnjeg kvadrata se ponistavaju na 0.

S=((suma vrijednosti nasih polja)-(suma vrijednosti protivnika - comp))*3 (ako je tko otisao izvan unutrasnjeg 4x4 kvadrata))

A (Advantage)

Ukupna vrijednost polja = (M+S)*W1 + A*W2
W1 = exp(-nz) i W2 = 1-exp(-nz)
i n = broj svih figura na cijelom polju
i z = 0.035

Treba mi sequenca paraova najboljih poteza na obije strane ( kao string ).
Na primjer "d6e6" bi reprezentirao 2 najbolja poteza, treba mi prvih 12 poteza.
Ako imamo na izbor vise istih mogucnosti onda uzmemo onaj potez (A,x) kod koga su A slova i x brojevi, a uzmemo ono slovo koje prvo dolazi po abecedi, znaci prije c3 od d5 i f4 i tako dalje.


Moj algoritam je strasno (uzasno uzasno slowwwwww ...).
Napravio sam ga u VB, no nije tacan, ne znam gdje sam pogresio.

Mene upste ne zanima kako ste dosli do pravog rezultata, vec sam algoritam i rezultat.
Kakav pristup problemu mi priporucate ?

Sam sam nasao veliko programa sa slicnima algoritmima na webu, no ne znam gdje sam grijesim (moj program )

Svaka pomoc je dobrodosla !

poz. Boris

[Ovu poruku je menjao StratOS dana 27.09.2002. u 17:09 GMT]
[ mucky @ 27.09.2002. 11:15 ] @
Nisi napisao kako se sam potez odigrava? Pomeramo to dugme za jedno, dva polja? U kojim sve smerovima?
[ StratOS @ 27.09.2002. 14:51 ] @
Citat:

mucky
Nisi napisao kako se sam potez odigrava? Pomeramo to dugme za jedno, dva polja? U kojim sve smerovima?


Hm, pa mislim, da znas kako se igra Othello odnosno reversi.

Ako neznas evo linka http://www.rainfall.com/othello/rules/othellorules.asp

Ako hoces igrati http://www.rainfall.com/othello

Sto me zanima jest algoritam kako doci do najboljih mogucih poteza crnog i bjelog ( formule za vrijednosti polja imas napiasane ), sto veca vrijednost polja ( ukupna ) to bolji pozez ( najbolji ).

Ali pazi, pocetne pozicije i vrijednosti funkcija tu imaju poglavitnu vaznost, a ne koji drugi algoritam drugih programa !!!
[ sspasic @ 27.09.2002. 17:50 ] @
Mislim da programi za Othelo, kao i za neke druge logicke igre (npr. sah), koriste minimax algoritam sa alfa-beta potkresivanjem stabla (ili krace alfa-beta stablo za pretrazivanje).
Funkcija koju si dao je, cini mi se, funkcija za vrednovanje pozicije koju algoritam koristi.
[ StratOS @ 27.09.2002. 21:22 ] @
Da funkciju imas, a trebas pravu sequenciju za rjesenje.
Izgleda lako, no nije tako.

Neznam ni gdje grijesim u algoritmu izrade najboljih sequencija poteza.
[ leka @ 15.10.2002. 23:44 ] @
Momci, ja mislim da stvar nece biti mnogo komplikovana ako se prolazi kroz sve moguce poteze i trazi najbolji. Moze da se "odvoji" jedna ili vise niti za svaki moguci potez koji protivnik odigra koja ce da proracunava nas najbolji "potez-reakciju". Kad protivnik odigra samo vidimo sta je odgovarajuca nit "pronasla". Napravi se neki kriterijum prema kome je neki potez najbolji i to je to.

Mozda lupam, nije iskljuceno - vi se time bavite, pa procenite sami. Ja mislim da ovde nema toooliko puno kombinacija, tako da bi stvar trebalo da radi bez frke.
[ StratOS @ 23.10.2002. 18:34 ] @
Pa nisu te funkcije izrađene samo tako.
Ja ne želim "najbolji moguče poteze", nego poteze, koje slijede tom algoritmu.

Citat:

Treba mi sequenca paraova najboljih poteza na obije strane ( kao string ).
Na primjer "d6e6" bi reprezentirao 2 najbolja poteza, treba mi prvih 12 poteza.
Ako imamo na izbor vise istih mogucnosti onda uzmemo onaj potez (A,x) kod koga su A slova i x brojevi, a uzmemo ono slovo koje prvo dolazi po abecedi, znaci prije c3 od d5 i f4 i tako dalje.


A za algoritam sam pogledajte TOP temu!