Newsgroup: it.hobby.enigmi
Titolo: Re: la tavoletta di cioccolato

 Ciao, Silv:o)
 
Mi sembra di aver capito che:
A può scegliere di mangiarsi una riga o due (obligatoriamente due)
colonne, B una colonna o due (obligatoriamente due) righe,
obligatoriamente due a meno che ne resti solo una.
 
Allora A vince per 1x1, 2x1, Nx1, 2x1, 2x2, 2xN, 3x4, ...
B vince per 3x2, 3x3, ...
Gia' sulla scacchiera 8x8 mi sembra interessante.
Mi ricorda l'Anno scorso a Marienbad di Alain Resnais!
http://www.youtube.com/watch?v=Qd3UReES_QI
 
 
Ciao
Livio
 
PS. Oh, ci penso neh, ma non prometto :-)
 
 
 

 volta.
 
Con riserva di verifiche...
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
 
Direi che A vince con tutte le tavolette TRANNE quelle nella forma (righe, 
colonne):
 
3k, 3j e
3k+2, 3j
 
ad ogni mossa, A deve cercare di lasciare a B una tavoletta con 3k righe o 
3k colonne o 3k+2 colonne.
 
Ora bisognerebbe avere il tempo per vedere se effettivamente le cose stanno 
così...
 
Ciao
 
Giorgio
 
 
 

 PS. Oh, ci penso neh, ma non prometto :-)
 
e su!
 
-- 
Ciao, Silv:o)

 3k+2, 3j
 
Prima rettifica: A perde anche nel caso 3k+2, 3j+2.
 
Ciao
 
Giorgio
 

"Giorgio Vecchi"  wrote in message 
news:51373dea$0$40354$4faf...@reader1.news.tin.it...
 
Ricominciamo. L'analisi non è semplice, perché verso il finale la strategia 
cambia ed entrambi i giocatori devono cercare di lasciare l'avversario con 
due colonne (se l'avversario è B) o due righe (se l'avversario è A), perché 
in questi casi l'avversario perde.
 
Ma fintanto che ci sono più di 4 righe e 4 colonne, la strategia è un'altra.
 
E' facile vedere che perde chi si ritrova con una tavoletta "quadrata", 
intendo una tavoletta del tipo 3k, 3j o 3k+1, 3j+1 o 3k+2, 3j+2. Quindi se A 
parte in una di queste situazioni perde. Per qualunque mossa di A, B ha una 
contromossa corrispondente che riporta A in una delle dette situazioni, fino 
ad arrivare eventualmente alla fine con la tavoletta 3,3, che è perdente per 
chi deve fare la mossa.
 
Le partenze 3k, 3j+2 o 3k+1, 3j o 3k+2, 3j+1 sono vincenti per A, perché in 
una mossa mette B in una delle situazioni "quadrate" precedenti.
 
Rimangono gli ultimi 3 casi. Di questi:
 
3k+2, 3j è perdente per A.
 
Mentre le altre 2 (3k, 3j+1; 3k+1, 3j+2) sono vincenti. A deve muovere 
cercando di mantenere le colonne di B a un valore 3k+2.
 
Sarà così?
 
Ciao
 
Giorgio
 

 B vince i 5 casi simmetrici, non necessariamente disgiunti.
Intendo dire che B "vincerebbe" i casi simmetrici, se cominciasse lui.
In quattro casi, per esempio (1)(0), chi comincia vince;
nei tre casi sulla diagonale chi comincia perde;
(1)(2) vince A sia di mano che di rimessa, (2)(1) sempre B.
 
-- 
Ciao, Silv:o)

 (1)(0), (2)(1) mangiandosi due colonne e (0)(2) scegliendo.
 
...in realtà le configurazioni distinte dalle quali A raggiunge (i)(i) in
una mossa sono solo 3 perché i due schemi (i+1)(i) e (i)(i+2) coincidono :(
 
Le  altre due configurazioni vincenti sono (1)(2) e (0)(1), ottenute
aggiungendo una riga o due colonne alla (0)(2), che è una tavoletta
perdente per B: se mangia una colonna A ne mangia altre due e prima o poi
ne mancheranno esattamente 2, se mangia due righe A ne mangia una terza, e
prima o poi finiscono.
 
Rimane (2)(0) che per simmetria con la (0)(2) è perdente per A.
 
-- 
Ciao, Silv:o)

 .
 
Bello il problema! Non ero più abituato ad affrontare problemi del genere 
(come ai bei tempi) e ho dovuto carburare un po' (anche l'età ha il suo 
peso...), però alla fine mi ha dato soddisfazione. Adesso mi viene voglia di 
scrivere un programmino contro cui giocare, però che non implementi questa 
logica, ma che lavori di sola forza bruta (credo che con tavolette non 
enormi - peraltro inutili da considerare - dovrebbe farcela in tempi più che 
accettabili). Così, giusto per riaffermare che, spesso, forza bruta e logica 
portano agli stessi identici risultati... ;-)
 
Alla prossima.
 
Ciao Silvio!
 
Giorgio
 

 portano agli stessi identici risultati... ;-)
 
Giorgio, come al solito dipende da come fai il programma di
bruteforce.
A me la maggior parte delle volte succede che al secondo ciclo for
annidato ci butto li un controllino pota-albero, all prima chiamata
ricorsiva comincio a fare manipolazioni sui parametri tipo in questo
caso caso passare i residui, and so on. Col risultato che la force non
è poi così brute.
A meno che non sia davvero roba di qualche ciclo annidato, e allora mi
sforzo di non usare tricks.
 
Io adoro avere visualizzazioni grafiche dei problemi, questo lo potevo
proporre in molti modi (la versione che mi ha ispirato era con una
pedina che si muove su un lattice e vince chi esce dal primo
quadrante), ma la tavoletta con i cioccoblocchi 3x3 mi piaceva.
Per esempio, si vede bene che la tavoletta perfetta la vince il
secondo giocatore:
 
._ _ _._ _ _._ _ _._ _ _.
|     |     |     |     |
|     |     |     |     |
|_ _ _|_ _ _|_ _ _|_ _ _|
|     |     |     |     |
|     |     |     |     |
|_ _ _|_ _ _|_ _ _|_ _ _|
|     |     |     |     |
|     |     |     |     |
|_ _ _|_ _ _|_ _ _|_ _ _|
 
semplicemante utilizzando sempre i tagli dei cioccoblocchi.
 
queste le vince A se gioca per secondo, sempre completantdo i
cioccoblocchi (si mangia da sinistra e dall'alto)
._ _ _ _ _ _ _ _ _ _ _ _ _ _
|     |     |     |     |
|     |     |     |     |
|_ _ _|_ _ _|_ _ _|_ _ _|_ _
|     |     |     |     |
|     |     |     |     |
|_ _ _|_ _ _|_ _ _|_ _ _|_ _
|     |     |     |     |
|     |     |     |     |
|_ _ _|_ _ _|_ _ _|_ _ _|_ _
 
alla fine si arriva a
 
._ _
|
|
|_ _
 
Partendo dalle precedenti, anche queste le vince A giocando per
secondo
 
|     |     |     |     |
|_ _ _|_ _ _|_ _ _|_ _ _|_ _
|     |     |     |     |
|     |     |     |     |
|_ _ _|_ _ _|_ _ _|_ _ _|_ _
|     |     |     |     |
|     |     |     |     |
|_ _ _|_ _ _|_ _ _|_ _ _|_ _
|     |     |     |     |
|     |     |     |     |
|_ _ _|_ _ _|_ _ _|_ _ _|_ _
 
perchè B può solo mangiare una colonna (se mangia le due righe, B
mangia le due colonne residue di destra e raggiunge una tavoletta
perfetta)
A allora si mangia altre due colonne, ma prima o poi finiscono:
 
|
|_ _
|
|
|_ _
|
|
|_ _
|
|
|_ _
 
Stessa cosa per l'ultimo schema con una riga e colonna residua
 
|_ _ _|_ _ _|_ _ _|_ _ _|_
|     |     |     |     |
|     |     |     |     |
|_ _ _|_ _ _|_ _ _|_ _ _|_
|     |     |     |     |
|     |     |     |     |
|_ _ _|_ _ _|_ _ _|_ _ _|_
|     |     |     |     |
|     |     |     |     |
|_ _ _|_ _ _|_ _ _|_ _ _|_
 
B deve mangiare due righe per evitare la tavoletta perfetta, A si
mangia due colonne, portandosi nel caso precedente
 
|     |     |     |
|_ _ _|_ _ _|_ _ _|_ _
|     |     |     |
|     |     |     |
|_ _ _|_ _ _|_ _ _|_ _
|     |     |     |
|     |     |     |
|_ _ _|_ _ _|_ _ _|_ _
 
Se ai quattro casi precedenti aggiungiamo una riga o due colonne
troviamo le 5 distinte tavolette vincenti per A
 
--
Ciao, Silv:o)

 wrote:

Negli anni '70 ebbi a disposizione alcuni tra i primi computer da
tavolo (Wang e HP) e, per imparare ad usarli :-) implementai un
programma che giocava a L'anno scorso a Marienbad e che "imparava a
giocare giocando". Era ispirato ad una famosa (credo, vado a memoria
ed e' passato tanto tempo) macchina a scatole di fiammiferi di Martin
Gardner.
 
Provo a descrivertelo, perche' mi sembra che questo gioco sarebbe
ancora piu' adatto.
 
Occorre definire un registro per ogni situazione possibile durante il
gioco. In questo caso e' semplice perche' ogni situazione possibile in
una scacchiera NxM e' costituita da ogni scacchiera minore. All'inizio
il programma gioca ogni mossa a caso, e qua e' facile perche' ad ogni
mossa hai solo una scelta. Alla fine della partita, se e' stata vinta
vengono premiate tutte le mosse fatte, se e' stata persa vengono
punite tutte. Il premio/punizione avviene semplicemente spostando un
po' la soglia della decisione casuale in ciascun registro.
 
Ti stupirai di tante cose:
- che la macchina impari a giocare con un algoritmo cosi' banale.
- che due macchine ugualmente ignoranti imparino a giocare benissimo e
rapidamente da sole, fecendole giocare l'una contro l'altra.
 
Se hai voglia di provare e se ti serve una mano fammi un fischio.
 
Saluti ad entrambi (vado che mi aspetta il cubo :-) )
Livio
 
 

 bruteforce.
 
Nel frattempo, l'ho scritto. E' simpatico, i tempi sono quasi istantanei per 
tavolette < 15 di lato, per cui (per ora) non mi metto ad ottimizzarlo. 
Gioca bene, se c'� la possibilit� di vincere, vince. Giocandoci, ho visto 
(non era difficile rendersene conto anche analizzandolo, ma cos� � stato pi� 
facile) che se ad A capita la situazione "quadrata", B pu� giocare a 
casaccio e non perde in alcun modo (a parte il finale in cui bisogna essere 
sempre accorti). Mentre l'altro caso perdente per A, il 2,0, ha possibilit� 
di rimedio per A se B non gioca correttamente.
 
Ciao!
 
Giorgio
 

 rapidamente da sole, fecendole giocare l'una contro l'altra.
 
La cosa � interessante. Mi sembra che sia il principio alla base delle reti 
neurali (di cui per� non so tanto). Sicuramente un approccio ancor pi� 
inconsapevole del mio programma brute force. E molto probabilmente ci vorr� 
pochissimo tempo perch� impari a giocare bene, dato il numero limitato di 
casi da considerare.
 
Ci si pu� pensare...
 
Ciao Livio!
 
Giorgio
 

 Giorgio
 
Mmmm... pensavo... se la tavoletta avesse un perimetro non
rettangolare... nel reticolo quadrato, ma casuale... allora una
macchina potrebbe imparare prima di un umano?
 

 ha scritto nel messaggio 
news:51388b82$0$40361$4faf...@reader1.news.tin.it...

S�, � lo stesso concetto di "self-teaching" o di "reinforcement learning" 
gi� adottato negli anni 90 per alcuni software per giocare a scacchi (tipo 
"deep blu" che sfid� Kasparov a scacchi) di cui il pi� famoso � TD-Gammon 
per giocare a backgammon: 
http://en.wikipedia.org/wiki/TD-Gammon
 
Francesco
 
 

 rapidamente da sole, fecendole giocare l'una contro l'altra.
 
E Livio in piu' di una occasione - mentre impazzavano le dispute tra
forzabrutisti e analisti - ha usato 'sti accrocchi darwiniani con
esiti sorprendenti :)
 
--
Silv:o)

 Se hai voglia di provare e se ti serve una mano fammi un fischio.
 
OK, fatto.
Per ogni casella ho messo due registri nei quali memorizzo
direttamente un numero 0<x<1, da usare come soglia per il random.
Durante la partita mi segno mossa le coordinate, chi è di mano e cosa
ha scelto.
Alla fine della partita riesamino le mosse e modifico i registri: alzo
la soglia se uno ha scelto R e ha vinto o ha scelto C e ha perso, e
viceversa.
Converge abbastanza rapidamente, e si notano le percentuali del
vincitore tutte a 100% e quelle dello sconfitto che oscillano intorno
al 50%.
 
Ho usato una scatolina per casella, con già dentro la strategia.
In casi più complessi probabilmente bisogna usare come dici tu una
scatolina PER OGNI SCELTA, e forse non si riesce sempre a sintetizzare
l'esperienza in una strategia che la usi tutta e non la conservi per
le prossime scelte, ma occorre memorizzare l'esperienza in una
struttura più complessa dalla quale ricavare la strategia.
Diciamo due scatoline per casella, la scatolina della scelta R e
quella della scelta C. Quattro se consideriamo i due giocatori.
Se il gioco fosse simmetrico, probabilmente potremmo evitare la
distinzione tra i due giocatori, in fondo nessuno ci vieta di imparare
dagli errori dell'avversario!
E cosa ci mettiamo nelle scatoline? un fiammifero per ogni successo,
da togliere in caso di insuccesso?
Hmmm, non mi piace: sapere che una scelta è vincente 3 a 1 o 50 a 48
cambia, servono anche gli insuccessi (o i tentativi, è uguale).
 
Appena ho un po' di tempo la modifico, ogni casella otto registri, per
due scelte (R/C), due giocatori (A/B) e due statistiche (V/S). Si può
fare con meno registri?
 
In questo approccio, si possono usare i registri delle caselle di
arrivo o vuol dire imbrogliare?
Cioè, se decidiamo la strategia basandoci sia sulle nostre statistiche
per la casella corrente che sulle statistiche dell'avversario per le
caselle target, stiamo giocando a un altro gioco, vero?
 
Mah, per stasera basta così, direi.
--
Silv:o)


Non t'ho mica capito! :-)
Per ogni situazione X.Y, A puo' scegliere tra X.(Y-1) e (X-2).Y (e
simmetricamente B).
Il tutto mi sembra indipendente da quali caselle siano interessate.
(O stai gia' pensando alle tavolette dal contorno irregolare?)
 
Ciao
Livio
 


Intanto i termini: io ho chiamato imporpriamente caselle quelle che tu
chiami situazioni, che poi sono tavolette.
Chiamiamole situazioni. Per esempio [12x13] è una situazione.
Per ogni situazione dobbiamo memorizzare l'esperienza passata per
decidere una strategia. D'accordo fin qui?
Ora, per la [12x13] cosa memorizziamo? Io seguendo il tuo consiglio
inizialmente ci ho messo direttamente un numero tra 0 e 1 da
incrementare di 0.1 se ho scelto di mangiare una riga (R) ed ho vinto
la partita oppure ho scelto di mangiare due colonne (C) ed ho perso.
E' una sintesi del passato, ma non è il massimo. Intanto la incremento/
decremento in maniera arbitraria e discreta, e poi butta via
informazione. Ha il vantaggio che è immediatamente utilizzabile come
strategia, come probabilità di scegliere (R) la prossima volta.
 
Mi chiedevo, memorizzando più informazione si può fare meglio?
Per esempio registrare per ogni situazione, quante volte abbiamo
scelto R e quante C.
Non basta, dovremmo sapere quante volte abbiamo vinto (V) con quelle
scelte. E quante volte abbiamo perso (S).
Per cui ipotizzavo l'uso di 4 registri: VR,SR,VC,SC.
Per esempio, [12x13]={3,3,1,4} significa che mi sono trovato 11 volte
con una tavoletta 12x13, con 4 vittorie (3 con R e 1 con C) e 7
sconfitte (3 con R e 14 con C).
Si può togliere qualcosa? se memorizziamo solo le V/S che ci facciamo?
Niente. Sapere che abbiamo vinto 5 volte su 6 è inutile.
Se memorizziamo solo VR/SR? Sapendo che con R abbiamo vinto 3 su 6 mi
lascia indeciso, sapere che con C si vince solo 1 volta su 5 mi
aiuterebbe.
Insomma, se voglio una statistica utile, non credo si possano
utilizzare registri a meno di 4 dimensioni.
 
 
Invece la questione relativa all'utilizzo dell'esperienza
dell'avversario mi sembrava più interessante.
Mi chiedevo: queste macchinette devono imparare necessariamente solo
dalla loro esperienza, o possono imparare anche da quella
dell'avversario?
 
Quello che pensavo era: OK, da [12x13] finora ho vinto 3 volte su 6
giocando R.
E' utile/lecito andarsi a vedere le statistiche dell'avversario nella
posizione analoga (in questo caso la situazione "analoga" alla [12x13]
per B è la [13,12])?
E' utile/lecito fare del lookahead, ovvero andarsi a vedere le
statistiche dell'avversario sulle due caselle target [11x13] e
[12x10], o le proprie sulle simmetriche?
 
Ovvio che usare le statistiche dell'avversario ha un costo,
significherebbe dover includere un altro quadrivettore per ogni
situazione.
 
Sulla legittimità, pazienza!
Sull'utilità? Non lo so, mentre scrivo mi vengono in mente gli schemi
studiati ad elettronica della reazione negli amplificatori e non
capisco se il feedback è negativo/positivo o neutro.
 
Per esempio il lookahead sull'avversario credo sia neutro perchè già
considerato: sapere per esempio che un avversario ha il 100% di
vittorie in tutte e due le situazioni raggiungibili è inutile, basta
vedere i nostri "0" nei campi VR e VC.
Invece l'integrazione delle statistiche potrebbe addirittura essere
controproducente.
Più l'avversario è bravo, più veloce sarà l'apprendimento, e forse
usare anche le sue statistiche accelera ancor di più. Però un
avversario testaocroce già produce un apprendimento più lento, usare
le sue statistiche alla lunga danneggia perchè tenderanno ad essere
naturalmente sbilanciate sul fallimentare man mano che noi miglioriamo
le strategie.
Mah!
--
Silv:o)
 
 
 
 

 Si può togliere qualcosa?
 
Stavo per scrivere una formula per calcolare la strategia a partire
dalla quedrupla, e mi è venuta così:
(VR+SC)/(VR+SR+VC+SC)
Perchè, mi sono detto, le vittorie con R e le sconfitte con C mi
portano alle stesse valutazioni.
Se è vero, allora accorpo (VR+SC) e (VC+SR) e dimezzo la dimensione
del vettore statistics.
Se non è vero, datemi una funzione per la strategia migliore della mia
e che usi indipendentemente le 4 statistiche.
 
--
Ciao, Silv:o)
 

 strategia, come probabilità di scegliere (R) la prossima volta.
 
Fin qua coincide con la mia esperienza.
La percentuale con cui si varia la soglia e' importante si', ma non
troppo. Soltanto valori troppo grossolani possono generare delle
instabilita'.

Interessante, ma francamente mi entusiasma di piu' la semplicita'
dell'algoritmo iniziale che ricorda davvero, come accennavi anche tu,
criteri darwiniani.
 
Sulla liceita' di usare l'esperienza dell'avversario non avrei dubbi:
e' lecito tutto cio' che puo' essere osservato dal punto di vista
proprio. Pero' bisogna considerare che l'avversario puo' cambiare e
allora il discorso si complica.
 
Ricordo ancora che, se l'automa parte da una situazione perdente e se
l'avversario gioca benissimo, allora potrebbe non apprendere. Ricorda
un po' lo scoraggiamento e l'abbandono dell'allievo quando ha di
fronte un maestro troppo bravo. :-)
 
Ciao
Livio
 
PS. Perche' non mi avete mai insegnato questa mossa? :-)
E' velocissima. Da che l'ho scovata, cerco sempre di ricondurmi in
situazioni dove posso usarla.
http://oi49.tinypic.com/ibgso7.jpg
 
 
 
 

 situazioni dove posso usarla.
http://oi49.tinypic.com/ibgso7.jpg
 
 
Dimmi che stai scherzando, per favore.
E' il caso base base base dell'F2L Fridrich!
La base delle basi, se non lo conoscevi vuol dire che non stai
studiando l'F2L Fridrich!
 
Tutti i tutorial sul Fridrich intuitivo (senza algoritmi da imparare a
memoria) partono allo stesso modo: i casi base con Angolo e Spigolo
sul terzo strato sono due, quello "a L" che hai messo nella figura e
si inserisce con la sequenza RUR' e quello con angolo e spigolo già
accoppiati, che si risolve con l'altro inserimento naturale RU'R'.
 
Al primo caso si riconducono tutti gli schemi con A e S sul terzo
livello che mostrano faccie di colore diverso, al secondo quelli con A
e S che mostrano lo stesso colore, poi ci sono i casi in cui l'angolo
mostra il bianco in alto.
 
Ma dove hai studiato???
 
--
Silv:o)


Io avevo imparato a fare la doppietta nel terzo strato, posizionarla e
poi inserirla. Adesso invece prima posiziono, poi faccio la doppietta
e la inserisco in un colpo solo. C'ho messo tre mesi ad arrivare qua,
c'ho messo! :-)
 
Ciao
Livio
 

 Livio
 
Livio, o ti decidi a seguire qualche tutorial, ma sul serio, o prendo
un aereo vengo a Torino e in mezza giornata ti faccio scendere sotto
al minuto.
 
--
Silv:o)

 criteri darwiniani.
 
Usando come soglia per R il rapporto tra casi favorevoli e casi totali
converge abbastanza rapidamente, ma non si ha mai la certezza di
vincere.
Per esempio, dopo 8600 partite B è ancora capace di perdere una
semplice [09x09]!
 
G R %3  C %3       cf su ct     cf/ct   scelta  rnd
-------------------------------------------------------------------
A 09(0) 09(0)   44158 su 86288 (0,5118) R       0,459357302384152
  08(2) 09(0)   22084 su 42102 (0,5253) R       0,369276764974593
A 06(0) 09(0)   10954 su 22089 (0,4959) C       0,947768347779181
  06(0) 07(1)   11350 su 35342 (0,3211) C       0,718808363526505
A 06(0) 06(0)   12222 su 24067 (0,5078) C       0,76756889501939
  06(0) 04(1)      60 su 12299 (0,0049) R       0,00173068745142347
A 04(1) 04(1)      10 su   115 (0,0870) C       0,119167104176789
  04(1) 02(2)      43 su    76 (0,5658) R       0,0348291546268524
A 02(2) 02(2)       1 su    44 (0,0227) C       0,157634507472457
 
VINCE A (A:103 B:86186)
 
B nonostante la statistica di soli 60 casi favorevoli su 12299, sul
06-04 ha ci ha riprovato (porello, ha pescato 0,00173) e ha perso.
Non è che fosse proprio scontato, sul 04-04 c'è mancato un pelo che A
gli restituisse il favore, ha pescato 0,12 scarso e la soglia era
0,08!
 
le statistiche del perdente tendono al 50%, quelle del vincente o al
100%.
Nei casi in cui si vince con entrambe le mosse, tipo sul 06-07, mi
aspettavo un 50% ma trovo questo 32%, boh.
Forse dovrebbe tendere a un numero notevole?
 
--
Silv:o)

 Forse dovrebbe tendere a un numero notevole?
 
Nei miei viaggi interplanetari ho scoperto che la temperatura corporea
dei simil-mammiferi evoluti tende a (Te-Tc)/e dove Te e' la
temperatura di ebollizione dell'H2O e Tc quella di congelamento, nelle
condizioni, ovviamente, di gravita' e pressione atmosferica di ogni
singolo pianeta. Ho spiegato la cosa ai biofisici terrestri, ma non mi
hanno preso molto sul serio.
 
Bel lavoro! :-)
Livio
 
 
 

Rimane (2)(0) che per simmetria con la (0)(2) č perdente per A.
 
Mi č rimasto difficile capire tutte queste casistiche, perciň mi sono
armato di brute force e ho analizzato tutte le possibili tavolette con
righe e colonne inferiori o uguali a 30.
 
Il programma in meno di un decimo di secondo scrive un file con la
mossa vincente per ogni giocatore e per ogni tavoletta.
 
Come avete determinato sono fondamentali i resti modulo 3 e nel caso
che la mossa sia al giocatore A la tabella seguente indica i casi in
cui puň vincere (1 vittoria, 0 perdita)
 
 % | 0  1  2
---|---------
 0 | 0  1  1
 1 | 1  0  1
 2 | 0  1  0
 
Questa tabella vale perň solo per tavolette con righe e colonne
entrambe superiori a 4.
Infatti, ad esempio, la tavoletta 4x4 che in termini di resti
corrisponde a (1)(1), in base alla tabella dovrebbe essere perdente
per A, invece A puň vincere togliendo due colonne.
 
Analoga tabella puň essere fatta (con le medesime limitazioni) nel
caso che sia B a giocare
 
 % | 0  1  2
---|---------
 0 | 0  1  0
 1 | 1  0  1
 2 | 1  1  0
 
 
Se interessano tutte le mosse vincenti per ogni tavoletta posso anche
postarle (sono 900 righe) o, se preferite, anche il programma in C.
 
Questo thread mi ha fatto tornare la nostalgia del vecchio ihe
 
-- 
Ciao, Dano 

 0,08!
 
E' proprio questo il punto. Ma conviene agire cos�? Mi sembra di capire che 
tu usi il rapporto di "bont�" di una mossa come probabilit� di giocare 
successivamente quella stessa mossa. Giusto? Ad esempio si potrebbe dire che 
se io ho stabilito che una moneta risulta truccata perch� fornisce testa il 
70% delle volte, allora decido a caso di puntare su testa il 70% delle 
giocate (e su croce il rimanente 30%). E perch� non giocare sempre testa? Se 
ha maggiori probabilit� di uscire, mi conviene giocare sempre testa. Nel 
caso giochi sempre testa vinco con probabilit� 0.7. Se gioco nell'altro modo 
vinco con probabilit� 0.7*.07+.03*.03 = 0.58.
 
Nel gioco del cioccolato � possibile che nelle fasi iniziali un giocatore 
faccia una mossa (che noi sappiamo essere sbagliata) ma che porta alla 
vittoria (perch� l'avversario � a sua volta alle prime armi e mi fa 
vincere). Con il mio metodo, la volta successiva io utilizzerei ancora 
quella mossa (� risultata vincente), ma probabilmente l'avversario (che nel 
frattempo ha progredito) vincer� e quindi la mia mossa perder� di valore, 
fino a diventare perdente e a quel punto non la giocher� pi�. Solo nel caso 
in cui l'avversario si impegni a farmi vincere sbagliando tutte le sue 
mosse, io non imparer� mai a giocare, ma questo � nella natura 
dell'insegnamento. E non penso che in questo caso cambi molto a usare il 
metodo probabilistico o il metodo s�/no.
 
E' cos�?
 
Ciao
 
Giorgio
 

 vinco con probabilit� 0.7*.07+.03*.03 = 0.58.
 
I punti sono andati un po' dove volevano loro... :-|
 
0.7*0.7+0.3*0.3 = 0.58
 
Ciao
 
Giorgio
 


 
Mi sembra che in questo caso sia inutile usare metodi genetici o
simili perch� il sistema � deterministico.
 
E' facile determinare con certezza se una tavoletta � vincente o
perdente per il giocatore che deve muovere.
Se la situazione � vincente basta fare la mossa corretta che porta
l'avversario in una situazione perdente
Se la situazione � perdente si fa una mossa a caso oppure una mossa
minima in termini di pezzi eliminati e sperare che l'avversario sbagli
la sua mossa e che ci consegni una situazione vincente; se
l'avversario non sbaglia mai possiamo terminare subito la partita.
 
Ho calcolato tutte le tavolette fino a 30x30 per entrambi i giocatori
e ho memorizzato tutto in un file; adesso giocare � banale.
Riporto ad esempio i dati per le tavolette fino a 4x4
 
 R  C  A  B
-- -- -- --
 1  1 11 11
 1  2 11 10
 1  3 10 10
 1  4 10 10
 2  1 01 11
 2  2 01 10
 2  3 00 10
 2  4 00 11
 3  1 01 01
 3  2 01 00
 3  3 00 00
 3  4 01 01
 4  1 01 01
 4  2 11 00
 4  3 10 10
 4  4 01 10
 
L'interpretazione � semplice:
 
R e C sono e dimensioni della tavoletta;
A e B sono rispettivamente le mosse consentite ai due giocatori:
la prima di ogni coppia si riferisce all'eliminazione di righe la
senda di colonne (0 mossa perdente, 1 mossa vincente)
 
Ad esempio la tavoletta 4x3 � vincente per entrambi i giocatori
eliminando le righe (A porta alla tavoletta 3x3 che � perdente per B,
mentre B porterebbe alla tavoletta 2x3 che � perdente per A)
 
-- 
Ciao, Dano

 E' cos�?
 
Ci provo. Aggiungo un automa
 
Sacher-Masoch: cf/ct<.5 (motto: mi piace perdere facile, 
poooo-popoppopopopo)
 
Allora, ho provato una 31x30
Come benchmark uso una partita tra due democratici, dopo 22 partite tutto � 
chiaro e PericleB resta inchiodato a 11 vittorie mentre PericleA prende il 
largo.
PericleA vs MasochB ovviamente vince tanto a 0.
Ho provato a esonerare Masoch dopo 1000 partite perse, ed il subentrante 
PericleB vince 11 partite prima che PericleA ricominci a spadroneggiare.
Questo conferma che PericleA non aveva imparato un bel niente dalle facili 
vittorie contro MasochB
 
-- 
Ciao, Silv:o)
 
 
 

 Questo thread mi ha fatto tornare la nostalgia del vecchio ihe
 
Il vecchio ihe siamo noi, se ne abbiamo voglia. Livio faceva notare qualche 
tempo fa che usenet, il web, la fine del pionierismo telematico, l'invasione 
delle cavallette SE su ihe, tutto evolve. Per fortuna. Non dobbiamo farci 
troppi crucci.
 
-- 
Ciao, Silv:o)
 
 

 simili perchč il sistema č deterministico.
 
Il gioco E' deterministico. Questo č fuori di discussione.
Fare un automa che vince questo gioco significa *analizzarlo* e *codificare* 
una strategia deterministica.
Oppure, come avete fatto tu e Giorgio, andare di forza bruta e buonanotte.
Perň i matenigmici giocano con tavolette infinite, e i forzabrutisti 
finiscono la memoria parecchio tempo prima :)
 
Adesso stiamo parlando di automi che non hanno nessuna strategia codificata, 
automi che imparano dall'esperienza. Ovviamente anche gli automi ad 
apprendimento possono cercare di apprendere una strategia o una tabella, nel 
secondo caso non sono tanto utili neanche loro per le tavolette 
infinitamente grandi.
 
Ma qui si parla di tavolette ragionevolmente piccole, e la discussione era 
fara automi "deterministici", per esempio l'automa Pericle sponsorizzato da 
Giorgio, che decide *sempre* per la mossa che fino a quel momento si č 
dimostrata piů redditizia, e l'automa Darwin suggerito da Livio che 
*probabilmente* da retta all'esperienza, con varie sfumature di 
*probabilmente*.
 
-- 
Ciao, Silv:o) 
 
 

finiscono la memoria parecchio tempo prima :)
 
Hai ragione da vendere :-)
 
-- 
Ciao, Dano