Mosse nella dama/tris
Ciao a tutti.
Il mio problema riguarda il gioco della dama.
Dunque, a me piace da sempre questo gioco e recentemente ho deciso di imparare "qualcosa" per diventare più forte.
Ho letto qua che la dama, al contrario degli scacchi è un gioco risolto. Ho quindi cercato di imparare le prime tre mosse (due del bianco e due del nero) in modo da sapere cosa muovere in base alla mossa dell'avversario. Ho trovato molto utile questo sito che mi ha permesso di sapere cosa fare nelle prime tre mosse. Per esempio quando uso il bianco apro sempre 23-19 e in base alla mossa del nero so sempre cosa fare come mia seconda mossa; quando invece uso il nero, in base alla mossa del bianco, so sempre la mia prima mossa (e basta).
Ovviamente il sito dice le mosse che procurano un vantaggio, piccolo o grande, ad uno dei due colori, e non chi vincerà la partita.
Ora arriva il mio problema: dopo le prime tre mosse, come continuo? ...NON sto dicendo che voglio impararmi tutte le possibili partite a memoria, ma vorrei imparare delle ragionevoli continuazioni...
Perchè io penso che i campioni di dama non improvvisino in competizione, ma sappiano già cosa fare, almeno nelle prime mosse (magari qualche trappola,...)!
Esistono degli studi matematici (o non?) a riguardo?
Il mio problema riguarda il gioco della dama.
Dunque, a me piace da sempre questo gioco e recentemente ho deciso di imparare "qualcosa" per diventare più forte.
Ho letto qua che la dama, al contrario degli scacchi è un gioco risolto. Ho quindi cercato di imparare le prime tre mosse (due del bianco e due del nero) in modo da sapere cosa muovere in base alla mossa dell'avversario. Ho trovato molto utile questo sito che mi ha permesso di sapere cosa fare nelle prime tre mosse. Per esempio quando uso il bianco apro sempre 23-19 e in base alla mossa del nero so sempre cosa fare come mia seconda mossa; quando invece uso il nero, in base alla mossa del bianco, so sempre la mia prima mossa (e basta).
Ovviamente il sito dice le mosse che procurano un vantaggio, piccolo o grande, ad uno dei due colori, e non chi vincerà la partita.
Ora arriva il mio problema: dopo le prime tre mosse, come continuo? ...NON sto dicendo che voglio impararmi tutte le possibili partite a memoria, ma vorrei imparare delle ragionevoli continuazioni...
Perchè io penso che i campioni di dama non improvvisino in competizione, ma sappiano già cosa fare, almeno nelle prime mosse (magari qualche trappola,...)!
Esistono degli studi matematici (o non?) a riguardo?
Risposte
Non credo esista un elenco di mosse da fare in grado di comprendere tutte le possibili situazioni di gioco.
So che un gruppo di ricercatori era riuscito nel 2007 a scrivere un programma in grado di giocare secondo la strategia migliore.
Si era notato tuttavia che nel caso entrambi i giocatori giocassero secondo la strategia migliore la partita finirebbe in parità, ovvero il fatto di avere o meno diritto alla prima mossa non comportava la possibilità di vincere indipendentemente dalle mosse dell'avversario.
So che un gruppo di ricercatori era riuscito nel 2007 a scrivere un programma in grado di giocare secondo la strategia migliore.
Si era notato tuttavia che nel caso entrambi i giocatori giocassero secondo la strategia migliore la partita finirebbe in parità, ovvero il fatto di avere o meno diritto alla prima mossa non comportava la possibilità di vincere indipendentemente dalle mosse dell'avversario.
Io credo per esempio che questo libro abbia ciò che cerco. Perchè quello che so fino ad ora mi permette solo di aprire e non di fare l'inizio del mediogioco.
Quelli che hanno creato il programma, hanno analizzato tutte le possibili combinazioni o hanno trovato un modo per far "ragionare" il computer? ...sinceramente non so fino a che punto la scienza si è spinta nell'intelligenza artificiale...
Quelli che hanno creato il programma, hanno analizzato tutte le possibili combinazioni o hanno trovato un modo per far "ragionare" il computer? ...sinceramente non so fino a che punto la scienza si è spinta nell'intelligenza artificiale...
Non lo so ma non credo che abbiano trovato quello che tu definisci "modo di far ragionare il computer", credo piuttosto che abbiano sviluppato un albero delle mosse che hanno poi analizzato per vedere quali combinazioni di mosse portano a vittoria/sconfitta/pareggio.
Il modo vincente di ragionare e' stato trovato per giochi molto semplici, ad esempio il tris (se ti interessa approfondire posso mandarti qualcosa) ma non penso si sia arrivati a trovarlo per la dama.
Spero per te di sbagliarmi
Il modo vincente di ragionare e' stato trovato per giochi molto semplici, ad esempio il tris (se ti interessa approfondire posso mandarti qualcosa) ma non penso si sia arrivati a trovarlo per la dama.
Spero per te di sbagliarmi

Per il tris credo di sapere quale sia la strategia vincente... Quando andavo in terza superiore ho fatto un programma in c++ per giocarci contro il computer che, almeno teoricamente, vince sempre. Se conosci c++ e ti interessa te lo passo volentieri... Comunque magari tu hai qualcosa di piu interessante...mandami quello che intendi che sicuramente ci darò almeno un'occhiata.
Scusa il ritardo nella risposta. Non ho avuto tempo di recuperare il materiale che ti dicevo, appena ho un minuto te lo mando.
Comunque in buona sostanza la strategia ottima nel tris si ottiene nel modo seguente.
Per ogni casella libera supponi di mettere in quella casella il tuo simbolo, poi conti il numero di righe, colonne e diagonali sulle quali tu puoi fare tris (cioe' quelle in cui non compaiono simboli dell'avversario) e lo chiami numMieiTris; quindi conti il numero di righe, colonne e diagonali sulle quali l'avversario puo' fare tris (cioe' quelle in cui non compaiono i tuoi simboli) e lo chiami numSuoiTris.
A questo punto ad ogni casella assegni un payoff pari a $numMieiTris-numSuoiTris$ e scegli di fare la mossa corrispondente alla casella con il maggio payoff.
Vedrai che il giocatore che inizia, seguendo la strategia ottimale, scegliera' la casella centrale, e reiterando questo metodo sara' possibile ricavare la "partita tipo" tra giocatori razionali.
Fammi sapere se non mi sono spiegato bene
Comunque in buona sostanza la strategia ottima nel tris si ottiene nel modo seguente.
Per ogni casella libera supponi di mettere in quella casella il tuo simbolo, poi conti il numero di righe, colonne e diagonali sulle quali tu puoi fare tris (cioe' quelle in cui non compaiono simboli dell'avversario) e lo chiami numMieiTris; quindi conti il numero di righe, colonne e diagonali sulle quali l'avversario puo' fare tris (cioe' quelle in cui non compaiono i tuoi simboli) e lo chiami numSuoiTris.
A questo punto ad ogni casella assegni un payoff pari a $numMieiTris-numSuoiTris$ e scegli di fare la mossa corrispondente alla casella con il maggio payoff.
Vedrai che il giocatore che inizia, seguendo la strategia ottimale, scegliera' la casella centrale, e reiterando questo metodo sara' possibile ricavare la "partita tipo" tra giocatori razionali.
Fammi sapere se non mi sono spiegato bene

Io invece parto sempre dagli angoli (ed è effettivamente meglio
)

Speicialmente @milizia96, ma anche @thedarkhero volendo
Avete qualcosa in contrario se vi invio per PM il testo (da copiare ed incollare) del mio programmino su c++ in modo da vedere come ho fatto "ragionare il computer"?
Ditemi se creerebbe dei problemi visto che è molto lungo (circa 500 righe)
Avete qualcosa in contrario se vi invio per PM il testo (da copiare ed incollare) del mio programmino su c++ in modo da vedere come ho fatto "ragionare il computer"?
Ditemi se creerebbe dei problemi visto che è molto lungo (circa 500 righe)
Volentieri! Se e' piu' pratico...non c'e' modo di allegarlo direttamente come file sorgente?
@milizia96: in base a cosa dici che e' piu' conveniente?
@milizia96: in base a cosa dici che e' piu' conveniente?
Ho chiesto qua e mi hanno detto che non si può allegare il file.
Inoltre io credo che esista più di una strategia che permetta di non perdere, indipendentemente dal fatto che si parta dal centro o dagli angoli. Persobalmente nel mio programma faccio mettere il computer al centro e se è già occupato in un angolo
Inoltre io credo che esista più di una strategia che permetta di non perdere, indipendentemente dal fatto che si parta dal centro o dagli angoli. Persobalmente nel mio programma faccio mettere il computer al centro e se è già occupato in un angolo
Quindi ci stiamo chiedendo se la soluzione ottimale e' unica oppure no?
Se usi la mia funzione "payoff" il giocatore che inizia sceglie il centro perche' ha un guadagno strettamente maggiore di qualunque altra casella...se tu scegli di partire dagli angoli e' perche' hai usato una funzione diversa o per "esperienza di gioco"?
Se usi la mia funzione "payoff" il giocatore che inizia sceglie il centro perche' ha un guadagno strettamente maggiore di qualunque altra casella...se tu scegli di partire dagli angoli e' perche' hai usato una funzione diversa o per "esperienza di gioco"?
Per esperienza di gioco xD
Semplicemente perché se io parto da un angolo (giocando per primo) l'avversario per potersi salvare deve necessariamente rispondere al centro, e se anche lo fa, dopo io proseguo con l'angolo opposto, e quindi lui deve stare attento a non giocare in angolo, altrimenti vincerò con certezza.
Invece se parto dal centro, l'altro per salvarsi basta che risponda in uno qualsiasi degli angoli.
Se due giocatori sanno giocare bene, è impossibile (qualunque strategia venga adottata) la vittoria di uno dei due.
Diciamo che giocando con uno non esperto direi che c'è più probabilità che caschi con la prima strategia (quella con l'angolo), perché presenta più risposte possibili diverse (e molte portano alla vittoria del primo giocatore).
Se giochi contro un novellino che dopo la tua prima mossa risponde con una casella a caso, con la strategia del centro vinci una volta su 2, mentre con la strategia dell'angolo vinci 7 volte su 8.
Ecco perché dico che è meglio partire dall'angolo.
(senza contare che manderei in confusione l'avversario che dovrà studiare nuove strategie, siccome è prassi comune cominciare sempre dal centro, e quindi uno è preparato a quello xD)
Semplicemente perché se io parto da un angolo (giocando per primo) l'avversario per potersi salvare deve necessariamente rispondere al centro, e se anche lo fa, dopo io proseguo con l'angolo opposto, e quindi lui deve stare attento a non giocare in angolo, altrimenti vincerò con certezza.
Invece se parto dal centro, l'altro per salvarsi basta che risponda in uno qualsiasi degli angoli.
Se due giocatori sanno giocare bene, è impossibile (qualunque strategia venga adottata) la vittoria di uno dei due.
Diciamo che giocando con uno non esperto direi che c'è più probabilità che caschi con la prima strategia (quella con l'angolo), perché presenta più risposte possibili diverse (e molte portano alla vittoria del primo giocatore).
Se giochi contro un novellino che dopo la tua prima mossa risponde con una casella a caso, con la strategia del centro vinci una volta su 2, mentre con la strategia dell'angolo vinci 7 volte su 8.
Ecco perché dico che è meglio partire dall'angolo.
(senza contare che manderei in confusione l'avversario che dovrà studiare nuove strategie, siccome è prassi comune cominciare sempre dal centro, e quindi uno è preparato a quello xD)
@milizia96
1) hai provato il programma?
2) tu presupponi che le 8 mosse possibili dell'avversario siano egualmente probabili, ma io credo che l'85%-90% risponderà al centro
1) hai provato il programma?
2) tu presupponi che le 8 mosse possibili dell'avversario siano egualmente probabili, ma io credo che l'85%-90% risponderà al centro
Hai ragione, non sono equiprobabili, e sono d'accordo che quasi tutti risponderebbero al centro.
Però come ho detto se due giocatori sono entrambi bravi (conoscono strategie) non si può vincere né cominciando al centro né cominciando all'angolo.
Pensateci: di solito (anzi sempre) si vince a tris solo se l'avversario non conosce la strategia per controbattere (e non ci arriva neanche mentre gioca). E io direi che la strategia che parte dal centro è molto più conosciuta di quella proposta da me!
Anchi'io prima giocavo partendo sempre dal centro (sembra la cosa migliore) ma dopo poco mi sono reso conto che praticamente tutti conoscono quella strategia, quindi ho pensato che sarebbe stato meglio cambiare. E ciò mi ha portato alla vittoria non poche volte!
Diciamo che questa "convenienza" è suggerita più dall'esperienza che da qualche motivo matematico.
Per quanto riguarda il tuo programma, ora non ho proprio tempo per guardarlo, e devo dire che non mi è mai capitato sottomano un codice C++ così lungo (non so se avrò la forza d'animo per vederlo...)
PS: ma questo thread non doveva riguardare la dama???
Però come ho detto se due giocatori sono entrambi bravi (conoscono strategie) non si può vincere né cominciando al centro né cominciando all'angolo.
Pensateci: di solito (anzi sempre) si vince a tris solo se l'avversario non conosce la strategia per controbattere (e non ci arriva neanche mentre gioca). E io direi che la strategia che parte dal centro è molto più conosciuta di quella proposta da me!
Anchi'io prima giocavo partendo sempre dal centro (sembra la cosa migliore) ma dopo poco mi sono reso conto che praticamente tutti conoscono quella strategia, quindi ho pensato che sarebbe stato meglio cambiare. E ciò mi ha portato alla vittoria non poche volte!
Diciamo che questa "convenienza" è suggerita più dall'esperienza che da qualche motivo matematico.
Per quanto riguarda il tuo programma, ora non ho proprio tempo per guardarlo, e devo dire che non mi è mai capitato sottomano un codice C++ così lungo (non so se avrò la forza d'animo per vederlo...)
PS: ma questo thread non doveva riguardare la dama???
Dobbiamo decidere se il giocatore contro il quale giochiamo usa la strategia piu' comune e diffusa oppure la strategia che ha massimo payoff (definito da una rispettiva funzione)...
Il primo caso pero' mi sembra poco interessante, o meglio, e' interessante solo se vuoi battere un giocatore inesperto e non se vuoi "studiare" il tris
Il primo caso pero' mi sembra poco interessante, o meglio, e' interessante solo se vuoi battere un giocatore inesperto e non se vuoi "studiare" il tris

Ciao sono un giocatore di Dama, semi professionista, anche se per il vero non esiste professionismo propriamente detto, perché questo per tutti noi è poco più di un hobby. Da premettere che nei tornei dato che tutti conoscono queste mosse che tu hai citato, e l'ulteriore sviluppo della partita determinato dalla scelta di condotta migliore, che inesorabilmente porta alla pari, è da tantissimi anni che si sorteggiano le aperture, ovvero le prime due mosse del bianco e del nero sono scelti dagli arbitri (evitando le aperture troppo vantaggiose per uno dei partiti). Esistono libri come quello scritto da Francesco Lavizzari, che analizzano quasi tutte le partite dettando la condotta migliore per ogni partita: esistono pochi che riescono davvero a immagazzinare e ricordare questa mole di dati, considerando che ogni apertura ha almeno due varianti di condotta buona. Quindi buona parte dei giocatori si affida alla analisi, in parte o totalmente a seconda della passione, o dal tempo che può dedicare allo studio. Esistono tattiche per neofiti che puoi facilmente reperire nei corsi di you tube di Daniele Bertè.
cordiali saluti e buon gioco
cordiali saluti e buon gioco
grazie della risposta
Ciao, io sono vecchietto. Frequentavo l'ambiente del MPAI (Milan Politechnick Artificial Intelligence) quando le sorelle Gini, allora studentesse oggi insegnanti, vincevano il premio per il miglio progetto di sw per giocare a scacchi.
Mi sono divertito a sviluppare un sw con un vecchissimo z80 che giocava a tris "a caso" ma....imparava.
Ovvero, ogni volta che perdeva (giocando onestamente a caso) si segnava dove aveva sbagliato. Così giocando contro di me diventava sempre più bravo e mi tagliava tutte le tecniche e strategie.
A quel punto ho duplicato il programma e ho fatto giocare un programma contro l'altro.
Ho così raggiunto, nel tempo minore, una situazione che esauriva tutte le possibili mosse e contromosse.
Ho scoperto che c'è almeno una possibilità, per chi apre, di vincere o pareggiare. chi risponde può solo pareggiare o perdere.
La parte interessante è stata vedere come un computer potesse "imparare" dagli sbagli.
40 anni dopo, i sw che fanno cose simili, si chiamano reti neurali. Ben più potenti ma....40 anni fa mi sono divertito con una memoria da 64k a 8 bit e una CPU a 2.5 MHz!!. Con la potenza di calcolo e i linguaggi di oggi....potreste affrontare giochi più complessi. Il concetto resta, invece di studiare grandi strategie (molto interessante) sviluppare un sistema che diventa esperto.
Ciao.
Mi sono divertito a sviluppare un sw con un vecchissimo z80 che giocava a tris "a caso" ma....imparava.
Ovvero, ogni volta che perdeva (giocando onestamente a caso) si segnava dove aveva sbagliato. Così giocando contro di me diventava sempre più bravo e mi tagliava tutte le tecniche e strategie.
A quel punto ho duplicato il programma e ho fatto giocare un programma contro l'altro.
Ho così raggiunto, nel tempo minore, una situazione che esauriva tutte le possibili mosse e contromosse.
Ho scoperto che c'è almeno una possibilità, per chi apre, di vincere o pareggiare. chi risponde può solo pareggiare o perdere.
La parte interessante è stata vedere come un computer potesse "imparare" dagli sbagli.
40 anni dopo, i sw che fanno cose simili, si chiamano reti neurali. Ben più potenti ma....40 anni fa mi sono divertito con una memoria da 64k a 8 bit e una CPU a 2.5 MHz!!. Con la potenza di calcolo e i linguaggi di oggi....potreste affrontare giochi più complessi. Il concetto resta, invece di studiare grandi strategie (molto interessante) sviluppare un sistema che diventa esperto.
Ciao.
Ciao. Risposta molto interessante. Potresti approfondire su come hai fatto a "far imparare" al computer?
Grazie
Grazie