Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

249
Vistas
Tablas de transposición para el motor de ajedrez Python

Esta es una continuación de mi última publicación. El código funciona sin errores y puede calcular el próximo mejor movimiento. He estado investigando cómo incorporar tablas de transposición y mover el orden en mi función negamax para que funcione más rápido y con mayor precisión, pero parece algo difícil y avanzado para un principiante como yo.

Puedes encontrar mi código aquí .

Mientras investigaba en la wiki de programación de ajedrez, encontré un código de muestra para las tablas de transposición:

 def negamax(node, depth, alpha, beta, color): alphaOrig = alpha ## Transposition Table Lookup; node is the lookup key for ttEntry ttEntry = transpositionTableLookup(node) if ttEntry.is_valid is True and ttEntry.depth >= depth: if ttEntry.flag == EXACT : return ttEntry.value if ttEntry.flag == LOWERBOUND: alpha = max(alpha, ttEntry.value) if ttEntry.flag == UPPERBOUND: beta = min(beta, ttEntry.value) if alpha >= beta: return ttEntry.value if depth == 0 or node is terminal_node: return color* heuristic_value_of_node childNodes = domove(node) childNodes = orderMoves(childNodes) bestValue = -99999 for child in childNodes: bestValue = max(bestValue, -negamax(child, depth - 1, -beta, -alpha, -color)) alpha = max(alpha, bestValue) if alpha >= beta: break ##Transposition Table Store; node is the lookup key for ttEntry ttEntry.value = bestValue if bestValue <= alphaOrig: ttEntry.flag = UPPERBOUND if bestValue >= beta: ttEntry.flag = LOWERBOUND else: ttEntry.flag = EXACT ttEntry.depth = depth transpositionTableStore(node, ttEntry) return bestValue

Intenté hacer algunas modificaciones para integrarlo en mi código, pero no obtuve ningún resultado. También vi algo sobre almacenar claves hash con una clave Zobrist para las posiciones, pero no entendí bien cómo funcionaba, así que descarté la idea. Actualmente algo atascado con estos problemas y no sé cuál es el siguiente paso.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Para usar tablas de transposición, "necesita" usar el hash de Zorbrist. El hashing le da a cada posición un código (casi) único que almacenas en la tabla de transposición junto con su evaluación. Entonces, para explicarlo fácilmente, si la posición actual que está buscando se encuentra en su tabla de transposición, no tendrá que evaluarla nuevamente, solo use el valor almacenado.

Las claves de Zorbrist son una pesadilla para hacerlo bien y muy difíciles de depurar. Si le ayuda, puede consultar mi implementación enEndamat Chess Engine , pero dado que puede tener un enfoque diferente, podría ser más fácil leer cómo funcionan las teclas de Zorbrist e intentar hacerlo bien para su implementación.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda