Come parte di un compito a casa, devo programmare un semplice gioco di scacchi in Java. Stavo pensando di cogliere l'opportunità di sperimentare con la ricorsione, e mi stavo chiedendo se c'è un ovvio candidato negli scacchi per il codice ricorsivo?Buon uso della ricorsione nella programmazione di scacchi?
risposta
Il candidato più ovvio per me sarebbe una routine minimax ricorsiva per la ricerca per le mosse migliori. Anche questo entra molto nella teoria dietro gli algoritmi di ricerca e sarebbe piuttosto interessante da implementare.
Esempio:
http://www.devshed.com/c/a/Practices/Solving-Problems-with-Recursion/6/
Penso anche che non ci sia alternativa al minmax ricorsivo (se l'idea è di sviluppare un KI) –
Utile anche questo link che spiega alpha-beta http://www.fierz.ch/strategy1.htm –
Wow, questo è un grande articolo Sembra che questo sia un metodo che sarebbe usato in modo diverso a stadi diversi. Forse ci sarebbe una versione per l'accoppiamento e una versione per qualche altro obiettivo (ad es., Catturare un pezzo), ognuna con una profondità diversa. Hmmm ... Divertimento. – JDelage
Non scacchi, ma un puzzle classico con figueres scacchi: http://en.wikipedia.org/wiki/Eight_queens_puzzle
Stai pensando di backtracking
ricerca depth-first è un ottimo candidato per la ricorsione. quindi, se stai programmando un'intelligenza artificiale per l'assegnazione dei compiti a casa, l'algoritmo della testa di mira dell'intelligenza artificiale per cercare di capire la migliore mossa successiva sarebbe un buon candidato.
Attenzione però: è possibile esaurire la memoria rapidamente. Probabilmente vuoi limitare il numero di mosse profonde in cui l'IA può apparire.
Sì, c'è. Se hai qualche funzione che valuti "forza" di qualche posizione per dire giocatore bianco. Puoi spostare un pezzo e chiamarlo ricorsivamente per valutare il valore di una mossa e scegliere la mossa migliore.
Si dovrebbe chiamare la stessa funzione per il giocatore nero, scambiando i ruoli per neri e bianchi, valutando così il "pericolo" di una mossa dell'avversario.
Poi di nuovo per i bianchi, ecc
Basta essere consapevoli, non si dovrebbe andare troppo in profondità nei livelli di ricorsione o ci vorrà per sempre.
Grazie. Ho solo bisogno di trovare una buona logica per il valore di ogni mossa. – JDelage
Mente dynamic programming, quando si dispone di molteplici combinazioni che portano alla stessa scheda, è importante ricordarsi di memorizzare nella cache le mosse al fine di evitare di ripetere i calcoli
Se si rileva una ricorsione solo vi condurrà in un luogo dove si ha stato, basta rompere quella chiamata. Questo è noto come backtracking
- 1. Programmazione di scacchi (no AI) - sposta la validazione
- 2. Non capisco questo uso di ricorsione
- 3. convertire la ricorsione in "ricorsione della coda"
- 4. Ottimizzazioni di scacchi
- 5. È un buon uso di ExtensionMethod?
- 6. Cos'è un uso comune di programmazione della contro-varianza?
- 7. java.lang.StackOverflowError a causa della ricorsione
- 8. Scacchi: alto fattore di ramificazione
- 9. [: Operatore imprevisto nella programmazione della shell
- 10. Utilizzo dell'interfaccia di scacchi universale
- 11. Gioco di scacchi in JavaScript
- 12. Come vengono memorizzate le variabili nella ricorsione?
- 13. Come trovare la ricorsione nella tua app?
- 14. scacchi IA per GAE
- 15. Uso reale dei linguaggi di programmazione concatenativi
- 16. Uso della funzione CakePHP Session nella pagina di visualizzazione?
- 17. Libreria di convalida di spostamento degli scacchi
- 18. Ricorsione della coda e ricorsione diretta in Erlang
- 19. Ricorsione della coda in clojure
- 20. Ricorsione Python all'interno della classe
- 21. Utilizzo della ricorsione in C#
- 22. QuickSort stima della profondità di ricorsione
- 23. Qual è un buon testo di inizio sulla programmazione funzionale?
- 24. "Necessari" usi della ricorsione in lingue imperative
- 25. PyOpenGL è un buon punto di partenza per l'apprendimento della programmazione opengl?
- 26. Vantaggi della programmazione assertiva
- 27. Come rappresentare sqrt (-1) nella programmazione?
- 28. Uso della classe corrente nella dichiarazione del metodo statico Java
- 29. Alternative per Scacchi MS Research?
- 30. Conversione in loop ... ricorsione ricorsione
Tutto ciò che riguarda gli alberi. –
Uno dei miei primi programmi Java (nel 1998) era un programma di gioco degli scacchi, usando un algoritmo minime ricorsivo che Laplace menziona sotto. È sicuramente un progetto interessante per imparare Java e la ricorsione con. – Jesper
www.m-w.com dice che la ricorsività non è una parola inglese valida. Titolo modificato –