Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INDEPENDIENTE
La búsqueda proporciona una forma de resolver los problemas en los que no se dispone de un
método más directo para resolver un problema. Cuando tenemos un grafo que representa los
estados del problema a resolver, debemos descubrir un camino, si existe, entre un estado inicial y
un estado meta.
Para construir un sistema de búsqueda, es necesario realizar cuatro acciones:
Definir el problema con precisión
Analizar el problema
Aislar y representar el conocimiento necesario para resolver el problema
Elegir la mejor técnica que resuelva el problema
Para definir el problema debemos de manera general seguir los siguientes pasos:
Definir un espacio de estado que contenga todas las configuraciones posibles
Identificar uno o más estados. Estados iniciales
Identificar uno o más estados que den solución aceptable al problema.
Especificar un conjunto de reglas que describan las acciones disponibles
Cuando tenemos un espacio de estados, debemos descubrir un camino si existe entre un estado
inicial y un estado meta. En un grafo hay bastantes nodos y no podemos inspeccionar cada nodo.
Sin embargo la búsqueda s un proceso de gran importancia en la resolución de problemas
difíciles que no pueden ser resueltos de otra forma.
Todos los procesos de búsqueda pueden tratarse como un recorrido sobre una estructura en forma
de árbol en el que cada nodo representa un estado del problema y cada enlace representa una
relación entre los estados que representan los nodos que están conectados. El árbol debería
construirse completamente mediante las reglas que definen los movimientos permitidos en el
espacio del problema.
Durante el desarrollo de esta unidad abordaremos los algoritmos de búsqueda más utilizados,
tales como: algoritmo en anchura, profundidad y primero el mejor. Cada uno de estos tiene sus
características propias, sin embargo nosotros debemos prestar especial atención al momento de la
solución de los problemas, para desarrollar habilidades y saber en que momento debemos usar
que tipo de algoritmo. Es por ello, que además de la información que compartiremos en este
documento, debemos investigar adicionalmente una serie de conceptos y bases teóricas que nos
llevaran a comprender mejor estos conceptos y técnicas. Debemos dedicar el mayor tiempo
posible a la solución de los ejercicios planteados y resolver otra vez en casa los que resolvamos
en el encuentro una mayor comprensión.
Para terminar seria bueno mencionar que nosotros como Ingenieros en Sistemas debemos
conocer todas estas técnicas para resolver problemas, en cada caso debemos tener la habilidad de
escoger aquella que nos permita resolver más rápido y eficientemente un problema. Por esto
debemos tener presente que lejos de una metodología, estas son técnicas reales que han
1
demostrado su utilidad en la resolución de muchos problemas que de otra forma no se les podría
dar solución.
Para desarrollar el contenido es bueno mencionar que esta información será de gran utilidad para
nosotros en el desarrollo como profesionales, ya que se convertirá en una poderosa herramienta
para la solución de problemas en la vida real. Al finalizar esta unidad lograremos estar
conscientes de esta afirmación y estaremos en capacidad de resolver la mayoría de problemas de
nuestra rama.
2
OBJETIVOS
3
ESQUEMA DE CONTENIDO
3. TÉCNICAS DE SOLUCIÓN
3.1 Estrategia de Búsqueda
3.2 Espacio de Estado
3.3 Algoritmo Generación y Prueba (GENERATE-AND-TEST)
3.4 Algoritmo Primero a lo Ancho (BREATH-FIRST)
3.5 Algoritmo Primero en Profundidad (DEPTH-FIRST)
3.5.1 Ventajas
5. CASOS DE APLICACIÓN
4
DESARROLLO DEL CONTENIDO
El primer paso hacia el diseño de un programa que resuelva un problema en IA, debe ser la
creación de una forma descriptiva formal y manipulable del problema, a partir de la descripción
informal del mismo.
La definición del problema como una búsqueda en el espacio de estados forma la base de la
mayoría de los métodos que se utilizan para la solución de problemas en IA. Los estados del
sistema o descripción de estados, son representaciones que contienen el conjunto de toda la
información que describe la situación actual del sistema. En cambio, el espacio de estado del
sistema o espacio del problema, es el dominio que contiene todos los posibles estados del
sistema. El espacio de estados puede ser finito o infinito.
Los mecanismos que se emplean para modificar o transformar un estado del sistema, toman el
nombre de operadores, producciones o acciones, y se utilizan para enlazar un estado actual, con
otro estado objetivo.
Cuando existen varias posibles soluciones, representadas por diversas secuencias de operadores
que enlazan dos estados, es necesario desarrollar algoritmos de IA que sean capaces de identificar
las mejores secuencias.
En resumen, la representación como espacio de estados ofrece una estructura que permite:
Al proceso que se encarga de convertir una descripción informal, en una descripción formal del
problema, se lo denomina operacionalización. Los pasos a seguirse son los siguientes:
5
Definir el espacio de estado que contiene todas las configuraciones posibles de los objetos
relevantes. Esto es posible, sin necesariamente enumerar en forma explícita todos los
estados que contiene.
Especificar uno o más estados dentro de ese espacio que correspondan a posibles
situaciones desde donde el proceso de resolución pueda arrancar (estados iniciales).
Especificar uno o más estados que podrían ser aceptables como soluciones al problema
(estados objetivo).
Especificar un conjunto de operadores que describan las acciones posibles. Para esto se
debe considerar los siguientes aspectos:
¿Qué suposiciones implícitas están presentes en la descripción informal del problema?
¿Qué generalidad deben tener los operadores?
¿Qué cantidad del trabajo requerido para resolver el problema debería estar incluido y
representado en los operadores?
Luego, el problema puede ser resuelto utilizando el conjunto de operadores, en combinación con
una estrategia de control apropiada, para moverse dentro del espacio de estados del problema
hasta encontrar un sendero entre el estado inicial y el estado objetivo. Como se indicó
anteriormente, el mecanismo de búsqueda es fundamental para el proceso de solución del
problema. Adicionalmente, proporciona un marco donde pueden intercalarse métodos más
directos de resolución de partes del problema, en caso de ser esto posible.
Para poder escoger el o los métodos más apropiados para resolver un problema, es necesario
analizarlo en algunos aspectos claves y buscar las respuestas necesarias a las siguientes
preguntas:
¿Puede el problema ser descompuesto en un conjunto de sub - problemas pequeños y,
posiblemente, independientes?
¿Podrían ignorarse pasos de solución o ser corregidos si resultaran inútiles?
¿Es posible predecir el o los resultados del problema?
¿Una buena solución al problema es suficientemente obvia, sin necesidad de compararla
con otras posibles soluciones?
¿La solución deseada es un estado o una ruta desde un estado inicial hasta un estado
objetivo?
¿Es absolutamente necesaria toda una cantidad de conocimiento para resolver el
problema, o es importante sólo para restringir la búsqueda?
¿Puede un computador, al que se le ha dado el problema, retornar por sí sólo la solución,
o será necesario que haya una interacción entre el computador y una persona?
Las respuestas que se den a las preguntas planteadas no sólo afectan a la definición del problema
en sí mismo, sino también a las características de la solución deseada y a las circunstancias bajo
las cuales debe darse la solución.
6
3. TÉCNICAS DE SOLUCIÓN
En general, las reglas contienen en forma implícita el árbol, y se genera en forma explícita sólo
aquellas partes que se decide explorar. Las principales diferencias que pueden aparecer en las
diferentes técnicas de búsqueda, son:
Muchas veces, tratar el proceso como búsqueda en un grafo en lugar de una búsqueda 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 búsqueda no quede atrapada en
algún lazo.
Es la forma en que se decide que regla hay que aplicar durante el proceso de búsqueda de la
solución de un problema. Esto surge a que con frecuencia es posible aplicar mas de una regla.
Esto tiene que ver con la rapidez de la solución del problema.
El primer requisito que debe cumplir una buena estrategia de control es que cause algún
cambio.
El segundo es que la estrategia de búsqueda sea sistemática. Elegir una entre todas las reglas
aplicables. Este requisito se corresponde con una necesidad de cambio global.
El espacio de estado es donde se define todos los elementos generales obtenidos después del
análisis del problema. Es decir, es donde se define entre otras cosas:
7
N: Nodos o estados
A: Transición
I: Estado Inicial
F: Estado Inicial
ALGORITMO:
8
3.5 Algoritmo Primero en Profundidad (DEPTH-FIRST)
ALGORITMO:
1. FORMAR UNA PILA C1
2. FORMAR UNA PILA C2
3. EVALUAR SI C1 ES UNA PILA VACIA, SI LO ES TERMINAR Y RETORNAR
NO
4. SINO: TOMA EL PRIMER ESTADO DE C1, LO DESIGNA ESTADO –X Y
SITUARLO AL FINAL DE C2
5. SI ESTADO – X = META, TERMINA Y RETORNA SI
6. EXPANDIR ESTADO – X ( PRODUCIR LISTA DE SUCESORES)
7. ELIMINAR SUCESORES QUE YA ESTAN EN C1
8. INSERTAR SUCESORES AL INICIO DE C1
9. RETORNAR AL PASO 3
3.5.1 Ventajas
Necesita menos memoria ya que solo se almacenan los nodos del camino que se siguen en ese
instante. Esto se contrasta con la búsqueda primero en anchura en la que debe almacenarse
todo el árbol que haya sido generado hasta ese momento.
Si se tiene suerte (si se tiene cuidado en ordenar los estados alternativos sucesores). Puede
encontrar una solución sin tener que examinar gran parte del espacio de estados.
En el caso de la búsqueda primero en anchura deben examinarse todas las partes del árbol de
nivel N antes de comenzar con los nodos del nivel N + 1
Las técnicas heurísticas de búsqueda son como guías de turismo. Buenas, en el sentido que
señalan aspectos de gran interés general, pero malas ya que pueden no satisfacer aspectos de
interés particular.
9
Existen varias técnicas heurísticas buenas, de propósito general, que son útiles para una
diversidad de problemas. Adicionalmente, es posible construir heurísticos especiales que
exploten conocimiento específico en cada dominio, para resolver problemas particulares.
Para resolver muchos problemas difíciles (explosión combinatoria), es necesario muchas veces
llegar a un compromiso de los requerimientos de movilidad y sistematicidad y construir una
estructura de control que no necesariamente garantiza el encontrar la mejor respuesta, sino que
casi siempre encuentra una buena respuesta. Una técnica heurística mejora la eficiencia del
proceso de búsqueda sacrificando, usualmente, exhaustividad.
Rara vez se requiere, en realidad, una solución óptima. Una buena aproximación,
normalmente, sirve muy bien.
A pesar que una aproximación heurística no puede resultar muy buena en el peor de los
casos, raras veces aparecen los peores casos en la práctica.
El tratar de comprender por qué un heurístico funciona o por qué no funciona, a menudo
conduce a una mejor comprensión del problema.
En los siguiente puntos, estudiaremos con mayor profundidad la búsqueda heurística y algunos
algoritmos típicos.
Es una variación del ascenso a colina. Al inicio, este algoritmo, permite explorar una buena parte
del espacio de estado, de tal forma que la solución final puede resultar insensible al estado inicial.
En consecuencia, la probabilidad de quedar atrapado en un máximo local, en una meseta o en un
risco, se hace mínima.
Las sustancias físicas usualmente se mueven desde configuraciones de alta energía a las de menor
energía, así que el descenso al valle, ocurre en forma natural. Pero, eventualmente pueden haber
transiciones a niveles energéticos más altos, con una probabilidad dada por:
10
El procedimiento que se va a seguir para enfriar el sistema, se llama programa de recocido. Su
forma óptima depende de cada tipo de problema y usualmente se lo descubre empíricamente. El
programa de recocido, debe incluir los siguientes ingredientes:
Este algoritmo, combina las ventajas de los algoritmos primero en profundidad y primero en
amplitud. Sigue un sendero a la vez, pero puede cambiarse a otro sendero que parece más
prometedor que el que está siguiendo.
En este sentido, puede considerarse que es un algoritmo que realiza su proceso de búsqueda en
un grafo de tipo O, ya que todos sus ramales representan una alternativa de solución. Para su
operación, el algoritmo necesita dos listas de nodos y una función heurística que estime los
méritos de cada nodo que se genere:
11
función h' es una estimación del costo adicional para llegar desde
el nodo actual al estado objetivo. Aquí es donde se explota el
conocimiento que se dispone sobre el dominio del problema.
El algoritmo, en la forma que fue formulado, se aplica a grafos. Puede ser simplificado para
aplicarse a árboles, si no se preocupa de comprobar si un nuevo nodo esta en ABIERTOS o en
CERRADOS. Esto aceleraría la generación de nodos y la búsqueda, para casos en que es poco
probable que se repitan nodos.
5. CASOS DE APLICACIÓN
1. El siguiente problema toma en cuenta muchos de los aspectos relacionados con las
actividades que realiza una persona al hacer sus compras en un supermercado.
C: Cliente
M: Mercadería
D: Dólares
V: Vendedor
L: La tienda
12
1. C entra en L
2. C empieza a curiosear
5. C pide ayuda a V
7. C encuentra M 8. C no encuentra M
13. C sale de L
14. C se lleva M
Figura 1. Grafo que representa los diferentes estados
En otras palabras:
Se tienen dos jarras, una de cuatro litros de capacidad y la otra de tres litros. Ninguna de
ellas tiene marcas de medición. Se tiene una bomba que permite llenar las jarras de agua.
¿CÓMO SE PUEDE LOGRAR TENER EXACTAMENTE DOS LITROS DE AGUA EN
LA JARRA DE CUATRO LITROS DE CAPACIDAD?. El estado inicial seria (0,0) y el
estado meta (2,n). Donde n es cualquier valor ya que el problema no especifica
cuantos litros debe haber en la jarra de 3 litros
Reglas de Producción
x = 0,1,2,3,4 y = 0,1,2,3
13
1. Llenar el recipiente de 4 galones: 2. Llenar el recipiente de 3 galones:
7. Pasar toda el agua del recipiente 8. Pasar toda el agua del recipiente de 4
de 3 galones al de 4: galones al de 3:
14
OPERADORES PARA LOS BLOQUES:
FUNCIÓN HEURÍSTICA:
15
RESUMEN
Como hemos visto la búsqueda proporciona una forma de resolver problemas para los
cuales no hay un método más directo, así como también se constituye en un marco de
trabajo dentro del cual cualquier técnica directa puede ser incorporada.
La búsqueda es una poderosa técnica para resolver la mayoría de los problemas, durante el
desarrollo de la IA ha sido usada ampliamente para resolver problemas complejos, donde se
necesita gran capacidad de razonamiento y sentido común. Con el pasar del tiempo se
desarrollaron algoritmos tales como los que mencionamos en los apartados anteriores, estos
son algoritmo de profundidad y anchura. Según los análisis que hemos realizado de ambas
metodologías el algoritmo en profundidad en muchos casos resulta más eficiente, es decir
se llega en menor y tiempo a la meta.
Por tanto debemos comprometernos en profundizar mas en estos temas y aplicarlos a los
problemas que nos depara nuestra vida como profesionales. No debemos pensar en solo
tomarlo como un conocimiento adicional, sino que por el contrario desarrollar mas las
habilidades y destrezas en la solución de problemas, a través de su aplicación.
16
BIBLIOGRAFÍA
Paginas Web.
o www.monografías.com
o www.lafacu.com
o www.dei.va.educpy\tar17\sexpreti\historia.htm
17
GLOSARIO
Búsqueda: Buscar el mejor camino por una serie de transiciones para llegar a una meta
u objetivo.
Estrategia de control: Como se decide que regla hay que aplicar durante el proceso de
búsqueda de la solución de un problema.
18
EJERCICIOS DE AUTOCOMPROBACIÓN
A: Entrada D. Bultos A
B. Supervisión E. Solicitar Lib A
C. Consulta
B
A
C D E
A A A
Si se va por Carazo, aunque no hay mucho flujo de trafico, las cuestas dificultan
llevar la carga rápidamente.
Si se va por Masaya hay un flujo intenso de trafico
Si se va por Granada, el recorrido Granada - Rivas es demasiado problemático,
dado el mal estado de las calles.
Distancias:
Managua – Carazo = 45 Masaya - Rivas = 110
Managua - Masaya = 28 Masaya – Granada = 17
Managua – Granada = 45 Granada - Rivas = 95
Carazo – Rivas = 91
19
SOLUCIÓN A LOS EJERCICIOS DE
AUTOCOMPROBACIÓN
1.
Las especificaciones dadas por una red semántica, son los suficientemente explícitas, como
para ser utilizadas en representaciones de problemas de IA.
Desde el punto de vista de los procesos de búsqueda, los árboles son preferibles a los
grafos, ya que no hay que preocuparse por la posibilidad de quedar atrapados en algún lazo.
20
2. El algoritmo más eficiente es el algoritmo en Profundidad. Es decir el recorrido A, B,
C, E.
Normalmente el algoritmo en profundidad, es uno de los más eficientes. En este
ejercicio se observa que cualquiera de los dos algoritmos resuelven el problema de
manera optima.
Aunque hay un flujo intenso de trafico, esta es una ruta muy segura, además de ser plana y
con carretera en perfectas condiciones. Sin embargo, seria bueno escoger una hora del día
donde no haya mucho trafico.
21