2012-07-06 8 views
8

Devo implementare il risolutore del dragamine. Ho iniziato a implementare un agente basato su regole. Ho implementato alcune regole. Ho una funzione euristica per la scelta della migliore regola di corrispondenza per la cella corrente (con informazioni sulle celle circostanti) da trattare. Quindi per ciascuna cella scelta può decidere per 8 celle circostanti di aprirle, segnarle o non fare nulla. Intendo. al momento, l'agente riceve come input una cellula rivelata e decide cosa fare con le celle circostanti (al momento l'agente non sa come decidere quale cella trattare).Progetto AI Minesweeper

La mia domanda è, quale algoritmo implementare per decidere quale cella trattare?

Supponiamo, per, la prima mossa, l'agente rivelerà una cella d'angolo (o un'altra, secondo alcune regole per la prima mossa). Cosa fare dopo?

Capisco che ho bisogno di attuare un tipo di ricerca. Conosco molti algoritmi di ricerca (BFS, DFS, A-STAR e altri), non è questo il problema, semplicemente non capisco come posso usare qui queste ricerche.

Ho bisogno di implementarlo in un principi di Intelligenza Artificiale: un approccio moderno.

risposta

8

BFS, DFS e A * probabilmente non sono appropriati qui. Questi algoritmi sono buoni se stai cercando di pianificare una linea d'azione quando hai una conoscenza completa del mondo. In Campo minato, non hai una tale conoscenza.

Invece, suggerirei di provare ad usare alcune delle tecniche di inferenza logica dalla Sezione III del libro, in particolare usando SAT o le tecniche del Capitolo 10. Questo ti permetterà di trarre conclusioni su dove le miniere stanno usando fatti come " uno dei seguenti otto quadrati è una miniera, e esattamente due dei seguenti otto quadrati sono una miniera. " Fare questo ad ogni passo ti aiuterà a identificare dove sono le mine, o capire che devi indovinare prima di continuare.

Spero che questo aiuti!

+0

Ho implementato alcune di queste tecniche nelle regole, ho implementato un determinato metodo: treatCell (i_CellToTreat), corrisponde alla regola migliore e la esegue. Semplicemente non so in quale ordine trattare le cellule rivelate, e quale delle seguenti deve scegliere di trattare, al momento semplicemente itera su tutta la collezione di cellule rivelate e le tratta. Funziona piuttosto bene su una piccola scheda, ma ho bisogno di implementare un algoritmo migliore. – Nikita

Problemi correlati