Articulo de referencia

Algoritmo eficaz de fuerza de la mano

Effective Hand Strength (EHS) es un algoritmo de póker concebido por los científicos informáticos Darse Billings , Denis Papp , Jonathan Schaeffer y Duane Szafron , publicado po...

Effective Hand Strength (EHS) es un algoritmo de póker concebido por los científicos informáticos Darse Billings , Denis Papp , Jonathan Schaeffer y Duane Szafron , publicado por primera vez en "Opponent Modeling in Poker" (PDF) . Actas de la AAAI-98 . 1998.

Desde entonces, se la ha considerado una referencia en el ámbito de la inteligencia artificial aplicada al póker y ha servido de base para investigaciones posteriores, tales como:

  • Rubin, Jonathan; Watson, Ian (abril de 2011). "Póker informático: una revisión" (PDF) . Inteligencia Artificial . 175 ( 5–6 ): 958–987 . doi : 10.1016/j.artint.2010.12.005 .
  • Schuijtvlot, Erwin (2011). Aplicación de la IA al póquer (PDF) (tesis de maestría). Vrije Universiteit Ámsterdam . Metaedge . págs. 12-13. Archivado desde el original (PDF) el 22 de mayo de 2019.
  • Avances en Inteligencia Artificial - SBIA 2008. 2008. pp. 85–86 . doi : 10.1007/978-3-540-88190-2 . 

Algoritmo

El algoritmo es un método numérico para cuantificar la fuerza de una mano de póker, cuyo resultado expresa la fuerza de una mano en percentil (es decir, entre 0 y 1), en comparación con todas las demás manos posibles. La premisa subyacente es que la Fuerza Efectiva de la Mano (EHS) se compone de la Fuerza de la Mano actual (HS) y su potencial de mejora o deterioro (PPOT y NPOT):

miHS=HS×(1nortePAGOT)+(1HS)×PAGPAGOT{\displaystyle EHS=HS\times (1-NPOT)+(1-HS)\times PPOT}

dónde:

  • miHS{\displaystyle EHS}es la fuerza efectiva de la mano
  • HS{\displaystyle HS}es la fuerza de mano actual (es decir, sin tener en cuenta el potencial de mejora o deterioro, dependiendo de las próximas cartas de la mesa)
  • nortePAGOT{\displaystyle NPOT}es el POTENCIAL Negativo (es decir, la probabilidad de que nuestra mano actual, si es la más fuerte, se deteriore y se convierta en una mano perdedora).
  • PAGPAGOT{\displaystyle PPOT}es el POTENCIAL positivo (es decir, la probabilidad de que nuestra mano actual, si está perdiendo, mejore y se convierta en la mano ganadora).

Pseudocódigo

La Fuerza de la Mano (HS) enumerará todas las posibles cartas de la mano del oponente y contará las ocurrencias en las que nuestra mano sea la más fuerte (+50% de los casos en los que estemos empatados):

Fuerza de la mano(nuestras cartas, cartas del tablero) { adelante = empatado = detrás = 0 nuestrorank = Rank(nuestrascartas, cartasdeltablero) para cada caso(oppcards) { opprank = Rango(oppcards, boardcards) si (nuestro rango > opprank) adelante += 1 de lo contrario si (nuestro rango == opprank) empatado += 1 de lo contrario detrás += 1 } fuerza de la mano = (adelante + empatada / 2) / (adelante + empatada + atrás) recuperar la fuerza de la mano } 

Además, EHS tendrá en cuenta el potencial de la mano (es decir, sus probabilidades de mejorar o deteriorarse):

HandPotential(ourcards, boardcards) { // Matriz de potencial de mano, cada índice representa ventaja, empate y desventaja. matriz de enteros HP[3][3] // inicializar a 0 matriz de enteros HPTotal[3] // inicializar a 0 nuestrorank = Rank(nuestrascartas, cartasdeltablero) // Considera todas las combinaciones de dos cartas posibles de las cartas restantes del oponente. para cada caso(oppcards) { opprank = Rango(oppcards, boardcards) if (ourrank > opprank) index = adelante de lo contrario, si (nuestro rango == opprank) índice = empatado de lo contrario índice = detrás HPTotal[índice] += 1 // Todas las posibles cartas del tablero estarán disponibles próximamente para cada caso(giro, río) { // Tablero final de 5 cartas tablero = [cartas del tablero, turno, río] nuestromejor = Rank(nuestrastarjetas, tablero) mejoropía = Rank(tarjetasopop, tablero) si (ourbest > oppbest) HP[index][ahead] += 1 else if (ourbest == oppbest) HP[index][tied] += 1 de lo contrario HP[índice][detrás] += 1 } } // Ppot: iban rezagados pero avanzaron Ppot = (HP[detrás][adelante] + HP[detrás][empatado] / 2 + HP[empatado][adelante] / 2) / (HPTotal[detrás] + HPTotal[empatado]) // Npot: iban por delante pero se quedaron atrás Npot = (HP[adelantados][atrás] + HP[empatados][atrás] / 2 + HP[adelantados][empatados] / 2) / (HPTotal[adelantados] + HPTotal[empatados]) devolver [ Ppot, Npot ] } 

Aplicabilidad

EHS es aplicable a diversos juegos de póker, incluidos Texas hold 'em y Omaha hold 'em . Debido a la complejidad del algoritmo, no se puede calcular manualmente y se suele utilizar en contextos de inteligencia artificial.

Referencias