Você está na página 1de 19

Bsqueda

Inteligencia Artificial
Gonzalo Villarreal Farah
Contenidos
Mtodo de resolucin de problemas
Mtodo Top Down
Mtodo Bottom Up
Bsqueda DEPTH FIRST
Bsqueda BREADTH FIRST
Bsqueda Heurstica
Mtodo de resolucin de problemas
Sistemas de resolucin de problemas en IA,
estn basados en bsqueda.
Se comienza en un estado inicial y la meta es
llegar a un estado final u objetivo
El proceso de evaluacin de las alternativas
para llegar desde el estado inicial al objetivo
se designa como bsqueda
El conjunto de pasos posibles para llegar
desde un estado inicial al objetivo, es
llamado el espacio de bsqueda.

Mtodo de resolucin de problemas...
Las principales diferencias que pueden
aparecer en las diferentes tcnicas de
bsqueda, son:
La direccin en la cual se conduce la bsqueda
(hacia adelante o hacia atrs).
La estrategia de control, o forma de seleccionar las
reglas que pueden ser aplicables. Los principales
requerimientos de una buena estrategia de control
son: que cause desplazamiento en el espacio de
estado; y, que sea sistemtico.
La forma de representar cada nodo del proceso de
bsqueda (representacin del conocimiento).
Mtodo de resolucin de problemas...
Muchas veces, tratar el proceso como
bsqueda en un grafo en lugar de una
bsqueda en un rbol, puede reducir el
esfuerzo que se gasta en explorar senderos,
esencialmente iguales, varias veces. Sin
embargo, los requisitos asociados, son:
Cada vez que se genere un nodo se debe
chequear para ver si ha sido generado antes.
Se deben introducir procedimientos especiales
para que la bsqueda no quede atrapada en algn
lazo.
Mtodo Top Down
Se comienza tomando la clusula objetivo o
conclusin y se razona de tal forma de ir a travs
de las aserciones e implicaciones, derivando
nuevos objetivos a partir de los objetivos
anteriores hasta que todos los objetivos
derivados, son resueltos por las aserciones
originales.
El encadenamiento hacia atrs "Top Down", tiene
la particularidad de ir generando con las clusulas
que va tomando, una estructura de rbol. Una
refutacin es un camino en el espacio de
bsqueda, en este caso una rama del rbol, que
comienza con el objetivo y termina con la clusula
vaca.

Mtodo Bottom Up
El encadenamiento hacia adelante "Bottom Up", se
comienza con las clusulas que son aserciones o
hiptesis. Para ello se usan las aserciones e
implicaciones que permitan derivar nuevas
aserciones, se termina cuando eventualmente la
clusula original o hiptesis es resultado de las
aserciones derivadas.
Una refutacin en este mtodo comienza con las
aserciones de las clusulas originales, se utilizan las
aserciones para obtener nuevas aserciones a partir
de las ya generadas, se termina cuando se deriva
una que explcitamente contradiga el objetivo.
Este mtodo de resolucin genera una estructura
ms compleja que la generada por "Top Down", por
lo cual la bsqueda es ms difcil.

Bsqueda DEPTH FIRST
En la bsqueda "primero en profundidad" o
"Depth First" se selecciona un nodo del
primer nivel, descendiendo por alguna de las
ramas que nacen de este nivel y que nos
llevan al siguiente nivel, as sucesivamente
hasta llegar a un nodo terminal.
Si se llega a un estado terminal sin satisfacer
nuestro objetivo, se vuelve al estado inicial y
se elige otro camino hasta llegar a un nuevo
nodo terminal.
Este tipo de bsqueda es ms eficiente que
la bsqueda en anchura, si el espacio de
bsqueda tiene muchos niveles.
Bsqueda DEPTH FIRST...
Este rbol es recorrido de la siguiente
forma:
A,B,D,G,C,F,E

Database
Vuelo(symbol,symbol,integer)
Clauses
vuelo(santiago,la_serena,474).
vuelo(santiago,antofagasta,1361).
vuelo(santiago,arica,2062).
vuelo(santiago,calama,1574).
vuelo(santiago,copiap,801).
vuelo(la_serena,copiap,333).
vuelo(la_serena,chaaral,497).
vuelo(chaaral,copiap,167).
vuelo(copiap,el_salvador,282).
vuelo(antofagasta,tocopilla,188).
vuelo(arica,iquique,316).
vuelo(arica,calama,614).
vuelo(arica,copiap1261).
%Ejemplo de Bsqueda en Profundidad
Clauses
encuentra_ruta:- write(" Desde : "),readln(A), write(" con Destino a: "),
readln(B),hay_vuelo(A,B,D), write("La distancia es:
",D),nl,not(muestra_ruta).
% Ver si hay conexin entre dos ciudades con ruta directa
hay_vuelo(C1,C2,D):-vuelo(C1,C2,D),agrega_a_ruta(C1).
% Bsqueda en Profundidad
hay_vuelo(C1,C2,D):- vuelo(C1,X,D2), agrega_a_ruta(C1),
hay_vuelo(X,C2,D3), D=D2+D3.
% Indica si lleg a punto sin destino
hay_vuelo(C1,_,D):-write(" Punto muerto en ",C1),nl,D=0,fail.

agrega_a_ruta(C):-not(visitada(C)),assert(visitada(C)),!.
agrega_a_ruta(_).

muestra_ruta:- write(" La ruta es "),nl, visitada(A),write(A),nl,fail,!.

Bsqueda BREADTH FIRST
En la bsqueda "primero en anchura" o
"Breadth First" se evala cada nodo en un
determinado nivel antes de pasar al siguiente.
Si en alguno de los niveles se satisface el
objetivo final la bsqueda se da por
finalizada.
Este tipo de bsqueda no resulta ser prctica
cuando para alcanzar el estado final se
deben recorrer muchos niveles.

Bsqueda BREADTH FIRST


Este rbol es recorrido de la siguiente
forma:
A,B,C,D,G,F,E

% Ejemplo de Bsqueda en Anchura
% Ruta directa
hay_vuelo(C1,C2,D):-vuelo(C1,C2,D),
agrega_a_ruta(C1).
% hacer primero en anchura
hay_vuelo(C,C2,D):-vuelo(C,X,D2),
vuelo(X,C2,D3), agrega_a_ruta(C),
agrega_a_ruta(X), D=D2+D3.
hay_vuelo(C,C2,D):- vuelo(C,X,D2), X<>C2,
agrega_a_ruta(C),
hay_vuelo(X,C2,D3), D=D2+D3.
hay_vuelo(C1,_,D):- write("Punto muerto en ",C1),
nl,D=0,fail.

Bsqueda Heurstica
Las tcnicas de bsqueda descritas anteriormente
no reflejan ningn tipo de conducta inteligente,
son bsquedas ciegas.
Para espacios de bsquedas ms grandes y
complejos, se requiere utilizar tcnicas de
bsquedas inteligentes, que sean capaces de
reducir en forma eficiente el espacio de
bsqueda.
Estas tcnicas estn basadas en la utilizacin de
la heurstica, es decir, utilizan la experiencia
humana que ante determinadas situaciones es
capaz de intuir caminos de solucin, alternativas
prometedoras, rechazar vas de exploracin,
reduciendo as el espacio de bsqueda.

Bsqueda Heurstica...
"Una heurstica es un tipo de estrategia que
limita en forma drstica la bsqueda de
soluciones. La heurstica no garantiza
soluciones ptimas; de hecho, no garantiza
el que haya una solucin; todo lo que se
puede decir para que una heurstica sea
til es que ofrece soluciones que son
suficientemente buenas la mayora de las
veces." (Feigenbaum y Feldman, citado en
Mishkoff, 1988)


% Ejemplo de Bsqueda Heurstica Remonte de Colina
hay_vuelo(T,T2,D):-vuelo(T,T2,D),agrega_a_ruta(T).
% hacer primero en anchura
hay_vuelo(T,T2,D):-encontrar_mas_grande(T,X),
agrega_a_ruta(T),vuelo(T,X,D2),
hay_vuelo(X,T2,D3), D=D2+D3.
hay_vuelo(T,T2,D):- vuelo(T,X,D2), X<>T2,
agrega_a_ruta(T),hay_vuelo(X,T2,D3),
D=D2+D3.
hay_vuelo(C1,_,D):- write(" Punto muerto en ",C1),
nl,D=0,fail.

encontrar_mas_grande(A,B):- vuelo(A,X,D),
vuelo(A,Y,D2),X<>Y, D2>D, B=Y.

% Ejemplo de Bsqueda Heurstica Menor Coste

hay_vuelo(T,T2,D):-vuelo(T,T2,D),agrega_a_ruta(T).
% hacer primero en anchura
hay_vuelo(T,T2,D):- encontrar_mas_corta(T,X),
agrega_a_ruta(T),vuelo(T,X,D2),
hay_vuelo(X,T2,D3), D=D2+D3.
hay_vuelo(T,T2,D):- vuelo(T,X,D2), X<>T2,
agrega_a_ruta(T),hay_vuelo(X,T2,D3),
D=D2+D3.
hay_vuelo(C1,_,D):- write(" Punto muerto en",C1),
nl,D=0,fail.

encontrar_mas_corta(A,B):-vuelo(A,X,D),
vuelo(A,Y,D2), X<>Y, D>D2, B=Y.

Você também pode gostar