Está en la página 1de 54

1

RESOLUCIN DE PROBLEMAS DE EXPLORACIN


Etapas en la resolucin de un problema
1) Definir el problema de forma precisa Situacin Inicial Situacin Objetivo 2) Analizar el problema 3) Extraer y representar el conocimiento necesario para resolver el problema 4) Elegir la mejor tcnica de resolucin de problemas y aplicarla

Definicin de problemas como una bsqueda en el espacio de estados


Problema: Jugar al ajedrez Posicin Inicial: Array 8x8 Posicin objetivo: Oponente no puede realizar movimiento legal y su rey est amenazado Movimientos legales: Reglas Lado izquierdo: Precondiciones que se deben cumplir (antecedente) Lado derecho: Cambios en el tablero (consecuente)
Pen blanco en (e,2) y vaco (e,3) y vaco(e,4) Mover pen desde (e,2) a hasta (e,4)

La representacin en el espacio de estados permite:


Definicin formal del problema de ir de una situacin dada a otra deseada a travs de las operaciones permisibles Solucionar el problema mediante tcnicas de bsqueda o exploracin bien conocidas

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

Estado objetivo: 1 slo Conjunto de estados:

1 2 3 8 4 7 6 5

Condicin objetivo: Todos los que su primera fila sume 6

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

Clasificacin en base a su carcter sistemtico o intuitivo Bsquedas Completas:


Se asegura la consecucin del objetivo si existe una solucin Costosas, (complejidad exponencial)

Bsquedas Incompletas (Heursticas):


Basadas en conocimientos intuitivos o ms rigurosos del problema (heurstica) Ahorro computacional considerable

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

Heursticas de propsito especial:


Explotan el conocimiento especfico de un problema dado

Ciertas heursticas pueden no asegurar la consecucin de una solucin ptima, pero si lo suficientemente buena

Ej.: TSP Vecinos ms prximos (nearest neighbor)


Selecciona dentro de todas las ciudades no visitadas, la que est ms prxima a la actual Tiempo de ejecucin proporcional a N2

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

Formas ms usuales de incorporar la heurstica: Dentro de las propias reglas


Reglas ms sensibles o metareglas

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:

Ajedrez T.S.P. Tres en raya

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

Caractersticas de los problemas


Para poder elegir los mtodos ms adecuados para un problema es necesario analizar sus caractersticas: Descomponibilidad: Es posible descomponerlo en subproblemas, donde cada uno se resuelva de forma independiente? Si es as se pueden utilizar tcnicas de reduccin o descomposicin del problema As tendramos:
Bsquedas en el espacio de estados Bsquedas en reduccin del problema

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

Caractersticas de la estructura de control en funcin de la recuperabilidad


Ignorables: Sencilla, no hace falta vuelta atrs Recuperables: Ms compleja, suelen usar una pila para realizar vueltas atrs ante errores Irrecuperables Necesitan de gran esfuerzo en tomar cada decisin, suelen utilizar tcnicas del recuperable si usan planificacin

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

Ms difciles an si sus pasos son irrecuperables


Ej.: Juego de cartas, Control de robots

Optimalidad de las soluciones Puede que a la solucin se le exija:


Ser la mejor: Mayor coste computacional Una cualquiera Que cumpla unos ciertos requisitos

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

Papel del conocimiento El conocimiento puede ser necesario:


Para hacer ms rpida la bsqueda Incluso para poder reconocer la solucin

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

Caractersticas de un sistema de produccin


Montono La aplicacin de una regla nunca evita la aplicacin posterior de otra regla que hubiese poder sido aplicada cuando fue seleccionada la primera No montono No se cumple lo anterior Parcialmente conmutativo Para cualquier secuencia de reglas que transformen de un estado x a otro y, cualquier permutacin de dicha secuencia que sea aplicable (cumplan las precondiciones) tambin realizan la transformacin de x a y No parcialmente conmutativo No se cumple lo anterior Conmutativo Parcialmente conmutativo + montono De manera formal no hay relacin entre los tipos de problemas y los tipos de sistemas de produccin, ya que cualquier problema puede ser resuelto por distintos tipos de sistemas En la prctica si hay una relacin, su solucin natural

16

Montonos Parcialmente conmutativos No parcialmente conmutativos Demostracin de Teoremas Sntesis qumica

No montonos Navegacin de robots Juegos de cartas

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

Construccin del rbol de bsqueda


El proceso de bsqueda puede ser visto como un recorrido a travs de un rbol que tiene como nodos los estados del problema y arcos las relaciones que transforman de un estado a otro La bsqueda ha de encontrar un camino o varios que conecten un estado inicial con otro final dentro de dicho rbol ste no se suele construir explcitamente para luego realizar la bsqueda. Normalmente basta con las reglas para darnos una representacin implcita del rbol Las partes del rbol a explorar si pueden ser generadas explcitamente

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

rbol de bsqueda vs. Grafo de bsqueda


El espacio de bsqueda de un problema no tiene por que ser un rbol, muchas veces es un grafo, esto es, se llegan a mismos estados a travs de diferentes caminos Puede resultar conveniente evitar la repeticin de procesamiento de estados ya analizados, para ello es necesario implementar bsquedas sobre grafos Debe analizarse el coste de generar el mismo estado varias veces frente al de llevar la contabilidad de los estados ya generados

Problema del matching


Los sistemas de produccin suelen invertir la mayora de su tiempo buscando las reglas que son aplicables Por ello es importante tener eficiente algoritmos que emparejen las reglas con el estado actual

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

Anlisis de la bsqueda en profundidad y de la bsqueda en anchura


Profundidad: Pueden realizarse implementaciones recursivas que requieran menos memoria, ya que slo almacenan los nodos del camino actual Puede encontrar soluciones profundas sin necesidad de explorar todos los niveles anteriores Puede quedar atrapado en caminos infructuosos, peligro ante rboles con niveles muy profundos Anchura Encontrar una solucin si esta existe, y adems con un nmero mnimo de pasos Consigue caminos cortos, luego es apropiada para caminos con escasa profundidad No es adecuado ante rboles muy equilibrados, ya que el nmero de nodos a almacenar se vuelve intratable Ambas Ninguna ha tenido en cuenta la posibilidad de nodos repetidos Ninguna devuelve el camino a la solucin, aunque en el recursivo sera fcil de implementar

24

Tratamiento de nodos repetidos y devolucin del camino a la solucin


Podramos evitar volver a tratar nodos ya explorados almacenando los nodos que se generen por primera vez, y desechando aquellos que se repitan Para poder devolver el camino podramos almacenar adems para cada nodo, el estado que lo gener (, su padre) En bsquedas en profundidad podramos encontrar estados ya visitados, pero que ahora se alcancen mediante un camino ms corto. Cambindole a stos su padre, se podra mantener el camino ms corto

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

Existencia de aristas, provocando un ptimo local asentado en una pendiente


Cmo evitarlos? Aplicar varias reglas

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 inicial (4) ( -28 )

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

Recristalizacin( Lista-Estados-Iniciales, Objetivo, Reglas, Heurstica, T-inicial, Decrementar) -> Estado-Objetivo


Estado-Actual = Primero(Lista-Estados-Iniciales) Mejor-Estado = Estado-Actual Lista-hijos = Lista-Estados-Iniciales T = T-inicial mientras (Not(Objetivo(Estado-Actual))) o (Not(Vacia(Lista-hijos))) Lista-hijos = Aplicar(Estado-Actual, Reglas) para cada Hijo de Lista-hijos hacer Inc_E = Heurstica(Estado-Actua) - Heurstica(Hijo) si (Inc_E < 0) entonces Estado-Actual = Hijo si (Heurstica(Estado-Actual) < Heurstica(MejorEstado)) entonces Mejor-Estado = Estado-Actual fin_si break si_no si (exp(- Inc_E / T) > random(0..1)) entonces Estado-Actual = Hijo break fin_si fin_si fin_para T = Decrementar(T) fin_mientras retornar(Mejor-Estado)

32

Bsqueda por haces


Deriva de la bsqueda en anchura, pero en vez de explorar todos los estados de un mismo nivel slo seleccionamos un haz de ellos, ignorando el resto La seleccin de las ramas a explorar se har en funcin de criterios heursticos, produciendose una poda de ramas poco prometedoras Pueden existir dos formas de realizar la poda: En base al valor del nodo, segn un umbral En base a elegir un nmero de ramas de exploracin Haces(Lista-Estados-Iniciales, Objetivo, Reglas, Podar, Heurstica, Umbral) -> Estado-Objetivo
Lista-frente = Lista-Estados-Iniciales mientras Not(Vacia(Lista-frente)) Lista-Hijos = Vacia para cada Elem de Lista-frente hacer si Objetivo(Elem) entonces retornar(Elem) fin_si Lista-Hijos = Aadir(Lista-Hijos, Aplicar(Elem, Reglas)) fin_para Lista-frente = Podar(Lista-Hijos, Heurstica, Umbral) fin_mientras retornar(fracaso)

33

Bsqueda primero el mejor


Primero-el-mejor(Lista-Estados-Iniciales, Objetivo, Reglas, Heurstica ) -> EstadoObjetivo
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 = Ordenar(Heuristica, 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 A
A B 3 A D E 4 F 6 G 6 B H 5 C 5 E J 1 D F 6 C 5 D 1 B 3

A C 5 E 4 D F 6

A B G 6 H 5 C 5

I 2

34

BSQUEDAS DEL CAMINO PTIMO


Para buscar cominos ptimos, como en el TSP podemos utilizar tambin alguna de las estrategias ya vistas Utilizar el coste del camino recorrido como funcin heurstica en el estado actual
A A B 7 7 A 6 10 C 9 5 6 D D
11

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

Funciones heursticas subdivididas


Para muchas aplicaciones es conveniente ver la funcin heurstica (f), que estima los mritos de cada nodo, dividida en dos parte:

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

Estrategias de bsqueda para sistemas de produccin descomponibles


En el espacio de estados Bsquedas
(segn descomp.)

En reduccin del problema

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: Ganar dinero

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

Componentes de la estrategia de reduccin


Base de hechos: contiene las descripciones de los subproblemas objetivos -> estados Descripcin inicial del problema a resolver -> estado inicial Operadores, elementos capaces de descomponernos el problema -> reglas Problemas primitivos: subproblemas cuya resolucin es inmediata -> estados objetivos En rboles AND-OR por tanto, tenemos: Cada nodo es un problema simple o un conjunto de problemas a resolver Los nodos primitivas son terminales Nodos OR Nodos AND Nodos irresolubles: no se les puede aplicar operadores y no son primitivas

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

Ej. de demostraciones lgicas


Operadores hace_nidos y pone_huevos -> es_ave vuela o tiene_pico -> es_ave tiene_garras y tiene_alas -> es_rapaz al_tirarlo_no_muere -> vuela vuela -> tiene_alas Problemas primitivos al_tirarlo_no_muere tiene_garras Objetivo es_ave y es_rapaz? Espacio de reduccin del problema
es_ave y es_rapaz

es_ave

es_rapaz

hace_ nidos

pone_ huevos

vuela

tiene_ pico

tiene_ garras

tiene_ alas vuela

al_tirarlo_no_muere al_tirarlo_no_muere

44

Bsqueda en anchura en rboles AND-OR


Anchura(Estado-Inicial, Primitiva, Reglas) -> bool
Lista-frente = Lista(Estado-Inicial) Estructura-bsqueda = Inicializar(Estado-Inicial) mientras Not(Irresoluble(Estado-Inicial)) And Not(Resoluble(Estado-Inicial)) hacer Estado-Actual = Primero(Lista-frente) Lista-frente = Resto(Lista-frente) Lista-hijos = Aplicar(Estado-Actual, Reglas) Estructura-bsqueda = Actualizar(Estructura-bsqueda, Lista-hijos, Estado-Actual) si Vacia(Lista-hijos) entonces Irresoluble(Estado-Actual) = true Revisar-Precedentes(Estado-Actual, Estructura-bsqueda) Lista-frente = Eliminar-hermanos-and-irr(Lista-frente, Estructura-bsqueda) Lista-frente = Eliminar-descendientes-irr(Lista-frente, Estructura-bsqueda) si_no para cada Hijo de Lista-hijos hacer si Primitiva(Hijo) entonces Resoluble(Hijo) = true Revisar-Precedentes(Hijo, Estructura-bsqueda) Lista-frente = Eliminar-descendientes-res(Lista-frente, Estructura-bsqueda, Lista-hijos) sino Lista-frente = Aadir(Lista-frente, Hijo) fin_si fin_para fin_si fin_mientras retornar(Resoluble(Estado-Inicial))

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

Algoritmo primero el mejor AND-OR


A A
5 9 6

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

Caminos ms largos mejores


A

B G I H J E

C F

Irresoluble

47

Primero-el-mejor-AND-OR(Estado-Inicial, Primitiva, Reglas, Heurstica) -> bool


Estructura-bsqueda = Inicializar(Estado-Inicial) f(Estado-Inicial) = Heurstica(Estado-Inicial) mientras Not(Irresoluble(Estado-Inicial) And Not(Resoluble(Estado-Inicial) hacer Estado-Actual = Recorrer_por_mejor_f(Estructura-bsqueda) Lista-hijos = Aplicar(Estado-Actual, Reglas) Estructura-bsqueda = Actualizar(Estructura-bsqueda, Lista-hijos, Estado-Actual) si Vacia(Lista-hijos) entonces f(Estado-Actual) = infinito Irresoluble(Estado-Actual) = true Revisar-Precedentes(Estado-Actual, Estructura-bsqueda) si_no para cada Hijo de Lista-hijos hacer si Primitiva(Hijo) entonces Resoluble(Hijo) = true f(Hijo) = 0 sino f(Hijo) = Heurstica(Hijo) fin_si fin_para Revisar-Precedentes(Estado-Actual, Estructura-bsqueda) fin_si fin_mientras retornar(Resoluble(Estado-Inicial))

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

49 Ej.: Tres en raya

1 4 7

2 5 8

3 6 9

Estado actual

Movimientos disponibles

Nuevos tableros
Respuestas posibles 2

50 Ej.: Tres en raya

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

Funciones de evaluacin estticas


Para evitar tener que llegar al fondo del rbol podramos tener una funcin heurstica en base al estado nos estimara la posibilidad de ganar o perder el juego Ej.:
f = Valor de piezas blancas capturadas ... - Valor de piezas negras capturadas

Normalmente suelen ser mas complicadas:


f = ventajas_en_piezas * C1 + ventajas_avances * C2 + + control_centro * C3 + .....

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

También podría gustarte