Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

328
Views
Heurística minimax frente a poda alfa-beta y tiempo de cálculo

Estoy trabajando en un solucionador minimax para tic-tac-toe en un tablero de 5x5. Mi primer intento tuvo que limitarse a una profundidad recursiva de 7 para limitar el tiempo de cálculo a unos 20 segundos en mi computadora portátil. Luego implementé la poda alfa-beta, así como una función para clasificar los movimientos antes de puntuarlos recursivamente de acuerdo con una heurística (básicamente clasificar los movimientos anteriores que acercaban al jugador a un 5 en raya desbloqueado o filas/columnas bloqueadas /diagonales que el oponente estuvo cerca de ganar). Estos dos cambios redujeron drásticamente el tiempo de procesamiento y sé que funcionaron según lo previsto porque el número total de movimientos evaluados por el algoritmo también se redujo significativamente, lo que indica que se estaba realizando una poda.

Mi pregunta se refiere a mi próximo paso, fue implementar un evaluador de tablero heurístico para calcular un puntaje heurístico para un tablero una vez que haya alcanzado el límite establecido en la profundidad recursiva (antes de esto, simplemente devolví un puntaje de 0). Esta heurística era similar al clasificador de movimientos, pero diferente porque simplemente puntuaba un tablero completo, sin considerar el último movimiento que produjo el tablero.

Mi pregunta es, incluso un evaluador de tablero heurístico bien diseñado no mejoraría el tiempo de procesamiento/reduciría la cantidad de movimientos para evaluar, sino que debería ayudar al algoritmo a elegir un mejor movimiento, ¿verdad?

Dado que solo se aplica en el límite de profundidad recursivo, no tendría un impacto en la poda alfa-beta, ni la puntuación heurística afectaría la clasificación de movimientos, ya que la clasificación ocurre antes de las llamadas recursivas, y el marcador heurístico solo se llama en uno de los casos base recursivos? Solo quiero asegurarme de que entiendo qué efecto debo esperar si diseño bien mi evaluador heurístico.

En ese sentido, realmente solo estoy adivinando cómo puntuar heurísticamente un tablero de tres en raya de 5x5, dando puntos por la cantidad de piezas de Maximizer en una condición de victoria dada que no incluye piezas de Minimizer, y restando puntos por el reverso. Mi código para esto está a continuación, ¡también agradecería cualquier sugerencia!

 const heuristic = (board) => { let score = 0 for (let i = 0; i < 25; i++) { if (board[0][i]) { abConditions[i].forEach(array => { if (board[0][i] === 'o') { let oScore = 0 for (let j = 0; j < 4; j++) { if (board[0][array[j]] === 'o' || board[0][array[j]] === null) { oScore++ } else { oScore = 0 break } } score += oScore } else { let xScore = 0 for (let j = 0; j < 4; j++) { if (board[0][array[j]] === 'x' || board[0][array[j]] === null) { xScore++ } else { xScore = 0 break } } score -= xScore } }) } } return score }

Solo confíe en mí, la matriz abConditions se usa correctamente para verificar todas las condiciones ganadoras en un tablero de 5x5 :)

about 4 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!