Si está bien no tener el bot más eficiente, usaría un lenguaje lógico. Y cada vez es más lento y más lento cuanto más genérico hagas el idioma, pero podría ser un comienzo.
El elemento clave es definir las estrategias que le interesen y modelar estas estrategias en su lenguaje lógico.
Si usted está pensando en un juego de adivinanzas, por ejemplo, puede tener dos estrategias:
strategy-1 guess the card you think is the most likely; or
strategy-2 among the cards that are the most likely, guess the card that
my opponent believes to be the most likely.
Ahora su problema es definir las estrategias en un lenguaje formal que se puede interpretar (se necesita un sonido idioma).
Por lo general, un lenguaje para tal lógica debería ser capaz de expresar probabilidades básicas, al menos. Por ejemplo, una lengua dada por la siguiente forma:
A = c | -A | A v A | A -> A | P(A) >= r | P(A) >= P(A) | \forall c . A(c)
ra racional entre 0 y 1. Lea P (c)> = r para ser 'el jugador cree que el oponente tiene la tarjeta C con una probabilidad de al menos r. '
Por ejemplo, la estrategia-1 parece
Guess card C only if holds that
\forall C'. P(C) >= P(C') .
estrategia-2 parece
Guess card C only if holds that
[\forall C'. P(C) >= P(C')]^[-\forall C''. P'(C'') > P'(C)]
(P '(c) es la probabilidad asignada por mi oponente).
Si su estrategia está dada por la fórmula la estrategia de su función para la acción sería simplemente pidiendo una posible carta que satisface la estrategia:
act gameState = take 1 [c : c |= STRATEGY]
Este lenguaje que di como ejemplo no es lo suficientemente expresiva para expresar problemas para esconder tu tipo (estrategias extremadamente importantes en juegos como Poker o HearthStone, por ejemplo). Para las estrategias con eso, se necesitaría alguna extensión.
Otra extensión común sería para los operadores dinámicos, por lo que podría expresar estrategias como 'después de derrotar la carta más fuerte que tengo en la placa'.
En su comentario sobre "seguimiento de qué tarjetas están abiertas," está limitado en el sentido de que no considera lo que su oponente piensa teniendo en cuenta sus acciones. Strategy-2 es un ejemplo de cómo mejorar la computadora con creencias de orden superior.
Para un juego de adivinanzas sugiero el documento llamado Logic of Pit de Ditmarsch. (http://link.springer.com/article/10.1007/s11229-005-4331-5) (no implementa un AI, solo expresa el juego llamado PIT. No creo que valga la pena pagarlo. Si puedes obtenerlo gratis, lo vale. Quizás puedas buscar su tesis, en cambio si es gratis)
me encantaría escribir un documento sobre HearthStone pero nunca encontrar el tiempo de recuento :(
tarjeta -. Si su [lo suficientemente bueno para el MIT] (http://www.mitcardcounting.com/), es lo suficientemente bueno para usted. Probablemente. – new123456