Aprende programación






7 sept. 2009

Screencast Solo Programadores 143 - Algoritmo minimax. Inteligencia artificial para jugar al tres en raya.


En el siguiente screencast vamos a programar un juego del tres en raya y lo realizaremos con una web JSP. Durante el podcast explicaremos como instalar las herramientas necesarias e inicialmente realizaremos un diseño sencillo.

Sin embargo, a medida que vayamos avanzando vamos a programar que podamos jugar contra la máquina utilizando un algoritmo que se emplea en Inteligencia Artificial llamado Minimax. Este algoritmo se parece bastante a los algoritmos de busqueda con heuristica ya que su representación es igualmente en forma de árbol pero con una particularidad. Al ser un juego con adversario la maquina no se puede saber que movimientos va a realizar el jugador ya que aún no has movido. Sin embargo, lo que si se puede hacer es limitar las opciones de victoria. Por ello, en el caso del algoritmo minimax evalua la heuristica del tablero según quien mueve la ficha y asimilando también los movimientos del contrario y busca el mejor valor en su turno (la máxima heurística) y el peor movimiento del contrincario (la minima heurística). De ahí que se llame minimax, de mínimo y máximo. Al pretender recorrer un árbol también hemos utilizado recursividad, al igual que hicimos con la resolución del Sudoku (aunque un árbol también es posible recorrerlo de forma iterativa).

Pues nada, espero que os guste el screencast y aprendais un algoritmo más que se imparte en la asignatura de inteligencia artificial.

11 comentarios:

  1. Y después de minimax a mejorar con alfabeta :D . La verdad es que es increible lo sencillo que es el algoritmo. Yo estoy programando un motor de ajedrez y aún me sigo sorprendiendo de lo 'fácil' que es obtebener un buen resultado a un problema complejo con este método.

    Felicidades por el blog

    ResponderEliminar
  2. No consigo descargar el codigo fuente,si puedes vuelvelo a subir.Gracias

    ResponderEliminar
  3. como puedo hacer un juego como este con la misma interface pero que juegue jugador1 vs jugador2??? necesito ayuda por favor tu vídeo es muy bueno me sirvió de guía.

    ResponderEliminar
  4. Buenas,

    Hacerlo a dos jugadores es más facil. Solo debes guardar en una variable el turno que vaya cambiando de 0 a 1 y viceversa. Entonces por cada pieza que se pone la variable alterna el valor. Para alternar utilizar turno = 1-turno;

    Saludos, Jorge

    ResponderEliminar
  5. Hola! Me gustaria que volvieras a subir tu video, no entra la paguina. Esta muy bueno, apenas llevo poco estudiando y el video incompleto me ha servido más para a prender que mi profesor :D por eso me gustaria terminarlo de ver

    ResponderEliminar
  6. aPOYO LA IDEA. El video completo seria de gran ayuda. Por favor subelo y gracias XD.

    ResponderEliminar
  7. Puedes volver a subir el codigo.
    Gracias

    ResponderEliminar
  8. si puedes acolitar el resto del video

    ResponderEliminar
  9. puedes volver a envir el codigo?? no se habre la paguina..sta interesante el video

    ResponderEliminar