Dans ma classe de structures de données, un projet dans lequel nous sommes obligés de créer un jeu de TIC-TAC-TAC-TAC-TAC-TAC-TAC-TAC-TAC-TAC-TAC-TAC-TAC-TAC dans lequel un joueur est confronté à un bot qui joue à gagner. P>
Le professeur a suggéré que nous utilisions un arbre de jeu dans notre AI. Cependant, comme d'habitude, je cherche quelque chose de plus difficile. P>
Quelqu'un peut-il suggérer une approche meilleure et plus avancée que je pouvais rechercher et mettre en œuvre? P>
Je ne cherche pas quelque chose de complètement ridicule qui rend le problème plus complexe. Plutôt, je cherche une approche avancée - comme à l'aide d'un algorithme A * plutôt que d'un BFS. P>
4 Réponses :
Pour fournir une fonctionnalité d'apprentissage à votre implémentation, vous pouvez consulter un émulateur pour Donald Mitchie strong> 's Menace forte> A> (Matchbox Educacable Nououghts and Crosses Moteur) ... P>
Modifier strong>:
En examinant de la sorte, cela a été fait assez un peu, voir par exemple cela sur CODEPROJET < / a>
En outre, et tout en acquérant un modèle statistique du monde (ou ici du monde réduit TIC-TAC-TOE) et de fonder des actions futures sur un tel modèle est un comportement intelligent, il peut être considéré comme hors de portée par votre professeur, car ne touche pas Concepts clés que vous avez probablement couverts en classe (représentation des connaissances, arbres de décision ...) p>
Cela rend le problème plus compliqué, car si vous créez une machine d'apprentissage TIC-TAC-TOE, vous êtes obligé de lui donner la synthèse vocale et la capacité de parler comme WOP de wargames i>
Que diriez-vous d'utiliser le kit GenPro pour créer un jeu TictactoToe auto-apprentissage basé sur des algorithmes génétiques? Vous n'auriez pas à l'entraîner à la main, laissez-le simplement fêler pendant un moment. O Oui, et bien sûr, proposez un codage utile de «ADN» pour la stratégie de votre jeu et une fonction de fitness, mais qui devrait être faisable - et impressionnant.
Il y a 2 parties pour évaluer un jeu basé sur le tour. P>
L'arborescence de jeu vous permet de jouer des mouvements à l'avance pour voir où ils diront. Si le jeu est assez complexe pour que vous ne puissiez pas calculer toutes les possibilités ( http://en.wikipedia.org/wiki / Solved_game ), alors vous avez besoin d'un moyen de déterminer comment "bon" un scénario de conseil en particulier est. Une mauvaise fonction utilitaire pour les échecs peut simplement compter les valeurs de la pièce et ignorer la position. P>
Vous avez également besoin d'un moyen efficace de traverser l'arbre de jeu. Lisez à propos de minimax, de taille alpha-bêta, de Negascout, etc. p>
Ces suggestions ont été fournies par le professeur. Je me demande s'il y a quelque chose de plus et au-delà de cela, je pourrais mettre en œuvre.
Nettoyer le code, bonne conception, en utilisant les techniques discutées. Avez-vous déjà fait tout cela et voulez-vous faire plus?
Votre désir d'apprendre de nouvelles choses (vous-même même) est bonne. Cependant, une solution compliquée est souvent Pas la meilleure solution . P>
Il y a une très bonne raison que votre professeur a suggéré d'utiliser un arbre de jeu pour l'AI. C'est suggéré parce que c'est le bon outil pour le travail. Il n'y a pas une meilleure approche que vous pouvez rechercher car c'est la meilleure approche. P>
Vous avez mentionné que vous êtes dans une classe de structures de données (qui est généralement une classe d'une première ou de deuxième année). Je suppose que le point de votre affectation est d'en savoir plus sur les structures de données d'arbres. Si vous voulez faire des choses plus compliquées, écrivez d'abord la version des arbres, puis de la recherche d'autres moyens de résoudre le même problème. P>
+1 parce que maintenant j'ai la phrase à me dire à moi-même, "gants"
Je ne cherche pas une solution plus compliquée. Je cherche la meilleure solution. Dans le passé, mon professeur a donné des suggestions telles que «Utilisez BFS pour résoudre le problème», mais BFS n'est pas la solution optimale. Plutôt, a * était. Je cherche simplement la meilleure solution. Si un arbre de jeu est la meilleure solution, alors soyez-le.
Je travaille actuellement sur ce problème spécifique: http: // www .rickb.com / quantum-tic-tac-toe p>
J'avais envisagé de faire quelque chose de plus avancé également, mais je suis juste en train de rester au bon algorithme de recherche Alpha-Beta. Mon problème principal consiste à atteindre un bon algorithme pour "marquer" chaque État du conseil d'administration. QTTT est beaucoup plus compliqué que la norme TIC TAC Toe, le nombre d'états à rechercher est exponentiellement plus grand. J'ai le standard TIC TAC Toe Toe Toe dans la mémoire que j'utilise pour rechercher rapidement le score de chaque état de la carte "classique", mais je dois ensuite faire marquer l'état de superposition. Le nombre d'états est si important que vous ne pouvez pas aller trop profond dans l'arbre, donc une fonction de notation appropriée pour tailler l'arbre tôt est un must. P>
C'est tout ce dont vous avez besoin. Je ne savais vraiment rien à propos de l'entrée dans ce projet et je supposais que mon professeur était - comme généralement - nous donnant l'approche la plus facile.
Vous voulez contester, je suggère d'apprendre la PSO quantique (optimiseur de particules d'essaim).
Vous pouvez également donner une chance à Monte Carlo Arbre Search I> ...