Principios de Inteligencia Artificial - PowerPoint PPT Presentation

1 / 45
About This Presentation
Title:

Principios de Inteligencia Artificial

Description:

No todas las heur sticas te garantizan llegar a la mejor soluci n, ... Se lo hemos puesto bastante m s dif cil al depredador, hemos aumentado los obst culos. ... – PowerPoint PPT presentation

Number of Views:105
Avg rating:3.0/5.0
Slides: 46
Provided by: venq
Category:

less

Transcript and Presenter's Notes

Title: Principios de Inteligencia Artificial


1
Principios de Inteligencia Artificial
Búsqueda heurística
  • Universidad Antonio de Nebrija
  • Ramiro Lago
  • Curso 2004-5

2
Indice del capítulo
  • Introducción al concepto de heurística
  • Algoritmos con el método de la escalada
  • Algoritmo A
  • Funciones heurísticas
  • Algoritmo IDA
  • Otros métodos

3
Introducción al concepto de heurística
  • El concepto básico de heurística aquel
    conocimiento que nos permite reducir el espacio
    de búsqueda

4
Heurística
  • La característica más importante de una
    heurística es la reducción del espacio de
    búsqueda. No todas las heurísticas te garantizan
    llegar a la mejor solución, pero si te deben
    permitir podar el espacio de búsqueda de tal
    forma que llegas a una solución buena.
  • Las reglas heurísticas son reglas empíricas que
    se han desarrollado a partir de la experiencia en
    la resolución de problemas. Por ejemplo
  • Si has pinchado una rueda, entonces afloja
    ligeramente las tuercas de la rueda antes de
    levantar el coche con el gato.
  • En ajedrez, si tienes que mover el caballo
    procura mantenerlo alejado de los bordes.
  • Para ir de W a K usa el camino más corto, salvo
    que sea hora punta.
  • Las heurísticas acortan el camino hacia la meta
    de diversas formas
  • Pueden ser funciones que estimen para cada nodo
    los costes de llegar a la meta, y así poder
    ordenar los nodos para explorar primero los más
    prometedores.
  • Una heurística puede también ordenar los
    operadores, con la finalidad aplicar primero los
    más prometedores. Esto es lo que ocurre con
    MYCIN, donde las metarreglas de control
    heurístico seleccionan los módulos de reglas que
    hay que evaluar.
  • Los expertos generan más y mejores heurísticas
    que los novatos. Las heurísticas no son sólo
    importantes en los problemas de búsqueda
    algorítmica. Además es importante para una parte
    de la IA conocida como Ingeniería del
    Conocimiento (KE), algunos de los sistemas que
    realiza esta disciplina se denominan Sistemas
    Expertos, ya que tratan de simular la capacidad
    de decisión de expertos humanos. En estos
    sistemas una de las tareas más importantes de los
    ingenieros es llegar a formalizar las heurísticas
    de los expertos.

5
Funciones heurísticas
  • Hay varias formas de incorporar el conocimiento
    heurístico de un dominio a un determinado
    proceso de búsqueda, una de las más utilizadas es
    la realizada mediante las llamadas Funciones
    heurísticas o funciones de evaluación de estados
    (nodos)
  • Una función heurística es una cuantificación (o
    evaluación) de un estado de un sistema , que nos
    permite determinar su deseabilidad respecto a
    un objetivo determinado
  • El propósito de dicha función es guiar el proceso
    de búsqueda en la dirección más prometedora,
    sugiriendo cual escoger cuando se presentan
    varias opciones
  • La eficiencia de la búsqueda mejora notablemente
    si existe una forma de ordenar las selecciones de
    modo que las más prometedoras se exploren
    primero. Los métodos que sacan provecho de tales
    mediciones se conocen como métodos informados
    heurísticamente.
  • Los nodos más prometedores pueden ser
  • Crecientes por ejemplo en un sistema de búsqueda
    de inversiones se selecciona aquellas que
    maximizan el beneficio.
  • Decrecientes por ejemplo, en un sistema de
    diseño de rutas se seleccionan las que sean menos
    costosas.

6
Algoritmos con el método de la escalada
  • Un método sencillo, que nos permite solucionar
    problemas de búsqueda en los que tengamos una
    función heurística sin mesetas o máximos locales

7
Técnica de la escalada
  • El método consiste en un bucle que constantemente
    se desplaza en dirección de un valor ascendente
    (nodos más prometedores). Para decidir en que
    dirección debe moverse se necesita una función
    de evaluación de los nodos , por ejemplo por
    medio de una función que estime la proximidad de
    un estado a una meta
  • La técnica de escalada es un procedimiento de
    búsqueda en profundidad, pero ahora dispondremos
    de una función que ayude a decidir en qué
    dirección nos moveremos en el espacio de búsqueda
  • La escalada se utiliza frecuentemente cuando se
    dispone de una buena función para evaluar los
    estados intermedios, y es necesario asimismo un
    objetivo hacia el que moverse, si no existe este
    estado a priori no debe utilizarse este método

8
Algoritmo de escalada simple
  • Se queda con el primer sucesor que es mejor
  • El algoritmo
  • Evaluar el estado inicial, lo denominaremos M. Si
    es estado objetivo, entonces devolverlo y
    terminar, si no, convertirlo en estado actual
  • Repetir hasta que se encuentre solución o hasta
    que no se pueda seguir (no hay operadores nuevos
    que aplicar)
  • A. Seleccionar un nuevo operador que no se haya
    aplicado al estado actual y aplicarlo para
    generar un sucesor al estado actual, lo llamamos
    nuevo estado
  • B. Evaluar nuevo estado
  • Si el nuevo estado es estado objetivo, devolverlo
    y terminar
  • Si no es estado objetivo, pero es mejor que el
    estado actual, entonces convertirlo en estado
    actual
  • Si no es mejor que el actual, seguir el bucle (2)
  • El algoritmo no guarda el árbol de búsqueda
    recorrido (la traza).
  • La comparación es muy local sólo se compara la
    bondad del estado actual con sus sucesores
    inmediatos y se queda con el primero que es mejor
    que el estado actual.

9
Un ejemplo
  • Veamos que este algoritmo de escalada es
    demasiado inflexible, sólo se queda con el primer
    sucesor que es mejor que el nodo actual
  • El valor de la función de evaluación aparece
    asociado al nodo
  • La meta es el nodo H (nodo de mayor puntuación
    según la función de evaluación)

Estado actual Estado nuevo Mejor A B B B D D E
l algoritmo termina, ya que D no tiene sucesores.
D es bueno, pero no el mejor global
(meta). El algoritmo debió tomar C, pero el
primero que era mejor es B.
10
Algoritmo de escalada por la máxima pendiente
  • El algoritmo
  • Evaluar el estado inicial. Si es estado objetivo,
    entonces devolverlo y terminar, si no,
    convertirlo en estado actual
  • Repetir hasta que se encuentre solución o hasta
    que una iteración completa no produzca un cambio
    en el estado actual
  • A. Aplicar cada operador al estado actual y
    conseguir sucesores E1, ... En.
  • B. Evaluar E1 .... En. Si alguno es objetivo,
    devolverlo y terminar Si no es así, seleccionar
    el mejor (Em)
  • C. Si Em es mejor que el estado actual, hacer que
    Em sea el estado actual. Volver a (A)
  • Frente a la escalada simple, considera todos los
    posibles estados nuevos (no el primero que es
    mejor)

11
Un ejemplo que funciona
  • Queremos ir del Sur al Norte (de A hasta J) de
    modo que en cada cruce nos aproximemos más. Los
    cruces se representan en la siguiente figura por
    los nodos.
  • La función heurística puede basarse en la medida
    de distancia espacial a la meta. A cada nodo
    asociamos su distancia.
  • Los operadores son Ir al siguiente del Norte,
    Ir al siguiente del Este e Ir al siguiente del
    Oeste. Observar que aunque existiese un operador
    Ir al siguiente hacia el Sur el algoritmo
    evitaría el nuevo nodo, ya que siempre sería peor
    (más distante).

Estado actual Sucesores Mejor A B,C B B D D D
C,E,H H H I I I J J Meta
12
Un ejemplo que no funciona
  • Hemos modificado el ejemplo anterior. Por qué se
    queda parado en D?

Estado actual Sucesores Mejor A B,C B B D D D
C,E C D El estado actual vuelve e ser D, ya
que ninguno de sus sucesores es mejor que él
J
0
I
H
2
1
G
3
4
3
C
D
E
4
5
4
B
A
  • El estado D es un mínimo local, no el mínimo
    absoluto (la meta)

13
Inconvenientes de los métodos de escalada
  • El proceso de búsqueda puede no encontrar una
    solución cuando se encuentra con
  • Máximo/mínimo local un estado que es mejor que
    todos sus vecinos, pero no es mejor que otros
    estados de otros lugares. Puesto que todos los
    estados vecinos son peores el proceso se queda
    paralizado
  • Meseta los estados vecinos tienen el mismo
    valor. El proceso, basado en comparación local,
    no discrimina la mejor dirección
  • El origen de estos problemas es que el método de
    la escalada se basa en comparaciones locales, no
    explora exhaustivamente todas las consecuencias.
    Frente a otros métodos menos locales, tiene la
    ventaja de provocar una explosión combinatoria
    menor
  • Soluciones parciales
  • Almacenar la traza para poder ir hacia atrás,
    hasta un estado prometedor (o tan bueno como el
    que hemos dejado)
  • Dar un gran salto para seguir la búsqueda. Útil
    en el caso de mesetas

14
Un ejemplo de los inconvenientes del método de
escalada
  • Considerar el problema de ordenar los bloques
  • Supongamos la siguiente función heurística
    añadir un punto por cada bloque que este sobre el
    bloque que debe estar, restar un punto en caso
    contrario
  • Disponemos de dos operadores
  • Coger bloque y situarlo sobre otro Encima (x,
    y)
  • Coger un bloque y situarlo sobre la mesa
    SobreMesa(x)
  • Al usar esta función el estado inicial tiene un
    valor de 4, y el final 8. Sólo es posible
    realizar un movimiento a partir del estado
    inicial (SobreMesa (A)), este movimiento, produce
    un estado de valor 6 y el algoritmo de escalada
    acepta este movimiento.
  • En el nuevo estado aparecen tres movimientos
    posibles que dan lugar a tres estados de valor 4
    (a,b,c). El proceso se detiene ya que las tres
    opciones son peores que el estado inicial (6)

15
Cambiamos de método o cambiamos de función?
  • El problema de los bloques nos muestra que el
    método se ha quedado atascado en un máximo local
    (el segundo estado). Podemos
  • Cambiar de método. Escoger una técnica que no sea
    tan local
  • Cambiar de función heurística. Por ejemplo por
    cada bloque que se sitúe en una estructura
    correcta( es decir , tenga debajo la estructura
    objetivo) añadir tantos puntos como bloques tenga
    debajo. En caso contrario restar un valor
    equivalente
  • Esta nueva función hace que el estado inicial
    tenga un valor de 28, el final 28. Con el
    segundo estado tenemos un valor de 21.
    Solucionamos el problema con esta función?

16
El algoritmo A
  • Veremos uno de los más conocidos algoritmos de la
    historia de la IA. Si la función heurística
    cumple ciertas condiciones, el algoritmo
    encuentra la mejor solución al problema (el
    camino óptimo)

17
Funciones de coste
  • Para muchas aplicaciones es interesante definir
    una función que sea la suma de dos componentes
    que llamamos g y h
  • La función g representa el coste para ir desde el
    inicio hasta el estado actual la h es una
    estimación del coste adicional necesario para
    llegar a la solución
  • La función suma f g h representa pues el
    coste de un camino completo desde el nodo inicial
    a la solución.
  • Dicho de forma más precisa
  • Dados dos nodos cualesquiera ni , nj , la función
    C(ni , nj) determina el coste mínimo de un camino
    entre ambos nodos
  • El costo de un camino mínimo entre un nodo n y
    una meta t , es por tanto h(n) C(n, t)
  • h es una estimación del coste para llegar a la
    meta y depende del conocimiento del dominio del
    problema
  • El costo de un camino mínimo entre el nodo
    inicial i y un nodo n se denomina g(n) C(i,
    n)
  • El valor de g no es una estimación, sino la suma
    de costes de aplicación de las reglas a través de
    la ruta

18
Búsqueda del mejor primero
  • Los métodos anteriores no tienen vuelta atrás,
    esto es, una vez escogido un estado como actual
    no se puede recorrer el camino hacia atrás a fin
    de deshacerlo (irrevocables)
  • La búsqueda. en profundidad tiene la ventaja de
    permitir encontrar soluciones sin tener que
    expandirse por todas las ramas, y la búsqueda en
    anchura presenta la ventaja de no quedar atrapada
    en callejones sin salida
  • Introducimos un nuevo modelo de búsqueda que
    intenta combinar ambas ventajas, llamado búsqueda
    del primero mejor (best-first search), cuya
    estrategia básica es como sigue
  • En cada paso se selecciona el nodo más prometedor
    (como en el caso de la escalada)
  • Se expande este nodo, si alguno de los generados
    es una solución se termina, si no es así los
    nuevos nodos obtenidos se añaden a la lista de
    nodos generados (lista ABIERTOS).
  • De nuevo se selecciona el más prometedor y el
    proceso continúa.
  • Es más flexible que el método de la escalada si
    en una rama no se encuentra solución, se explora
    alguna rama de las antes ignoradas que sea más
    prometedora esto es posible porque los nodos
    generados (pero no explorados o desarrollados) se
    han almacenado previamente (lista ABIERTA). Las
    ramas no prometedoras no se olvidan, su último
    nodo sin explorar se ha almacenado a fin de poder
    volver si fuera conveniente.
  • Algunos autores la denominan búsqueda avara o
    voraz.
  • Un ejemplo clásico de este tipo de búsqueda es el
    algoritmo A.

19
El algoritmo A en árboles
  • Definimos dos listas de nodos
  • ABIERTOS nodos generados, pero todavía no
    explorados (no se han desarrollado sus
    sucesores).
  • CERRADOS nodos generados y explorados (se han
    generado sus sucesores).
  • Versión aplicable a árboles. En un árbol no es
    necesario comprobar si el nuevo nodo (sucesor)
    está en ABIERTOS o CERRADOS. Pasos
  • Colocar en ABIERTOS el nodo inicial i. Hacer
    g(i)0 Calcular h(i) Hacer f(i) g(i) h(i)
  • Crear CERRADOS como lista vacía
  • Si ABIERTOS está vacía salir con fracaso. Si no,
    continuar
  • Eliminar el primer nodo de ABIERTOS y colocarlo
    en CERRADOS. Llamarlo nodo n
  • Si n es meta salir con éxito
  • Si no, desarrollar el nodo n generando sus
    sucesores que no sean antecedentes de n
  • Por cada sucesor generado, hacer
  • Colocar a cada sucesor un puntero (direccionador)
    a n
  • Calcular g(suc) g(n) k(n, suc)
  • Calcular f(suc) g(suc) h(suc)
  • Colocar el sucesor en ABIERTOS
  • Reordenar la lista ABIERTOS de acuerdo al valor
    de f
  • Ir al punto 3
  • En caso de ÉXITO el camino desde i hasta n,
    obtenido a través de los punteros, es la solución
    de coste mínimo, cuyo costo es g(n)

20
Aplicando A a un árbol
  • En el siguiente ejemplo se muestran los nodos con
    su h(x), es decir, la estimación de coste de
    desarrollarlo hasta la meta. g(x) será 1 por cada
    nivel recorrido.
  • ABIERTOS CERRADOS SUCESORES
  • A(06) A B(13), C(15), D(14)
  • B(13), D(14) , C(15) A, B G(24), H(25)
  • D(14) , C(15) G(24), H(25) A, B,
    D E(22), F(23)
  • E(22), F(23), C(15) G(24), H(25) A, B,
    D, E I(31), J(30)
  • J(30), I(31), F(23), C(15) G(24), H(25)
  • El nodo J es la meta, gracias a los punteros
    construimos la ruta solución A? D ? E ? J.
  • El eje del método es que ordenamos ABIERTOS de
    acuerdo a f(n).

21
Ejemplo de A en árbol depredador
  • Supongamos un depredador (D) ciego, pero con buen
    olfato y tacto. Puesto que es ciego no puede
    anticipar o percibir el obstáculo (O). Aunque el
    obstáculo no le impide oler de forma precisa a su
    presa (P).
  • Para simplificar el problema a nuestro depredador
    sólo le podremos aplicar tres operadores Ir al
    Norte, Ir al Este e Ir al Sur (el orden de
    las agujas del reloj)
  • Tenemos una forma sencilla de calcular g(n) y
    h(n) cada casilla en la matriz del terreno es
    una unidad.
  • Para reordenar los elementos de ABIERTA (paso 8)
    si hay igualdad en f(n), ponemos primero los
    nodos más cercanos a la meta, es decir, de menor
    h(n).
  • Notación los nodos se etiquetan con la posición
    (X,Y), pudiendo señalar a continuación los
    valores g(n) y h(n), de la forma (X,Y) g(n)h(n)

ABIERTA CERRADA SUCESORES 1 (1,2)03 (1
,2) (1,1) 14 (2,2) 12 (1,3)
14 2 (2,2) 12 (1,1) 14 (1,3)
14 (1,2)(2,2) (2,1) 23 (2,3)
23 3 (2,1) 23 (2,3) 23 (1,1) 14 (1,3)
14 (1,2)(2,2)(2,1) (3,1) 32
() 4 (3,1) 32 (2,3) 23 (1,1) 14 (1,3)
14 (1,2)(2,2)(2,1)(3,1) (4,1) 41
() 5 (4,1) 41 (2,3) 23 (1,1) 14 (1,3)
14 (1,2)(2,2)(2,1)(3,1)(4,1) (4,2)
50 6 (4,2) 50 (2,3) 23 (1,1) 14 (1,3)
14 El primer nodo de ABIERTA es META () No
aplicamos operador SUR a (2,1), ya que obtenemos
(2,2), que es antecesor () Idem La solución se
construye a partir de los punteros a los
antecesores (1,2)(2,2)(2,1)(3,1)(4,1)(4,2) C
olores del gráfico con Rojo la ruta solución
con Verde los nodos que quedan en ABIERTA.
22
A en un grafo
  • Si hay ciclos, tenemos que ampliar el paso 7 por
    cada sucesor que ya está en ABIERTOS o en
    CERRADOS, es decir, el sucesor es una segunda
    instancia de un nodo que ya hemos generado
  • Llamamos VIEJO al nodo que está en ABIERTOS o
    CERRADOS. Cuál es mejor camino? sucesor o
    VIEJO?. Compararemos el coste (g) de las dos
    instancias
  • SI SUC ESTA EN ABIERTOS (ha sido generado, pero
    no explorado o desarrollado)
  • Si g(VIEJO) gt g(SUC), entonces nos quedamos con
    los valores de SUC (el mejor camino) y los
    ponemos en VIEJO
  • Colocamos a VIEJO un puntero (paterno) a n (el
    padre de SUC)
  • Calculamos de nuevo g(VIEJO) Hacer g(viejo)
    g(suc) y recalcular f(VIEJO)
  • Si g(VIEJO) lt g(SUC), entonces nos quedamos con
    los valores de VIEJO (que ya está en ABIERTOS)
    dejamos VIEJO en ABIERTOS y no incluimos SUC
  • SI SUC ESTA EN CERRADOS (ha sido generado y
    explorado, es decir, hemos generado sucesores)
  • Si g(VIEJO) gt g(SUC), entonces nos quedamos con
    los valores de SUC (el mejor camino) y los
    ponemos en VIEJO
  • Colocamos a VIEJO un puntero (paterno) a n (el
    padre de SUC)
  • Calculamos de nuevo g(VIEJO) Hacer g(viejo)
    g(suc) y recalcular f(VIEJO)
  • Hemos encontrado un mejor camino al nodo (SUC y
    VIEJO son el mismo nodo), por tanto debemos
    propagar la mejora a los sucesores de VIEJO, ya
    que deseamos que el árbol de exploración conserve
    el camino menos costoso. Hacer una búsqueda en
    amplitud tomando como nodo inicial a viejo, y
    descender por cada rama recalculando g(n) y f(n)
    hasta encontrar un nodo sin sucesor, o que se
    encuentre en AB, o que ya tenga un camino igual
    o mejor que el recién encontrado.
  • Si g(VIEJO) lt g(SUC), entonces nos quedamos con
    los valores de VIEJO (el mejor camino) no
    hacemos nada (no se incluye SUC en ABIERTOS)

23
Aplicando A a un grafo
  • Supongamos el siguiente grafo (tiene ciclos)
  • ABIERTOS es C,B, ya que f(C)4 Y f(B)5
  • CERRADOS es A,D, SUC es B, VIEJO es B
  • g(VIEJO) gt g(SUC). Por tanto nos interesa el
    camino de SUC
  • Colocamos a VIEJO (B) un puntero (paterno) a n
    (el padre de SUC, que es D)
  • Recalculamos VIEJO g(B) 2, por tanto f(B)
    21
  • Seguimos en el punto 8 reordenamos ABIERTOS y
    resulta que es B,C, ya que f(B) 3 y f(C)4

A
(4)
(1)
(1)
B
C
D
(1)
(1)
(3)
(1)
(2)
B
F
(1)
(6)
24
Ejemplo del depredador en un grafo
  • Se lo hemos puesto bastante más difícil al
    depredador, hemos aumentado los obstáculos.
    Comerá? Hemos añadido el operador Ir al Oeste.

ABIERTOS CERRADOS SUCESORES 1 (1,2)03
(1,2) (1,1) 14 (2,2) 12 (1,3)
14 2 (2,2) 12 (1,1) 14 (1,3) 14 (1,2)
(2,2) (2,1) 23 3 (2,1) 23 (1,1) 14
(1,3) 14 (1,2) (2,2)(2,1) Nota (1) 4 (1,1)
14 (1,3) 14 (1,2) (2,2)(2,1)(1,1) Nota
(2) 5 (1,3) 14 (1,2) (2,2)(2,1)(1,1)
(1,4) 25 (1,3) 6 (1,4) 25 (1,2)
(2,2)(2,1)(1,1) (2,4) 34 (1,3)
(1,4) 7 (2,4) 34 (1,2) (2,2)(2,1)(1,1)
(3,4) 43 (1,3) (1,4) (2,4) 8 .... Cómo
puede construir el camino correcto a la meta?
Sencillo, recordemos que cada nodo apunta a su
antecesor (1,2) ? (1,3) ? (1,4) ? (2,4) ? ....
? (4,2) Meta (1) No aplicamos operador Sur a
(2,1), ya que me da (2,2), que es antecesor.
Además la aplicación de Oeste nos devuelve
(1,1)34 pero ya tenemos (1,1) en ABIERTOS, que
es mejor. Por tanto no se incluye (1,1) en
sucesores. (2) No aplicamos operador Este a
(1,1), ya que me da (2,1), que es antecesor.
Además la aplicación de Sur nos devuelve
(1,2)43 pero ya tenemos (1,2) en CERRADOS, que
es mejor. Por tanto no se incluye (1,2) en
sucesores.
25
Consideraciones a A
  • Hemos podido observar que A resulta muy costoso
    en dos aspectos
  • Cálculo hay que estar ordenando continuamente el
    vector de nodos generados pero todavía no
    explorados (ABIERTA).
  • Almacenamiento el peor inconveniente es que su
    consumo de memoria crece exponencialmente con la
    profundidad del grafo. Esto hace que A no sea
    una buena técnica para problemas grandes. Si p es
    la profundidad del árbol y B es el número medio
    de descendientes, entonces
  • El vector ABIERTA (el número de hojas del árbol)
    tiene B p elementos. Por ejemplo en el problema
    del 8-puzzle hay 22 pasos para llegar a la
    solución y el número medio de sucesores es 3. Por
    tanto, tiene 322 estados.
  • El vector CERRADA (nodos interiores) contiene el
    siguiente número de elementos B 0 B 1 ...
    B p-1.
  • Si sólo es relevante obtener el objetivo (sea
    cual sea su coste), entonces g es 0.
  • Si h es 0, entonces g controla la búsqueda. En
    este caso, si g tiene el mismo valor (normalmente
    1), entonces estamos ante una búsqueda en anchura
    (no informada).

26
Funciones heurísticas
  • Veremos que las funciones heurísticas pueden
    tener una serie de características (monotonía,
    admisibilidad y creciente). En función de sus
    características harán que nuestros algoritmos
    puedan ser óptimos y completos.
  • Además tenemos que conseguir algún criterio para
    diseñar y seleccionar las funciones heurísticas
    de un algoritmo.

27
Heurísticas monotonía y crecimiento
  • Sea C(n,m) el coste entre n y m y d(n,m) la
    distancia mínima (la línea recta de los
    ejemplos).
  • Una heurística es monótona o consistente cuando
    para todo nodo n y cada sucesor m de n, el coste
    estimado por h de alcanzar el objetivo desde n no
    es mayor que C(n, m) y la suma de h(n)
  • h(n) ? C(n, m) h(m), ?n,m
  • Por tanto
  • h(n) ? d(n, m) ? C(n, m) h(m), ?n,m
  • Esto es una forma de la regla general de la
    desigualdad triangular, que especifica que un
    lado de un triángulo no puede ser mayor que la
    suma de los otros dos.
  • Un ejemplo de heurística no monótona es la que
    vemos a continuación, donde
  • 4 h(c) gt C(c,b) h(b) 1 1
  • De lo dicho se deduce que para todo h que es
    monótona, su f es creciente. Demostración
  • g(m) g(n) C(n,m)
  • f(m) g(m) h(m) g(n) C(n,m) h(m) ? g(n)
    h(n) f(n)

28
Heurísticas admisibilidad
  • Una función heurística h se dice que es admisible
    si
  • h(n) ? h(n), ?n
  • en donde h(n)mínima distancia real desde n
    hasta el objetivo
  • Las heurísticas admisibles son optimistas
    siempre dan valores menores o iguales a los
    costes reales. Un ejemplo es usar como h entre
    dos puntos la línea recta, ya que cualquier h que
    escojamos no puede sobreestimar a la línea recta.
  • Lo esencial en este procedimiento de búsqueda es
    dar con una función h(n) que no sobreestime el
    coste de alcanzar la meta (h es minorante de h
    , la distancia mínima real).
  • Si h es monótona, entonces h es admisible. Lo
    contrario no es cierto, como muestra el ejemplo,
    donde h es admisible pero no monótona para h(c).
  • A es óptimo y completo si h es admisible.

29
Existen diversas heurísticas admisibles
  • En el problema del 8-puzzle hay más de una
    heurística admisible (y monótona)
  • h1(n) número de fichas fuera de orden.
  • H1(n0) 8
  • h2(n) suma de distancias de Manhattan, o sea el
    número de cuadrados que apartan a una ficha de su
    posición según la meta. Tener en cuenta que sólo
    se admiten movimientos horizontales y verticales
  • H1(n0) 2332420218

30
Determinar la calidad de la heurística b
  • En numerosas ocasiones nos encontraremos con más
    de una heurística admisible. En tales situaciones
    requerimos de algún criterio para seleccionar las
    mejores heurísticas, es decir, aquellas que
    generan menos nodos.
  • Una forma de evaluar la calidad de una heurística
    es el b factor de ramificación eficaz. Partimos
    de
  • N número total de nodos generados
  • d profundidad de la solución
  • b es el factor de ramificación eficaz que tendrá
    un árbol con profundidad d y N1 nodos. Así
  • N 1 b (b)2 ... (b)d ((b)d1 1)
    / (b-1)
  • Esta ecuación no se resuelve por métodos
    algebraicos, sino con cálculo numérico. Por
    ejemplo, si una aplicación de A tiene d5 y N52
    nodos, entonces b1,92.
  • Una heurística bien diseñada debe tener una b
    cercana a uno, es decir, si h ? h, entonces b ?
    1.

31
Determinar la calidad de la heurística
heurísticas dominantes
  • Antes vimos que el 8-puzzle tenía dos heurísticas
    admisibles (h1 y h2). Con la finalidad de
    observar las diferencias de seleccionar una
    función u otra se pueden comparar los resultados
    de aplicar A al 8-puzzle con las diferentes
    funciones (Russell y Norvig 2004, p. 121)
  • Para d24
  • Coste de búsqueda A(h1) 39.135 y A(h2)
    1.641
  • Factor de ramificación eficaz A(h1) 1,48 y
    A(h2) 1,26
  • Diremos que h2 está más informada que h1 si para
    cualquier nodo n, h2(n) ? h1(n) y ambos son
    admisibles. Los valores de h2 son mayores que h1.
  • Entonces diremos que h2 domina a h1. Por tanto,
    la dominación implica que h2 expande menos nodos
    que h1.
  • También se dice que h2 es una heurística mejor
    informada que a h1. Otro ejemplo
  • Para mapas se puede utilizar la distancia
    euclideana h(n) raíz cuadrada de los cuadrados
    de las distancias o max(distancia_x,
    distancia_y).
  • Es fácil comprobar que la primera está mejor
    informada y genera menos nodos (Escolano et al.
    2003, p.26)
  • Recomendaciones
  • Buscar heurísticas con valores mayores, siempre
    que no sobreestimen h.
  • Buscar heurísticas con valores mayores siempre
    que el tiempo de cálculo que exigen no sea grande.

32
El algoritmo IDA
  • El algoritmo A puede llegar a ser muy costoso en
    cuanto a espacio de almacenamiento. Vamos a ver
    una variante interesante de esta algoritmo IDA
    o Iterative Deepening A, que solventa este
    problema.

33
Introducción a IDA (I)
  • Hemos podido observar que A resulta muy costoso
    en dos aspectos
  • Cálculo hay que estar ordenando continuamente el
    vector de nodos generados pero todavía no
    explorados (ABIERTA).
  • Almacenamiento el peor inconveniente es que su
    consumo de memoria crece exponencialmente con la
    profundidad del grafo. Si p es la profundidad del
    árbol y B es el número medio de descendientes,
    entonces
  • El vector ABIERTA (el número de hojas del árbol)
    tiene B p elementos.
  • El vector CERRADA (nodos interiores) contiene el
    siguiente número de elementos B 0 B 1 ...
    B p-1.
  • Por ejemplo, este consumo de espacio hace que A
    sea muy costoso en juegos de estrategia donde hay
    que usar planificación de rutas en mapas grandes.

34
Introducción a IDA (II)
  • El algoritmo de descenso iterativo (Iterative
    Deepening A) nos asegura que el coste de
    almacenamiento crece linealmente con la
    profundidad de la búsqueda.
  • Ideas esenciales del algoritmo
  • Definimos un coste inicial o coste de corte
    (Corte), que para el primer nodo es f(n0) g(n0)
    h(n0) 0 h(n0) h(n0). Si h(n) es
    admisible nos aseguramos que en todo momento el
    coste de corte es menor o igual al coste mínimo,
    Corte ? Cóptimo. Por tanto el algoritmo de modo
    iterativo va haciendo crecer Corte hasta llegar a
    Cóptimo.
  • En cada iteración el algoritmo desencadena una
    búsqueda en profundidad de forma recursiva, que
    terminará cuando encuentra un nodo n cuyo coste
    coste sea mayor que el coste de corte,
    Corteltf(n), o que sea el nodo solución.
  • Para entender el algoritmo conviene comprender
    como comienza. Cuando se hayan generado todos los
    sucesores de n0, la búsqueda en profundidad
    recursiva encuentra la solución o devuelve el
    mínimo de los costes de las ramas desarrolladas,
    este mínimo (que es mayor que Corte) se convierte
    en el nuevo valor de Corte. Comenzará una nueva
    búsqueda en profundidad con el valor de Corte
    incrementado.

35
Algoritmo IDA
  • Algoritmo IDA
  • Corte ? f(n0)
  • Repetir
  • (Corte, Sol) ? BP( Corte, n0 )
  • SI Sol ? 0 Devolver (Sol)
  • SI Corte 8 Devolver (Fallo)
  • Función BP( Corte, n )
  • fsig ? 8
  • SI Corte lt f(n) Devolver ( f(n), 0 )
  • SI n meta Devolver ( Corte, n )
  • Para cada s ? SUCESORES( n ) Hacer
  • ( fnueva, Sol ) ? BP( Corte, s )
  • SI Sol ? 0 Devolver (Corte, Sol)
  • fsig ? min( fsig, fnueva )
  • Devolver ( fsig, 0 )

Inicio de la búsqueda en profundidad (BP).
Devuelve el nuevo valor de Corte incrementado (si
no ha encontrado la solución)
Si el coste del nodo es mayor que Corte,
regresamos devolviendo f(n)
Puesto que el nodo actual no es la solución ni
tampoco es más costoso que Corte, entonces
tomamos los sucesores (s) para seguir buscando en
profundidad
Obtenemos el menor coste (fsig) de los sucesores
36
Un ejemplo de IDA salir de la habitación (I)
  • Supongamos que un robot (R) quiere salir de una
    habitación en completa oscuridad. Entre su
    posición y la puerta (P) se encuentra un muro.
    Los operadores son ir al Este, ir al Sureste
    e Ir al Sur. Dos notas
  • Evidentemente, el orden en el que se aplican los
    operadores es importante. Aunque en este ejemplo
    no sea el caso, conviene tener heurísticas sobre
    dicho orden.
  • Operadores como Ir al Oeste no son aplicados.
    Si lo fuese, el f(n) sería mayor que Corte, con
    lo que terminaría la búsqueda en profundidad. Si
    estuviéramos en un laberinto, debería ser
    aplicado.
  • La aplicación de cualquier operador tiene un
    coste de uno.
  • h(n) es la distancia aérea hasta la puerta, por
    tanto h(n0) 2.

37
Un ejemplo de IDA salir de la habitación (II)
  • En la primera iteración Corte 2. Llama a la
    función BP (Búsqueda en Profundidad) con
    argumentos Corte2 y n0(1,1). En la función BP
    se desarrollan los dos sucesores de (1,1).

Algoritmo IDA 1ª Iteración con Corte2
Devuelve fsig 3, el mínimo f(n) de los
sucesores de (1,1)
BP ( 2, (1,1) )
Devuelve f(n)3
Devuelve f(n)3
BP ( 2, (2,1) ) 2 Corte lt f(2,1) 12
3 Devolver (3,0)
BP ( 2, (1,2) ) 2 Corte lt f(1,2) 12
3 Devolver (3,0)
  • Los sucesores de (1,1) superan el corte de coste.
    Por tanto cada sucesor devuelve su coste, su
    f(n).
  • (1,1) devuelve fsig, el mínimo f(n) de los
    sucesores, que es 3.

38
Un ejemplo de IDA salir de la habitación (III)
  • En la segunda iteración Corte 3. Llama a la
    función BP (Búsqueda en Profundidad) con
    argumentos Corte3 y n0(1,1). En la función BP
    se desarrollan los dos sucesores de (1,1).

Algoritmo IDA 1ª Iteración con Corte3
BP ( 3, (1,1) )
Devuelve f(n)4
BP ( 3, (2,1) )
BP ( 3, (1,2) )
No genera (1,3) porque antes llega a la meta (3,3)
BP ( 3, (3,1) ) 3 Corte lt f(3,1) 22
4 Devolver (4,0)
BP ( 3, (2,3) )
BP ( 3, (3,3) ) Es la meta. Devuelve (3, (3,3))
  • Con la rama de (2,1) llega a un fallo y devuelve
    un fsig 4.
  • Con la rama de (1,2) llega a la meta.

39
Notas finales a IDA
  • El algoritmo va realizando búsquedas en
    profundidad que terminan o rebotan cuando
    supera el coste de corte. Entonces el Corte se
    incrementa y se vuelve a realizar la búsqueda en
    profundidad hasta que encuentra la meta.
  • IDA es notablemente más económico que A en
    problemas sencillos, pero en problemas más
    difíciles, como ocurre con el ejemplo de la
    habitación, tiene un rendimiento similar a A.
  • Para probar esta economía del algoritmo se puede
    probar con el ejemplo de la habitación, quitando
    los obstáculos.

40
Otros métodos
  • Reducción del problema (problem reduction)
  • Verificación de restricciones (constraint
    satisfaction)
  • Análisis de medios y fines (means-ends analysis)

41
Reducción del problema
  • Otra heurística que depende del conocimiento del
    problema es la estrategia de divide y vencerás
    el problema se descompone en subproblemas
  • Veremos que una buena representación son los
    grafos Y-O
  • Hasta ahora los grafos eran del tipo O, en los
    que existe un camino simple para llegar a una
    meta.
  • La descomposición o reducción en subproblemas
    genera arcos Y es un tipo de arco en el que
    todos sus sucesores deben resolverse para que el
    arco apunte a una solución
  • Supongamos el siguiente ejemplo alguien se
    plantea como objetivo construir una aplicación.
    Tiene dos opciones
  • A. Subcontratarla (externalizarla)
  • B. Comprar un paquete y personalizarlo
  • C. Desarrollo propio, que se subdivide en (C.1)
    planificación, (C.2) análisis/diseño y (C.3)
    programación/pruebas

Objetivo conseguir aplicación de contabilidad
Subcontratar el desarrollo
Comprar paquete
Desarrollo propio
C.1
C.2
C.3
42
Verificación de restricciones
  • El estado meta es aquel que satisface un conjunto
    dado de restricciones
  • Los problemas de planificación y agendas son
    típicos en este sentido, ya que el diseño de la
    solución debe realizarse dentro de unos límites
    de tiempo, coste y recursos humanos o materiales
  • Los estados se definen mediante un conjunto de
    variables(Vi), cada variable tiene un dominio
    (Di) que es el conjunto de posibles valores de la
    variable. Puede ser continuo (por ejemplo, un
    valor entre 0,1) o discreto. La prueba de que
    se ha llegado a la meta es que el estado
    satisface todas las restricciones (este requisito
    se puede ablandar en función del problema)

43
Análisis de medios y fines
  • Se centra en las diferencias entre el estado
    actual y el estado objetivo. El sistema trata de
    encontrar uno o varios operadores que reduzcan la
    diferencia.
  • Si el operador no puede utilizarse para este
    estado, entonces se crea un subproblema
    consistente en buscar el estado al que se puede
    aplicar, es decir, se buscan estados que cumplan
    las precondiciones del operador
  • El proceso puede continuar recursívamente
  • Los operadores son reglas que contienen
  • Precondiciones (en el antecedente de la regla)
  • Cambios o resultados
  • Existe una tabla de diferencias, que ordena las
    reglas de acuerdo con su capacidad para reducir
    la diferencia

44
Un ejemplo de análisis (I)
  • Imaginemos un robot, que debe mover un escritorio
    de una habitación a otra, con dos objetos encima
    de él. Los objetos también deben trasladarse de
    habitación.
  • Operadores
  • EMPUJAR(obj, lug)
  • Precondiciones en(robot,,obj) grande(obj)
    despejado(obj) brazo_vacio
  • Resultado en(obj, lug) en(robot, lug)
  • LLEVAR(obj, lug)
  • Precondiciones en(robot,obj) pequeño(obj)
  • Resultado en(obj, lug) en(robot, lug)
  • ANDAR(lug) (no hay precondición)
  • Resultado en(robot,lug)
  • COGER(obj)
  • Precondición en(robot,obj)
  • Resultado sostiene(obj)
  • DEJAR(obj)
  • Precondición sostiene(obj)
  • Resultado sostiene(obj)

45
Un ejemplo de análisis (II)
  • Tabla de diferencias
  • Es importante que las diferencias importantes se
    reduzcan antes que las menos importantes
  • Existen al principio dos reglas que podamos
    utilizar para aminorar la diferencia
  • LLEVAR una de las precondiciones no tiene un
    operador que pueda satisfacerla
  • EMPUJAR para aplicarla es necesario hacer
  • En(robot,escritorio)
  • Despejado(escritorio)
  • qué operadores nos ayudan a cumplir las
    precondiciones?
  • Inconvenientes
  • Al tratar de aminorar una diferencia se puede
    aumentar otra
  • En problemas complejos las tablas de diferencia
    son muy costosas. Resultan necesarias técnicas de
    planificación
Write a Comment
User Comments (0)
About PowerShow.com