19.04.2013 Views

N - Grupo de Inteligencia Artificial

N - Grupo de Inteligencia Artificial

N - Grupo de Inteligencia Artificial

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Inteligencia</strong> <strong>Artificial</strong><br />

I.T. en Informática <strong>de</strong> Sistemas, 3º<br />

Curso académico: 2010/2011<br />

Profesores: Ramón Hermoso y Roberto Centeno<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Tema 2: Búsqueda<br />

2. Búsqueda<br />

2.1. Agentes <strong>de</strong> resolución <strong>de</strong> problemas<br />

2.2. Búsqueda no informada<br />

2.3. Búsqueda heurística<br />

2.4. Búsqueda multi-agente<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Entorno: problemas bien <strong>de</strong>finidos<br />

Problemas bien <strong>de</strong>finidos:<br />

discreto:<br />

se pue<strong>de</strong> concebir el mundo en estados<br />

en cada estado hay conjunto finito <strong>de</strong> percepciones y acciones<br />

accesible: el agente pue<strong>de</strong> acce<strong>de</strong>r a las características relevantes <strong>de</strong>l mundo<br />

pue<strong>de</strong> <strong>de</strong>terminar el estado actual <strong>de</strong>l mundo<br />

pue<strong>de</strong> <strong>de</strong>terminar el estado <strong>de</strong>l mundo que le gustaría alcanzar<br />

estático y <strong>de</strong>terminista: el agente pue<strong>de</strong> planificar todas sus acciones, ya que<br />

el mundo cambia sólo cuando el agente actúa<br />

el resultado <strong>de</strong> cada acción está totalmente <strong>de</strong>finido y previsible<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Objetivo:<br />

Ejemplo: las Torres <strong>de</strong> Hanoi<br />

• Trasladar los discos<br />

<strong>de</strong> la aguja A a C en el<br />

mismo or<strong>de</strong>n<br />

Restricción:<br />

• un disco mayor nunca<br />

<strong>de</strong>be reposar sobre<br />

uno <strong>de</strong> menor tamaño<br />

A B C<br />

A B C<br />

¿Cómo escribir el programa <strong>de</strong> agente correspondiente?<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Solución 1: tablas <strong>de</strong> actuación<br />

Tablas <strong>de</strong> actuación específicos <strong>de</strong>l problema:<br />

para cada situación hay una entrada en una tabla <strong>de</strong><br />

actuación;<br />

dicha entrada compila la secuencia <strong>de</strong> acciones a empren<strong>de</strong>r:<br />

cuatro discos en A ⇒<br />

disco 1 <strong>de</strong> A a C / disco 2 <strong>de</strong> A a B / disco 1 <strong>de</strong> C a B /<br />

disco 3 <strong>de</strong> A a C / disco 1 <strong>de</strong> B a A / disco 2 <strong>de</strong> B a C /<br />

disco 1 <strong>de</strong> A a C / disco 4 <strong>de</strong> A a B / disco 1 <strong>de</strong> C a B /<br />

disco 2 <strong>de</strong> C a A / disco 1 <strong>de</strong> B a A / disco 3 <strong>de</strong> C a B /<br />

disco 1 <strong>de</strong> A a C / disco 2 <strong>de</strong> A a B / disco 1 <strong>de</strong> C a B<br />

problema: limitaciones <strong>de</strong> memoria<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Algoritmos específicos <strong>de</strong>l problema:<br />

• el diseñador <strong>de</strong>l agente conoce un<br />

método para resolver el problema<br />

• codifica este método en un<br />

algoritmos particular para el<br />

problema<br />

• mejorar la flexibilidad:<br />

parametrizar el algoritmo<br />

• problema: el diseñador ha <strong>de</strong><br />

anticipar todos los escenarios<br />

posibles<br />

• los entornos reales suelen ser<br />

<strong>de</strong>masiado complejos como para<br />

anticipar todas las posibilida<strong>de</strong>s<br />

Solución 2: algoritmo<br />

PROCEDURE MoverDiscos(n:integer;<br />

origen,<strong>de</strong>stino,auxiliar:char);<br />

{ Pre: n > 0<br />

Post: output = [movimientos para pasar n<br />

BEGIN<br />

discos <strong>de</strong> la aguja origen<br />

a la aguja <strong>de</strong>stino] }<br />

IF n = 0 THEN {Caso base}<br />

writeln;<br />

ELSE BEGIN {Caso recurrente}<br />

MoverDiscos(n-1,origen,auxiliar,<strong>de</strong>stino);<br />

write('Pasar disco',n,'<strong>de</strong>',origen,'a',<strong>de</strong>stino);<br />

MoverDiscos(n-1,auxiliar,<strong>de</strong>stino,origen)<br />

END; {fin ELSE}<br />

END; {fin MoverDiscos}<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Solución 3: búsqueda<br />

Métodos in<strong>de</strong>pendientes <strong>de</strong>l problema :<br />

mo<strong>de</strong>lo <strong>de</strong>clarativo <strong>de</strong>l problema:<br />

“inicialmente todos los discos reposan en A y su tamaño <strong>de</strong>crece <strong>de</strong> abajo<br />

hasta arriba”<br />

“queremos que todos los discos estén en C en el mismo or<strong>de</strong>n”<br />

“po<strong>de</strong>mos mover un disco I a la aguja X, si no hay otro disco por encima <strong>de</strong> I<br />

y, si actualmente hay discos en X, entonces dichos discos han <strong>de</strong> ser más<br />

gran<strong>de</strong>s que I”<br />

“cuanto menos movimientos <strong>de</strong> discos hagamos mejor”<br />

algoritmo <strong>de</strong> búsqueda genérico:<br />

genera una solución a cualquier problema representado mediante el mo<strong>de</strong>lo<br />

simbólico<br />

mayor flexibilidad:<br />

el diseñador no necesita conocer la solución <strong>de</strong> antemano<br />

es más fácil adaptar el método a nuevas características <strong>de</strong>l problema<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Solución 3: Mo<strong>de</strong>lo <strong>de</strong>clarativo en<br />

CLIPS<br />

Escenario: 3 agujas (A, B, C) y 2 discos (uno, dos)<br />

(<strong>de</strong>ffacts nombre-agujas<br />

"Lista con los nombres <strong>de</strong> las agujas"<br />

(agujas A B C))<br />

(<strong>de</strong>ffacts situacion-inicial<br />

"Lista <strong>de</strong>scribiendo la pos. inicial <strong>de</strong> los discos en las agujas"<br />

(situacion (acciones ) (posicion A uno dos base B base C base)) )<br />

(<strong>de</strong>ffacts situacion-final<br />

"Lista <strong>de</strong>scribiendo la pos. <strong>de</strong>seada <strong>de</strong> los discos en las agujas"<br />

(meta A base B base C uno dos base ) )<br />

(<strong>de</strong>ffacts predicado-menor<br />

"hechos que <strong>de</strong>finen si un disco es menor que otro"<br />

(menor uno dos) (menor uno base) (menor dos base))<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Solución 3: Mo<strong>de</strong>lo <strong>de</strong>clarativo en<br />

(<strong>de</strong>frule mover-x-a-y<br />

)<br />

(agujas $? ?x $?)<br />

(agujas $? ?y $?)<br />

(situacion (acciones $?acciones)<br />

CLIPS<br />

(posicion $?inicio ?x ?disco-x $?medio ?y ?disco-y $?final) )<br />

(menor ?disco-x ?disco-y)<br />

=><br />

(assert (situacion<br />

(<strong>de</strong>frule meta<br />

)<br />

(acciones $?acciones (format nil "%s-%s->%s" ?x ?disco-x ?y))<br />

(posicion $?inicio ?x $?medio ?y ?disco-x ?disco-y $?final) ) )<br />

(situacion (acciones $?acciones)(posicion $?s-final) )<br />

(meta $?s-final)<br />

=><br />

(printout t crlf "Solución: " $?acciones crlf)<br />

(halt)<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Solución 3: Ajustes <strong>de</strong>l Mo<strong>de</strong>lo<br />

Resultados <strong>de</strong> la búsqueda:<br />

• 3 agujas 2 discos:<br />

Declarativo<br />

– ("A-uno->B" "A-dos->C" "B-uno->C")<br />

• 3 agujas 3 discos:<br />

– ("A-uno->C" "A-dos->B" "C-uno->B" "A-tres->C" "B-uno->A"<br />

"B-dos->C" "A-uno->C")<br />

• 3 agujas 4 discos:<br />

– ("A-uno->B" "A-dos->C" "B-uno->C" "A-tres->B" "C-uno->A"<br />

"C-dos->B" "A-uno->B" "A-cuatro->C" "B-uno->C" "B-dos->A"<br />

"C-uno->A" "B-tres->C" "A-uno->B" "A-dos->C" "B-uno->C")<br />

• 4 agujas 4 discos:<br />

– ("A-uno->B" "A-dos->D" "A-tres->C" "D-dos->C" "A-cuatro->D"<br />

"C-dos->A" "C-tres->D" "A-dos->D" "B-uno->D")<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


2. Búsqueda<br />

Tema 2: Búsqueda<br />

2.1. Agentes <strong>de</strong> resolución <strong>de</strong> problemas<br />

2.2. Búsqueda no informada<br />

2.3. Búsqueda heurística<br />

2.4. Búsqueda multiagente<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Agentes <strong>de</strong> resolución <strong>de</strong> problemas<br />

mantienen un mo<strong>de</strong>lo simbólico <strong>de</strong>l mundo<br />

<strong>de</strong>sean modificar el estado <strong>de</strong>l mundo <strong>de</strong> acuerdo con sus objetivos<br />

con tal fin, anticipan los efectos esperados <strong>de</strong> sus acciones sobre el<br />

mo<strong>de</strong>lo<br />

C<br />

A<br />

B<br />

D<br />

E<br />

A<br />

B<br />

C<br />

D<br />

E<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Ciclo <strong>de</strong> actuación:<br />

1. Definir el mo<strong>de</strong>lo<br />

2. Generar los objetivos<br />

Agentes especializados<br />

3. Percibir y clasificar la situación presente<br />

4. Buscar un plan <strong>de</strong> actuación<br />

5. Ejecutar el plan <strong>de</strong> actuación<br />

Los agentes son especializados:<br />

• el diseñador dota al agente a priori con conocimientos<br />

específicos<br />

– que <strong>de</strong>finen el mo<strong>de</strong>lo<br />

– que <strong>de</strong>finen los objetivos<br />

• se supone una percepción y una ejecución i<strong>de</strong>al<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Búsqueda en espacios <strong>de</strong> estados<br />

Espacio <strong>de</strong> estados: mo<strong>de</strong>lo <strong>de</strong>l mundo representado por un grafo<br />

Problema <strong>de</strong> búsqueda: espacio <strong>de</strong> estados + actitud <strong>de</strong>l agente<br />

Objetivo: encontrar el plan más eficiente que lleve <strong>de</strong>l estado inicial a un<br />

estado meta<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Estado:<br />

• configuración <strong>de</strong> n bloques<br />

Operadores:<br />

El problema <strong>de</strong> los bloques<br />

• apilar(X,Y): poner X encima <strong>de</strong> Y<br />

– Prec.: bloques X e Y están libres<br />

– Post.: bloque X está encima <strong>de</strong> Y<br />

• quitar(Y): poner Y en la mesa<br />

– Prec.: bloque Y está libre<br />

Coste:<br />

– Post.: bloque Y está en la mesa<br />

• la aplicación <strong>de</strong> cada operador vale<br />

una unidad<br />

Estado inicial<br />

C<br />

A B<br />

Estado meta<br />

A<br />

B<br />

C<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Representación <strong>de</strong>l problema<br />

Ejemplo con 3 bloques<br />

A<br />

B C<br />

C<br />

A<br />

B<br />

A<br />

C B<br />

B<br />

A<br />

C<br />

<strong>de</strong> los bloques<br />

C<br />

B A<br />

A<br />

C<br />

B<br />

A B C Plan óptimo: coste 3<br />

C<br />

A B<br />

B<br />

C<br />

A<br />

B<br />

C A<br />

A<br />

B<br />

C<br />

B<br />

A C<br />

C<br />

B<br />

A<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


€<br />

Conocimientos <strong>de</strong>l agente<br />

• Representación implícita <strong>de</strong>l problema <strong>de</strong> búsqueda<br />

• Conocimientos mínimos a priori <strong>de</strong> un agente:<br />

• s 0<br />

Estado inicial<br />

• expandir: s {s i1 , ..., s in } Conjunto finito <strong>de</strong> sucesores<br />

<strong>de</strong> un estado<br />

• meta?: s verdad | falso Prueba <strong>de</strong> éxito en un estado<br />

• c: (s i , s j ) v, v ∈ ℵ Coste <strong>de</strong> un operador<br />

n−1<br />

• c ( s s …s i1 i2 in ) = ∑c<br />

( s ,s ik ik+1 ) Coste <strong>de</strong> un plan<br />

k=1<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Ejercicio 1<br />

Problema <strong>de</strong> búsqueda / conocimiento <strong>de</strong>l agente:<br />

En una mesa se encuentran dos jarras, una con una capacidad <strong>de</strong> 3 litros<br />

(llamada Tres), y la otra con una capacidad <strong>de</strong> 4 litros (llamada Cuatro).<br />

Inicialmente, Tres y Cuatro están vacías. Cualquiera <strong>de</strong> ellas pue<strong>de</strong> llenarse con<br />

el agua <strong>de</strong> un grifo G. Asimismo, el contenido tanto <strong>de</strong> Tres como <strong>de</strong> Cuatro<br />

pue<strong>de</strong> vaciarse en una pila P. Es posible verter todo el agua <strong>de</strong> una jarra a la otra.<br />

No se dispone <strong>de</strong> dispositivos <strong>de</strong> medición adicionales. Se trata <strong>de</strong> encontrar una<br />

secuencia <strong>de</strong> operadores que <strong>de</strong>je exactamente dos litros <strong>de</strong> agua en Cuatro.<br />

a) Mo<strong>de</strong>le este problema como un problema <strong>de</strong> búsqueda. Con tal fin, <strong>de</strong>fina el<br />

estado inicial, el conjunto <strong>de</strong> estados meta, los operadores (especificando sus<br />

precondiciones y post-condiciones), así como el coste <strong>de</strong> cada operador.<br />

b) Caracterice el conocimiento a priori <strong>de</strong>l agente <strong>de</strong> resolución <strong>de</strong>l problema<br />

correspondiente? Facilite ejemplos <strong>de</strong> los resultados <strong>de</strong> la función expandir.<br />

c) Encuentre una solución al problema.<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Método <strong>de</strong> búsqueda:<br />

• estrategia para explorar el<br />

espacio <strong>de</strong> estados<br />

• en cada paso se expan<strong>de</strong> un<br />

estado<br />

• se <strong>de</strong>sarrolla sucesivamente<br />

un árbol <strong>de</strong> búsqueda<br />

Método general <strong>de</strong> búsqueda:<br />

1. seleccionar nodo hoja<br />

2. comprobar si es nodo meta<br />

3. expandir este nodo hoja<br />

Método <strong>de</strong> búsqueda<br />

Arbol <strong>de</strong> búsqueda:<br />

A<br />

C<br />

B<br />

C<br />

B A<br />

A<br />

B<br />

C<br />

C<br />

A B<br />

B<br />

C<br />

A<br />

B<br />

A C<br />

A<br />

B<br />

B<br />

C A<br />

A<br />

B<br />

C<br />

C<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Elementos <strong>de</strong>l algoritmo<br />

• el árbol se representa en base<br />

a un registro <strong>de</strong>l tipo nodo<br />

• abierta es una lista <strong>de</strong> nodos,<br />

que reúne las hojas <strong>de</strong>l árbol<br />

• vacía? <strong>de</strong>termina si una lista<br />

es vacía<br />

• primero quita el primer<br />

elemento <strong>de</strong> una lista<br />

• ordInsertar aña<strong>de</strong> un nodo a<br />

una lista, clasificado según<br />

una función <strong>de</strong> or<strong>de</strong>n<br />

Algoritmo <strong>de</strong> búsqueda<br />

{búsqueda general}<br />

abierta ← s 0<br />

Repetir<br />

Si vacía?(abierta) entonces<br />

<strong>de</strong>volver(negativo)<br />

nodo ← primero(abierta)<br />

Si meta?(nodo) entonces<br />

<strong>de</strong>volver(nodo)<br />

sucesores ← expandir(nodo)<br />

Para cada n∈sucesores hacer<br />

n.padre ← nodo<br />

ordInsertar(n,abierta,)<br />

Fin {repetir}<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Problema:<br />

Estados repetidos<br />

• el mismo estado pue<strong>de</strong> repetirse varias veces en el árbol <strong>de</strong> búsqueda<br />

• pue<strong>de</strong> generarse el mismo subárbol varias veces<br />

Soluciones:<br />

• ignorarlo<br />

• evitar ciclos simples:<br />

– no añadir el padre <strong>de</strong> un nodo al conjunto <strong>de</strong> sucesores<br />

• evitar ciclos generales:<br />

– no añadir un antecesor <strong>de</strong> un nodo al conjunto <strong>de</strong> sucesores<br />

• evitar todos los estados repetidos:<br />

– no añadir ningún nodo existente en el árbol al conjunto <strong>de</strong> sucesores<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Características:<br />

Clasificación <strong>de</strong> métodos<br />

• completitud: se encuentra una solución si existe<br />

• optimalidad: se encuentra la mejor solución si hay varias<br />

• complejidad en tiempo: ¿cuánto se tarda en encontrar la solución?<br />

• complejidad en espacio: ¿cuánta memoria se utiliza en la búsqueda?<br />

Tipos <strong>de</strong> métodos <strong>de</strong> búsqueda:<br />

• no informados: utilizan sólo los conocimientos mínimos<br />

• heurísticos: a<strong>de</strong>más utilizan información aproximada, y específica<br />

<strong>de</strong>l problema, para guiar la búsqueda<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


úsqueda<br />

general<br />

Resumen <strong>de</strong> los métodos <strong>de</strong> búsqueda<br />

(i)<br />

búsqueda en<br />

amplitud<br />

2.2 búsqueda<br />

no informada<br />

(ii) búsqueda<br />

en<br />

profundidad<br />

(iii) Búsqueda<br />

profundidad<br />

iterativa<br />

(iv) búsqueda<br />

<strong>de</strong> coste<br />

uniforme<br />

(vii) IDA*<br />

(v) búsqueda<br />

avara<br />

2.3 búsqueda<br />

heurística<br />

(vi) A *<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


2. Búsqueda<br />

Tema 2: Búsqueda<br />

2.1. Agentes <strong>de</strong> resolución <strong>de</strong><br />

problemas<br />

2.2. Búsqueda no informada<br />

2.3. Búsqueda heurística<br />

2.4. Búsqueda multiagente<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Búsqueda en amplitud:<br />

• inglés: breadth first search<br />

• Estrategia:<br />

Búsqueda en amplitud<br />

– generar el árbol por niveles <strong>de</strong><br />

profundidad<br />

– expandir todos los nodos <strong>de</strong> nivel<br />

i, antes <strong>de</strong> expandir nodos <strong>de</strong><br />

nivel i+1<br />

• Resultado:<br />

– consi<strong>de</strong>ra primero todos los<br />

caminos <strong>de</strong> longitud 1, <strong>de</strong>spués<br />

los caminos <strong>de</strong> longitud 2, etc.<br />

– Se encuentra el estado meta <strong>de</strong><br />

menor profundidad<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Árbol <strong>de</strong> búsqueda en amplitud<br />

Búsqueda en amplitud:<br />

Nivel 1<br />

Nivel 2<br />

Nivel 3<br />

Nivel 4<br />

A<br />

C<br />

B<br />

C<br />

B A<br />

A<br />

B<br />

. . .<br />

C<br />

B<br />

C<br />

A<br />

A<br />

B C<br />

C<br />

A B<br />

A<br />

C B<br />

. . . . . .<br />

A<br />

B<br />

B<br />

C A<br />

B<br />

C A<br />

C<br />

C<br />

B A<br />

A<br />

B<br />

C<br />

B<br />

A C<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Algoritmo:<br />

Algoritmo para búsqueda en amplitud<br />

• usar el algoritmo general <strong>de</strong><br />

búsqueda<br />

• añadir nuevos sucesores al final<br />

<strong>de</strong> la lista abierta<br />

• abierta funciona como cola<br />

– inserción al final<br />

– recuperación <strong>de</strong>s<strong>de</strong> la cabeza<br />

• estructura FIFO:<br />

– siempre expandir primero el<br />

nodo más antiguo (es <strong>de</strong>cir:<br />

menos profundo)<br />

{búsqueda en amplitud}<br />

abierta ← s 0<br />

Repetir<br />

Si vacía?(abierta) entonces<br />

<strong>de</strong>volver(negativo)<br />

nodo ← primero(abierta)<br />

Si meta?(nodo) entonces<br />

<strong>de</strong>volver(nodo)<br />

sucesores ← expandir(nodo)<br />

Para cada n∈ sucesores hacer<br />

n.padre ← nodo<br />

ordInsertar(n,abierta,final)<br />

Fin {repetir}<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


A<br />

C<br />

B<br />

C<br />

B A<br />

A<br />

B<br />

C<br />

Árbol <strong>de</strong> búsqueda en amplitud<br />

B<br />

C<br />

A<br />

A<br />

B C<br />

C<br />

A B<br />

A<br />

C B<br />

A<br />

. . . . . . . . . B<br />

B<br />

A C<br />

C<br />

A<br />

B<br />

B<br />

C A<br />

C<br />

C<br />

B A<br />

B<br />

A C<br />

Lista abierta:<br />

A<br />

C<br />

A B<br />

C<br />

B A<br />

B<br />

C<br />

A<br />

B<br />

A<br />

C<br />

B<br />

B<br />

C A<br />

C<br />

A<br />

A<br />

B<br />

C<br />

A<br />

B<br />

A<br />

C<br />

B<br />

B<br />

C<br />

C<br />

A<br />

A<br />

B<br />

A<br />

C<br />

B<br />

B<br />

A<br />

B C<br />

C<br />

C<br />

. . .<br />

C B<br />

B A A C ...<br />

A<br />

B<br />

A<br />

C B<br />

A<br />

C B<br />

B<br />

B<br />

B A A C ... A C<br />

C<br />

. . .<br />

C<br />

B<br />

C A<br />

C<br />

B A<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11<br />

B<br />

A C


Mejor caso<br />

d–2<br />

d–1<br />

d<br />

1<br />

Complejidad<br />

Complejidad en tiempo y espacio:<br />

1+b+...+b d-1 +1 ∈ O(b d )<br />

0<br />

• proporcional al número <strong>de</strong> nodos expandidos<br />

Suponemos que en el árbol <strong>de</strong> búsqueda<br />

• el factor <strong>de</strong> ramificación es b<br />

• el mejor nodo meta tiene profundidad d<br />

. . .<br />

Caso medio<br />

d–2<br />

d–1<br />

d<br />

1<br />

0<br />

. . .<br />

1+b+...+b d-1 +b d /2 ∈ O(b d )<br />

Peor caso<br />

d–2<br />

d–1<br />

d<br />

1<br />

0<br />

. . .<br />

1+b+...+b d-1 +b d ∈ O(b d )<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Requerimientos <strong>de</strong> tiempo y memoria<br />

Requerimientos <strong>de</strong> recursos <strong>de</strong> una búsqueda en amplitud exponencial<br />

• factor <strong>de</strong> ramificación efectivo: 10<br />

• tiempo: 1000 nodos/segundo<br />

• memoria: 100 bytes/nodo<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Búsqueda en amplitud: análisis<br />

Ventajas:<br />

• completo:<br />

• siempre se encuentra un nodo meta si existe<br />

• óptimo (para operadores <strong>de</strong> coste uno):<br />

• siempre se encuentra el nodo meta menos profundo<br />

Problemas:<br />

• complejidad<br />

• exponencial incluso en el mejor caso<br />

• los problemas <strong>de</strong> espacio son aún más graves que los<br />

problemas <strong>de</strong> tiempo<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Búsqueda en amplitud:<br />

Ejercicio 2.2<br />

El grafo que se muestra al lado<br />

<strong>de</strong>termina un problema <strong>de</strong> búsqueda.<br />

Cada nodo representa un estado; los<br />

arcos mo<strong>de</strong>lan la aplicación <strong>de</strong><br />

operadores. Suponga que A es el<br />

estado inicial y que K y E son<br />

estados meta<br />

a) <strong>de</strong>sarrolle el árbol <strong>de</strong> búsqueda<br />

que genera la búsqueda en<br />

amplitud. ¿Cuál <strong>de</strong> los nodos<br />

meta se encuentra primero?<br />

b) indique el or<strong>de</strong>n en que se<br />

expan<strong>de</strong>n los nodos<br />

c) ponga el estado <strong>de</strong> la lista abierta<br />

en cada paso <strong>de</strong>l algoritmo<br />

H<br />

D<br />

C<br />

A<br />

F<br />

E<br />

G<br />

B K Z<br />

W<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Búsqueda en profundidad:<br />

• inglés: <strong>de</strong>pth first search<br />

• Estrategia:<br />

Búsqueda en profundidad<br />

• expandir los nodos más<br />

profundos primero<br />

• si se llega a un nodo sin<br />

sucesores, dar vuelta atrás y<br />

expandir el siguiente nodo más<br />

profundo<br />

• Resultado:<br />

• el método va explorando un<br />

“camino actual”<br />

• no siempre se encuentra el<br />

nodo <strong>de</strong> profundidad mínima<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Árbol <strong>de</strong> búsqueda en profundidad<br />

búsqueda en profundidad<br />

(evitando ciclos simples):<br />

B<br />

C<br />

A<br />

A<br />

C<br />

B<br />

B<br />

C A<br />

C<br />

A B<br />

A<br />

C B<br />

A<br />

B<br />

B<br />

C<br />

A C<br />

C<br />

B A<br />

A<br />

B<br />

A<br />

B C<br />

C<br />

A<br />

C<br />

B A<br />

B<br />

C<br />

B<br />

A C<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Algoritmo:<br />

• usar el algoritmo general <strong>de</strong><br />

búsqueda<br />

Búsqueda en profundidad<br />

• añadir nuevos sucesores en la<br />

cabeza <strong>de</strong> la lista abierta<br />

• abierta funciona como pila<br />

– inserción en la cabeza <strong>de</strong> la lista<br />

– recuperación <strong>de</strong>s<strong>de</strong> la cabeza<br />

• estructura LIFO:<br />

– siempre expandir primero el<br />

nodo más reciente (es <strong>de</strong>cir:<br />

el más profundo)<br />

• al guardar todos los sucesores <strong>de</strong><br />

un nodo expandido en abierta, se<br />

permite la “vuelta atrás”<br />

{búsqueda en profundidad}<br />

abierta ← s 0<br />

Repetir<br />

Si vacía?(abierta) entonces<br />

<strong>de</strong>volver(negativo)<br />

nodo ← primero(abierta)<br />

Si meta?(nodo) entonces<br />

<strong>de</strong>volver(nodo)<br />

sucesores ← expandir(nodo)<br />

Para cada n∈ sucesores hacer<br />

n.padre ← nodo<br />

ordInsertar(n,abierta,cabeza)<br />

Fin {repetir}<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


B<br />

C<br />

A<br />

Árbol <strong>de</strong> búsqueda en profundidad<br />

A<br />

C<br />

B<br />

B<br />

C A<br />

A<br />

B<br />

C<br />

C<br />

A B<br />

A<br />

C B<br />

B<br />

A C<br />

C<br />

B A<br />

A<br />

B<br />

A<br />

B C<br />

C<br />

A<br />

C<br />

B A<br />

B<br />

C<br />

B<br />

A C<br />

Lista abierta:<br />

C<br />

A B<br />

B<br />

C<br />

A<br />

C<br />

B A<br />

A<br />

C<br />

B<br />

A<br />

C<br />

B A<br />

B<br />

C<br />

A<br />

B<br />

C<br />

A B C A B C<br />

A B C A B C<br />

B<br />

C A<br />

A<br />

B<br />

C<br />

A<br />

C B<br />

B<br />

A C<br />

A<br />

B C<br />

A<br />

C B<br />

C<br />

B A<br />

A<br />

B C<br />

B<br />

A C<br />

C<br />

B A<br />

C<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11<br />

A<br />

B<br />

B<br />

A C<br />

A<br />

B<br />

C


Problema:<br />

Límites <strong>de</strong> profundidad<br />

• la búsqueda en profundidad sólo es completa en el<br />

caso <strong>de</strong> árboles <strong>de</strong> búsqueda finitos<br />

• si existen caminos infinitos sin nodo meta, es posible<br />

que la búsqueda en profundidad no termine<br />

Solución:<br />

• búsqueda en profundidad limitada:<br />

– inglés: <strong>de</strong>pth limited search<br />

– búsqueda en profundidad con límite <strong>de</strong> profundidad d *<br />

– expandir sólo nodos con profundidad d ≤ d *<br />

• incompleto si la profundidad <strong>de</strong>l mejor nodo meta es mayor<br />

que d *<br />

. . .<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Búsqueda en profundidad limitada:<br />

Complejidad en tiempo:<br />

complejidad<br />

• proporcional al número <strong>de</strong> nodos expandidos<br />

• factor <strong>de</strong> ramificación b / límite <strong>de</strong> profundidad d* /<br />

nodo meta con profundidad d≤d*<br />

• mejor caso: O(d) (se expan<strong>de</strong>n sólo los nodos <strong>de</strong>l camino meta)<br />

• peor caso: O(bd*) (se expan<strong>de</strong>n todos los nodos <strong>de</strong> prof. ≤ d*)<br />

Complejidad en espacio:<br />

• sólo los nodos <strong>de</strong>l camino actual y sus “vecinos” (sucesores) necesitan<br />

almacenarse en la memoria<br />

• lineal en la profundidad <strong>de</strong>l árbol <strong>de</strong> búsqueda<br />

– mejor caso: O(b·d) / peor caso: O(b·d * )<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Búsqueda en profundidad limitada:<br />

Ventajas:<br />

análisis<br />

• mejora significativa <strong>de</strong> la complejidad en espacio con respecto a<br />

la búsqueda en amplitud (lineal frente a exponencial):<br />

• completo para límites <strong>de</strong> profundidad d* a<strong>de</strong>cuados<br />

Problemas:<br />

• no es óptima: el nodo meta que se encuentra pue<strong>de</strong> no ser <strong>de</strong><br />

profundidad mínima<br />

• es común que unos límites “buenos” <strong>de</strong> profundidad sólo pue<strong>de</strong>n<br />

establecerse cuando el problema ya haya sido resuelto<br />

• en general, no se pue<strong>de</strong> asegurar que la profundidad d <strong>de</strong> un nodo<br />

meta sea d ≤ d * , es <strong>de</strong>cir no se pue<strong>de</strong> garantizar la completitud.<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Búsqueda en profundidad:<br />

Ejercicio 2.3<br />

El grafo que se muestra al lado <strong>de</strong>termina un<br />

problema <strong>de</strong> búsqueda. Cada nodo representa<br />

un estado; los arcos mo<strong>de</strong>lan la aplicación <strong>de</strong><br />

operadores. Suponga que A es el estado inicial<br />

y que K y E son estados meta<br />

a) <strong>de</strong>sarrolle el árbol <strong>de</strong> búsqueda que genera<br />

la búsqueda en profundidad. ¿Cuál <strong>de</strong> los<br />

nodos meta se encuentra primero?<br />

b) indique el or<strong>de</strong>n en que se expan<strong>de</strong>n los<br />

nodos<br />

c) ponga el estado <strong>de</strong> la lista abierta en cada<br />

paso <strong>de</strong>l algoritmo<br />

d) ¿cómo cambiaría el proceso <strong>de</strong> búsqueda si<br />

aplicamos límites <strong>de</strong> profundidad, p.ej.:<br />

d * =2?<br />

H<br />

D<br />

C<br />

A<br />

F<br />

E<br />

G<br />

B K Z<br />

W<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Ejercicio 2.4<br />

Búsqueda en profundidad (limitada):<br />

La búsqueda en profundidad pue<strong>de</strong><br />

implementarse fácilmente con un programa<br />

recursivo.<br />

a) Especifique una implementación recursiva <strong>de</strong><br />

la búsqueda en profundidad en pseudocódigo.<br />

b) Modifique el pseudocódigo <strong>de</strong>l ejercicio a)<br />

para incorporar límites <strong>de</strong> profundidad.<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Búsqueda <strong>de</strong> profundización iterativa<br />

• Inglés: iterative <strong>de</strong>epening search<br />

• I<strong>de</strong>a:<br />

– esquivar el problema <strong>de</strong> elegir d * , al probar todos los posibles límites<br />

<strong>de</strong> profundidad<br />

• Estrategia:<br />

– enumerar todos los límites <strong>de</strong> profundidad d´, empezando por 0<br />

– realizar búsqueda <strong>de</strong> profundidad limitada hasta d´<br />

• Algoritmo:<br />

{búsqueda <strong>de</strong> profundización iterativa}<br />

abierta ← s 0<br />

<strong>de</strong>s<strong>de</strong> d´ ← 0 hasta ∝ hacer<br />

si búsqueda-en-prof-limitada(problema, d´) = éxito entonces<br />

fin {<strong>de</strong>s<strong>de</strong>}<br />

<strong>de</strong>volver(nodo-meta)<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Búsqueda <strong>de</strong> profundización iterativa<br />

límite d * =1<br />

fallo<br />

. . .<br />

límite d * =2<br />

fallo<br />

. . .<br />

límite d * =3<br />

. . .<br />

éxito<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Búsqueda <strong>de</strong> profundización iterativa:<br />

Complejidad en espacio:<br />

complejidad<br />

• igual que la búsqueda en profundidad: sólo se almacenan los nodos<br />

vecinos <strong>de</strong>l camino actual<br />

• lineal en la profundidad <strong>de</strong>l árbol <strong>de</strong> búsqueda: peor caso O(b·d)<br />

Complejidad en tiempo:<br />

• normalmente el coste adicional es relativamente pequeño<br />

• argumento intuitivo:<br />

– suponga un árbol <strong>de</strong> búsqueda <strong>de</strong> profundidad d<br />

– los nodos interiores (prof.


Búsqueda <strong>de</strong> prof. iterativa: complejidad en<br />

tiempo<br />

Complejidad en tiempo en el peor caso:<br />

• nº <strong>de</strong> nodos expandidos por la búsqueda en prof. limitada hasta prof. d:<br />

• nº <strong>de</strong> nodos expandidos por la búsqueda <strong>de</strong> prof. iterativa hasta prof. d:<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Búsqueda <strong>de</strong> prof. iterativa: complejidad en<br />

tiempo<br />

Coste adicional <strong>de</strong> tiempo <strong>de</strong> la búsqueda <strong>de</strong> profundización iterativa:<br />

€<br />

id<br />

Nw d<br />

dl<br />

Nw d<br />

( )<br />

=<br />

( )<br />

b d+2 −2b −bd +d +1<br />

b −1<br />

( ) 2<br />

b d+1 −1<br />

b −1<br />

= bd +2 − 2b − bd + d +1<br />

( b −1)<br />

2 ⋅<br />

= bd +2 − 2b − bd + d +1<br />

b d +2 − b d +1 − b +1<br />

= bd +1 b − 2b<br />

= b − 2<br />

b −1<br />

b d +1 −1<br />

b d+1 − bd<br />

b d+1 + d<br />

b d+1 + 1<br />

( )<br />

( )<br />

b d +1 b −<br />

b d+1<br />

b d+1 − b<br />

b d+1 + 1<br />

b d − d<br />

b d + d<br />

b d+1 + 1<br />

b d+1<br />

b −1− 1<br />

b d + 1<br />

b d+1<br />

b d+1<br />

b d+1<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Búsqueda en prof. iterativa: complejidad en<br />

tiempo<br />

Coste adicional <strong>de</strong> tiempo <strong>de</strong> la búsqueda <strong>de</strong> profundización iterativa:<br />

• para d→∞ se obtiene:<br />

• Ejemplo: b= 10<br />

• para b=10 y nodos meta profundos, la búsqueda <strong>de</strong> profundización<br />

iterativa expan<strong>de</strong> sólo 11% más nodos que la búsqueda en<br />

profundidad limitada<br />

• complejidad en tiempo en el peor caso <strong>de</strong> la búsqueda <strong>de</strong><br />

profundización iterativa : O(b d )<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Búsqueda no informada: resultados<br />

Resultados <strong>de</strong>l peor caso:<br />

• factor <strong>de</strong> ramificación b / profundidad <strong>de</strong> la mejor solución d /<br />

límite <strong>de</strong> profundidad d *<br />

Método no<br />

informado<br />

preferido<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Ejercicio 2.5<br />

Búsqueda <strong>de</strong> profundización iterativa:<br />

El grafo que se muestra al lado <strong>de</strong>termina un<br />

problema <strong>de</strong> búsqueda. Cada nodo representa<br />

un estado; los arcos mo<strong>de</strong>lan la aplicación <strong>de</strong><br />

operadores. Suponga que A es el estado inicial<br />

y que K y E son estados meta<br />

a) <strong>de</strong>sarrolle la secuencia <strong>de</strong> árboles <strong>de</strong><br />

búsqueda generadas por la búsqueda <strong>de</strong><br />

profundización iterativa, indicando para<br />

cada uno <strong>de</strong> ellos el or<strong>de</strong>n en que se<br />

expan<strong>de</strong>n los nodos<br />

b) ¿Cuál <strong>de</strong> los nodos meta se encuentra<br />

primero?<br />

H<br />

D<br />

C<br />

A<br />

F<br />

E<br />

G<br />

B K Z<br />

W<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Ejercicio 2.6<br />

Búsqueda <strong>de</strong> profundización iterativa:<br />

Describa características relevantes <strong>de</strong> los<br />

espacios <strong>de</strong> búsqueda en los que el<br />

rendimiento <strong>de</strong> la búsqueda <strong>de</strong><br />

profundización iterativa es mucho peor<br />

que el <strong>de</strong> la búsqueda en profundidad<br />

estándar. Ponga un problema ejemplo que<br />

ilustre dichas características.<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Problema <strong>de</strong> encontrar rutas<br />

Estado: estancia en una ciudad<br />

Coste <strong>de</strong> un operador: distancia por<br />

carretera a la ciudad vecina<br />

Operadores: ir a una ciudad vecina<br />

Coste <strong>de</strong> un plan: suma <strong>de</strong> distancias<br />

entre las ciuda<strong>de</strong>s visitadas<br />

Ora<strong>de</strong>a<br />

Zerind 71<br />

75<br />

151<br />

Arad<br />

140<br />

Sibiu 99<br />

118<br />

80<br />

Rimnicu<br />

Timisoara<br />

97<br />

Neamt<br />

Fagaras<br />

211<br />

87<br />

142<br />

Iasi<br />

92<br />

Vaslui<br />

111 Lugoj<br />

70 146<br />

Mehadia<br />

75<br />

Dobreta 120<br />

Pitesti<br />

101<br />

138<br />

Craiova<br />

98<br />

85<br />

Urziceni<br />

Bucarest<br />

90<br />

Giurgiu<br />

Hirsova<br />

86<br />

Eforie<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


118<br />

Z<br />

75<br />

A<br />

T<br />

Problema <strong>de</strong> encontrar rutas: ejemplo<br />

71<br />

111<br />

75<br />

D<br />

O<br />

140<br />

70<br />

L<br />

M<br />

Problema:<br />

151<br />

120<br />

S<br />

80<br />

R<br />

146<br />

C<br />

99<br />

97<br />

138<br />

P<br />

F<br />

101<br />

211<br />

G<br />

90<br />

B<br />

N<br />

85<br />

U<br />

87<br />

142<br />

I<br />

98<br />

92<br />

V<br />

H<br />

86<br />

E<br />

Ejemplo:<br />

• p 1 = A-S-F-B<br />

c(p 1 ) = 450<br />

• los métodos <strong>de</strong> búsqueda no informados encuentran el nodo meta <strong>de</strong><br />

menor profundidad; éste pue<strong>de</strong> no ser el nodo meta <strong>de</strong> coste mínimo<br />

• prof.(B p1 ) = 3 < 4 = prof.(B p2 ) / c(p1) = 450 > 418=c(p2)<br />

• p 2 = A-S-R-P-B<br />

c(p 2 ) = 418<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Búsqueda <strong>de</strong> coste uniforme<br />

Búsqueda <strong>de</strong> coste uniforme:<br />

• Inglés: uniform cost search<br />

• I<strong>de</strong>a:<br />

• guiar la búsqueda por el coste <strong>de</strong> los<br />

operadores<br />

• Método:<br />

• g(n): coste mínimo para llegar<br />

<strong>de</strong>l nodo inicial al nodo n<br />

• expandir siempre el nodo <strong>de</strong> menor<br />

coste g primero<br />

• Algoritmo:<br />

• almacenar cada nodo con su valor g<br />

• insertar los nuevos nodos en abierta<br />

en or<strong>de</strong>n ascen<strong>de</strong>nte según su valor g<br />

{búsqueda <strong>de</strong> coste uniforme}<br />

abierta ← s 0<br />

Repetir<br />

Si vacío?(abierta) entonces<br />

<strong>de</strong>volver(negativo)<br />

nodo ← primero(abierta)<br />

Si meta?(nodo) entonces<br />

<strong>de</strong>volver(nodo)<br />

sucesores ← expandir(nodo)<br />

Para cada n∈ sucesores hacer<br />

n.padre ← nodo<br />

ordInsertar(n,abierta,g)<br />

Fin {repetir}<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


R<br />

g=220<br />

Ejemplo: Búsqueda <strong>de</strong> coste uniforme<br />

S<br />

g=140 g= 118 Z<br />

A O F<br />

g=280 g=291 g =239<br />

S P C g=366<br />

g=300 g=317<br />

B<br />

g = 0<br />

T M<br />

g = 340 g= 299<br />

g =75<br />

L A<br />

g=229 g=236<br />

. . .<br />

Z S<br />

g = 212 g= 292<br />

O A g=150<br />

g=146<br />

S Z T g=268<br />

g=290 g=225<br />

O A<br />

g=283 g=287<br />

O A<br />

g=296 g=300<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Lógica <strong>de</strong> la búsqueda <strong>de</strong> coste uniforme<br />

118<br />

Z<br />

75<br />

A<br />

T<br />

71<br />

111<br />

75<br />

D<br />

O<br />

140<br />

70<br />

L<br />

M<br />

g = 80<br />

151<br />

S<br />

120<br />

80<br />

R<br />

146<br />

C<br />

99<br />

97<br />

138<br />

P<br />

F<br />

101<br />

211<br />

G<br />

90<br />

g = 120<br />

B<br />

N<br />

85<br />

U<br />

87<br />

142<br />

I<br />

98<br />

92<br />

V<br />

H<br />

86<br />

E<br />

g = 160<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Características <strong>de</strong> la búsqueda <strong>de</strong> coste<br />

Dinámica:<br />

uniforme<br />

• la búsqueda <strong>de</strong> coste uniforme <strong>de</strong>sarrolla sucesivamente todos los caminos por<br />

or<strong>de</strong>n <strong>de</strong> valor g creciente<br />

• igual que la búsqueda en amplitud si g(n) = prof.(n) para todos los n<br />

La búsqueda <strong>de</strong> coste uniforme es óptima:<br />

• suponga que se encuentra un camino a un nodo meta n g con g(n g ) = k<br />

• los valores <strong>de</strong> g crecen <strong>de</strong> forma monótona la largo <strong>de</strong> todos los caminos <strong>de</strong>l<br />

árbol <strong>de</strong> búsqueda<br />

• por tanto, la búsqueda <strong>de</strong> coste uniforme expan<strong>de</strong> todos los nodos n g con g(n)<br />

< k<br />

• en particular, si hubiera un nodo meta n g ' con g(n g ') < k , éste se habría<br />

expandido antes que n g<br />

• contradicción; en consecuencia n g es el nodo meta <strong>de</strong> menor coste (valor <strong>de</strong> g)<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Características <strong>de</strong> la búsqueda <strong>de</strong> coste<br />

uniforme<br />

La búsqueda <strong>de</strong> coste uniforme es completa:<br />

• sea n g un nodo meta con g(n g ) = k<br />

• suponga que no es encontrado por la búsqueda <strong>de</strong> coste uniforme<br />

– <strong>de</strong>be haber un número infinito <strong>de</strong> nodos n i con g(n i ) ≤ k<br />

– ya que el número <strong>de</strong> sucesores <strong>de</strong> un nodo es finito, <strong>de</strong>be haber un camino<br />

infinito p, tal que para todos los nodos n i <strong>de</strong> p se cumple que g(n i ) ≤ k<br />

– pero la función <strong>de</strong> coste c asigna un entero positivo a cada operador,<br />

y todas las sucesiones crecientes <strong>de</strong> enteros no tienen límite<br />

• contradicción; en consecuencia el nodo meta n g será encontrado<br />

Complejidad en tiempo y espacio:<br />

• exponencial, al igual que la búsqueda en amplitud<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Ejercicio 2.7<br />

Búsqueda <strong>de</strong> coste uniforme:<br />

Aplique la búsqueda <strong>de</strong> coste uniforme para encontrar<br />

una ruta <strong>de</strong> Craiova (C) a Fagaras (F). Desarrolle el<br />

árbol <strong>de</strong> búsqueda generado por dicho algoritmo,<br />

asumiendo que se evitan ciclos simples. Indique el<br />

valor g <strong>de</strong> cada nodo, así como el or<strong>de</strong>n en el que se<br />

expan<strong>de</strong>n los nodos.<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


2. Búsqueda<br />

Tema 2: Búsqueda<br />

2.1. Agentes <strong>de</strong> resolución<br />

<strong>de</strong> problemas<br />

2.2. Búsqueda no informada<br />

2.3. Búsqueda heurística<br />

2.4. Búsqueda multiagente<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Heurísticas<br />

Heurística (griego: heuriskein): “encontrar”, “<strong>de</strong>scubrir”<br />

<strong>Inteligencia</strong> <strong>Artificial</strong>:<br />

• compila conocimiento “empírico” sobre un problema / un entorno<br />

Interpretación “fuerte”:<br />

• una heurística suele facilitar la resolución <strong>de</strong> un problema, pero no garantiza<br />

que se resuelva<br />

• una heurística es una “regla <strong>de</strong> tres” para un problema<br />

• búsqueda: optimalidad o incluso completitud no garantizados<br />

Interpretación “débil”:<br />

• método riguroso + información heurística<br />

• información heurística pue<strong>de</strong> mejorar el rendimiento medio <strong>de</strong> un método <strong>de</strong><br />

resolución <strong>de</strong> problemas, pero no garantiza una mejora en el peor caso<br />

• búsqueda: mejora <strong>de</strong> complejidad no garantizado<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Funciones heurísticas<br />

Funciones heurísticas para búsqueda en el espacio <strong>de</strong> estados:<br />

• estiman <strong>de</strong> a<strong>de</strong>cuación <strong>de</strong> un nodo para ser expandido<br />

• métodos <strong>de</strong> búsqueda “el mejor primero” eligen el nodo más<br />

prometedor para expandir<br />

Heurística usual: “distancia” hacia la meta<br />

• h :N→ℵ mi<strong>de</strong> el coste real <strong>de</strong>s<strong>de</strong> el nodo n hasta el nodo meta más<br />

cercano<br />

• h * :N→ℵ es una función heurística que estima el valor <strong>de</strong> h(n)<br />

• una función heurística h * es optimista, si h * (n) ≤ h(n) para todo nodo n<br />

Ejemplos <strong>de</strong> funciones heurísticas optimistas:<br />

• mundo <strong>de</strong> los bloques: número <strong>de</strong> bloques <strong>de</strong>scolocados<br />

• encontrar rutas: distancia en línea recta hasta un nodo meta<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


118<br />

Función heurística para encontrar rutas<br />

Z<br />

75<br />

A<br />

T<br />

71<br />

111<br />

75<br />

D<br />

O<br />

140<br />

70<br />

L<br />

M<br />

151<br />

120<br />

S<br />

80<br />

R<br />

146<br />

C<br />

99<br />

97<br />

138<br />

P<br />

F<br />

101<br />

211<br />

G<br />

90<br />

B<br />

N<br />

85<br />

U<br />

87<br />

142<br />

I<br />

98<br />

92<br />

V<br />

H<br />

86<br />

E<br />

h *<br />

A 366<br />

B 0<br />

C 160<br />

D 242<br />

E 161<br />

F 178<br />

G 77<br />

H 151<br />

I 226<br />

L 244<br />

M 241<br />

N 234<br />

O 380<br />

P 98<br />

R 193<br />

S 253<br />

T 329<br />

U 80<br />

V 199<br />

Z 374<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Búsqueda avara:<br />

Inglés: greedy search<br />

I<strong>de</strong>a:<br />

Estrategia:<br />

Algoritmo:<br />

minimizar el coste estimado para<br />

llegar a la meta<br />

Entre las hojas <strong>de</strong>l árbol <strong>de</strong><br />

búsqueda, seleccionar el nodo que<br />

minimice h * (n)<br />

mantener la lista abierta or<strong>de</strong>nada<br />

por valores crecientes <strong>de</strong> h *<br />

insertar nuevos nodos en abierta<br />

según sus valores h *<br />

Búsqueda avara<br />

{búsqueda avara}<br />

abierta ← s 0<br />

Repetir<br />

Si vacía?(abierta) entonces<br />

<strong>de</strong>volver(negativo)<br />

nodo ← primero(abierta)<br />

Si meta?(nodo) entonces<br />

<strong>de</strong>volver(nodo)<br />

sucesores ← expandir(nodo)<br />

Para cada n∈sucesores hacer<br />

n.padre ← nodo<br />

ordInsertar(n,abierta,h * )<br />

Fin {repetir}<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Ejemplo 1: búsqueda avara<br />

S T<br />

h * h = 374<br />

* = 253 h * = 329 Z<br />

h * A F O R<br />

= 366 h * = 178 h * = 380 h * = 193<br />

S h * = 253 B h * =0<br />

h * = 366<br />

Solución subóptima:<br />

• c(A-S-F-B) = 450<br />

• c(A-S-R-P-B) = 418<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Ejemplo:<br />

• Nodo inicial: I (Iasi)<br />

Ejemplo 2: búsqueda avara<br />

• Nodo meta: F (Fagaras)<br />

• h F * estima la distancia hasta F<br />

h F *<br />

F 0<br />

I 226<br />

N 201<br />

V 246<br />

. . .<br />

h F * = 226<br />

N V h F * =246<br />

h F * = 201<br />

h F * = 226<br />

N V h F * =246<br />

h F * = 201<br />

h F * = 226<br />

. . .<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Análisis:<br />

Búsqueda avara: análisis<br />

• en general, la búsqueda avara sufre los mismos problemas que la búsqueda en<br />

profundidad<br />

• no es óptima (ejemplo 1)<br />

• no es completa (ejemplo 2)<br />

• sin embargo, suele encontrar una solución aceptable <strong>de</strong> forma rápida<br />

Comentarios:<br />

• problema fundamental <strong>de</strong> la búsqueda avara:<br />

• sólo consi<strong>de</strong>ra el coste para llegar al nodo actual<br />

• no se fija en la distancia restante <strong>de</strong>s<strong>de</strong> el nodo actual<br />

• para asegurar la completitud habría que evitar todos los estados repetidos<br />

• el método es óptimo sólo en aquellos espacios <strong>de</strong> estados en los que el coste <strong>de</strong> un<br />

nodo n es in<strong>de</strong>pendiente <strong>de</strong>l camino por el que se llega hasta él<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Problema <strong>de</strong> las 4 reinas:<br />

• 4 reinas en un tablero 4x4<br />

• estados: casillas <strong>de</strong> las 4 reinas<br />

• metal?: ninguna reina amenazada<br />

• op.: mover una reina a otra casilla<br />

<strong>de</strong> su misma fila<br />

• coste: el coste <strong>de</strong> cada op. es cero<br />

• estado inicial:<br />

Ejercicio 2.8<br />

Nótese:<br />

• dado que el coste <strong>de</strong> cada operador es 0, el<br />

camino por el cual se llega a un nodo no<br />

importa, siempre que al final se encuentre<br />

un nodo meta (ninguna reina esta<br />

amenazada)<br />

a) encuentre una heurística h * para el<br />

problema <strong>de</strong> las 4 reinas<br />

b) resuelve el problema aplicando la<br />

búsqueda avara con dicho heurística h *<br />

Comentario:<br />

si concebimos cada fila como una<br />

variable, po<strong>de</strong>mos replantear el ejercicio<br />

como un problema <strong>de</strong> satisfacción <strong>de</strong><br />

restricciones<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


I<strong>de</strong>a:<br />

Búsqueda A *<br />

• minimizar el coste estimado total <strong>de</strong> un camino en el árbol <strong>de</strong> búsqueda<br />

• combinar<br />

• el coste para llegar al nodo n (se conoce exactamente: g), y<br />

• el coste aproximado para llegar a un nodo meta <strong>de</strong>s<strong>de</strong> el nodo n<br />

(estimado por la función heurística h * )<br />

Función heurística <strong>de</strong> A * :<br />

– f (n) = g(n) + h(n): coste real <strong>de</strong>l plan <strong>de</strong> mínimo coste que pasa por n<br />

– f * (n) = g(n) + h * (n): estimación <strong>de</strong> f<br />

Estrategia A * :<br />

• entre las hojas <strong>de</strong>l árbol <strong>de</strong> búsqueda, elegir el nodo <strong>de</strong> valor f * mínimo<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Algoritmo A* :<br />

• se basa en la búsqueda general<br />

• almacenar el valor g <strong>de</strong> cada nodo<br />

expandido<br />

• mantener la lista abierta or<strong>de</strong>nada<br />

por valores crecientes <strong>de</strong> f *<br />

• insertar nuevos nodos en abierta<br />

según sus valores f *<br />

El Algoritmo A *<br />

{A*}<br />

abierta ← s 0<br />

Repetir<br />

Si vacío?(abierta) entonces<br />

<strong>de</strong>volver(negativo)<br />

nodo ← primero(abierta)<br />

Si meta?(nodo) entonces<br />

<strong>de</strong>volver(nodo)<br />

sucesores ← expandir(nodo)<br />

Para cada n∈sucesores hacer<br />

n.padre ← nodo<br />

ordInsertar(n,abierta, f * )<br />

Fin {repetir}<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


A<br />

f * = 280+366<br />

= 646<br />

S B<br />

f * = 338+253<br />

= 591<br />

f * = 450+0<br />

= 450<br />

Ejemplo 1: Búsqueda A *<br />

S<br />

f * = 140+253<br />

= 393<br />

F O R<br />

f * = 239+178<br />

= 417<br />

f * = 291+380<br />

= 671<br />

T<br />

f * = 118+329<br />

= 447 Z<br />

f * = 220+193<br />

= 413<br />

f * = 75+374<br />

= 449<br />

C P S f * f = 300+253<br />

* = 366+160 f * = 317+98<br />

= 526<br />

f * = 0+366<br />

= 366<br />

f * = 414+193<br />

= 607<br />

= 415<br />

f * = 455+160<br />

= 615<br />

R C B<br />

= 533<br />

f * = 418+0<br />

= 418<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Ejemplo:<br />

Ejemplo 2: Búsqueda A *<br />

• Nodo inicial: I (Iasi) / nodo meta: F (Fagaras)<br />

• h F * estima la distancia hasta F<br />

f F * = 0+226<br />

= 226<br />

N V fF * fF = 92+246<br />

* = 87+201<br />

= 288<br />

f F * = 174+226<br />

= 400<br />

= 338<br />

U I fF * fF = 184+226<br />

* = 234+151<br />

f * = 376+246<br />

= 622<br />

. . .<br />

= 385<br />

f * = 319+180<br />

= 499<br />

V B H<br />

= 410<br />

f * = 332+350<br />

= 682<br />

h F *<br />

B 180<br />

F 0<br />

I 226<br />

N 201<br />

U 151<br />

V 246<br />

. . .<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Valores <strong>de</strong> f * en árboles <strong>de</strong> búsqueda A *<br />

Posibles “tipos” <strong>de</strong> variación <strong>de</strong> los valores <strong>de</strong> f * a lo largo <strong>de</strong> un<br />

camino <strong>de</strong>s<strong>de</strong> la raíz hasta un nodo n j<br />

f *<br />

f * (n j )<br />

n 1<br />

(a) variable<br />

n j<br />

f *<br />

f * (n j )<br />

n 1<br />

n j<br />

(b) monótono creciente<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Funciones heurísticas consistentes<br />

Definición:<br />

Si para todo nodo n i y todo sucesor n j <strong>de</strong> n i se cumple que<br />

entonces h * es consistente<br />

Interpretación intuitiva:<br />

• h * es consistente si cumple la<br />

<strong>de</strong>sigualdad triangular<br />

h * (n i ) – h * (n j ) ≤ c(n i ,n j )<br />

c(n i ,n j )<br />

n i<br />

n j<br />

h * (n i )<br />

Nota: Si h * es consistente, entonces también es optimista<br />

h * (n j )<br />

n g<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Monotonía <strong>de</strong> f * con función<br />

heurística consistente<br />

Lema 1: Si h * es consistente, entonces f * crece <strong>de</strong> forma monótona en<br />

todos los caminos <strong>de</strong>l árbol <strong>de</strong> búsqueda, es <strong>de</strong>cir: si n j es<br />

sucesor <strong>de</strong> n i , entonces<br />

f * (n j ) ≥ f * (n i )<br />

Prueba:<br />

h * (n j ) ≥ h * (n i ) – c(n i ,n j )<br />

h * (n j ) + g(n j ) ≥ h * (n i ) + g(n j ) – c(n i ,n j )<br />

h * (n j ) + g(n j ) ≥ h * (n i ) + g(n i ) + c(n i ,n j ) – c(n i ,n j )<br />

f * (n j ) ≥ f * (n i )<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Valores <strong>de</strong> f * en árboles <strong>de</strong> búsqueda A *<br />

f *<br />

f * (n j )<br />

n 1<br />

h * consistente<br />

n j<br />

f *<br />

f * (n j )<br />

n 1<br />

h * consistente<br />

(a) variable (b) monótono creciente<br />

Corolario 1: Sea n m el mejor nodo meta. Si h * es consistente, entonces el<br />

conjunto <strong>de</strong> nodos expandidos por el algoritmo A * es<br />

{n i | f * (n i ) ≤ f * (n m ) }<br />

n j<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Lógica <strong>de</strong> la búsqueda A * con función<br />

118<br />

Z<br />

75<br />

A<br />

T<br />

71<br />

111<br />

75<br />

D<br />

O<br />

140<br />

70<br />

L<br />

f * = 380<br />

heurística consistente<br />

M<br />

151<br />

120<br />

S<br />

80<br />

R<br />

146<br />

C<br />

99<br />

97<br />

138<br />

P<br />

F<br />

101<br />

211<br />

G<br />

90<br />

B<br />

f * = 400<br />

N<br />

85<br />

U<br />

87<br />

142<br />

I<br />

98<br />

92<br />

V<br />

H<br />

86<br />

E<br />

f * = 420<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Optimalidad <strong>de</strong> A *<br />

Teorema 1: Si h * es consistente, entonces el método A * es óptimo<br />

Prueba:<br />

1. Debido a la consistencia <strong>de</strong> h * , la búsqueda se realiza por las “curvas <strong>de</strong> nivel” correspondientes a<br />

f * (lema 1). Se expan<strong>de</strong>n sucesivamente los nodos <strong>de</strong> menor a mayor valor <strong>de</strong> f *<br />

2. Por tanto, el primer nodo meta encontrado n tendrá el valor mínimo <strong>de</strong> f *<br />

(e.d. la misma argumentación que en el caso <strong>de</strong> la búsqueda <strong>de</strong> coste uniforme)<br />

3. Un nodo meta con valor mínimo <strong>de</strong> f * también tiene el valor mínimo <strong>de</strong> g.<br />

• f * (n ) = g(n )+ h * (n )<br />

• Si h * es consistente también es optimista, y entonces h * (n ) = 0<br />

para todo nodo meta<br />

4. En consecuencia, el camino en el árbol <strong>de</strong> búsqueda <strong>de</strong>s<strong>de</strong> la raíz hasta el primer nodo meta n es<br />

<strong>de</strong> coste mínimo, y A * es óptimo<br />

Nota: se pue<strong>de</strong> <strong>de</strong>mostrar el siguiente teorema más general:<br />

Si h * es optimista, entonces el método A * es óptimo<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Completitud <strong>de</strong> A *<br />

Teorema 2: Si h * es consistente, entonces el método A * es completo<br />

Prueba:<br />

• sea n g un nodo meta con f * (n g ) = k. Suponga que n g no es encontrado por el método<br />

A *<br />

• ya que el número <strong>de</strong> sucesores <strong>de</strong> un nodo es finito, <strong>de</strong>be haber un camino infinito p<br />

• <strong>de</strong>bido al lema 1 (monotonía <strong>de</strong> f * ) todos los nodos n i <strong>de</strong> p han <strong>de</strong> cumplir f * (n i ) ≤ k<br />

• pero la secuencia <strong>de</strong> valores <strong>de</strong> g a lo largo <strong>de</strong> p no tiene límite<br />

(véase la prueba <strong>de</strong> completitud <strong>de</strong> la búsqueda <strong>de</strong> coste uniforme)<br />

• por <strong>de</strong>finición h * (n) ≥ 0, por lo que la secuencia <strong>de</strong> f * (n i ) = g(n i ) + h * (n i ) tampoco tiene<br />

límite para los nodos n i a lo largo <strong>de</strong> p<br />

• contradicción; en consecuencia, el método A * encuentra el nodo meta n g<br />

Nota: se pue<strong>de</strong> <strong>de</strong>mostrar que A * es completo para cualquier función heurística<br />

positiva h *<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Encontrar Funciones Heurísticas: Aprendizaje<br />

I<strong>de</strong>a: generar información heurística “sobre la marcha”<br />

• realizar varias búsquedas (ligeramente diferentes) en el mismo dominio<br />

(p.e. siempre a Bucarest, pero <strong>de</strong>s<strong>de</strong> diferentes ciuda<strong>de</strong>s iniciales)<br />

• En cada paso <strong>de</strong> una búsqueda, usar el coste real <strong>de</strong> un paso parar mejorar el valor <strong>de</strong> h *<br />

• En la próxima búsqueda se utilizan los valores <strong>de</strong> h * actualizadas<br />

Método:<br />

• Inicialmente, se realiza una búsqueda con h * (n) = 0 para todos los nodos n<br />

• En cada paso <strong>de</strong> n i a n j :<br />

h * (ni)← min<br />

n j ∈expandir(n i ) h* (n j) + c(n i,n j)<br />

• Al visitar un nodo por segunda vez, se utilizan los valores <strong>de</strong> h * actualizados<br />

Problema:<br />

€<br />

[ ]<br />

• Hay que almacenar los valores h * <strong>de</strong> todos los nodos en una tabla (memoria!)<br />

<strong>Inteligencia</strong> <strong>Artificial</strong><br />

3º ITIS 2010/11


Ejemplo: A* con Aprendizaje <strong>de</strong> una Función<br />

80<br />

S<br />

140<br />

140 151 99<br />

A<br />

f L * = 140+0<br />

= 140<br />

R A O F<br />

fL *=220+0<br />

fL *= 280<br />

=220<br />

+75<br />

f L *= 291<br />

= 355<br />

+0 +142<br />

= 291 433<br />

80 97 146<br />

118<br />

S P C fL *=366<br />

fL *=300 fL *=317<br />

+80<br />

=380<br />

+0<br />

=317<br />

f L * = 239+0<br />

= 239<br />

+0<br />

=366<br />

Heurística<br />

f L * = 0+0<br />

= 0<br />

75<br />

f L * = 118+0<br />

= 118 Z<br />

111<br />

118<br />

L A<br />

f L *=229+0<br />

=229<br />

Ejemplo: ir <strong>de</strong> A a L<br />

Inicialmente h L *(n) = 0 para todo nodo n<br />

f L * = 75+0<br />

= 75<br />

fL *=236+75<br />

=311<br />

71 151<br />

fL *=146+0<br />

= 146<br />

O A f L<br />

* = 150+75<br />

= 225<br />

n A B C D E F G H I L M N O P R S T U V Z<br />

h L * 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0<br />

75 142 97 80 111 71<br />

146<br />

71<br />

Z S<br />

f L *=217<br />

+71<br />

=288<br />

f L *=297<br />

+80<br />

=377<br />

75<br />

140<br />

75<br />

S Z T fL *=268<br />

fL *=290 fL *=225<br />

+80<br />

=370<br />

118<br />

+71<br />

=296<br />

<strong>Inteligencia</strong> <strong>Artificial</strong><br />

3º ITIS 2010/11<br />

+111<br />

=379


Ejemplo: A* con Aprendizaje <strong>de</strong> una Función<br />

f L *=295+97<br />

=392<br />

80<br />

140<br />

S<br />

Z<br />

75<br />

f L * = 0+71<br />

= 71<br />

A<br />

fL * = 75+146<br />

= 221<br />

140 118<br />

75<br />

f L * = 215+80<br />

= 295<br />

R A O F<br />

f L *= 355<br />

+220<br />

= 575<br />

151<br />

99<br />

f L *= 366<br />

+231<br />

= 597<br />

f L * = 314+0<br />

= 314<br />

Heurística<br />

71<br />

f L * = 193+111<br />

= 304 Z<br />

111<br />

Ejemplo: ir <strong>de</strong> Z a L<br />

Inicialmente h L *(n) aprendido anteriormente<br />

Z S fL *=222<br />

f L *=142<br />

+213<br />

=355<br />

fL *=222<br />

+80 +99<br />

=302 =321<br />

n A B C D E F G H I L M N O P R S T U V Z<br />

h L * 146 0 0 0 0 0 0 0 0 0 0 0 142 0 97 80 111 0 0 71<br />

118<br />

220 231<br />

99 111 213<br />

O<br />

f L * = 150+213<br />

= 363<br />

L A<br />

fL *=304+0 fL *=311+220<br />

=304 =531<br />

f L * = 71+142<br />

= 213<br />

71<br />

151<br />

<strong>Inteligencia</strong> <strong>Artificial</strong><br />

3º ITIS 2010/11


Ejemplo: A* con Aprendizaje <strong>de</strong> una Función<br />

S<br />

140<br />

A<br />

f L * = 140+99<br />

= 239<br />

Heurística<br />

f L * = 0+220<br />

= 220<br />

118<br />

f L * = 118+111<br />

= 229 Z<br />

111<br />

Ejemplo: ir <strong>de</strong> A a L<br />

Inicialmente h L *(n) aprendido anteriormente<br />

f L * = 75+213<br />

= 288<br />

n A B C D E F G H I L M N O P R S T U V Z<br />

h L * 220 0 0 0 0 0 0 0 0 0 0 0 231 0 97 99 111 0 0 213<br />

229 111<br />

75<br />

118<br />

L A<br />

fL *=229+0 fL *=236+229<br />

=229 =465<br />

<strong>Inteligencia</strong> <strong>Artificial</strong><br />

3º ITIS 2010/11


Encontrar <strong>de</strong> Funciones Heurísticas:<br />

El problema <strong>de</strong>l 8-puzzle:<br />

Diseño<br />

Estado inicial<br />

• Estados:<br />

• posición <strong>de</strong> cada una <strong>de</strong> las piezas 2 7 3<br />

• Operadores:<br />

• Coste:<br />

• mover pieza adyacente a la posición<br />

<strong>de</strong>l “hueco”<br />

• <strong>de</strong> 2 a 4 operadores aplicables,<br />

según el estado<br />

• La aplicación <strong>de</strong> cada operador vale<br />

una unidad<br />

1<br />

6<br />

8<br />

4<br />

5<br />

Estado meta<br />

1 2 3<br />

8<br />

7<br />

6<br />

4<br />

5<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Encontrar <strong>de</strong> Funciones Heurísticas: Diseño<br />

Estado inicial<br />

2<br />

1<br />

6<br />

7<br />

8<br />

3<br />

4<br />

5<br />

Estado meta<br />

1 2 3<br />

8<br />

7<br />

6<br />

4<br />

5<br />

• Problemas relajados:<br />

• menos restricciones para cada operador<br />

• h * : distancia h exacta en el problema relajado<br />

• 8 Puzzle: una pieza pue<strong>de</strong> moverse <strong>de</strong> A a B...<br />

a) siempre<br />

b) si B está vació<br />

c) si A es adyacente a B<br />

• Funciones heurísticas:<br />

a) número <strong>de</strong> piezas <strong>de</strong>scolocadas<br />

– h a * (s0 ) = 5<br />

b) suma <strong>de</strong> saltos necesarios<br />

– h b * (s0 ) = 5<br />

c) suma <strong>de</strong> las distancias <strong>de</strong> Manhattan<br />

– h c * (s0 ) = 1+1+1+3+1=7<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Estado inicial<br />

1<br />

6<br />

8<br />

1 2 3<br />

8<br />

7<br />

2<br />

4<br />

7<br />

6<br />

3<br />

5<br />

Estado meta<br />

4<br />

5<br />

Ejercicio 2.9<br />

Heurísticas A* :<br />

Consi<strong>de</strong>re el 8-puzzle cuyo estado inicial y<br />

estado meta se muestra al lado:<br />

a) <strong>de</strong>sarrolle el árbol <strong>de</strong> búsqueda <strong>de</strong>l<br />

algoritmo A * usando la heurística h a *<br />

(número <strong>de</strong> piezas <strong>de</strong>scolocadas)<br />

b)<strong>de</strong>sarrolle el árbol <strong>de</strong> búsqueda <strong>de</strong>l<br />

algoritmo A * usando la heurística h c *<br />

(suma <strong>de</strong> distancias Manhattan)<br />

c)¿Cuál <strong>de</strong> las heurística expan<strong>de</strong> menos<br />

nodos? ¿Por qué? ¿Pue<strong>de</strong> sacar una<br />

conclusión general con respecto a la<br />

“calidad” <strong>de</strong> la funciones heurísticas?<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Calidad <strong>de</strong> las Funciones Heurísticas<br />

Definición:<br />

Sean h 1 * y h2 * dos funciones heurísticas optimistas.<br />

h 1 * es más informada que h2 * , si para todo nodo n se cumple que<br />

Ejemplo:<br />

h 1 * (n ) ≥ h 2 * (n )<br />

• en el 8-puzzle, h c * es más informada que ha *<br />

– las piezas bien colocadas no cuenta en h a * ni en hc *<br />

– la distancia Manhattan <strong>de</strong> cada pieza <strong>de</strong>scolocada es al menos 1<br />

– en consecuencia, en toda posible configuración n <strong>de</strong>l 8-puzzle la suma <strong>de</strong><br />

las distancias distancias es igual o mayor que la suma <strong>de</strong> piezas<br />

<strong>de</strong>scolocadas<br />

– para todas las configuraciones n se cumple h c * (n ) ≥ h a * (n )<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Calidad <strong>de</strong> las Funciones Heurísticas<br />

Lema 2: Sean h 1 * y h2 * dos funciones heurísticas consistentes. Si h1 * es más<br />

informada que h 2 * , entonces A * (h2 * ) expan<strong>de</strong> al menos tantos nodos<br />

como A * (h 1 * )<br />

Prueba:<br />

1. Para el mejor nodo meta nm se cumple que f * (nm ) = f * !<br />

1 (nm ) = f *<br />

2 (nm )<br />

2. Ya que h 1 * es más informada que h2 * , para todos los nodos n se cumple que<br />

h 1 * (n ) ≥ h 2 * (n ), y por tanto f 1 * (n ) ≥ f 2 * (n )<br />

3. Por (1) y el Corolario 1 se sigue que<br />

• A * (h 1 * ) expan<strong>de</strong> todos los nodos nj con f 1 * (nj ) ≤ f * (n m )<br />

• A * (h 2 * ) expan<strong>de</strong> todos los nodos nj con f 2 * (nj ) ≤ f * (n m )<br />

4. Por (2), se verifica que f 1 * (nj ) ≤ f * (n m ) → f 2 * (nj ) ≤ f * (n m )<br />

5. Por (3) y (4) se concluye que cualquier nodo expandido por A * (h 1 * ) también<br />

será expandido por A * (h 2 * )<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Calidad <strong>de</strong> las Funciones Heurísticas<br />

€<br />

Nota:<br />

• Se pue<strong>de</strong> <strong>de</strong>mostrar que el lema 2 también se cumple si se<br />

asume sólo que h 1 * y h2 * sean funciones heurísticas optimistas.<br />

Conclusión:<br />

• preferir gran<strong>de</strong>s valores <strong>de</strong> h * , siempre que se mantenga<br />

optimista<br />

• si hay varias funciones heurísticas optimistas:<br />

h * * * * ( n)<br />

= max h ( n),h2<br />

( n),…,h<br />

1<br />

m n<br />

( )<br />

( )<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Complejidad <strong>de</strong> A *<br />

El número <strong>de</strong> nodos expandidos por A * <strong>de</strong>pen<strong>de</strong> <strong>de</strong> la precisión <strong>de</strong> h * :<br />

• si h * (n) = h(n) para todos los nodos n:<br />

• información completa: complejidad lineal (¡sin contar la complejidad <strong>de</strong> computar h * !)<br />

• calcular h * (n) suele equivaler a resolver el problema completo<br />

• si h * (n) = 0 para todos los nodos n:<br />

• A * <strong>de</strong>genera a la búsqueda <strong>de</strong> coste uniforme<br />

• resultados generales [Russell, pág. 101]:<br />

• en el peor caso, A * es lineal sólo si para todos los nodos n,<br />

| h (n) – h * (n) | ≤ O(c)<br />

• en el peor caso, A * es polinomial sólo si para todos los nodos n,<br />

| h (n) – h * (n) | ≤ O(log h(n))<br />

• en escenarios reales, el error heurístico |h (n) – h * (n) | crece, al menos, <strong>de</strong> forma<br />

proporcional al coste h (n)<br />

• aún así, suele haber una mejora notable en comparación con métodos no informados<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Resultados experimentales<br />

Comparación experimental:<br />

• número <strong>de</strong> nodos expandidos en el problema <strong>de</strong>l 8-puzzle<br />

• varias profundida<strong>de</strong>s d <strong>de</strong> la solución<br />

• media sobre 100 instancias <strong>de</strong>l problema<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Resultados acerca <strong>de</strong> A * :<br />

Análisis <strong>de</strong> A *<br />

• A * es completo y óptimo para funciones heurísticas consistentes (optimistas)<br />

• la complejidad en espacio y tiempo <strong>de</strong> A * es proporcional al número <strong>de</strong> nodos<br />

expandidos<br />

• A * es <strong>de</strong> eficiencia óptima [véase Russell y Norvig]<br />

• para todo heurística optimista h * , se verifica que no existe otro algoritmo que<br />

asegure optimalidad y a la vez garantice expandir menos nodos<br />

• sin embargo, al igual que en el caso <strong>de</strong> la búsqueda en amplitud (véase la tabla<br />

correspondiente), en situaciones límite los problemas <strong>de</strong> espacio <strong>de</strong> A * son más<br />

graves que los problemas <strong>de</strong> tiempo<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


IDA *<br />

IDA * : Iterative Deepening A* (Korf 1985)<br />

I<strong>de</strong>a:<br />

• aplicar búsqueda <strong>de</strong> profundización iterativa, pero en vez <strong>de</strong> usar sucesivos<br />

límites <strong>de</strong> profundidad, usar sucesivos límites f *<br />

Estrategia:<br />

• usar inicialmente el valor f * <strong>de</strong> la raíz como limite f *<br />

• realiza búsqueda en profundidad estándar hasta llegar al limite f * actual<br />

(es <strong>de</strong>cir: los valores f * no influyen en el or<strong>de</strong>n <strong>de</strong> expandir los nodos)<br />

• “curiosear” encima <strong>de</strong>l límite f * por el nodo con el siguiente valor f * más<br />

bajo<br />

• repetir el proceso con dicho valor f * como nuevo limite f *<br />

Características:<br />

• al igual que la búsqueda en profundidad, IDA * <strong>de</strong>sarrolla un “camino<br />

actual”<br />

• sólo los nodos vecinos <strong>de</strong> dicho camino actual se mantienen en le memoria<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


límite f * = 366<br />

A<br />

f * = 280+366<br />

= 646<br />

S B<br />

f * = 338+253<br />

= 591<br />

Búsqueda IDA * : Ejemplo (1)<br />

f * = 450+0<br />

= 450<br />

S<br />

f * = 140+253<br />

= 393<br />

F O R<br />

f * = 239+178<br />

= 417<br />

f * = 146+380<br />

= 526<br />

T<br />

f * = 118+329<br />

= 447 Z<br />

f * = 220+193<br />

= 413<br />

f * = 75+374<br />

= 449<br />

C P S f * f = 300+253<br />

* = 366+160 f * = 317+98<br />

= 526<br />

f * = 0+366<br />

= 366<br />

f * = 414+193<br />

= 607<br />

= 415<br />

f * = 455+160<br />

= 615<br />

R C B<br />

= 533<br />

f * = 418+0<br />

= 418<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Búsqueda IDA * : Ejemplo (2)<br />

límite f * = 393<br />

A<br />

f * = 280+366<br />

= 646<br />

S B<br />

f * = 338+253<br />

= 591<br />

f * = 450+0<br />

= 450<br />

S<br />

T<br />

f * = 140+253<br />

= 393<br />

F O R<br />

f * = 239+178<br />

= 417<br />

f * = 146+380<br />

= 526<br />

f * = 118+329<br />

= 447 Z<br />

f * = 220+193<br />

= 413<br />

f * = 75+374<br />

= 449<br />

C P S f * f = 300+253<br />

* = 366+160 f * = 317+98<br />

= 526<br />

f * = 0+366<br />

= 366<br />

f * = 414+193<br />

= 607<br />

= 415<br />

f * = 455+160<br />

= 615<br />

R C B<br />

= 533<br />

f * = 418+0<br />

= 418<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Búsqueda IDA * : Ejemplo (3)<br />

límite f * = 413<br />

A<br />

f * = 280+366<br />

= 646<br />

S B<br />

f * = 338+253<br />

= 591<br />

f * = 450+0<br />

= 450<br />

S<br />

T<br />

f * = 140+253<br />

= 393<br />

F O R<br />

f * = 239+178<br />

= 417<br />

f * = 146+380<br />

= 526<br />

f * = 118+329<br />

= 447 Z<br />

f * = 220+193<br />

= 413<br />

f * = 75+374<br />

= 449<br />

C P S f * f = 300+253<br />

* = 366+160 f * = 317+98<br />

= 526<br />

f * = 0+366<br />

= 366<br />

f * = 414+193<br />

= 607<br />

= 415<br />

f * = 455+160<br />

= 615<br />

R C B<br />

= 533<br />

f * = 418+0<br />

= 418<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Búsqueda IDA * : Ejemplo (4)<br />

límite f * = 415<br />

A<br />

f * = 280+366<br />

= 646<br />

S B<br />

f * = 338+253<br />

= 591<br />

f * = 450+0<br />

= 450<br />

S<br />

T<br />

f * = 140+253<br />

= 393<br />

F O R<br />

f * = 239+178<br />

= 417<br />

f * = 146+380<br />

= 526<br />

f * = 118+329<br />

= 447 Z<br />

f * = 220+193<br />

= 413<br />

f * = 75+374<br />

= 449<br />

C P S f * f = 300+253<br />

* = 366+160 f * = 317+98<br />

= 526<br />

f * = 0+366<br />

= 366<br />

f * = 414+193<br />

= 607<br />

= 415<br />

f * = 455+160<br />

= 615<br />

R C B<br />

= 533<br />

f * = 418+0<br />

= 418<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Búsqueda IDA * : Ejemplo (5)<br />

límite f * = 417<br />

A<br />

f * = 280+366<br />

= 646<br />

S B<br />

f * = 338+253<br />

= 591<br />

f * = 450+0<br />

= 450<br />

S<br />

T<br />

f * = 140+253<br />

= 393<br />

F O R<br />

f * = 239+178<br />

= 417<br />

f * = 146+380<br />

= 526<br />

f * = 118+329<br />

= 447 Z<br />

f * = 220+193<br />

= 413<br />

f * = 75+374<br />

= 449<br />

C P S f * f = 300+253<br />

* = 366+160 f * = 317+98<br />

= 526<br />

f * = 0+366<br />

= 366<br />

f * = 414+193<br />

= 607<br />

= 415<br />

f * = 455+160<br />

= 615<br />

R C B<br />

= 533<br />

f * = 418+0<br />

= 418<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Búsqueda IDA * : Ejemplo (6)<br />

límite f * = 418<br />

A<br />

f * = 280+366<br />

= 646<br />

S B<br />

f * = 338+253<br />

= 591<br />

f * = 450+0<br />

= 450<br />

S<br />

T<br />

f * = 140+253<br />

= 393<br />

F O R<br />

f * = 239+178<br />

= 417<br />

f * = 146+380<br />

= 526<br />

f * = 118+329<br />

= 447 Z<br />

f * = 220+193<br />

= 413<br />

f * = 75+374<br />

= 449<br />

C P S f * f = 300+253<br />

* = 366+160 f * = 317+98<br />

= 526<br />

f * = 0+366<br />

= 366<br />

f * = 414+193<br />

= 607<br />

= 415<br />

f * = 455+160<br />

= 615<br />

R C B<br />

= 533<br />

f * = 418+0<br />

= 418<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Algoritmo:<br />

• un subprograma bp-limite-f que<br />

realiza búsqueda en profundidad<br />

hasta un límite f * dado<br />

• <strong>de</strong>vuelve el siguiente f * más bajo<br />

• un subprograma IDA* que actualiza<br />

el límite f * y <strong>de</strong>tecta éxito/fallo<br />

{IDA*}<br />

limite-f ← f*(s 0 )<br />

Repetir<br />

limite-f ← bp-limite-f(limite-f)<br />

Si éxito ent. <strong>de</strong>volver(solución)<br />

Si limite-f =∞ ent. <strong>de</strong>volver(fallo)<br />

Fin {repetir}<br />

Algoritmo IDA *<br />

{bp-limite-f}<br />

abierta ← s 0<br />

f-siguiente ← ∞<br />

Repetir<br />

Si vacia?(abierta) entonces<br />

<strong>de</strong>volver(f-siguiente) {fallo}<br />

nodo ← primero(abierta)<br />

Si meta?(nodo) entonces<br />

<strong>de</strong>volver(nodo) {éxito}<br />

sucesores ← expandir(nodo)<br />

Para cada n∈ sucesores hacer<br />

Si f*(n )≤ límite-f entonces<br />

n.padre ← nodo<br />

ordInsertar(n,abierta,cabeza)<br />

Sino<br />

f-siguiente ← min(f-siguiente, f*(n ))<br />

Fin {repetir}<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Algoritmo IDA * :<br />

Ejercicio 2.10<br />

Aplique el algoritmo IDA * al problema <strong>de</strong>l 8-<br />

puzzle <strong>de</strong>l ejercicio 2.8. Simule a mano el<br />

proceso <strong>de</strong> búsqueda. ¿Cuántos diferentes límites<br />

f * son explorados ?<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Algunos resultados sobre IDA * :<br />

Análisis <strong>de</strong> IDA *<br />

• completo y óptimo para funciones heurísticas optimistas, al igual que A *<br />

• complejidad en espacio:<br />

– δ : coste <strong>de</strong> un operador / m: mejor nodo meta / b: factor <strong>de</strong> ramificación /<br />

d: profundidad <strong>de</strong> m<br />

• complejidad en tiempo:<br />

– muchos valores diferentes <strong>de</strong> f * (p.e. búsqueda <strong>de</strong> rutas):<br />

pue<strong>de</strong> elevar la complejidad en tiempo <strong>de</strong> A * al cuadrado<br />

– pocos valores diferentes <strong>de</strong> f * (p.e. 8 puzzle):<br />

proporcional a la complejidad en tiempo <strong>de</strong> A *<br />

• mejoras: “equilibrar” expansión repetida y uso <strong>de</strong> memoria<br />

– SMA * (Simplified Memory-boun<strong>de</strong>d A * ) [Russell 1992]<br />

– RBFS (Recursive Best First Search) [Korf 1992]<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Resultado clave:<br />

Resumen<br />

• algoritmos A * e IDA * — la información heurística pue<strong>de</strong> mejorar la<br />

eficiencia <strong>de</strong> un método <strong>de</strong> búsqueda sin sacrificar su optimalidad<br />

Extensiones:<br />

• Búsqueda aproximada:<br />

– acotar el espacio <strong>de</strong> búsqueda con información heurística fuerte (e.d. sacrificando<br />

las garantías <strong>de</strong> optimalidad y completitud<br />

– búsqueda guiada por subobjetivos (island-driven search), búsqueda jerárquica, …<br />

• Búsqueda en línea:<br />

– “engranar” búsqueda (elección <strong>de</strong> acciones) y acción/percepción ejemplos<br />

– búsqueda <strong>de</strong> horizonte (limited-horizon search), A * en tiempo real (RTA * ), …<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Tema 2: Búsqueda<br />

2. Búsqueda<br />

2.1. Agentes <strong>de</strong> resolución <strong>de</strong> problemas<br />

2.2. Búsqueda no informada<br />

2.3. Búsqueda heurística<br />

2.4. Búsqueda multiagente<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Resolución <strong>de</strong> problemas con múltiples<br />

agentes<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Situación:<br />

Agentes especializados<br />

• Múltiples agentes <strong>de</strong> resolución <strong>de</strong> problemas actúan en el mismo entorno<br />

• Las acciones <strong>de</strong> los <strong>de</strong>más agentes influyen en la medida <strong>de</strong> rendimiento<br />

<strong>de</strong> cada agente<br />

• Ningún agente pue<strong>de</strong> controlar las acciones <strong>de</strong> los <strong>de</strong>más agentes<br />

• Hasta cierto punto, un agente pue<strong>de</strong> pre<strong>de</strong>cir las acciones <strong>de</strong> los <strong>de</strong>más<br />

Tipos <strong>de</strong> problemas multiagente :<br />

• Escenarios cooperativos: metas compartidas<br />

• Escenarios parcialmente cooperativos: algunas metas compartidas,<br />

otras opuestas<br />

• Escenarios antagónicos: metas opuestas<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Ejemplo: el mundo síncrono <strong>de</strong> los bloques<br />

Dos agentes “conviven” en el mundo <strong>de</strong> los bloques:<br />

• cada agente tiene sus propia situación meta<br />

• los agentes evalúan la situación actual respecto a su “distancia” a su meta<br />

• dicha distancia viene dada por el plan más corto que lleva a la meta <strong>de</strong>l agente<br />

α 1<br />

situación inicial<br />

1<br />

4<br />

2<br />

3<br />

α 2<br />

1<br />

4<br />

α 1<br />

:<br />

3<br />

2<br />

metas α 2<br />

4<br />

3<br />

1 2<br />

distancia 2 distancia 4<br />

Actuación simultánea:<br />

• los agentes pue<strong>de</strong>n actuar en paralelo (<strong>de</strong> modo síncrono)<br />

• las acciones (planes) pue<strong>de</strong>n ejecutarse simultáneamente, siempre que no accedan<br />

al mismo bloque a la vez<br />

• el coste <strong>de</strong> un plan viene dado por el “tiempo” necesario para ejecutarlo<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Escenarios cooperativos<br />

α1 Estado inicial<br />

α2 Estados meta α2<br />

1<br />

4<br />

2<br />

3<br />

Potencial para la cooperación:<br />

• metas compartidas:<br />

• los dos agentes <strong>de</strong>sean alcanzar la misma situación<br />

• acuerdo respecto a realizar un plan conjunto P:<br />

• un agente trabaja en la pila izquierda, y el otro simultáneamente el la pila<br />

<strong>de</strong>recha:<br />

P = ( [quitar(1), quitar(2)], [apilar(4,1), apilar(3,2)] )<br />

• los dos agentes sacan provecho si se ejecuta el plan conjunto<br />

4<br />

1<br />

α 1<br />

3<br />

2<br />

4<br />

1<br />

3<br />

2<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


α 1<br />

situación inicial<br />

1<br />

4<br />

2<br />

3<br />

Escenarios antagónicos<br />

α 2<br />

Potencial para el conflicto:<br />

• metas totalmente antagónicas:<br />

• todos los bloques <strong>de</strong>ben colocarse en sitios diferentes, <strong>de</strong>pendiendo <strong>de</strong>l agente<br />

• no hay acuerdo, ni siquiera respecto a partes <strong>de</strong> un plan conjunto:<br />

• P a1 = ( [apilar(2,1), NOP], [apilar(3,2), NOP] )<br />

• P a2 = ( [apilar(1,2), NOP], [apilar(4,1), NOP] )<br />

α 1<br />

metas<br />

• todo lo que es “bueno” para a 1 es “malo” para a 2 , y viceversa<br />

3<br />

2<br />

1<br />

4<br />

α 2<br />

4<br />

1<br />

2<br />

3<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


α 1<br />

situación<br />

inicial<br />

Escenarios parcialmente cooperativos<br />

6<br />

4<br />

5<br />

3<br />

2 1<br />

α 2<br />

Potencial para la cooperación y el conflicto:<br />

• metas parcialmente compartidas:<br />

• los dos agentes <strong>de</strong>sean que los bloques 1, 3 y 4 estén en la mesa, sin embargo a 1 prefiere que el<br />

bloque 2 esté encima <strong>de</strong> 3, mientras que a 2 prefiere que esté encima <strong>de</strong> 4<br />

• acuerdo sólo sobre partes <strong>de</strong> un plan conjunto P :<br />

• P a1 = ( [quitar(5), quitar(6)], [quitar(4), quitar(3)], [apilar(2,3), NOP ] )<br />

• P a2 = ( [quitar(5), quitar(6)], [quitar(4), quitar(3)], [apilar(2,4), NOP ] )<br />

• los dos agentes sacan provecho si se ejecuta un plan conjunto, pero <strong>de</strong>pendiendo <strong>de</strong>l plan un<br />

agente “gana” más que otro<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11<br />

α 1<br />

2<br />

1 4 3<br />

...<br />

metas<br />

2<br />

1 4<br />

α 2<br />

... 3 ...


Juegos:<br />

Escenarios antagónicos: Juegos<br />

• ejemplo “clásico” <strong>de</strong> escenarios antagónicos (juegos <strong>de</strong> suma nula)<br />

• el escenario está totalmente <strong>de</strong>finido por las reglas <strong>de</strong>l juego, y los agentes<br />

jugadores los conocen completamente<br />

Tipos <strong>de</strong> juegos:<br />

• número <strong>de</strong> jugadores :<br />

– bipersonales (damas) / múltiples jugadores (Monopoly)<br />

• elementos <strong>de</strong> azar:<br />

– con elementos <strong>de</strong> azar (backgammon) /<br />

sin elementos <strong>de</strong> azar (damas)<br />

• información:<br />

– información perfecta (damas) /<br />

información incompleta (póker)<br />

juegos bipersonales con<br />

información perfecta y<br />

sin elementos <strong>de</strong> azar<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Tres en Raya:<br />

• dos jugadores (min y max)<br />

Ejemplo: Tres en Raya<br />

• los jugadores van poniendo fichas en las casillas<br />

<strong>de</strong> un tablero 3x3<br />

– max usa las fichas X / min usa las fichas O<br />

– una casilla pue<strong>de</strong> contener como mucho una ficha<br />

• Reglas:<br />

– Inicialmente el tablero está vacío<br />

– max empieza y los jugadores se van alternando en<br />

poner sus fichas<br />

– max gana si obtiene una raya <strong>de</strong> tres fichas X<br />

– min gana si obtiene una raya <strong>de</strong> tres fichas O<br />

– si todas las casillas están ocupadas sin que haya<br />

una raya <strong>de</strong> 3 fichas <strong>de</strong>l mismo tipo, hay empate<br />

gana max<br />

gana min<br />

empate<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Nótese:<br />

Mo<strong>de</strong>lo <strong>de</strong> juegos bipersonales<br />

Conocimientos mínimos a priori <strong>de</strong> los agentes max y <strong>de</strong> min :<br />

– s0 posición inicial (estado inicial)<br />

– expandir: s {si1 , ..., sin } cjto. finito <strong>de</strong> posiciones sucesores<br />

– terminal?: s true | false prueba terminal<br />

– U: s k, k∈ℜ función parcial <strong>de</strong> utilidad <strong>de</strong>l juego<br />

• la función expandir<br />

• codifica las jugadas (acciones) permitidas en una posición s<br />

• supone implícitamente que los jugadores se alternan en realizar las jugadas<br />

• la función <strong>de</strong> utilidad está <strong>de</strong>finida sólo en los estados terminales s<br />

• juegos <strong>de</strong> suma nula: max gana si sólo si min pier<strong>de</strong><br />

• gana max: U(s) = +∞ / gana min : U(s) = –∞ / empate: U(s) = 0<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


max<br />

min<br />

max<br />

min<br />

terminal<br />

Ejemplo: Árbol <strong>de</strong> juego para Tres en Raya<br />

...<br />

–∞<br />

... ...<br />

0<br />

+∞<br />

utilidad<br />

. . .<br />

. . .<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Definición:<br />

Árboles <strong>de</strong> juego<br />

Sea N un conjunto <strong>de</strong> nodos, E ⊆ N×N, L = { max, min }, y G = ( N, E, L ) un<br />

árbol etiquetado. G es un árbol <strong>de</strong> juego si<br />

– G no es vacío<br />

– la raíz está etiquetada max<br />

– todos los sucesores <strong>de</strong> max son etiquetados min<br />

– todos los sucesores <strong>de</strong> min son etiquetados max<br />

Observaciones:<br />

• cada nivel <strong>de</strong>l árbol <strong>de</strong> juego representa un ply (media jugada)<br />

– en los nodos etiquetados max, es el turno <strong>de</strong>l agente max<br />

– en los nodos etiquetados min, es el turno <strong>de</strong>l agente min<br />

• las hojas <strong>de</strong> un árbol <strong>de</strong> juego (completamente <strong>de</strong>sarrollado)<br />

representan las posiciones terminales <strong>de</strong>l juego<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Estrategias<br />

Problema <strong>de</strong>l agente max: ¿cómo <strong>de</strong>terminar su mejor jugada?<br />

• max podría aplicar métodos <strong>de</strong> búsqueda estándar, usando las posiciones en<br />

las que él gana como estados meta<br />

• pero min no querría realizar las acciones que el plan <strong>de</strong> max prevé para él !<br />

Estrategia:<br />

• <strong>de</strong>fine las jugadas <strong>de</strong> max para cada posible jugada <strong>de</strong> min<br />

• un subárbol <strong>de</strong>l árbol <strong>de</strong> juego<br />

Estrategia óptima (o racional) :<br />

• la estrategia que implica el mejor resultado garantizado para max<br />

• escenarios totalmente antagónicos con agentes racionales:<br />

– max pue<strong>de</strong> asumir que min hará lo mejor para sí mismo, lo que a su vez es lo peor para<br />

max<br />

• la estrategia óptima para max es la estrategia minimax:<br />

– maximizar la utilidad mínima en cada jugada<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


max<br />

min<br />

terminal<br />

Ejemplo: estrategia minimax<br />

estrategia óptima:<br />

a 1 a 2 a 3<br />

0 -∞ -∞<br />

a 1,1 a 1,2 a 1,3 a 2,1 a 2,2 a 2,3<br />

utilidad 0 0 +∞ +∞ +∞ –∞ 0 0 –∞<br />

0<br />

mejor jugada <strong>de</strong> max: a 1<br />

a 3,1 a 3,2 a 3,3<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Método Minimax:<br />

Método minimax<br />

1. Generar el árbol <strong>de</strong> juego completo<br />

2. Aplicar la función <strong>de</strong> utilidad en cada nodo terminal<br />

3. Propagar las utilida<strong>de</strong>s hacia arriba<br />

– en los nodos max, usar la utilidad máxima <strong>de</strong> los sucesores<br />

– en los nodos min, usar la utilidad mínima <strong>de</strong> los sucesores<br />

4. Eventualmente los valores <strong>de</strong> utilidad llegan al nodo raíz (max)<br />

5. La jugada óptima <strong>de</strong> max es la que lleva al sucesor <strong>de</strong> utilidad máxima<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Decisiones imperfectas<br />

Problema: crecimiento exponencial <strong>de</strong>l árbol <strong>de</strong> juego<br />

• incluso en juegos muy simples, es imposible <strong>de</strong>sarrollar el árbol <strong>de</strong><br />

juego completo hasta todos sus nodos terminales<br />

Solución: Heurísticas<br />

• sustituir la prueba terminal por una prueba suspensión que <strong>de</strong>tiene la<br />

búsqueda aún sin llegar a una posición terminal:<br />

– límite <strong>de</strong> profundidad fijo (número <strong>de</strong> plys fijo)<br />

– posiciones “en reposo”<br />

• aplicar una función <strong>de</strong> evaluación e, que estime la utilidad esperada<br />

<strong>de</strong>l juego correspondiente a una posición s <strong>de</strong>terminada<br />

– e <strong>de</strong>be coincidir con la función <strong>de</strong> utilidad u en los nodos terminales<br />

– suele ser función lineal pon<strong>de</strong>rada : e(s) = w 1 f 1 (s) + w 2 f 2 (s) + . . . + w n f n (s)<br />

– Ajedrez: e(s) = “suma <strong>de</strong> los valores materiales en s”<br />

– Tres en Raya: e(s) = “nº <strong>de</strong> línea abiertas para líneas max en s” –<br />

“nº <strong>de</strong> línea abiertas para líneas min en s”<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


max<br />

min<br />

Ejemplo: minimax con suspensión<br />

estrategia óptima:<br />

a 1 a 2 a 3<br />

3 2 2<br />

a 1,1 a 1,2 a 1,3 a 2,1 a 2,2 a 2,3<br />

evaluación e 3 12 8 2 4 6 14 5 2<br />

3<br />

mejor jugada <strong>de</strong> max: a 1<br />

a 3,1 a 3,2 a 3,3<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


max<br />

min<br />

max<br />

Suspensión en ply 3<br />

Ejemplo: Tres en Raya<br />

... ... ... ...<br />

–∞<br />

1<br />

–∞<br />

+∞<br />

–∞ –∞ –∞ 2<br />

+∞<br />

0 1 1 1 1 +∞ 1 1 +∞<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Ejercicio 2.11<br />

Considérese el siguiente árbol <strong>de</strong> juego <strong>de</strong>sarrollado hasta ply 3. Los nodos<br />

están etiquetados con los valores <strong>de</strong> la función <strong>de</strong> evaluación e.<br />

a) Evalúe el árbol <strong>de</strong>l juego en base al algoritmo minimax.<br />

b) ¿Cuál es la mejor jugada para el agente max?<br />

7 6 8 5 2 3 0 –2 6 2 5 8 9 2<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


max<br />

min<br />

Nótese:<br />

Poda α-β<br />

• a veces es posible calcular la utilidad <strong>de</strong> un nodo sin tener que evaluar<br />

todos sus sucesores<br />

a 1<br />

3 ≤ 2 2<br />

a 1,1 a 1,2 a 1,3 a 2,1<br />

3<br />

a 2<br />

a 2,2<br />

a 2,3<br />

3 12 8 2 14 5 2<br />

a 3<br />

a 3,1 a 3,2 a 3,3<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Poda α-β<br />

Utilidad más alta encontrada en un nodo max hasta el momento: α<br />

max<br />

min . . .<br />

β<br />

α<br />

Condición <strong>de</strong> poda: β≤α<br />

• La utilidad U min <strong>de</strong>l nodo min<br />

será como mucho β<br />

• La utilidad U max <strong>de</strong>l nodo max<br />

será al menos α<br />

• No es necesario explorar los<br />

sucesores restantes <strong>de</strong> min, ya<br />

que se cumple en todo caso:<br />

U min ≤ β ≤ α ≤ U max<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Poda α-β<br />

Utilidad más baja encontrada en un nodo min hasta el momento: β<br />

min<br />

max . . .<br />

α<br />

β<br />

Condición <strong>de</strong> poda: α≥β<br />

• La utilidad U max <strong>de</strong>l nodo max<br />

será al menos α<br />

• La utilidad U min <strong>de</strong>l nodo min<br />

será como mucho β<br />

• No es necesario explorar los<br />

sucesores restantes <strong>de</strong> max, ya<br />

que se cumple en todo caso:<br />

U min ≤ β ≤ α ≤ U max<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Ejercicio 2.12<br />

Consi<strong>de</strong>rese el árbol <strong>de</strong> juego <strong>de</strong>l ejercicio anterior. Evalúe el árbol<br />

utilizando el algoritmo minimax con poda α-β. Cuando aplica una poda,<br />

indique la condición <strong>de</strong> poda correspondiente.<br />

7 6 8 5 2 3 0 –2 6 2 5 8 9 2<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11


Resumen<br />

Análisis:<br />

• la eficiencia <strong>de</strong> minimax con poda α-β <strong>de</strong>pen<strong>de</strong> <strong>de</strong>l or<strong>de</strong>n en el que se<br />

exploran los nodos<br />

• en promedio, la poda α-β permite expandir 50% menos nodos que<br />

minimax<br />

Problemas:<br />

• efecto horizonte:<br />

– la búsqueda se suspen<strong>de</strong> justo cuando el jugador está por hacer una gran jugada<br />

• suposición <strong>de</strong> racionalidad perfecta:<br />

– suponga que max está a punto <strong>de</strong> per<strong>de</strong>r si min juega <strong>de</strong> forma óptima<br />

– sin embargo, hay una jugada que hacer ganar max, si min hace un solo error<br />

Extensiones:<br />

• juegos con elementos <strong>de</strong> azar (p.e. backgammon)<br />

– expectminimax: añadir niveles <strong>de</strong> “nodos azar” y calcular su utilidad esperada<br />

• apren<strong>de</strong>r funciones <strong>de</strong> evaluación y <strong>de</strong> suspensión<br />

• heurísticas “fuertes” basados en meta-razonamiento<br />

– algoritmos <strong>de</strong> búsqueda guiados por la utilidad esperada <strong>de</strong> expandir un nodo<br />

<strong>Inteligencia</strong> <strong>Artificial</strong> 3º ITIS<br />

2010/11

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!