Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tema 3
Tema 3
Ej.: 8 puzle
2 8 3 1 6 4 7 5
Estado inicial
1 2 3 8 4 7 6 5
Estado objetivo
Espacio de estados del problema: 362.880 (9!) 2 x 181.440 N Representacin: Matriz 3x3 Movimientos:
S
Precondiciones: Existir el lugar a donde se mueve
1 2 3 8 4 7 6 5
Solucin: Movimientos que conduzcan desde el estado inicial al (o a un) estado objetivo
N-N-O-S-E
Otras restricciones:
Nmero de movimientos sea mnimo Asignar costes a cada movimiento, buscando la solucin de coste mnimo
Problema de representacin
Pasar del enunciado de un problema a la representacin formal del mismo (operationalization) Etapas: 1) Definicin de un espacio de estados que contenga todos las posibles configuraciones de los objetos relevantes 2) Especificar uno o ms estados, llamado(s) estado(s) inicial(es), desde donde comenzar el proceso de resolucin
3) Especificar uno o ms estados, llamado(s) estado(s) final(es), que sean soluciones aceptables 4) Especificar las reglas que definen las acciones, operadores o movimientos disponibles, teniendo en cuenta:
Asunciones que se toman por defecto Cmo de general sern las reglas Cunto trabajo de solucionar el problema es precomputado y metido en reglas
Sistemas de produccin
Constan de: Un conjunto de reglas de produccin (base de conocimiento) Una o ms bases de hechos que contendrn informacin apropiada a la tarea particular a resolver Una estrategia de control, que especificar el orden de aplicacin de las reglas Un aplicador de reglas Se encargarn de encontrar un camino a travs del espacio de estados desde un estado inicial a uno final
Estrategias de control
Requerimientos de una buena estrategia de control: Que genere un movimiento cambiante Que sea sistemtica Clasificacin de las estrategias de control en funcin del carcter definitivo de la exploracin de ramas: Bsquedas Irrevocables
No hay posibilidad de replantear las decisiones tomadas
Bsquedas Tentativas
Es posible la vuelta atrs
Dos simples estrategias de bsqueda podran ser: Bsqueda en anchura (Breadth-First) Bsquedas en profundidad (Depth-First) Ej.: Viajante de Comercio (TSP) Espacio de estados:
Lista con las ciudades que se han visitado
Reglas:
Del tipo: Si No se ha visitado la ciudad i entonces Ir a la ciudad i Si Se han visitado todas la ciudades entonces Ir a la ciudad origen
Estado inicial:
Lista que contiene nicamente la ciudad origen
Estado objetivo:
Lista que comienza y termina con la ciudad origen, poseyendo al resto, y cuya suma de distancias sea mnima
Opciones de solucin:
Recorres todos los caminos y quedarnos con el mnimo -> Dadas N ciudades !!!! habrn (N-1)! caminos !!!! Si N=10 -> !!! 3.628.800 caminos !!! Se produce el fenmeno de explosin combinatoria Caminos
N
Estrategia branch-and-bound -> Dejar de explorar aquellos que empezaran a ser ms largos que el ms corto hasta ahora Slo se retrasa levemente el fenmeno de explosin combinatoria
Bsquedas Heursticas
Heurstica es una tcnica que mejora la eficiencia de un proceso de bsqueda, sacrificando posiblemente su completitud En general suelen mejorar la calidad de los caminos que se exploran Pueden existir: Heursticas de propsito general:
Aplicables a gran variedad de problemas
Ciertas heursticas pueden no asegurar la consecucin de una solucin ptima, pero si lo suficientemente buena
En algunas heursticas es posible demostrar su mayor seguridad, esto es mas difcil cuando: Se hace arduo cuantificar el valor de una solucin Difcil formalizar el conocimiento para realizar una anlisis matemtico sobre su efecto sobre la bsqueda Argumentos en favor de la utilizacin de heursticas: Poder evitar la cada en explosin combinatoria Raramente es necesario encontrar una solucin ptima, suele ser suficiente encontrar una satisfactoria Aunque en sus peores casos las aproximaciones heursticas no son buenas, dichos casos raramente ocurren El tratar de comprender porque una heurstica funciona o no suele llevar a un conocimiento mayor del problema
10
Funcin heurstica que evale estados individuales indicando como son de prometedores Debemos determinar: Aspectos del estado del problema a utilizar Cmo evaluar dichos aspectos, que peso asignar a cada uno de ellos Algunas funciones heursticas simples:
La ventaja materia sobre oponente La suma de las distancia recorridas Sumar 1 por cada lnea en que se pueda ganar y tengamos al menos 1 pieza, y 2 si tenemos 2 piezas
En general la inteligencia artificial se podra definir como el estudio de tcnicas para resolver problemas exponenciales duros en tiempo polinomial en base a explotar el conocimiento acerca del problema
11
Recuperabilidad de los pasos Existen problemas para los cuales los pasos dados para intentar resolverlos que no hallan fructificado pueden ser ignorados, ya que su estado no vara substancialmente En otros, dichos pasos pueden ser recuperados mediante secuencias de deshacer pasos Puede ocurrir que sean irrecuperables
12
Ej.:
Resolucin de teoremas 8-puzle Ajedrez
Predictibilidad del universo Puede que no se pueda predecir con certeza lo que ocurrir tras un movimiento Ej.: Juego de cartas Se utilizan planificaciones que estimen las elecciones con ms alta probabilidad, y en base a ellas tomar decisiones, ayudados por la realimentacin del entorno Problemas duros, ya que puede crecer exponencialmente el nmero de caminos a explorar con los puntos impredecibles
13
Tendremos entonces:
Problemas de bsqueda del mejor camino Problemas de bsqueda de cualquier camino
Ej.: T.S.P. Solucin como un camino o un estado La solucin puede venir dada por un camino que lleve a un estado objetivo, o bien el estado objetivo en si mismo Ej.:
Problemas de cubos Comprensin del Lenguaje Natural
Podemos reformular el problema -> haciendo que cada estado sea el camino recorrido hasta el momento Para ciertos problemas es ms natural formular el problema como situaciones del espacio, y no como secuencia de operaciones -> posibilidad de almacenar el camino seguido para su solucin
14
Interaccin humana Los problemas pueden necesitar una comunicacin con los usuarios para:
Dar ms informacin al programa Dar ms informacin al usuario
As distinguimos:
Problemas Solitarios Se resuelve el problema sin intercomunicacin ni explicacin de su razonamiento, a partir de su descripcin Problemas Conversacionales Se provee al ordenador y usuario de informaciones adicionales
Clasificacin de problemas
Muchos problemas pueden caer dentro de clases concretas: Problemas de Clasificacin
Diagnosis mdicas y mecnicas
Proponer y refinar
Planificacin y diseo
Para nuevos problemas se pueden buscar similitudes con los ya conocidos, y tratar de utilizar sus mtodos de resolucin
15
16
Los sistemas conmutativos suelen ser tiles para resolver problemas ignorables, de hecho las dos definiciones son esencialmente las mismas Dichos sistemas necesitan de estrategias que eviten caminos redundantes, adems, al descubrir que se ha errado en un camino pueden continuar tiles cuando las cosas no cambian, sino se crean Los parcialmente conmutativos y no montonos, al igual que los anteriores debe de tenerse cuidado con los estados duplicados Ocurren cambios, pero son reversibles y el orden de operacin no importa Los no parcialmente conmutativos son tiles para problemas en los que ocurran cambios irreversibles, necesitados de correctas decisiones o planificacin Son menos propensos a producir nodos duplicados
17
Direccin de bsqueda
Hacia adelante Se parte de un estado inicial y se intenta llegar a un estado objetivo Guiado por los datos Hacia atrs Se parte de algn estado objetivo y se intenta llegar a uno inicial Guiado por los objetivos Bidireccional Combinacin de los dos
18
Ej.: 8 puzle R1
Si La casilla 1 esta vaca y la casilla 2 contiene la pieza n entonces La casilla 2 esta vaca y la casilla 1 contiene la pieza n
R2
Si La casilla 1 esta vaca y la casilla 4 contiene la pieza n entonces La casilla 4 esta vaca y la casilla 1 contiene la pieza n
Factores de eleccin hacia adelante o hacia atrs Comparacin del nmero de estados iniciales y finales Comparacin del factor de ramificacin Necesidades de justificar el razonamiento Tipos de eventos que disparan las etapas de resolucin La mayora de las tcnicas de bsqueda pueden utilizar ambos tipos de encadenamiento
19
A pesar de que existan reglas que son utilizables por ambos, en la prctica no siempre es as, distinguindose: Reglas hacia-adelante
Almacenan conocimiento para responder a ciertas configuraciones de entrada
Reglas hacia-atrs
Almacenan conocimiento para alcanzar ciertas metas
Bsquedas bidireccionales Se puede comenzar la bsqueda hacia adelante en simultneo con otra hacia atrs, cuando lleguemos a un punto en que los dos caminos se cruzan tendremos la solucin
Resultados empricos muestran que para bsquedas ciegas es bastante efectiva
Pueden utilizarse programas que utilicen bsqueda hacia adelante en unos momentos y hacia atrs en otros, segn resulte ms beneficioso
20
21
ESTRATEGIAS DE CONTROL
Bsqueda en profundidad
Profundidad(Lista-Estados-Iniciales, Objetivo, Reglas) -> Estado-Objetivo Lista-frente = Lista-Estados-Iniciales mientras Not(Vacia(Lista-frente)) And (Not(Objetivo(Primero(Lista-frente)))) Estado-Actual = Primero(Lista-frente) Lista-frente = Resto(Lista-frente) Lista-hijos = Aplicar(Estado-Actual, Reglas) Lista-frente = Aadir(Lista-hijos, Lista-frente) fin_mientras si Vacia(Lista-frente) entonces retornar(fracaso) sino retornar(Primero(Lista-frente)) fin_si
22
Bsqueda en anchura
Anchura(Lista-Estados-Iniciales, Objetivo, Reglas ) -> Estado-Objetivo Lista-frente = Lista-Estados-Iniciales mientras Not(Vacia(Lista-frente)) And (Not(Objetivo(Primero(Lista-frente)))) Estado-Actual = Primero(Lista-frente) Lista-frente = Resto(Lista-frente) Lista-hijos = Aplicar(Estado-Actual, Reglas) Lista-frente = Aadir(Lista-frente, Lista-hijos) fin_mientras si Vacia(Lista-frente) entonces retornar(fracaso) sino retornar(Primero( Lista-frente)) fin_si
23
24
25
Bsqueda en profundidad con tratamiento de nodos visitados y caminos (prefiriendo caminos cortos)
Profundidad(Lista-Estados-Iniciales, Objetivo, Reglas) -> Estado-Objetivo para cada Estado de Lista-Estados-Iniciales hacer Padre(Estado) = nulo Pasos(Estado) = 0 fin-para Lista-frente = Lista-Estados-Iniciales Visitados = { } mientras Not(Vacia(Lista-frente)) And (Not(Objetivo(Primero(Lista-frente)))) Estado-Actual = Primero(Lista-frente) Lista-frente = Resto(Lista-frente) Visitados = Union(Visitados, Estado-Actual ) Lista-hijos = Aplicar(Estado-Actual, Reglas )
26
para cada Hijo de Lista-hijos hacer si Pertenece(Hijo, Visitados) entonces si Pasos(Hijo) > (Pasos(Estado-Actual) + 1) entonces Pasos(Hijo) = Pasos(Estado-Actual) + 1 Padre(Hijo) = Estado-Actual Lista-Frente = Aadir(Hijo, Lista-frente) Visitados = Visitados - Hijo fin_si sino si Pertenece(Hijo, Lista-frente) entonces Extraer(Hijo, Lista-frente) si Pasos(Hijo) > (Pasos(Estado-Actual) + 1) entonces Pasos(Hijo) = Pasos(Estado-Actual) + 1 Padre(Hijo) = Estado-Actual fin_si sino Pasos(Hijo) = Pasos(Estado-Actual) + 1 Padre(Hijo) = Estado-Actual fin_si Lista-Frente = Aadir(Hijo, Lista-frente) fin_si fin_para fin_mientras si Vacia(Lista-frente ) entonces retornar(fracaso) sino retornar(Primero(Lista-frente)) fin_si
27
Bsquedas en escaladas
La eficacia de la bsqueda en profundidad puede aumentarse si tenemos una funcin heurstica que nos indique las expectativas de xito de los nodos hijos, y as ir a visitar primero el ms prometedor Es posible que dicha funcin pueda ser compaginada con el test de estados objetivos, con la consiguiente disminucin de costos El aadir vuelta atrs puede evitar los nodos sin ramificaciones o hijos con pobres valores Escalada(Lista-Estados-Iniciales, Objetivo, Reglas, Heurstica) -> Estado-Objetivo
Lista-frente = Lista-Estados-Iniciales mientras Not(Vacia(Lista-frente)) And (Not(Objetivo(Primero(Lista-frente)))) Estado-Actual = Primero(Lista-frente) Lista-frente = Resto(Lista-frente) Lista-hijos = Aplicar(Estado-Actual, Reglas) Lista-hijos = Podar(< Heurstica(Estado-Actual), Ordenar(Heurstica, Lista-hijos)) Lista-frente = Aadir(Lista-hijos, Lista-frente) fin_mientras si Vacia(Lista-frente) entonces retornar(fracaso) sino retornar(Primero(Lista-frente)) fin_si
28
Con soluciones cuasi-ptimas podramos terminar cuando no existiera una solucin mejor a la que moverse entre los hijos de un estado dado Podramos encontrar distintos problemas: Existencia de mximos locales, con lo que obtenemos optimizacin local, pero no global
Cmo evitarlos? Vuelta atrs
Existencia de reas planas, con lo que no hay direcciones privilegiadas para moverse
Cmo evitarlos? Saltos grandes o mltiples pasos
Si la funcin heurstica cae repentinamente al movernos hacia la solucin La escalada es un mtodo local, con lo que se asegura un retraso en la explosin combinatoria, en contra los mtodos globales aumentan ms la efectividad La escalada y posteriores mtodos que veremos se encuadran dentro de los denominados de gradiente
29
A H G F E D C B
7 6 5 4 3 2 1 0
H G F E D C B A
7 6 5 4 3 2 1 0
Estado final ( 8) ( 28 )
Heurstica 1: Sumar 1 por cada bloque que repose sobre el mismo elemento que en el final, restar 1 por cada bloque que no lo haga A H G F E D C B
(4) 7 6 5 4 3 2 1 0
H A
(4)
1 0
G F E D C B
5 4 3 2 1 0
G F E D C B
( -15 )
5 4 3 2 1 0
( -28 )
( -16 )
(4)
Heurstica 2: Por cada bloque que tiene la estructura de soporte correcta, sumar 1 por cada bloque perteneciente a dicha estructura; si su estructura es incorrecta, restar 1 por cada bloque de sta
30
Recristalizacin simulada
Variante de la escalada, que acepta ciertos movimientos en que tomemos caminos con valores heursticos inferiores a los del estado actual Trata de hacer una exploracin lo suficientemente amplia al principio para que al final las solucin sea insensible al estado inicial Tiene como ventajas las de disminuir la probabilidad de caer en mximos locales, reas planas o aristas Tradicionalmente existe un cambio de notacin: funcin heurstica => funcin objetivo maximizar => minimizar Se basa en el principio fsico de templado de metales: Fusin y enfriamiento gradual hasta encontrar un estado de mnima energa Existe probabilidad exp(-inc(E)/k*t) de transiciones a estados con energas ms altas Se utiliza en problemas con alta ramificacin Para calcular sus parmetros adecuados, usualmente se hacen experimentaciones y se comparan la calidad de sus soluciones
31
32
33
A C 5 E 4 D F 6
A B G 6 H 5 C 5
I 2
34
C 10 10 13 E C B
13 6
B
7
D
10
E
13
B
7
D
10
E
13
E
15
C B ((A)) 0 ((A C)(A B)(A D)(A E)) D B E C D 6 7 10 13 11 13 15 14 17 ((A B)(A D)(A C D)(ACB)(A E)(ACE)) 7 10 11 13 13 15 ((A D)(A C D)(ACB)(A E)(ABC)(ACE)(A B D)(A B E)) 10 11 13 13 14 15 17 17 ((A C D)(ACB)(A E)(ABC)(A D C)(ACE)(A D E)(A B D)(A B E)(A D B)) 11 13 13 14 15 15 16 17 17 20
D
10
E
13
E
17
De esta forma queda asegurado que el primer objetivo que se encuentre ser el ptimo Esta estrategia recibe un nombre propio: branchand-bound
35
Como ya se dijo, el coste de dicha estrategia es muy elevado ( tiempo exponencial con el nmero de ciudades ), ya que puede ser bastante grande el nmero de caminos a recorrer Podramos utilizar otra funcin heurstica, como la del vecino ms prximo, que junto a la estrategia de escalada para el ejemplo nos conduce al ptimo Pero hay un problema, de esta forma no se asegura que el primer objetivo encontrado sea el ptimo
f = g + h
Donde: g : es la medida del coste desde el estado inicial al estado actual h: es la estimacin del coste necesario para alcanzar un estado final ms prximo partiendo del estado actual Luego f estimar el coste de un camino desde el estado inicial al estado final, pasando por el estado actual
36
Algoritmo A
El algoritmo A resulta de aplicar un primeroel-mejor mediante una funcin heurstica subdividida y eliminacin de caminos redundantes (programacin dinmica) A(Lista-Estados-Iniciales, Objetivo, Reglas, coste, h) -> Estado-Objetivo
Lista-frente = Lista-Estados-Iniciales mientras Not( Vacia(Lista-frente)) And (Not(Objetivo(Primero(Lista-frente)))) Estado-Actual = Primero(Lista-frente) Lista-frente = Resto(Lista-frente) Lista-hijos = Aplicar(Estado-Actual, Reglas) para cada Hijo de Lista-hijos hacer si Pertenece(Hijo, Lista-frente) entonces si g(Hijo) > (g( Estado-Actual) + coste(EstadoActual->Hijo)) entonces g(Hijo) = g(Estado-Actual) + coste(Estado-Actual >Hijo) f(Hijo) = g(Hijo) + h(Hijo) Lista-frente = Extraer(Hijo, Lista-frente) si_no Lista-Hijos = Extraer(Hijo, Lista-Hijos) fin_si sino g(Hijo) = g(Estado-Actual) + coste(Estado-Actual >Hijo) f(Hijo) = g(Hijo) + h(Hijo) fin_si fin_para
37
Lista-hijos = Ordenar(f, Lista-hijos) Lista-frente = Fusionar(Lista-hijos, Lista-frente) fin_mientras si Vacia(Lista-frente) entonces retornar(fracaso) sino retornar(Primero(Lista-frente)) fin_si
En dicho algoritmo se expande un nodo no slo por lo prometedor que ste parezca (h), sino tambin en base a la bondad del camino que llega hasta l (g) Si seleccionamos g=0 entonces nos moveremos siempre hacia el nodo que parezca ms cercano a la solucin (Primero el mejor) Si seleccionamos coste(X)=1 entonces encontramos caminos con pocos pasos Si queremos buscar una solucin que recorra menores distancias, emplee menores recursos o energa debemos colocar los costes de las reglas al valor adecuado segn sus operaciones Sirve tanto para hallar caminos de coste mnimo como para hallar soluciones rpidamente Si h coincide con h entonces convergeremos directamente a la solucin
38
Si h=0 entonces: Si g=0 entonces -> bsqueda aleatoria Si costes(X)=1 -> bsqueda en anchura
Admisibilidad de h
Si h es siempre una subestimacin de h entonces el algoritmo se denomina A* y tiene la caracterstica de que siempre encuentra la solucin ptima
A A
B
1+3
C
1+4
D
1+5
B
1+3
C
1+4
D
1+5
E
2+3
E
2+3
H
2+3
F
3+3
F
3+2
I
3+0
Subestimacin
G
4+0
Sobrestimacin
Si es poco frecuente que h sobrestime a h por mas de ,entonces el algoritmo A ser tambin poco frecuente que encuentre una solucin de un coste mayor que la solucin ptima Cuando h1>h2 y ambas son admisibles entonces cualquier estado desarrollado por h1 ser tambin desarrollado utilizando h2 Se dice que h1 esta mejor informado que h2
39
Se utilizarn cuando podamos descomponer el problema en otros ms pequeos, y resolviendo stos, podamos resolver el principal
rboles AND-OR
Para representar la solucin de un problema en reduccin se utiliza la estructura de rboles AND-OR Hasta ahora la solucin a un problema la consista en hallar solucin a travs de una de una de las ramas del rbol (ramas-OR), ahora algunas soluciones vienen dadas por la solucin de mltiples de ellas (ramas-AND)
Objetivo: Tener un TV
Objetivo: Robar un TV
Objetivo: Comprar TV
40
Con dicha estructura se puede representar tanto cuando un subproblema se resuelve mediante la solucin de uno de sus hijos, como cuando es necesario resolverlos todos a la vez, o combinacin de ambos casos
41
Para representar una solucin se deber cumplir en todos los nodos alguna de las siguientes condiciones: Ser nodo primitiva Ser nodo AND con todos sus sucesores resolubles Ser nodo OR con algn sucesor resoluble Ser nodo resoluble equivale a cumplir una de las condiciones anteriores Si no se cumple ninguna sern nodos irresolubles La solucin total del problema vendr dada en buscar si el nodo raz es resoluble o no Ej: Torres de Hanoi
1 2 3 1
N elementos objetivo: mover N elementos desde el mstil 1 al mstil 3 operador de descomposicin: Si queremos mover M elementos desde el mstil i al mstil j => Mover (M-1) elementos de i al k (restante) Mover 1 elemento del i al j (pr. primitivo) Mover (M-1) elemento del k al j Total 6 operadores
42
Formulacin basada en conocimiento especfico de descomposicin del problema, y que deriva del anlisis de dicho problema
Problemas primitivos: Mover 1 pieza de un mstil a otro
En rboles OR resolver cualquier hoja (slo 1) solventa el problema del nodo raz En los AND-OR no basta con resolver una sola hoja, sino es necesario un conjunto extensible segn las reglas and-or hasta la raz
f a b
c d e f
Es raro que en un determinado espacio slo existan nodos OR puros o AND puros, pero siempre es posible transformar los nodos mixtos a una combinacin de AND y ORs puros
43
es_ave
es_rapaz
hace_ nidos
pone_ huevos
vuela
tiene_ pico
tiene_ garras
al_tirarlo_no_muere al_tirarlo_no_muere
44
45
Grafos AND-OR
En general, los espacios de bsqueda de problemas descomponibles suelen ser ms que rboles ANDOR, grafos AND-OR
Si aadimos al ejemplo de aves el siguiente operador: rapaz -> ave es_ave y es_rapaz
es_ave
es_rapaz
hace_ nidos
pone_ huevos
tiene_ pico
tiene_ garras
tiene_ alas
vuela
al_tirarlo_no_muere
46
Mejor
B
3
C
4
D
5
Mejor
9
A
11 20
11
Mejor
B
3
C
4
D
10
B
14
C
4
D
10
E
4
F
4
G
5
H
7
E
4
F
4
Interaccin de objetivos
A
C
5
E
2
B G I H J E
C F
Irresoluble
47
48
BSQUEDAS EN JUEGOS
Los juegos han sido considerados un buen campo donde explorar la inteligencia de las mquinas, debido a que: Son tareas estructuradas en las que es fcil medir el xito o fracaso No necesitan de gran cantidad de conocimiento, en general Caractersticas de los juegos a estudiar Trataremos con juegos de confrontacin de dos adversarios Total conocimiento (excluido el azar y/u ocultacin de variables) Movimientos alternativos Dentro de estas caractersticas caen muchos juegos denominados de tablero, para ellos su representacin es: estados = situaciones del tablero reglas = normas que rigen los movimientos objetivos = situaciones del tablero en los que el juego se considere terminado ( gano A, gano B, empate) estado inicial = tablero al comienzo del juego
1 4 7
2 5 8
3 6 9
Estado actual
Movimientos disponibles
Nuevos tableros
Respuestas posibles 2
1 4 7
2 5 8
3 6 9
0
Estado actual 7 Movimientos disponibles
-1
2 7 1 7
0
1
-1
Nuevos tableros
Respuestas posibles 2
-1
1
2
0
7 1
10
2
-1 0
Asignamos: 1 a cada objetivo que gane X 0 a cada objetivo que empaten -1 a cada objetivo que gane O A los no objetivos: Si juega X el mximo de sus hijos Si juega O el mnimo de sus hijos
51
Para el anterior caso es simple llegar a los estados finales, pero para otro tipo de juegos es imposible: Ej.: El ajedrez:
promedio de ramificacin, 35 promedio de movimientos, 50 c/u total de estados, 35100
Podramos bajar todo lo profundo que podamos y a continuacin aplicar dicha funcin, para despus aplicar minimaximizacin Lo ideal sera que cuando planificara el movimiento del contrincante f imitara a ste
52
Estrategia MiniMax
MiniMax(Estado-Actual, Profundidad) -> (Valor, Mov) si Suficiente(Profundidad, Estado-Actual) entonces retornar (f(Estado-Actual), nulo) sino si Par(Profundidad) entonces ; Nivel MAX mximo = - infinito Lista-Hijos = Aplicar(Estado-Actual, Reglas) para cada H de Lista-hijos hacer Hijo = MiniMax(H, Profundidad + 1) si (Hijo.valor > mximo) entonces mximo = Hijo.Valor Mejor-movimiento = H fin_si fin_para retornar(mximo, Mejor-movimiento) sino ; Nivel MIN mnimo = infinito Lista-Hijos = Aplicar(Estado-Actual, Reglas) para cada H de Lista-hijos hacer Hijo = MiniMax(H, Profundidad + 1) si (Hijo.valor < mnimo) entonces mnimo = Hijo.Valor Mejor-movimiento = H fin_si fin_para retornar(mnimo, Mejor-movimiento) fin_si
53
Podas
20
L MIN MAX
15
C
<10 =
F
20
E G
20
K
16
A
15
B
10
D
>25 =
J
MAX
4
N
MAX
25
H MIN I
MIN
3
C
= 3
4
M
3
A
5
B
5 =5
H
>7 =
=5<=7 J
4
L
MAX
<0 = 3 >=0 =
F
5
G
7
H I
MIN
0
D E
Nmero_term( d ) = 2 * Nm_term( d / 2 )
54
Estrategia Podas
-inf, +inf MiniMax- (Estado-Actual, Profundidad, , ) -> (Valor, Mov) si Suficiente(Profundidad, Estado-Actual) entonces retornar (f(Estado-Actual), nulo) sino si Par(Profundidad) entonces ; Nivel MAX Lista-Hijos = Aplicar(Estado-Actual, Reglas) para cada H de Lista-hijos hacer Hijo = MiniMax-(H, Profundidad + 1, , ) si (Hijo.valor > ) entonces
= Hijo.Valor
Mejor-movimiento = H si ( >= ) entonces break fin_si fin_para retornar( , Mejor-movimiento) sino ; Nivel MIN Lista-Hijos = Aplicar(Estado-Actual, Reglas) para cada H de Lista-hijos hacer Hijo = MiniMax-(H, Profundidad + 1, , ) si (Hijo.valor < ) entonces
; Poda
= Hijo.Valor
Mejor-movimiento = H si ( <= ) entonces break fin_si fin_para retornar( , Mejor-movimiento) fin_si
; Poda