Está en la página 1de 19

Teora de Algoritmos Tema V: Algoritmos para la exploracin de grafos 1

Tema 5: Algoritmos para la exploracin de grafos


5.1.- Introduccin. rboles de exploracin

5.2.- La tcnica de la Vuelta Atrs (Backtracking). Esquema general 5.2.1.- El problema de las 8 reinas 5.2.2.- El problema de la mochila 5.2.3.- El problema de las quinielas 5.2.4.- El problema de la reconstruccin de una autopista 5.2.5.- Otros problemas: Laberinto y Salto de Caballo

5.3.- La tcnica de la Ramificacin y Poda (Branch & Bound) 5.3.1.- El problema de la Asignacin de Tareas 5.3.2.- El problema del Viajante de Comercio

5.4.- Grafos y Juegos. Introduccin

5.5.- La heurstica MiniMax. Esquema general 5.5.1.- El juego de Las Tres en Raya 5.6.- La poda -. Esquema general 5.6.1.- El juego de Las Tres en Raya

Teora de Algoritmos Tema V: Algoritmos para la exploracin de grafos 2

5.1.- Introduccin. rboles de exploracin Como ya hemos visto existe una gran cantidad de problemas que se pueden formular en trminos de grafos: con frecuencia el problema original se traduce en buscar un nodo, un camino o un patrn especfico en el grafo asociado En algunas ocasiones las tcnicas estudiadas en los temas anteriores no son aplicables para resolver un problema Solucin: aplicar el algoritomo de fuerza bruta, es decir, realizar una bsqueda exhaustiva por el espacio de posibles soluciones hasta encontrar una que satisfaga los criterios exigidos o constatar que no existe solucin Problema: resulta impracticable si el cardinal del conjunto de soluciones posibles es muy grande Solucin: intentar estructurar el espacio a explorar, tratando de descartar en bloque posibles soluciones no satisfactorias Consideraremos problemas cuyas soluciones se construyen por etapas, es decir, se expresan en forma de n-tuplas (x1, x2,, xn), donde cada xi Si representa la decisin tomada en la etapa i-sima de entre un conjunto finito de alternativas Una solucin habr de minimizar, maximizar o simplemente satisfacer una cierta funcin criterio Se establecen dos categoras de restricciones: o Restricciones explcitas: indican los conjuntos Si a los que pertenecen cada una de las componentes de una tupla solucin o Restricciones implcitas: son las relaciones que se han de establecer entre las componentes de la tupla solucin para satisfacer la funcin criterio (describen la forma en la que se relacionan las xi) El espacio de soluciones estar formado por el conjunto de tuplas que satisfacen las restricciones explcitas y se puede estructurar como un rbol de exploracin: en cada nivel se toma la decisin de la etapa correspondiente

Teora de Algoritmos Tema V: Algoritmos para la exploracin de grafos 3

o Nodo estado: nodo del rbol de exploracin correspondiente a una tupla parcial o a una tupla completa que satisface las restricciones explcitas o Nodo solucin: el correspondiente a una tupla completa que satisface las restricciones implcitas Funciones poda (o test de factibilidad): (obtenidas a partir de la funcin criterio): permiten determinar cundo una tupla parcial nunca va a conducir a una solucin satisfactoria Una vez definido el rbol de exploracin, el algoritmo para resolver el problema consistir en realizar un recorrido por l en cierto orden hasta encontrar la primera solucin o hasta obtener todas las soluciones Si el rbol contiene un nmero elevado de nodos (o si ste es infinito) puede resultar intil o inabordable construirlo explcitamente en memoria antes de aplicar alguna tcnica de recorrido Solucin: utilizar un rbol implcito: rbol para el que se dispone de una descripcin de sus nodos y aristas, de tal manera que se pueden construir partes relevantes de l a medida que progresa el recorrido De esta manera se ahorra: o Tiempo de computacin, siempre que el recorrido tenga xito antes de haber construdo todo el grafo o Memoria, sobre todo cuando se pueden descartar los nodos ya examinados, creando as espacio para poder explorar los nodos siguientes Durante el proceso de recorrido se irn generando sus sucesores: o Nodos vivos: aquellos para los cuales todava no se han generdo todos sus hijos o Nodos en expansin: aquellos cuyos hijos estn siendo generados o Nodos muertos: aquellos que no se pueden expandir, bien porque no hayan superado el test de factibilidad o bien porque todos sus hijos ya hayan sido generados En las siguientes secciones estudiaremos distintas tcnicas genricas de organizar recorridos por un rbol de exploracin

Teora de Algoritmos Tema V: Algoritmos para la exploracin de grafos 4

5.2.- La tcnica de la Vuelta Atrs (Backtracking). Esquema general Es una tcnica de programacin comnmente utilizada para resolver problemas de bsqueda exhaustiva El recorrido por el rbol de exploracin se realiza en profundidad. En dicha bsqueda existe una funcin de factibilidad que determina si a partir de un momento dado es o no posible encontrar una solucin Cualquier combinacin con un elemento no factible se convierte a su vez en combinacin no factible Cuando se encuentra un elemento no factible, se eliminan todas las combinaciones que lo contengan, es decir, cuando se llega a un nodo muerto hay que deshacer la ltima decisin tomada para optar por la siguiente alternativa

Procedimiento Vuelta_Atras(v:Array[1..n], k:entero);

{v es un vector k-prometedor } Inicio Si v es solucin Entonces Devolver (v) {Si_No} Para cada vector w (k+1)-prometedor tal que w[1..k]=v[1..k] hacer Vuelta_Atras(w[1..n], k+1); Fin;
Esquema general Vuelta Atrs

La instruccin Si_No debe estar presente s y slo s es imposible que una solucin que contenga menos de n elementos sea prefijo de otra cualquiera

Teora de Algoritmos Tema V: Algoritmos para la exploracin de grafos 5

5.2.1.- El problema de las 8 reinas


procedure ocho_reinas1; Begin for i1 to 8 do for j1 to 8 do for k1 to 8 do for l1 to 8 do for m1 to 8 do for n1 to 8 do for o1 to 8 do for p1 to 8 do intento(i,j,k,l,m,n,o,p); if solucion(intento) then write(intento); end;
Problema de las ocho reinas (I)

Una reina est bien colocada si no acosa a ninguna de las reinas colocadas hasta el momento Al colocar una reina se intentar colocar la siguiente Cada reina ser colocada en las ocho posibles posiciones Habr una reina por fila del tablero Dos reinas se acosan si: (r1.x = r2.x) (r1.y = r2.y) (Abs(r1.x - r2.x) = Abs(r1.y - r2.y))

Tipos Tablero = vector[1..8] de enteros; Procedimiento Colocar(reinas: Tablero; puestas: entero); Inicio Si puestas=8 Entonces Mostrar_Vector(reinas) Si_No Para i1 hasta 8 hacer Inicio reinas[Puestas+1]i; Si Not Jaque(reinas,puestas+1) Entonces Colocar(reinas,puestas+1); fin; fin;
Problema de las ocho reinas (y II)

Teora de Algoritmos Tema V: Algoritmos para la exploracin de grafos 6

5.2.2.- El problema de la mochila Nueva variante: n tipos de objetos (hay ms de un objeto de cada tipo) Para i = 1, 2, , n; un objeto de tipo i tiene Un peso positivo wi y una ganancia positiva gi Capacidad mxima de la mochila: M Slo se pueden incluir objetos enteros Ejemplo: M=8yn=4 G W 1 3 2 2 5 3 3 6 4 4 10 5

5.2.3.- El problema de las quinielas


Procedimiento Quinielas(patron: Array[1..14]; k: entero); {v es un vector k-prometedor } Inicio Si k=14 Entonces Mostrar(patron) Si_No kk+1; Para cada posible apuesta i (1, x, 2, 1x, ) hacer Si EsPrometedor(patron,i) Entonces patron[k]i; Quinielas(patron,k); fin; Clculo de quinielas

Teora de Algoritmos Tema V: Algoritmos para la exploracin de grafos 7

5.2.4.- El problema de la reconstruccin de una autopista Tenemos N puntos p1, p2,, pN, en el eje de abcisas xi es la abcisa del punto pi Por comodidad x1=0 y los los puntos estn dados de derecha a izqda Estos N puntos determinan N(N-1)/2 distancias (xi-xj) con 1 i, j N, i j Problema: Dado un conjunto D de distancias construir el conjunto X de puntos que lo determinan Ejemplo: D = {1, 2, 2, 2, 3, 3, 3, 4, 5, 5, 5, 6, 7, 8, 10} Como |D| = 15, sabemos que N=6

x(0)=0

x(5)=8

x(6)=10

D={1, 2, 2, 3, 3, 3, 4, 5, 5, 5, 6, 7}

x(0)=0

x(4)=7 x(5)=8

x(6)=10

D={2, 2, 3, 3, 4, 5, 5, 5, 6}

x(0)=0

x(2)=3

x(5)=8

x(6)=10

D={1, 2, 2, 3, 3, 4, 5, 5, 6}

x(0)=0

x(2)=3

x(4)=6

x(5)=8

x(6)=10

D={1, 2, 3, 5, 5}

x(0)=0

x(2)=3

x(3)=5x(4)=6

x(5)=8

x(6)=10

D={}

Teora de Algoritmos Tema V: Algoritmos para la exploracin de grafos


x(1)=0, x(6)=10

x(5)=8

x(4)=7**

x(2)=3

x(3)=6*

x(2)=4*

x(3)=4*

x(4)=6

x(3)=5

rbol de decisin Back-Tracking, Autopista


Procedure Autopista(var X: Array[]; D: Array[]; N: Byte; Var found: Boolean); begin foundFalse; X(1) 0; { por convenio } X(N) DeleteMax(D); { borro el mayor } X(N-1) DeleteMax(D);{borro el mayor (el penltimo inicial)} If (X(N) - X(N-1)) D Then Delete(X(N) - X(N-1), D); { borro esa distancia } { comienza el Backtracking } Puntos(X, D, N, 2, N-2, found); Else found False; { no hay solucin } end; Procedure Puntos(Var X:Array[]; Var D:Array[]; N,Izq,Der:Integer; Var found:Boolean); begin If D = Then found true Else DMax FindMax(D); If (X(j)-DMax) D j / 1 j< Izq, Der < j N Then X(Der) DMax; For 1j<Izq, Der<jN do Delete(X(j)-DMax,D); Puntos(X, D, N, Izq, Der-1, found); If Not found Then { deshacer para Backtracking} For 1j<Izq, Der<jN do Insert(X(j)-DMax,D); If not found And (X(N)-X(j)-DMax)D j / 1j<Izq, Der<jN Then X(Izq)X(N)-DMax; For 1j<Izq, Der<jN do Delete(X(N)-X(j)-DMax,D); Puntos(X, D, N, Izq+1, Der, found); If Not found Then {deshacer para Backtracking} For 1j<Izq, Der<jN do Insert(X(N)-X(j) - DMax,D); end;

Problema de la reconstruccin de una autopista

Teora de Algoritmos Tema V: Algoritmos para la exploracin de grafos 9

5.3.- La tcnica de la Ramificacin y Poda (Branch & Bound) Es otra tcnica de exploracin de espacios de soluciones (rboles de exploracin implcitos) Problema de la Vuelta Atrs: examina un nmero excesivo de nodos (recorrido en profundidad) algoritmos extremadamente lentos Solucin: intentar evitar pasar por una buena parte de los nodos Esquema: Comenzando por la raz del rbol se generan todos sus hijos En cada nodo hijo se calcula el valor de una cota (Funcin cota) del posible valor de aquellas soluciones que se pueden encontrar explorando esa rama del rbol Se comienza la exploracin por el nodo cuya cota sea mejor A la vuelta, se habr obtenido un valor que podar parte de los nodos restantes: aquellos cuya cota sea peor que la devuelta Se sigue con la inspeccin del siguiente nodo segn el valor de la cota calculada en un principio, repitiendo el mismo proceso Si en algn momento se obtiene una solucin con valor mejor, se actualiza dicho valor para tenerlo en cuenta en futuras podas En su versin ms sencilla, el clculo de cotas se combina con un recorrido en profundida o en anchura y slo sirve para: podar ciertas ramas del rbol (o para cerrar caminos de un grafo) seleccionar, de entre los abiertos, aquel camino que parezca ms prometedor explorarlo primero Implementaciones: Recorrido en profundidad: Pila (explora los nodos en orden inverso a su creacin) Recorrido en anchura: Cola (explora los nodos en el mismo orden en que son creados) Ramificacin y Poda: Cola con prioridad (Heap) (utiliza clculos adicionales para decidir qu nodo debe explorarse)

Teora de Algoritmos Tema V: Algoritmos para la exploracin de grafos 10

5.3.1.- El problema de la Asigancin de Tareas En una empresa hay n trabajadores y n tareas a realizar Hay que asignar las n tareas a los n trabajadores, de forma que cada trabajador realice una nica tarea Si al trabajador i (con 1 i n) se le asigna la tarea j (con 1 j n) el coste de realizar esta tarea concreta ser Ci,j (anlogo para el beneficio Gi,j) Dada la matriz de costes (beneficios) completa, el problema de la asignacin de tareas consiste en asignar tareas a los trabajadores de manera que se minimice (maximice) el coste (la ganacia) total al ejecutar las n tareas Algoritmo de Fuerza Bruta: O(n!) Ejemplo: a b c d 1 11 14 11 17 2 12 15 17 14 3 18 13 19 20 4 40 22 23 28

Funcines cota: Suma de los elementos ms pequeos de cada columna (todas las tareas se ejecutan): 11+12+13+22 = 58 Suma de los elementos ms pequeos de cada fila (a todos los trabajadores se les asigna una tarea): 11+13+11+14 = 49 (Se rechaza porque es ms pequea que la anterior)

Teora de Algoritmos Tema V: Algoritmos para la exploracin de grafos 11

Teora de Algoritmos Tema V: Algoritmos para la exploracin de grafos 12

5.3.2.- El problema del Viajante de Comercio Sea G=(N,A) un grafo no dirigido Problema: encontrar el ciclo o circuito hamiltoniano de coste mnimo (camino que parte de un nodo, pasa una sola vez por cada uno de los nodos del grafo y vuelve al nodo de partida) Solucin: construir un rbol donde cada nodo es un camino parcial etiquetado con una cota inferior de la longitud de los caminos completos que cuelgan de l: el mnimo de lo que se empleara en pasar por ellos Funcin cota: supondremos que la mitad de la distancia entre dos nodos (i, j) es debida al nodo i y la otra mitad al nodo j Ejemplo: Matriz de distancias:

1 2 3 4 5

1 0 14 4 11 18

2 14 0 5 7 7

3 4 7 0 9 17

4 10 8 7 0 4

5 20 7 16 2 0

el trayecto 1-2: 14 salir del 2 hacia 3, 4 5: mnimo 7/2 pasar por 3 sin venir de 1 y sin llegar a 2: mnimo 11/2 bis para 4: mnimo 3 bis para 5: mnimo 3 volver a 1 desde 3, 4 5: mnimo 2 el trayecto 1-3-2: 9 salir del 2 hacia 4 5: mnimo 7/2 pasar por 4 sin venir de 1 ni de 3 y sin llegar a 2 ni a 3: mnimo 3 bis para 5: mnimo 3 volver a 1 desde 4 5: mnimo 11/2

Teora de Algoritmos

1 Cota 20

Tema V: Algoritmos para la exploracin de grafos

1,2 Cota 31

1,3 Cota 24

1,4 Cota 29

1,5 Cota 41

1,3,2 Cota 24

1,3,4 Cota 30,5

1,3,5 Cota 40,5

1,4,2 Cota 40

1,4,3 Cota 41,5

1,4,5 Cota 29

1,3,2,4 = 1,3,2,4,5,1 Valor 37

1,3,2,5 = 1,3,2,5,4,1 Valor 31

1,4,5,2 = 1,4,5,2,3,1 Valor 30

1,4,5,3 = 1,4,5,3,2,1 Valor 48

Branch And Bound

13

Teora de Algoritmos Tema V: Algoritmos para la exploracin de grafos 14

5.4.- Grafos y Juegos. Introduccin Existen muchos juegos de estrrategia o ingenio en los que se enfrentan dos jugadores para conseguir la victoria Estos juegos se pueden resolver utilizando un grafo dirigido asociado Nodo: situacin particular del juego Arista: jugada o movimiento vlido entre dos situaciones El grafo es infinito si no hay lmite, a priori, del nmero de situaciones posibles en el juego Por sencillez: el juego se desarrolla entre dos jugadores que se van turnando las reglas son las mismas para ambos jugadores (juego simtrico) la casualidad no interviene en el resultado (juego determinista) Ningn caso del juego puede tener una duracin infinita y ninguna situacin de juego ofrece un nmero infinito de jugadas vlidas para el jugador a quin corresponda ese turno Situacin terminal: aquella que no ofrece ninguna jugada vlida. Se corresponden con nodos que no poseen sucesores Para determinar una estrategia ganadora en un juego de esta clase, se asocia a cada nodo del grafo una etiqueta: victoria, derrota o empate. Esta etiqueta alude a la perspectiva de un jugador que vaya a pasar a la situacin correspondiente, suponiendo que ninguno de los jugadores comete ningn error Asignacin de etiquetas: Se etiquetan las situaciones terminales (depender del juego en cuestin) Una situacin no terminal es una situacin de victoria si al menos uno de sus sucesores es una situacin de derrota Una situacin no terminal es una situacin de derrota si todos sus sucesores son situaciones de victoria Cualquier otra situacin no terminal da lugar a una situacin de empate. En este caso, entre los sucesores, debe contarse al menos una situacin de empate, posiblemente con algunas situaciones de victoria Una vez que se han asigando las etiquetas, se puede leer en el grafo la estrategia a seguir para conseguir la victoria

Teora de Algoritmos Tema V: Algoritmos para la exploracin de grafos

Para el desarrollo de algunos juegos ser necesario almacenar algn tipo de informacin adicional en cada situacin Inconveniente: para algunos juegos el grafo contiene tantos nodos que es totalmente inviable explorarlo en su totalidad Solucin: explorar el grafo en las proximidades de la situacin actual para ver cmo puede evolucionar la situacin (Heurstica MiniMax) Estrategias de bsqueda: exploracin en anchura o en profundidad 5.5.- La heurstica MiniMax. Esquema general En algunos juegos, como en el ajedrez, queda descartado un examen exhaustivo del grafo asociado Solucin: realizar una bsqueda parcial en torno a la situacin actual (simulacin del razonamiento humano: intentar maximizar la optimalidad de sus posiciones a la vez que se minimizan las del contrario) La exploracin se detiene normalmente antes de alcanzar posiciones terminales, empleando uno entre varios criterios posibles Las posiciones en que se detiene la exploracin se evalan de forma heurstica La estrategia general consiste en utilizar una funcin esttica de evaluacin que atribuya un valor a cada posible situacin: Valor positivo alto: gana el jugador A Valor negativo alto: gana el jugador B Valor cero o prximo a cero: empate

15

Dependiendo de cada juego, esta funcin de valuacin debe tener en cuenta muchos factores Es preciso llegar a un compromiso entre la precisin de la funcin y el tiempo que se necesita para calcularla Cuando se aplique a una situacin terminal debe devolver un valor de +, 0 - dependiendo de si gana el jugador A, empatan o gana el jugador B Comentario final: aunque como heurstica que es no permite asegurar que se gane, lo que hace es hallar una jugada de la cual puede esperarse razonablemente que se encuentre entre las mejores jugadas disponibles

Teora de Algoritmos Tema V: Algoritmos para la exploracin de grafos 16

Funcion Busca(B: Tablero; modo: (Min,Max)): Real; { Evala la utilidad del tablero B, en el supuesto } { de que es el movimiento del jugador 1 si modo=Max } { o es el movimiento del jugador 2 si modo=Min } { Devuelve la Utilidad } variables C: Tablero; { Un hijo de B } valor: Real; { Valor min o max temporal } Inicio Si B es una Hoja Entonces Devolver (Utilidad(B)) Si_No {asigna el valor inicial mn o mx de los hijos} Si modo = Max Entonces valor - Si_No valor Para todo C hijo de B hacer Si modo=Max Entonces valor max(valor,Busca(C,Min)) Si_No valor min(valor,Busca(C,Max)); Devolver(valor); Fin; Algoritmo general de la heurstica MiniMax

Posible mejora: explorar con ms profundidad los nodos ms prometedores

5.5.1.- El juego de Las Tres en Raya


Procedure Computadora(Var Tablero: Array[1..3,1..3]; Var MejorM, Valor: Integer); Var Ns, i, ValorR: Integer; { Ns = No sirve } begin if Tablero_Lleno(Tablero) then Valor Empate else if CompGanaEnUnPaso(Tablero,MejorM) then Valor Gana else Valor Pierde; For i1 To 9 do if Vacio(Tablero,i) then Coloca(Tablero,i,X); Hombre(Tablero,Ns,ValorR); DesColoca(Tablero,i); if ValorR > Valor then Valor ValorR; MejorM i; end; Heurstica Minimax (Tres en Raya): Procedimiento de la Computadora

Teora de Algoritmos Tema V: Algoritmos para la exploracin de grafos 17

Procedure Hombre(Var Tablero: Array[1..3,1..3]; Var MejorM, Valor: Integer); Var Ns, i, ValorR: Integer; { Ns = No sirve } begin if TableroLleno(Tablero) then Valor Empate else if HombreGanaEnUnPaso(Tablero,MejorM) then Valor Pierde else ValorGana; For i1 to 9 do if Vacio(Tablero,i) then Coloca(Tablero,i,O); Computadora(Tablero,Ns,ValorR); DesColoca(Tablero,i); if ValorR < Valor then Valor ValorR; MejorM i; end; Heurstica Minimax (Tres en Raya): Procedimiento del Hombre

0 X X O O O 1 X X X X O O O 1 X O X X X O O O 0 X O X X X O O X O 0 X X X X O O O -1 X X X X X O O X O 0 X O X X O O X O 0 X O X X X O O X O 0 X X O X O O X O 1 X X X O X O O X O 1 X

X X O O O O -1

rbol de decisin: Tres en Raya

Teora de Algoritmos Tema V: Algoritmos para la exploracin de grafos

5.6.- La poda -. Esquema general

18

Problema de la estrategia MniMax: examina un nmero elevado de nodos, lo que implica algoritmos poco eficientes si dicha estrategia se lleva hasta sus ltimas consecuencias Con una simple consideracin se puede evitar pasar por una buena parte de los nodos La exploracin de ciertas ramas de un rbol se puede abandonar pronto si la informacin que se dispone de ellas ya es suficiente para mostrar que no pueden llegar a tener influencia en el valor de los nodos pertenecientes a las zonas ms altas del rbol (Ramificacin y Poda) Este tipo de mejora se conoce con el nombre de poda - Dependiendo del jugador al que le toque realizar el movimiento se aplicar una Poda- o una Poda-
Funcion Busca(B: Tablero; modo: (Min,Max); Alfa, Beta: entero): Real; { Evala la utilidad del tablero B, en el supuesto } { de que jugador 1 = Max y jugador 2 = Min. } { Poda . Devuelve la Utilidad. } Variables C: Tablero; { Un hijo de B } valor: Real; { Valor mnimo o mximo temporal } Temp: Real; Inicio Si B es una Hoja Entonces Devolver(Utilidad(B)) Si_No { asigna el valor inicial min o max de los hijos } Si modo = Max Entonces valor Alfa Si_No valor Beta Para todo C hijo de B hacer Si modo=Max Entonces Temp Busca(C,Min,Valor,Beta); Si Temp < Beta Entonces valor max(valor,Temp) Si_No Devolver(Temp) Si_No Temp Busca(C,Min,Alfa,Valor); Si Temp > Alfa Entonces valor min(valor,Temp) Si_No Devolver(Temp) Devolver(Valor); Fin; Algoritmo general de Poda -

Teora de Algoritmos Tema V: Algoritmos para la exploracin de grafos 19

5.6.1.- El juego de Las Tres en Raya


Procedure Computadora(Var Tablero: Array[1..3,1..3]; Var MejorM, Valor: Integer; Alfa, Beta: Integer); Var Ns, i, ValorR: Integer; { Ns = No sirve } begin if TableroLleno(Tablero) then Valor Empate else if CompGanaEnUnPaso(Tablero,MejorM) then Valor Gana else Valor Alfa; i1; While (i 9) and (Valor < Beta) do begin if Vacio(Tablero,i) then Coloca(Tablero,i,X); Hombre(Tablero,Ns,ValorR,Valor,Beta); DesColoca(Tablero,i); if ValorR > Valor then Valor ValorR; MejorM i; i i+1; end; end; Problema de las tres en raya para la computadora, Poda - (I) Procedure Hombre(Var Tablero: Array[1..3,1..3]; Var MejorM, Valor: Integer; Alfa, Beta: Integer); Var Ns, i, ValorR: Integer; { Ns = No sirve } begin if TableroLleno(Tablero) then Valor Empate else If HombreGanaEnUnPaso(Tablero,MejorM) then Valor Pierde else Valor Beta; i1; While (i9) and (Valor>Alfa) do begin if Vacio(Tablero,i) then Coloca(Tablero,i,O); Hombre(Tablero,Ns,ValorR,Alfa,Valor); DesColoca(Tablero,i); if ValorR < Valor then Valor ValorR; MejorM i; ii+1; end; end; Problema de las tres en raya para el hombre, Poda -

También podría gustarte