2009-11-11 11 views
8

Nella mia classe di strutture dati, ci è stato assegnato un progetto in cui ci viene richiesto di realizzare un gioco Quantum Tic-Tac-Toe perfettamente funzionante in cui un giocatore affronta un robot che gioca a vincere.Quantum Tic-Tac-Toe AI

Il professore ha suggerito di utilizzare un albero di gioco nella nostra IA. Tuttavia, come al solito, sto cercando qualcosa di più impegnativo.

Qualcuno può suggerire un approccio migliore e più avanzato che potrei ricercare e implementare?


io non sono alla ricerca di qualcosa di completamente ridicolo che rende il problema più complesso. Piuttosto, sto cercando un approccio avanzato - come usare un algoritmo A * piuttosto che un BFS.

+0

Se vuoi impegnarti, ti suggerisco di imparare Quantum PSO (Particle Swarm Optimizer). –

+1

Puoi anche dare una possibilità a _monte carlo tree search_ ... –

risposta

13

Il tuo desiderio di imparare cose nuove (da solo) è buono. Tuttavia, una soluzione complicata è spesso not the best solution.

C'è una buona ragione per cui il tuo professore ha suggerito di usare un albero di gioco per l'intelligenza artificiale. È suggerito perché è lo strumento giusto per il lavoro. Non esiste un approccio migliore che puoi ricercare perché è l'approccio migliore.

Hai detto che ti trovi in ​​una classe di strutture dati (che di solito è una prima o seconda classe). Immagino che il punto del tuo compito sia quello di conoscere le strutture dei dati dell'albero. Se vuoi rendere le cose più complicate, scrivi prima la versione ad albero e poi cerca altri modi per risolvere lo stesso problema.

+2

+1 perché ora ho la frase da dire a me stesso, 'guanti' –

+1

Non sto cercando una soluzione più complicata. Sto cercando la soluzione migliore. In passato, il mio professore ha fornito suggerimenti come "usa BFS per risolvere il problema", ma BFS non era la soluzione ottimale. Piuttosto, A * era. Sto semplicemente cercando la soluzione migliore. Se un albero di gioco è la soluzione migliore, allora così sia. – dacman

1

di fornire una caratteristica di apprendimento per l'implementazione, si può guardare in un emulatore per Donald Mitchie s' MENACE (Matchbox educable tris Motore) ...

Edit:
Nel guardare in esso, questo è stato fatto un po ', si veda ad esempio questo su CodeProjet
Inoltre, e mentre si acquisisce un modello statistico del mondo (o qui del mondo ridotto Tic-Tac-Toe) e basando le azioni future su tale modello è intelligente comportamento, può essere considerato fuori dal campo di applicazione dal tuo professore, perché non tocca i concetti chiave che tu pr Obbligatoriamente coperta in classe (rappresentazione della conoscenza, alberi decisionali ...)

+2

Questo rende il problema ancora più complicato, perché se crei un learning tic-tac-toe machine, sei obbligato a dargli la sintesi vocale e la capacità di parla come WOPR da * WarGames * – Jherico

+1

Che ne dici di utilizzare il kit GenPro per creare un gioco TicTacToe autoapprendimento basato su algoritmi genetici? Non dovresti allenarlo a mano, lascialo insultare per un po '. O sì, e naturalmente forniamo un'utile codifica "DNA" per la strategia del tuo gioco e una funzione di fitness, ma che dovrebbe essere fattibile - e impressionante. –

4

Ci sono 2 parti per valutare un gioco a turni.

  1. L'albero del gioco.
  2. Una funzione di utilità.

L'albero di gioco consente di riprodurre le mosse in anticipo per vedere dove porteranno. Se il gioco è abbastanza complesso da non poter calcolare tutte le possibilità (http://en.wikipedia.org/wiki/Solved_game), allora hai bisogno di un modo per determinare come "buono" uno scenario di una particolare tavola è. Una scarsa funzione di utilità per gli scacchi potrebbe semplicemente contare i valori dei pezzi e ignorare la posizione.

È inoltre necessario un modo efficiente di attraversare l'albero del gioco. Leggi di Minimax, potatura alfa-beta, Negascout, ecc.

+0

Questi suggerimenti sono stati forniti dal professore. Mi chiedo se ci sia qualcosa al di sopra e al di là che potrei implementare. – dacman

+1

Pulisci codice, buon design, usando le tecniche discusse. Hai già fatto tutto questo e vuoi fare di più? – z5h

2

realtà sto lavorando su questo problema specifico in questo momento: http://www.rickb.com/quantum-tic-tac-toe

avevo pensato di fare qualcosa di più avanzato pure, ma sto solo attenersi al buon algoritmo di ricerca ol' alfa-beta.Il mio problema principale è venire con un buon algoritmo per "segnare" ogni particolare stato della scheda. Il QTTT è molto più complicato del tic tac toe standard, il numero di stati da cercare è esponenzialmente più grande. Ho in memoria l'intero albero standard di gioco del tic tac toe che uso per cercare rapidamente il punteggio per ogni stato di "classica" scheda, ma poi devo valutare lo stato di sovrapposizione in qualche modo. Il numero di stati è così grande che non è possibile andare troppo in profondità nell'albero, quindi una funzione di punteggio appropriata per potare l'albero in anticipo è un must.

+0

Questo è tutto ciò di cui hai bisogno. Non sapevo davvero nulla dell'intelligenza artificiale in questo progetto e supponevo che il mio professore fosse - come al solito - ci dava l'approccio più semplice. – dacman