Sesión 2 - Grupo de Inteligencia Artificial
Sesión 2 - Grupo de Inteligencia Artificial
Sesión 2 - 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 />
Ing. Sup. en Informática, 4º<br />
Curso académico: 2007/2008<br />
Profesores: Sascha Ossowski y Oswaldo Vélez<br />
–1–<br />
<strong>Sesión</strong> 2<br />
“Búsqueda no-informada”<br />
Tema 2: Agentes basados en Búsqueda<br />
Resumen:<br />
2. Agentes basados en búsqueda<br />
2.1. Búsqueda en espacios <strong>de</strong> estados<br />
2.2 Búsqueda no-informada<br />
2.3. Búsqueda heurística<br />
2.4. Búsqueda con espacios estructurados<br />
–2–<br />
<strong>Inteligencia</strong> <strong>Artificial</strong><br />
4º Ing. Sup. Inf.<br />
<strong>Inteligencia</strong> <strong>Artificial</strong><br />
4º Ing. Sup. Inf.<br />
1
Agentes basados en búsqueda<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 mo<strong>de</strong>lo<br />
C<br />
A<br />
B<br />
D<br />
E<br />
–3–<br />
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 />
–4–<br />
A<br />
B<br />
C<br />
D<br />
E<br />
<strong>Inteligencia</strong> <strong>Artificial</strong><br />
4º Ing. Sup. Inf.<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><br />
4º Ing. Sup. Inf.<br />
2
Ejemplo: Torres <strong>de</strong> Hanoi<br />
Objetivo:<br />
• Trasladar los discos <strong>de</strong><br />
la aguja A a B en el<br />
mismo or<strong>de</strong>n<br />
Restricción:<br />
• un disco mayor nunca<br />
<strong>de</strong>be reposar sobre uno<br />
<strong>de</strong> menor tamaño<br />
¿Por qué búsqueda?<br />
–5–<br />
A B C<br />
A B C<br />
¿Cómo escribir el programa <strong>de</strong> agente correspondiente?<br />
Solución 1: tablas <strong>de</strong> actuación<br />
–6–<br />
<strong>Inteligencia</strong> <strong>Artificial</strong><br />
4º Ing. Sup. Inf.<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> 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 / disco 3 <strong>de</strong> A a C /<br />
disco 1 <strong>de</strong> B a A / disco 2 <strong>de</strong> B a C /disco 1 <strong>de</strong> A a C / disco 4 <strong>de</strong> A a B /<br />
disco 1 <strong>de</strong> C a B / 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 />
• mejorar la flexibilidad: apren<strong>de</strong>r nuevas entradas<br />
• problema: limitaciones <strong>de</strong> memoria<br />
<strong>Inteligencia</strong> <strong>Artificial</strong><br />
4º Ing. Sup. Inf.<br />
3
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 algoritmo<br />
particular para el 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 />
–7–<br />
Solución 3: búsqueda<br />
–8–<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 />
discos <strong>de</strong> la aguja origen<br />
a la aguja <strong>de</strong>stino] }<br />
BEGIN<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><br />
4º Ing. Sup. Inf.<br />
Métodos in<strong>de</strong>pendientes <strong>de</strong>l problema :<br />
• mo<strong>de</strong>lo simbólico <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<br />
<strong>de</strong> I y, si actualmente hay discos en X, entonces dichos discos han <strong>de</strong> ser<br />
más 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<br />
mo<strong>de</strong>lo 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><br />
4º Ing. Sup. Inf.<br />
4
Ejemplo: El mundo <strong>de</strong> los bloques<br />
Situaciones:<br />
• n bloques en una mesa <strong>de</strong> longitud<br />
ilimitada<br />
Acciones:<br />
• apilar(X,Y): poner X encima <strong>de</strong> Y<br />
– Prec.: bloques X e Y están libres<br />
– Efecto: bloque X está encima <strong>de</strong> Y<br />
• quitar(Y): poner Y en la mesa<br />
– Prec.: bloque Y está libre<br />
– Efecto: bloque Y está en la mesa<br />
Actitud <strong>de</strong>l agente:<br />
• Objetivo: cierta configuración <strong>de</strong> bloques<br />
• Sólo la posición vertical es relevante<br />
• El coste <strong>de</strong> cada acción es uno<br />
–9–<br />
Situación presente<br />
Objetivo<br />
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 />
mundo mo<strong>de</strong>lo representación<br />
situacion estado nodo<br />
situación presente estado inicial nodo inicial<br />
acción y sus efectos operador arco<br />
secuencia <strong>de</strong> acciones plan camino<br />
Problema <strong>de</strong> búsqueda: espacio <strong>de</strong> estados + actitud <strong>de</strong>l agente<br />
actitud representación<br />
estados meta conjunto <strong>de</strong> nodos<br />
eficiencia <strong>de</strong> un plan coste <strong>de</strong> un camino<br />
–10–<br />
<strong>Inteligencia</strong> <strong>Artificial</strong><br />
4º Ing. Sup. Inf.<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><br />
4º Ing. Sup. Inf.<br />
5
Mundo <strong>de</strong> los bloques: espacio <strong>de</strong> estados<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 />
C<br />
B A<br />
A<br />
C<br />
B<br />
A<br />
–11–<br />
B<br />
C<br />
C<br />
A B<br />
B<br />
C<br />
A<br />
estado<br />
inicial<br />
B<br />
C A<br />
estado<br />
meta<br />
Representación <strong>de</strong>l problema <strong>de</strong> los bloques<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 />
C<br />
B A<br />
A<br />
C<br />
B<br />
–12–<br />
B<br />
C<br />
A<br />
A<br />
B<br />
C<br />
B<br />
C A<br />
B<br />
A C<br />
C<br />
B<br />
A<br />
A B C Plan óptimo: coste 3<br />
C<br />
A B<br />
A<br />
B<br />
C<br />
<strong>Inteligencia</strong> <strong>Artificial</strong><br />
4º Ing. Sup. Inf.<br />
B<br />
A C<br />
C<br />
B<br />
A<br />
<strong>Inteligencia</strong> <strong>Artificial</strong><br />
4º Ing. Sup. Inf.<br />
6
Agentes especializados<br />
Tareas:<br />
1. Definir el mo<strong>de</strong>lo y generar los objetivos<br />
– Conocimiento a priori <strong>de</strong>l agente facilitado por el diseñador<br />
2. Generar el espacio <strong>de</strong> estados:<br />
– ver Tema 3 (y, como introducción, Tema 2.4)<br />
3. Percibir y clasificar la situación presente:<br />
– Agentes hardware: Visión artificial, Robótica<br />
– Agentes software: Algoritmos específicos <strong>de</strong>l dominio<br />
4. Buscar un plan <strong>de</strong> actuación<br />
5. Ejecutar el plan <strong>de</strong> actuación<br />
– Agentes hardware: Robótica<br />
– Agentes software: Algoritmos específicos <strong>de</strong>l dominio<br />
¿Se trata “sólo” <strong>de</strong> encontrar<br />
el camino <strong>de</strong> menor coste<br />
en un grafo dirigido?<br />
s 2<br />
s 8<br />
–13–<br />
Búsqueda en espacio <strong>de</strong> estados<br />
s 3<br />
s 9<br />
s 4<br />
s 10<br />
–14–<br />
s 1<br />
s 5<br />
s 11<br />
<strong>Inteligencia</strong> <strong>Artificial</strong><br />
4º Ing. Sup. Inf.<br />
¡No po<strong>de</strong>mos contar un<br />
una representación<br />
explicita <strong>de</strong>l grafo!<br />
s 6<br />
s 12<br />
s 7<br />
s 13<br />
<strong>Inteligencia</strong> <strong>Artificial</strong><br />
4º Ing. Sup. Inf.<br />
7
Conocimientos “a priori” <strong>de</strong> nuestro 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 />
– s0 Estado inicial<br />
– expandir: s a {si1 , ..., sin } Conjunto finito <strong>de</strong> sucesores <strong>de</strong><br />
un estado<br />
– meta?: s a verdad | falso Prueba <strong>de</strong> éxito en un estado<br />
– c: (si , sj ) a v, v∈ℵ Coste <strong>de</strong> un operador<br />
n 1<br />
( s s s ) = c(<br />
s , s )<br />
∑ −<br />
i1 i2<br />
in<br />
ik<br />
ik<br />
+ 1<br />
k=<br />
1<br />
c K<br />
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 />
–15–<br />
–16–<br />
Coste <strong>de</strong> un plan<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 />
<strong>Inteligencia</strong> <strong>Artificial</strong><br />
4º Ing. Sup. Inf.<br />
A<br />
B<br />
B<br />
C A<br />
A<br />
B<br />
C<br />
<strong>Inteligencia</strong> <strong>Artificial</strong><br />
4º Ing. Sup. Inf.<br />
C<br />
8
Elementos <strong>de</strong>l algoritmo<br />
• el árbol se representa en base a<br />
un registro <strong>de</strong>l tipo nodo<br />
• abierta es una lista <strong>de</strong> nodos,<br />
con las hojas actuales <strong>de</strong>l árbol<br />
• vacía? <strong>de</strong>termina si una lista es<br />
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 una<br />
función <strong>de</strong> or<strong>de</strong>n<br />
• expandir <strong>de</strong>vuelve los hijos <strong>de</strong><br />
un nodo<br />
Algoritmo <strong>de</strong> búsqueda<br />
–17–<br />
Estados repetidos<br />
–18–<br />
{búsqueda general}<br />
abierta ← s0 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 />
Problema:<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><br />
4º Ing. Sup. Inf.<br />
<strong>Inteligencia</strong> <strong>Artificial</strong><br />
4º Ing. Sup. Inf.<br />
9
Clasificación <strong>de</strong> métodos<br />
Características:<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 (Tema 2.2)<br />
– utilizan sólo los conocimientos mínimos (búsqueda <strong>de</strong> coste uniforme, …)<br />
• Heurísticos (Tema 2.3)<br />
– a<strong>de</strong>más utilizan información aproximada, y específica <strong>de</strong>l problema, para guiar<br />
la búsqueda (Algoritmo A * y extensiones)<br />
• Con estados estructurados (Tema 2.4)<br />
– Se aprovechan <strong>de</strong> características <strong>de</strong> los estados para combatir la complejidad<br />
(Planificación lineal, Satisfacción <strong>de</strong> restricciones, Algoritmos genéticos, …)<br />
–19–<br />
Tema 2: Agentes basados en Búsqueda<br />
Resumen:<br />
2. Agentes basados en búsqueda<br />
2.1. Búsqueda en espacios <strong>de</strong> estados<br />
2.2 Búsqueda no-informada<br />
2.3. Búsqueda heurística<br />
2.4. Búsqueda con espacios estructurados<br />
–20–<br />
<strong>Inteligencia</strong> <strong>Artificial</strong><br />
4º Ing. Sup. Inf.<br />
<strong>Inteligencia</strong> <strong>Artificial</strong><br />
4º Ing. Sup. Inf.<br />
10
Búsqueda en amplitud:<br />
• inglés: breadth first search<br />
•Estrategia:<br />
– generar el árbol por niveles <strong>de</strong><br />
profundidad<br />
– expandir todos los nodos <strong>de</strong><br />
nivel i, antes <strong>de</strong> expandir nodos<br />
<strong>de</strong> 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 />
Búsqueda en amplitud<br />
(evitando ciclos simples):<br />
Nivel 1<br />
Nivel 2<br />
Nivel 3<br />
Nivel 4<br />
A<br />
C<br />
B<br />
C<br />
B A<br />
Búsqueda en amplitud<br />
–21–<br />
Árbol <strong>de</strong> búsqueda en amplitud<br />
A<br />
B<br />
. . .<br />
C<br />
B<br />
C<br />
A<br />
A<br />
B C<br />
. . . . . .<br />
–22–<br />
C<br />
A B<br />
A<br />
C B<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 />
<strong>Inteligencia</strong> <strong>Artificial</strong><br />
4º Ing. Sup. Inf.<br />
B<br />
A C<br />
<strong>Inteligencia</strong> <strong>Artificial</strong><br />
4º Ing. Sup. Inf.<br />
11
A<br />
C<br />
B<br />
C<br />
B A<br />
Algoritmo para búsqueda en amplitud<br />
Algoritmo:<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 />
A<br />
B<br />
C<br />
B<br />
C<br />
A<br />
A<br />
B C<br />
–23–<br />
–24–<br />
{búsqueda en amplitud}<br />
abierta ← s0 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 />
Árbol <strong>de</strong> búsqueda en amplitud<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 A B<br />
C 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 />
C<br />
A<br />
B C<br />
C<br />
. . .<br />
A<br />
C B<br />
B A A C ...<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 />
<strong>Inteligencia</strong> <strong>Artificial</strong><br />
4º Ing. Sup. Inf.<br />
C<br />
B A<br />
<strong>Inteligencia</strong> <strong>Artificial</strong><br />
4º Ing. Sup. Inf.<br />
B<br />
A C<br />
12
Mejor caso<br />
d–2<br />
d–1<br />
d<br />
Complejidad<br />
Complejidad en tiempo y espacio:<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 />
0<br />
1<br />
. . .<br />
1+b+...+b d-1 +1 ∈ O(b d )<br />
Caso medio<br />
d–2<br />
d–1<br />
d<br />
0<br />
1<br />
1+b+...+b d-1 +b d /2 ∈ O(b d )<br />
–25–<br />
. . .<br />
Peor caso<br />
d–2<br />
d–1<br />
d<br />
Requerimientos <strong>de</strong> tiempo y memoria<br />
0<br />
1<br />
. . .<br />
1+b+...+b d-1 +b d ∈ O(b d )<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 />
d nodos tiempo memoria<br />
0 1 1 ms 100 Bytes<br />
2 111 100 ms 11 KB<br />
4 11.111 11 s 1 MB<br />
6 10 6 18 min 111 MB<br />
8 10 8 31 horas 11 GB<br />
10 10 10 128 días 1 TB<br />
12 10 12 35 años 111 TB<br />
14 10 14 3500 años 11.111 TB<br />
–26–<br />
<strong>Inteligencia</strong> <strong>Artificial</strong><br />
4º Ing. Sup. Inf.<br />
<strong>Inteligencia</strong> <strong>Artificial</strong><br />
4º Ing. Sup. Inf.<br />
13
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 />
–27–<br />
Ejercicio 2.1<br />
Problema <strong>de</strong> búsqueda / conocimiento <strong>de</strong>l agente:<br />
–28–<br />
<strong>Inteligencia</strong> <strong>Artificial</strong><br />
4º Ing. Sup. Inf.<br />
En una mesa se encuentran dos jarras, una con una capacidad <strong>de</strong> 3 litros (llamada<br />
Tres), y la otra con una capacidad <strong>de</strong> 4 litros (llamada Cuatro). Inicialmente, Tres<br />
y Cuatro están vacías. Cualquiera <strong>de</strong> ellas pue<strong>de</strong> llenarse con el agua <strong>de</strong> un grifo<br />
G. Asimismo, el contenido tanto <strong>de</strong> Tres como <strong>de</strong> Cuatro pue<strong>de</strong> vaciarse en una<br />
pila P. Es posible echar todo el agua <strong>de</strong> una jarra a la otra. No se dispone <strong>de</strong><br />
dispositivos <strong>de</strong> medición adicionales. Se trata <strong>de</strong> encontrar una secuencia <strong>de</strong><br />
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 postcondiciones), 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><br />
4º Ing. Sup. Inf.<br />
14
Ejercicio 2.2<br />
Búsqueda en amplitud:<br />
El grafo que se muestra al lado <strong>de</strong>termina<br />
un problema <strong>de</strong> búsqueda. Cada nodo<br />
representa un estado; los arcos mo<strong>de</strong>lan la<br />
aplicación <strong>de</strong> operadores. Suponga que A<br />
es el estado inicial y que K y E son<br />
estados meta<br />
a) Desarrolle el árbol <strong>de</strong> búsqueda que<br />
genera la búsqueda en amplitud. Indique<br />
el or<strong>de</strong>n en que se expan<strong>de</strong>n los nodos<br />
¿Cuál <strong>de</strong> los nodos meta se encuentra<br />
primero?<br />
b) Instancie el algoritmo <strong>de</strong> búsqueda<br />
general para que realice una búsqueda<br />
en amplitud. Ponga el estado <strong>de</strong> la lista<br />
abierta en cada paso <strong>de</strong>l algoritmo.<br />
–29–<br />
Ejercicio 2.3<br />
Búsqueda <strong>de</strong> coste uniforme:<br />
Aplique la búsqueda <strong>de</strong> coste uniforme para<br />
encontrar una ruta <strong>de</strong> Pitesti (P) a Fagaras (F).<br />
Desarrolle el árbol <strong>de</strong> búsqueda generado por<br />
dicho algoritmo, asumiendo que se evitan<br />
ciclos simples. Indique el valor g <strong>de</strong> cada<br />
nodo, así como el or<strong>de</strong>n en el que se expan<strong>de</strong>n<br />
los nodos.<br />
–30–<br />
H<br />
D<br />
C<br />
A<br />
F<br />
E<br />
G<br />
B K Z W<br />
<strong>Inteligencia</strong> <strong>Artificial</strong><br />
4º Ing. Sup. Inf.<br />
<strong>Inteligencia</strong> <strong>Artificial</strong><br />
4º Ing. Sup. Inf.<br />
15