26.04.2013 Views

Sesión 2 - Grupo de Inteligencia Artificial

Sesión 2 - Grupo de Inteligencia Artificial

Sesión 2 - Grupo de Inteligencia Artificial

SHOW MORE
SHOW LESS

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

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

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

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!