N - Grupo de Inteligencia Artificial
N - Grupo de Inteligencia Artificial
N - Grupo de Inteligencia Artificial
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