0% encontró este documento útil (0 votos)
97 vistas16 páginas

Busquedas IA

Este documento describe varios algoritmos de búsqueda utilizados en inteligencia artificial para encontrar el camino óptimo entre un estado inicial y uno objetivo. Explica las diferencias entre búsqueda en IA y en desarrollo de software, y clasifica los métodos de búsqueda en informados y no informados, detallando algunos algoritmos como búsqueda primero en anchura, primero en profundidad, generación y prueba, y escalada por máxima pendiente. Finalmente, discute aspectos como la selección de estados y operadores durante la bú

Cargado por

Fata
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
97 vistas16 páginas

Busquedas IA

Este documento describe varios algoritmos de búsqueda utilizados en inteligencia artificial para encontrar el camino óptimo entre un estado inicial y uno objetivo. Explica las diferencias entre búsqueda en IA y en desarrollo de software, y clasifica los métodos de búsqueda en informados y no informados, detallando algunos algoritmos como búsqueda primero en anchura, primero en profundidad, generación y prueba, y escalada por máxima pendiente. Finalmente, discute aspectos como la selección de estados y operadores durante la bú

Cargado por

Fata
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 16

·'

"
'.

Búsqueda

El concepto de búsqueda en el campo de.la lA ~ 2


Búsqueda Primero en Anchura : 3
Búsqueda Primero en Profundidad: 3
Ramificación. y Acotación , 4
HeurÍstica , 4
Algoritm?s informados o de búsqueda heurística 5
Generación y Prueba ~ 5 ~
Escalada Simple 6
Escalada por la Máxima Pendiente o Búsqueda de Gradiente ~ 7
Enfriamiento Simulado 8
Primero el Mejor , , ; :•..;,.,..~•..•................................................ 9
Búsqueda A * : : ; 9
Búsqueda conducida mediante agenda 10
Reducción de problemas 11
Verificación de Restricciones 11
Análisis de Medios y Fines: 11
Ejemplo de algoritmos básicos de búsqueda codificados en Lisp 13
Estrategia general de búsqueda : 13
Búsqu~da Primero en Profundidad. Codificación Lisp: 14
Búsqueda Primero en Amplitud 15
Adición de Funciones Heurísticas 15
Búsqueda de Haz Luminoso 1-7
Otros temas relacionados ..................................................•.......................................................................... 19
Descripción de Algoritmo de Ruteo Simple : 18

FOTOCOPIADORA
'C& F
.Apuntes
D ReIIe favalorO
DnCarlOlS. Menem y r.

Inteligencia Artificial Destefanis/04 1


\2

El concepto de búsqueda en el campo de la lA

En general, en áreas relacionadas con el desarrollo de software, se entiende por


algoritmos de búsqueda, a procedimientos cuya finalidad es encontrar datos dentro de un
conjunto de estos. Es decir que lo que interesa es solo saber si ese dato esta presente, su
ubicación y eventualmente algunos valores relacionados con este. Desde el punto de vista de
la lA la palabra búsqueda se entiende por lo general con un significado algo diferente. En lA
se entiende como búsqueda a un algoritmo en el que se busca un dato en un conjunto, pero·
donde el objetivo del proceso de búsqueda es mas bien "encontrar un cierto camino recorrido"
hasta encontrar el dato antes que corroborar la existencia del dato. Es decir que la diferencia
esta en el objetivo el cual es "encontrar el camino de búsqueda". Esto es así debido a que
estos procesos de búsqueda se aplican en IA en tareas de optini.ización, resolución de
problemas, juegos, planificac~ón, etc., como por ejemplo planificación de movimientos en un
robot y organización de actividades en una fábrica.
Frecuentemente se asocia en IA el concepto de búsqueda al de espacio de estados, para
conocer que secuencia de estados deben alcanzarse sucesivamente pirra finalmente lograr un
estado objetivo bajo detenninadas premisas.
Entre los procedimientos de búsqueda del desarrollo de software encontramos algunos
muy conocidos, pero qúe precisamente no están orientados.a identificar"el camino recorrido, o
bien no están orientados a que este camino recorrido sea particularmente convenient~ frente a
otros posibles (por ejemplo la búsqueda binaria). Para la identificación del camino recorrido
resultan mas apropiados los métodos de búsqueda en árboles y grafos.
Dentro de estos últimos la IA emplea algunos muy conocidos (siempre con el objetivo
de conocer el camino seguido), como por ejemplo, "priniero en amplitud", "primero en
profundidad" y sus derivados. .
En este capítulo se estudian estós métodos de modo que retomen el camino recorrido,
y se muestra como puede resolverse sintética y sistemáticamente el problema empleando
Lisp, a modo de ejemplos de Lisp.
El problema de búsqueda mas complejo en su formulación es el de búsqueda en una red. Sin

~.
embargo una red puede reducirse a un árbol mediante la repetición de algunos nodós, con lo
cual no perdemos generalidad si nos abocamos al estudio de búsquedas en árboles.

.1
Los distintos métodos pueden clasificarse de la siguiente manera:

No Informados
Búsqueda Primero en Anchura (BP A)
Búsqueda Primero en Profundidad (BPP)
Ramificación y Acotación (BPP acotado)

Informados o de Búsqueda Heurística


Generación y Prueba "
Escalada Simple
Escalada por la Máxima Pendiente
Enfriamiento Simulado
Búsqueda el Primero Mejor
A*
Conducida Mediante Agenda
Reducción de Problemas
AO*
Verificación de Restricciones
lI.;,

:3

Análisis de Medios y Fines

Estos métodos pueden diferir en muchos aspectos tales como, la forma de seleccionar un
estado para expandirlo, la forma de seleccionar los operadores, si puede garantizarse la
solución óptima, si un cierto estado puede ser considerado más de una vez, cuantas
descripciones de los estados deben mantenerse desde el principio hasta el final del proceso de
"
búsqueda, Bajo que circunstancias debe abandonarse un camino de búsqueda, la dirección de
,
..••.
!'.

la búsqueda (hacia delante o hacia atrás), la forma de seleccionar las reglas a aplicar
La mayoría de las veces no se recorre el árbol de búsqueda de forma completa, se utilizan las
reglas para' restringir la exploración. Los detalles del uso de reglas para cambio de estado se
explican en el capítulo sobre Planificación.
Si es muy probable que un mismo nodo se genere de distintas formas entonces el espacio de
búsqueda se representa mejor con un grafo. Para evitar añadir un nuevo nodo a un grafo, debe
"'emplearse un algoritmo de control de nodos duplicados. Por precaución, también debería
añadirse un algoritmo de control de ciclos.

Búsqueda Primero en Anchura:

Para cádá nodo se generan todas las posibles situaciones resultantes' de la aplicación de todas
las reglas adecuadas. Se continúa con este proceso hasta que alguna regla produce algún
estado objetivo.

Algoritmo
l. Crear una Pila (u otra estruc~a dinámica) y asignarle el estado inicial
2. Mientras la Pila no esté vacía, hacer:
3. Extraer el primer elemento de la Pila.
4. Generar nuevos estados derivados del actual
5. Explorar si los nuevos nodos son estado objetivo, si alguno es objetivo salir.
6. En caso contrario, añadir nuevos nodos a la Pila y volver a 3.

Sus ventajas son que no queda atrapado en callejones sin salida, si existe una solución se
garantiza que se logra encontrarla, si existen múltiples soluciones permite hallar la solución
optima. Su desventaja es su mala performance. (mucha memoria y poca velocidad, dada su
explosión combinatoria).

Búsqueda Primero en Profundidad:

Continúa po; una sola rama del árbol hasta encontrar una solución o hasta que se to~e la
decisión de terminar la búsqueda por esa dirección.-'
Terminar la búsqueda por una ruta 'tiene sentido cuando se ha llegado a un callejón sin salida,
se produce un estado ya alcanzado o la ruta se alarga más de lo especificado en algún límite,
por lo que se produce una vuelta atrás.
Presenta como ventaja que asegura hallar una solución si existe.
Se suelen mencionar también como ventaja, que eventualmente se puede encontrar una
solución sin tener que examinar gran parte del espacio de estados. Pero esto es por azar, lo
que no supone una caracteÍistica confiable ni mucho menos, por el contrario podría ocurrir a
la inversa.

Inteligencia Artificial Destefanis/04 3


'.)
~
4

Ramificación y Acotación

Comienza generando rutas completas, manteniéndose la ruta más corta encontrada hasta ese
momento. Deja de explorar una ruta tan pronto como su distancia total, hasta ese moment¿,
sea mayor que la que se ha marcado como la ruta más corta.

Heurística

'La palabril heurística se emplea en IA para defInir un concepto que excede


absolutamente el área de los algoritmos de búsqueda, si bien estos, como veremos pueden
hacer uso intensivo de la heurística.
P"araintroducirnos a la 'comprensión de su significado podemos decir que la palabra
viene del griego Eureka (lo encontré), esto es porque se refIere a un conocimiento que
intuitivanlente se posee. Un conocimiento que podría parecer experimental, pero que mas bien
es debidd"ala inspiración de quien lo propone.
Pódemos profundizar la diferencia entre el conocimiento heurístico y el empírico.
Este último, el empírico, es un conocimiento debido a la observación que se
caracteriza por que no,es refutado en ningún caso por la experiencia.
Una regla empírica se cumple siempre, aunque no sepamos sus causas, y 'funciona
como se espera en forma general en todos aquellos casos en que se la pueda emplear.
Una regla heurística, se cumple,' o mas bien, se espera que se cumpla, en casos '
particulares, y no en todos los casos en que podría aplicarse. Es una "regla del pulgar", pero
que carece de generalidad.
En defInitiva, para una regla heurística, no puede demostrarse teóncamente su validez,
tampoco se puede comprobarla experimentalmente para todos los casos y por lo tanto carece
de generalidad y de una garantía teórica de su resultado.

Una regla heurística sería por ejemplo, considerar que debemos realizar una
presentación ante un auditorio, y aplicar la regla de que para que la presentación sea un éxito,
si hay menos de 20 asistentes debe ser mas informal y dialogada, y en caso contrario deben
seguirse las pautas de una exposición formal y sin interrupciones. Esto podría dar buenos
resultados, pero podría haber excepciones, por ejemplo, que pasaría ante un'auditorio de 16
personas de diferentes países que tuvieran un nivel de ingles diferente? o que pasaría ante un
auditorio de 16 personas de muy diferentes niveles de conocimiento del tema a presentar?
No podría generarse un diálogo animado en la presentación, aunque el número de
asistentes fuera inferior a 20 con lo cual no seria válida la regla para ese caso particular.

Asi, una regla heurística, es una regla que podría permitirnos resolver perfectamente
un problema particular, pero que podría arrojar un resultado erróneo al aplicarla en otro
problema similar.
Por lo anterior, la heurística suele ser despreciada por algunos científicos, pero a pesar
de eso, permite, en ciertos casos alcanzar resultados de aplicación práctica notables.
.. ,
5

Algoritmos informados o de búsqueda heurística

Dentro del campo de los algoritmos de búsqueda, suele decirse que una heurística es
una técnica que aumenta la eficiencia de un proceso. de búsqueda, proporcionando una guía
para este y posiblemente sacrificando demandas de completitud.
La búsqueda heurística es una familia de algoritmos que resuelve problemas
complicados con eficiencia comprometiendo requisitos de movilidad y sistematicidad, y
permiten construir una estructura de control que no garantiza la mejor respuesta pero que casi
.siempre encuentra una buena solución.

Porque puede ser necesario usar heurísticas:


• Sin ellas podríamos enredarnos en una explosión combinatoria -.,
•.••
-t

• Normallflente no se necesita una solución óptima, con frecuencia una buena solución
es adecuada
• Si bien las aproximaciones que se logran a través de una heurística pueden no ser inuy
buenas en los .PC?orescasos, ,estqs peores casos raramente ocurren en el mundo real
• Intentar comprender heurísticas· sirve para' profundizar nuestra comprensión del
dominio del problema, dado que estas representan conocimiento' del mupdo.

Como incorporar conocimiento heurístico:


• .En las reglas de producción
• Con una función heurística: Determinando estados deseables y. asigriando pesos a
ciertos aspectos del problema se detennina la estimación de que tan deseable es un
nodo o una ruta dada

En general existe un compromiso entre el coste de evaluación de una función heurística y el


ahorro de su tiempo de búsqueda .

. Otro ejemplo podría ser la heurística. del vecino más próximo (de orden cuadrático) del
Problema del Viajante de Comercio.

1. Seleccionar arbitrariamente una ciudad de comienzo


2. Para seieccionar la siguiente ciudad, fijarse en las ciudades que todavía no se han visitado y
seleccionar aquella que sea la más cercana. Ir a esa ciudad
3. Repetir el paso 2 hasta que todas las ciudades hayan sido visitadas~

Generación y Prueba

Generar posible solución .


Verificar si es una solución
Si no se halló solución, volver a comenzar
Si se hallo solución, devolverla y terminar

La generación de la posible solución puede realizarse enJolmas diferentes, por ejemplo,


Aleatorio, sistemáticamente exhaustivo, sistemáticamente guiado por algún co:qocimiento, etc.

Este algoritmo es un procedimiento de BPP ya que las .soluciones completas deben generarse
antes de que se comprueben.
,.

~ Inteligencia Artificiai Destefanis/04 5

~
Si es sistemático, y la solución existe, puede encontrarla, pero puede tardar más de lo
admisible, dado que se transforma en una búsqueda exhaustiva.
Al usar heurísticas, la solución puede encontrarse más rápidamente y si se combina con otras
técnicas puede ser muy eficaz, dado que se restringe el espacio de búsqueda.

Escalada Simple

Los métodos de Escalada constituyen una variante del de Generación y Prueba, existe
realimentación a partir del procedimiento de prueba, que se usa para ayudar al generador a
decidirse por cual dirección mOVerse por el espacio de búsqueda.
La función de prueba se amplia con una función heurística que ayuda a evaluar los
estados y proporciona una estimáción de lo cerca que nos encontramos del objetivo. Los mas
comunes son, Escalada Simple y Escalada por la Máxima Pendiente. .

Algoritmo:
Si el estado inicial es solución, devolverlo y tenninar
Hacer EA = Estado Inicial
Hasta que se encuentre un objetivo o no existan operadores que aplicar sobre EA
Seleccionar un operador y aplicarlo sobre él estado actual para obtener un nuevo estado N
EvalúeN
Si es objetivo, devolverlo y tenninar
Si no es objetivo, pero es mejor que EA, hacer EA = N
Si no, pero es peor que EA, repetir el ciclo.

La principal diferencia con generación y prueba es que se usa una función de


evaluación que, introduce conocimiento específico. Se debe definir con precisión que es un
estado mejor o peor. .

"Iteligel" ia Artifi¡;ja I Destefanis/04 6


Escalada por la Máxima Pendiente o Búsqueda de Gradiente

Es una variación del método anterior, que considera todos los movimientos posibles a
partir del estado actual, y elige el mejor de ellos como nuevo estado.

El algoritmo:
Si el estado inicial es solución, devolverlo y terminar
Hacer EA = Estado Inicial
Hasta que se encuentre un objetivo:
Aplicar todos los operadores al estado actual, para obtener los estados NI, N2; ...., Nk
EA = mejor_hasta_ahora
Para todo i = I ..k '
Si es objetivo, devolverlo y terminar
Si no es objetivo, pero es mejor, mejor_hasta_ahora = Ni
Si es peor, seguir
Si el mejor_hasta_ahora es el EA
Informar fa¡lo~ y devolver' ei' EA" ,
Si no: EA = mejor_hasta_ahora y continuar en 2)
Notas:
Escalada por Máxima Pendiente tarda más en seleccionar wí movimiento
Escalada Simple necesita más movimientos para alcanzar una solución
Existen casos en los que no se halla solución, dado que no se pueden generar estados mejores:

Máximo Local:

Un estado es mejor que todos sus vecinos. pero no es el mejor


Todos los movimientos producen estados peores,_y se producen
en las cercru,llasde una solución

Meseta:

Un conjunto de estados vecinos produce el mismo valor


No es posible determinar la mejor dirección hacia la cual ~

moverse hadendo cOInparaciones locales

Cresta:

No tengo operadores para ubicar la cima


No se puede ubicar la cresta mediante movimientos simples

Hay formas de evitar estos problemas (pero no garantizan éxito)

Vuelta atrás siguiendo un camino diferente (recomendado para máximos locales)


Óar un gran salto (o varios pequeños) en alguna dirección (recomendado para mesetas)
Movimientos en varias direcciones a la vez (recomendado para crestas)

Inteligencia Artificial Destefanis/04 7

..•..•••....
; Il~)
8

Enfriamiento Simulado

El objetivo es disminuir la probabilidad de caer en un máximo local, una meseta o una cresta.
Por lo tanto se realiza una exploración con saltos amplios al principio, que se van reduciendo
paulatinamente.
Para lograr esto se plantea minimizar una función objetivo, para alcanzar un estado final de
mínima energía, basando el método en los procesos de enfriamiento de metales, en los que las
sustancias fisicas evolucionan hacia configuraciones de más baja energía.
La probabilidad de modificar loo~estados de energía viene dada por:

p = e/\(AE/k*T)

Siendo: 6.E: Cambio positivo en el nivel de energía (= f(EA) - F(N))


T: Temperatura
k: Constante de Bolltzman
Los grandes saltos ascendentes de energía solo ocurren al principio, a medida que el proceso
va progresando solo se permiten pequeños saltos ascendentes hasta que el proceso converge a
un mínimo local.
Consideraciones sobre la velocidad o programa de enfriamiento:
Si es muy rápido, se pueden formar regiones estables de alta energía, alcanzando un mínimo
local pero no global, si es muy lento, se puede perder tiempo

El algoritmo se detalla a continuación:


Si el estado inicial es soluciÓn, .devolverla y terminar
Hacer EA = Estado Inicial
Hasta que se-encuentre un objetivo o no existan operadores que aplicar sobre EA, hacer:
Seleccionar un operador y aplicarlo al EA obteniendo N o" o
Evaluar N. Si es solución,· devolverlo y terminar
Si no, pero es mejor, convertirlo en EA y volver a 2)
Si no, pero es peor:
p' = e/\(-~E / T)
Generar un número aleatorio en (O, 1)
Si uro < p', Hacer EA = N )-.
d)Seguir en 2)

Se deben tomar una serie de decisiones a la hora de la implementación:


t(O): Temperatura inicial
Criterio del momento en que se reduce la temperatura
Magnitud deldecremento~T, de la temperatura
Cuando terminar el programa de enfriamiento

Debemos tener en cuenta que: .


Este algoritmo se usa cuando el número de movimientos a realizar en un cierto estado es muy'
elevado.
Conforme T se aproxima a cero, la probabilidad de pasar a un estado peor también se
aproxima a cero, y nos acercamos a una escalada simple
Es importante escalar T, de manera tal que la p' sea 0.5

InteligenCIa Artificial Destefan isJ04 8

¡ .
Primero el Mejor

Combina las ventajas de BP A Y BPP en un solo método, siguiendo un solo camino a la vez, y
cambiándolo cuando alguna ruta parezca más prometedora, además utiliza árboles de tipo O

Estrategia:
Se selecciona el nodo más prometedor, utilizando algunafunción heurística apropiada.
Se expande el nodo elegido aplicando las reglas para generar a sus sucesores
Si algún sucesor es solución, el proceso tennina
Si no:
Se añaden los nodos a' la lista
Se vuelve al punto inicial

Búsqueda A * (A-star)

Se modifica el anterior empleando una función heurística para estimar el costo desde un nodo
(actual) hasta el nodo objetivo. -
Realiza una estimación de los méritos de cada uno de los nodos que se van generando, esto
permite que el algoritmo examine primero los caminos más prometedores.
Supongamos que una función f representa el costo exacto de llegar desde el estado inicial al
estado final, como esa función no es conocida, debemos aproximarla o estimarla, por medio
de una función f '.
Supongamos-que se sabe cual es la medida exacta del costo de llegar desde el estado inicial al
estado actual, por medio de una función g, cuyo valor es la suma de los costes de aplicación
de las reglas que se han ido eligiendo a través del mejor camino hasta el nodo, por lo tanto
deberá ser NO NEGATIV A. --
Supongamos que una. función h representa .el coste necesario para alcanzar el nodo objetiyo,
en realidad esta función también se estima, por medio de una función h' que representa una
estimación del coste adicional necesario para alcanzar un nodo objetivo a partir del nodo
actual.
Corno es una estimación de· la cercanía del objetivo, este es el lugar donde se emplea, el
c-onocimiento acerca del dominio del problema. -
Por lo tanto, se tiene que la función f' representa una estimación del coste necesario para
alcanzar un estado objetivo por el camino que se ha seguido para generar el nodo actual.

Por 10 tanto la fónnula es: f' = g + h '

En este punto es importante realizar ~gunas consideraCiones:


Si la función f' es exacta, entonces h' también 10 es, en este caso tengo un método directo,
por lo que no se realiza la búsqueda

El proceso de búsqueda, se implementa con un grafo.

Se emplean dos listas de nodos: .


Abiertos: Nodos a los que se les ha aplicado la función heurística pero no han sido expandidos
t: Cerrados: Nodos que ya han sido expandidos
~•...
1". ,Inteligencia Artificial
. Destefanis/04 9

~
JO

Los pasos son los siguientes


1. Se toma el nodo más prometedor que se tenga en ese momento y que no se haya
expandido
2. Se generan los sucesores del nodo elegido, se les aplica la función heurística y se les añade
a la lista de nodos abiertos, verificando previamente que dicho nodo no haya sido generado
con anterioridad

Algoritmo:

Comenzar con ABIERTOS conteniendo solo el estado inicial


Hasta que se llegue a un objetivo q no queden nodos en ABIERTOS hacer:
Tomar el mejor nodo de ABIERTOS
Generar sus sucesores
Para cada sucesor hacer:
Si no se ha-generado con anterioridad, añadirlo a ABIERTOS y almacenar a su padre
Si ya se ha generado antes
Si el nuevo,camino es mejor que el anterior
Cambiar al padre
Actualizar.el costo empleado para alcanzar el nodo y sus sucesores

Búsqueda conducida mediante agenda

Puede darse el caso en que v~rios caminos cond~can a un nodo. Si tomamos a cada nodo
como una tarea que un sistema debe realizar, entonces surgen dos interesantes cuestiones:
4! Al realizar una tarea, se expande un nodo
• Si por, muchos caminos sé sugiere una tarea, esta résulta ser más interesante.

A todas las incidencias en un nodo tarea se les llama razones (o también justificaciones,
recomendaciones) por la cual realizarla.
Cada camino que recomienda una tarea proporciona una razón de por que la tarea debería
4 conducir a un resultado interesante.
V
Cuanto más razones haya, aumenta la probabilidad de que la tarea lleve a algo adecuado.
Para almacenar las tar~as, se propone el concepto de agenda que en definitiva es el conjunto
de tareas que un sistema debe realizar.
A cada tarea se le asocian dos objetos: _
Una lista de las razones por las que se propone la tarea
Un peso asignado a la tarea
A cada justificación también se le asocia una medida de su valor.
A cada taraa se le asignan recursos, generalmente medidos en términos de espacio / tiempo.

IiIleligellcia Artificial Destefanis!04 10


/1

Reducción de problemas

Es una técnica que consiste en dividir un problema en sub. problemas hasta llegar al nivel de
módulos. "
Se escoge como representación los grafos Y/O.
En este caso, un nodo no es mejor por si
mismo, si no por pertenecer a una ruta más
, prometedora.
Debe defInirse un límite de INUTILIDAD e;n
términos de espacio o de tiempo.
El recalculo es hacia atrás, es costoso pero
"
necesano.
Si existe interacción entre sub-objetivos el
Para resolver el probleIlla A, es preciso método no funciona.
resolver el subproblema B, o los Tenemos dos variantes algorítmicas:
subproblemas C y D Reducción de Problemas Simple
Elalgóritmo AO·

Verificación de Restricciones

Define los estados como un conjunto' de restricciones que deben satisfacerse para resqlver
completamente el problema, de este modo lo que se busca es un estado .que satisfaga un
conjunto de restricciones impuestas por el problema.

La técnica se resume en dos pasos:


Propagación de. restricciones: .. Por medio. de conocimiento del dominio explicitando
dependencias entre objetos del problema
Realizarsuposiciones.sobrealgÚD objeto;)>'or medio de conocimiento heurístico añadir estas a .
las restricciones y volver al paso 1.

Al propagar restricciones pueden producirse inconsistencias:


Si se dan en el ESTADO INICIAL el problema no tiene solución, puesto que"las restricciones
son inconsistentes en el problema mismo. .
Si se dan en un ESTADO INTERMEDIO la suposición se elimina y se vuelve atrás.

Análisis de Medios y Fines

Es una técnica que permite razonar tanto hacia del~te como hacia atrás; permite resolver las
partes más importantes del problema y, después, volver atrás y resolver los pequeños
problemas que surgen al "pegar" los trozos más grandes.
Se centra en la detección de diferencias entre el estado actual y el estado objetivo.
Una vez que se ha aislado la diferencia, debe encontrarse un operador que pueda reducirla, si
tal operador no puede aplicarse en el estado actual, se crea el s.ubproblema que consiste en
alsanzar un estado en el que se satisfaga la precondición del operador, y este pueda ser
aplicado.
Si el estado objetivo no es alcanzado, se crea un subproblema que permita alcanzar un estado
intermedio tal que desde el cual, el estado objetivo pueda ser alcanzado.
Inteligencia Artificial Destefanis/04 11

.lt.N
[~
1)

Ejemplo de algoritmos básicos de búsqueda codificados en Lisp

En la Fig. 1 se observa un árbol con un nodo de inicio 1y uno de finalización F. El problema


que nos ocupa es encontrar la trayectoria de 1 a F. Denominamos aquí arcos a las conexiones
entre nodos.

6
r------,----
I I , '1
T--
I
I I 1 I
I I I I
I I I 1 I
1
_L1 1
-1...:.
__ I I
4 ~----
1
1
1
1
1
--t------t--------·
I I
I I I I
I I 1 I
1 1 I I
_..J I I I 1
2 L__ ...L_ _ __ '_.L _
I I I I
I I ¡
I I I
I I I
I I I
O IL I
....l_ __LI I
L _

.0 2 4 6 . 8 10
Fig.1

Estrategia general de búsqueda.

Para estudiar distintas soluciones e implementarlas en Lisp, partiremos de lo que


denominamos Estrategia General de Búsqueda (EGB), que luego podrá ser adaptada según
distintas variantes dando pie a la aplicación de los distintos métodos. ';J
La EGB propuesta consiste en manejar una lista de trayectorias parciales, desde el nodo 1 a
los intermedios, hasta que una trayectoria parcial pueda llegar a ser una trayectoria completa.
Denominamos a esta lista "Cola de Trayectorias Parciales" (CTP) (porque la.primera en la
lista es la que se prueba extender primero).

Pasos principales del al~orittrio:

1. Crear cola inicial de trayectorias parciales..' Tiene solo una trayectoria parcial
correspondiente al nodo inicial.
2. Extender la trayectoria hasta los vecinos del -nodo terminal de la trayectoria, y
reemplazar la trayectoria original por las encontradas.
3. Se repite el proceso hasta que alguna trayectoria parcial sea una trayectoria completa.

La palabra vecino en este contexto significa que dos nodos son vecinos si están conectados
por un arco.
Búsqueda Primero en Profundidad. Codificación Lisp:

Representando a los nodos como símbolos se tiene:


Primera trayectoria parcial ( 1)
Primera cola de trayectorias parciales ( ( 1) )
Extendiendo la Primera trayectoria parcial tendremos dos nuevas trayectorias ( 1A )e ( 1 D )
Y la cola de trayectorias parciales queda ( ( 1A ) ( 1D ) )
El proceso terminará al encontrar la trayectoria completa.

La estructura de la red se defme en el siguiente código:

(setf (get 'i 'vecinos) '(a d)


(get 'a 'vecinos) '(i b d)
(get 'b 'vecinos ) '(a ce)
(get 'c 'vecinos) '(b)
(get 'd 'vecinos) '(í a e)
(get 'e 'vecinos) '(b d f) .
.(get 'f 'vecinos ) '(e)
)

este código puede ser guardado en un archivo de texto, por ejemplo "bus.lsp" y c.argado en el
editor de Lisp mediante:

(load "bus.lsp") ;puede incluirse el camino del directorio

se puede comprobar que se definido y se ha cargado correctamente escribiendo el comando:

> (get 'd 'vecinos)


OAE)
Para probar el método para búsqueda en profundidad debemos incorporar al archivo la
función recursiva, que esta basada en el método general propuesto:

(defun pep ( inicial final &optional (cola (list (list inicial))) ); primero en profundi~ad .
(cond « endp cola) nil) ; esta vacia la cola?
«eq final (first (first cola))) ; encuentra el final?
(reverse (frrst cola))) ; devuelve trayectoria
(t (pep inicial final (append (extiende (first cola)) (rest cola) )))
)
)

volviendo a cargar el archivo y ejecutando

>(pep 'í 'f)

deberíamos obtener el resultado excepto que aún falta definir la función EXTIENDE. Por lo
tanto escribimos esta función en nuestro archivo y lo cargamos nu~vamente.

(defun extiende (trayectoria)


(print (reverse trayectoria)) ; imprime trayectoria
Inteligencia Artificial Destefanis/04 14
14

(mapcar #'(lambda'{nuevo-nodo) (cons nuevo-nodo trayectoria)) ; constr nuev trayects


(remove-if #'(lambda (vecino )(member vecino trayectoria))
(get (car trayectoria) 'vecinos)
)
)
)

Búsqueda Primero en Amplitud

En el apartado anterior quisinws mostrar la:fonna de operar en Lisp, y lo reducido que puede
ser su código, así como un marco general de búsqueda que aplicamos en primer lugar al caso
primero en profundidad. Basta una sencilla modificación para transfonnar el código para
realizar la búsqueda en amplitud. Simplemente debemos agregar las nuevas trayectorias
parciales al fmal de la cola como se ve en el siguiente código.

~'~"'. (defun pea (inicial final &optional (cola (list (list inicial))) ); primero en amplitud'
i::D (cond ((endp cola) nil) ; esta vacía la cola?
((eq'ftnal (first (first cola))) ; encuentra el final?
(reverse (frrst cola))) ; devuelve trayectoria
; intenta otra vez, salta la trayectoria extendida y agrega las nuevas en la parte posterior
(t (pea inicial final (append (rest cola) (extieI?-de(first cola)) ) ))
)
)

Adición de,Funciones Heurísticas

Las estrategias de búsqueda suelen clasificarSe como:

• no infonnadas, ciegas
• infonnadas, heurísticas

En cualquier caso se necesitan restricciones que .mantengan la búsquedh en un tamaño


manejable.
'Una manera de aplicar restricciones al proceso de búsqueda, lo que muchas veces resulta
imprescindible es emplear fUnciones heurísticas que detenninen en alguna medida cuales
trayectorias parciales son mejores que otras. De este modo se busca obtener una solución
aceptable en un tiempo aceptable. Como el uso, de funciones heurísticas en general no
garantiza encontrar el resultado deseado, podríamos decir que, estos métodos pueden
eventualmente aplicarse a caSos particulares en los cuales se pueda comprobar que dan
resultados satisfactorios.
Un ejemplo de estos casos lo tenemos con la Búsqueda Primero el Mejor, la cual adopta el
criterio de que la menor distancia del nodos fmales de las trayectorias parciales al nodo final
debe ser seguida sin inspeccionar las otras lo que implica "podar" (prunning) el árbol en el
que se efectúa la búsqueda. En algunos casos, como en nuestro ejemplo es posible calcular
esa distancia.
En nuestro esquema general podemos emplear las coordenadas de'las posiciones de los nodos
para calcular distancias en un plano. Ademas se dispone en Lisp de una función de
ordenamiento que opera como sigue:
> (sort '(2473 1) #'<)
(12347)

De este modo la fonna general se transforma en

(defun pem ( inicial final &optíonal (cola (list (list inicial») ); primero el mejor
(cond «endp cola) ni!) ; esta vacía la cola?
«eq final (first (first cola») ; encuentra el fmal?
(reverse (first cola») ; devuelve trayectoria
(t (pem-inicial [mal
(sort (append (extiende (frrst cola» (rest cola) )
#'(lambda (pI p2) (cercanop pI p2 fmal»
)
)
)
.)

Para poder estimar distancias y disponer de la función cercanop codificamos:

(setf (get 'i 'coordenadas) '(O 3)


(get 'a 'coordenadas) '(4 6)
(get 'b 'coordenadas) '(7 6)
(get 'e 'coordenadas) '(11 6)
(get 'd 'coordenadas) '(3 O)
(get 'e 'coordenadas) '(6 O)
(get 'f'coordenadas) '(1 i 3)
)

(defun distancia (nodo 1 nodo2)


(let «coordenadas 1 (get nodo 1 'coordenadas»
(coordenadas2 (get nod02 'coordenadas»)
(sqrt (+ (expt ( - (car coordenadas 1) (car coordenadas2) 2)
(expt ( - (cadr coordenadas 1) (cadr coo~denadas2) 2) FOTOCOPIADORA
)
_ C& F
Apuntes
) Or. CarIQs S. Menem y DI; ReIIe Favaloro
)
)

(defun cercanop (trayectoria 1 trayectoria2 nododestino)


_(< (distancia (car trayectoria 1 nododestino) (distancia (car traye~~oria 1 nododestino)
)

y podemos cargar y llamar a la función como hasta ahora:


>(pem 'i 'f)

Búsqueda por Escalamiento de Colinas


La estrategia de Búsqueda por Escalamierito de Colinas difiere de primero el mejor en que la
nueva cola se hace ordenando los nuevos vecinos y colocándolos a la cabeza de ella en lugar
de ordenar toda la cola. Este caso se deja como ejercicio.

~.-.
.. Inteligencia Artificial Destefanis/04 16
t;~··,-.

~
g,

(defun esc (.inicial final &optional (cola (list (list inicial») ); primero el mejor
(cond ((endp cola) nil) ; esta vacia la cola?
((eq final (first (first cola») ; encuentra el final?
(reverse (first cola») ; devuelve trayectoria
(t (esc inicial final
(append (sort(extiende (fust cola» #'(lambda (pI p2)
(cercanop pI p2 final)))
(rest cola)
)
)
)
:-;.
)
"

Búsqueda de Haz Luminoso

Este es un procedimiento similar a primero en amplitud pero que solo extiende una cantidad
especificada de las mejores trayectorias de cada longitud, donde mejor .significa .terminar lo
mas cercano al nodo objetivo. El nombre proviene de que ve una cantidad pequeña de
caminos por donde continuar, de la misma manera que una persona al usar una linterila ve una
fración de lo que podria ver si la escena estuviera completamente iluminada.

Inteligencia .A.rti lela

·... -'i
...
-,R., . ' .

También podría gustarte