Está en la página 1de 8

Fundamentos de Inteligencia Artificial 2NV60 Unidad 3

Tercer Departamental
Algoritmos y Métodos de Búsqueda Inteligentes

5.1 Caracterización del problemas

El caracterizar un problema, es reducirlo a sus aspectos y relaciones fundamentales, a fin


de poder iniciar el estudio del mismo.
Exponer en términos generales lo que se pretende estudiar, en ocasiones este apartado
carece de especificidad, a medida que se avanza en la revisión, el problema empieza a
plantearse de una forma más precisa.
Para poder caracterizar un problema, se necesita delimitarlo, cubriendo los siguientes
puntos:
1. Señalar los límites teóricos del problema mediante la conceptualización
2. Fijar límites temporales
3. Establecer límites espaciales
4. Definir unidades de observación
5. Situar el problema en el contexto

La formulación operacional para la caracterización de un problema es:


1. Expresar relaciones entre dos o más variables
2. Redacción clara y sencilla
3. Tener implícita la posible comprobación empírica

Existen diferentes formas de representar problemas para resolverlos de manera automática:


● Representaciones generales Espacio de estados: un problema se divide en un
conjunto de pasos de resolución desde el inicio hasta el objetivo.
● Reducción a subproblemas: un problema se puede descomponer en una jerarquía
de subproblemas.

Podemos definir un problema por los elementos que intervienen y sus relaciones. En cada
instante de la resolución de un problema esos elementos tendrán unas características y
relaciones específicas-
Denominaremos ​Estado a la representación de los elementos que describen el problema en
un momento. Distinguiremos dos estado especiales el ​Estado Inicial (punto de partida) y el
Estado Final​ (objetivo del problema).

Para poder movernos entre los diferentes estados necesitamos operadores de


transformación.
Operador: Función de transformación sobre la representación de un estado que lo
convierte en otro estado. Los operadores definen una relación de accesibilidad entre
estados.

Representación de un operador
● Condiciones de aplicabilidad

Equipo Delta
Fundamentos de Inteligencia Artificial 2NV60 Unidad 3

● Función de transformación

Los estados y su relación de accesibilidad conforman lo que se denomina espacio de


estados, representa todos los caminos que hay entre todos los estados posibles de un
problema, podría asimilarse con un mapa de carreteras de un problema.
La solución de nuestro problema esta dentro de ese mapa.

Solución: Secuencia de pasos que llevan del estado inicial al final (secuencia de
operadores) o también el estado final
Tipos de solución:​ una cualquiera, la mejor, todas
Coste de una solución: Gasto en recursos de la aplicación de los operadores a los
estados. Puede ser importante o no según el problema y que tipo de solución busquemos.

Ejemplo:
Rompecabezas

Espacio de estados:​ Configuraciones de 8 fichas en el tablero


Estado inicial:​ Cualquier configuración
Estado final:​ Fichas en orden específico
Operadores: ​Mover hueco
Condiciones:​ El movimiento está dentro del tablero
Transformación: ​Intercambio entre el hueco y la ficha en la posición del movimiento
Solución:​ Qué pasos + El menor número

Opinión:
Cuando hablamos de la caracterización de problemas, nos referimos a que hay que
“descomponer” ese problema para poder entenderlo, lo mejor es por partes pequeñas, de
tal manera que sea más sencillo entenderlo, de esta manera nos lleva a dar solución al
problema por partes y al final encontrar una solución conjunta.

Bibliografía:
Desconocido. (2012). Resolución de problemas. 5 noviembre 2017, de desconocido Sitio
web: http://www.lsi.upc.edu/~bejar/ia/transpas/teoria/2-BH1-introduccion_busqueda.pdf

Equipo Delta
Fundamentos de Inteligencia Artificial 2NV60 Unidad 3

5.2 Algoritmos de búsqueda ciega

Busca la primer solución sin importar que tan óptima sea; no detecta si se está aproximando
o alejando de la solución. No es capaz de encontrar una solución aceptable en caso de que
no exista o sea demasiado costoso encontrar la solución óptima.
Se clasifican en :
1) Búsqueda en amplitud
2) Búsqueda en profundidad
3) Búsqueda en profundidad progresiva
4) Búsqueda bidireccional

Búsqueda en amplitud​.
Procedimientos de búsqueda.
Para cada uno de los nodos de un nivel se aplican todos los posibles operadores
No se expande ningún nodo de un nivel antes de haber expandido todos los del nivel
anterior.

Búsqueda en profundidad.
La búsqueda se realiza por una sola rama del árbol hasta encontrar una solución o hasta
que se tome la decisión de terminar la búsqueda por esa dirección.
Terminar la búsqueda por una dirección se debe a no haber posibles operadores que aplicar
sobre el nodo hoja o por haber alcanzado un nivel de profundidad muy grande.
Si esto ocurre se produce una vuelta atrás (backtracking) y se sigue por otra rama hasta
visitar todas las ramas del árbol si es necesario.

Búsqueda en profundidad progresiva.


Se define una profundidad predefinida.
Se desarrolla el árbol realizando una búsqueda en profundidad hasta el límite definido en el
punto anterior.
Si se encuentra la solución entonces FIN
En caso contrario, se establece un nuevo límite y volvemos al segundo paso.

Búsqueda bidireccional.
Se llevan a la vez dos búsquedas, una descendente desde el nodo inicial y otra ascendente
desde el nodo de meta.
Al menos una de estas dos búsquedas debe ser en anchura para que el recorrido
ascendente y descendente puedan encontrarse en algún momento.
Cuando se llegue a un nodo donde ya había sido explorado con el otro tipo de búsqueda, el
algoritmo acaba.
El camino solución es la sima de los caminos hallados por cada búsqueda desde el nodo
mencionado hasta el nodo inicial y hasta el nodo meta.

Opinion​:

Equipo Delta
Fundamentos de Inteligencia Artificial 2NV60 Unidad 3

La busqueda ciega , busca la solución sin importar si la solución es óptima y no detecta si


se está alejando o acercando a la solución.
Ya que solo se considera la relación de procedencia entre estados.
Ejemplo:

Problema del mono y los plátanos


Un mono está en la puerta de una habitación. En el centro de la habitación hay un plátano
colgado del techo, pero no puede alcanzarlos desde el suelo. En la ventana de la habitación
hay una caja, que el mono puede mover y a la que puede encaramarse para alcanzar el
plátano. El mono puede realizar las siguientes acciones: desplazarse de la puerta al centro,
del centro a la ventana y viceversa; empujar la caja a la vez que se desplaza; subirse y
bajarse de la caja; coger el plátano.

Bibliografía:
Desconocido. (2010). Búsqueda a Ciegas. 2017, de Desconocido Sitio web:
http://smartcomputing.gerardorossel.org/busqueda-a-ciegas.aspx

5.3 Búsqueda heurística

Los métodos de búsqueda heurística disponen de alguna información sobre la proximidad


de cada estado a un estado objetivo, lo que permite explorar en primer lugar los caminos
más prometedores.

Son características de los métodos heurísticos:

Equipo Delta
Fundamentos de Inteligencia Artificial 2NV60 Unidad 3

● No garantizar que se encuentre una solución, aunque existan soluciones.


● si se encuentra una solución, no se asegura que esta tenga las mejores
propiedades(que sea de longitud mínima o de coste óptimo).
● En algunas ocasiones (que, en general, no se podrán determinar a priori),
encontraran una solución (aceptable buena) en un tiempo razonable.
● En general, estos métodos son preferidos a los métodos no informados en la
solución de problemas difíciles para los que una búsqueda exhaustiva necesitaría un
tiempo demasiado grande. Esto cubre prácticamente la totalidad de los problemas
reales que interesan en inteligencia artificial.
● La información del problema concreto que estamos intentando resolver se suele
expresar por medio de heurísticas
● Newell, Shaw y Simon en 1963 dieron la siguiente definición:”Un proceso que puede
resolver un problema dado, pero que no ofrece garantía de que lo hará, se llama una
heurística para ese problema”.

Si nos planteamos seguir concretando como aprovechar la información sobre el problema


en sistemas de producción, la siguiente idea consiste en concentrar toda la información
heurística en una única función que se denomina función de evaluación heurística. Se trata
de una función que asocia a cada estado del espacio de estados una cierta cantidad
numérica que evalúa de algún modo lo prometedor que es ese estado para acceder a un
estado objetivo. Habitualmente, se denota esa función por h(e).

Función heurística.
La función heurística puede tener dos interpretaciones. Por una parte, la función puede ser
una estimación de lo próximo que se encuentra el estado de un estado objetivo. Bajo esta
perspectiva, los estados de menor valor heurístico son los preferidos. Pero en otros casos
puede suceder que lo que convenga sea maximizar esa función.

Opinion:
Entiendo los métodos heurísticos o la heurística como una forma de resolver problemas de
una forma rápida, tomando como inicio la probabilidad de encontrar la solución o
soluciones, en un punto cercano a este. Es decir buscar cerca de la solución, pero sin tener
la seguridad de que esta solución sea la mas optima, solo es una solución. Por otro lado
entiendo que es una forma más rápida de encontrar soluciones.

Ejemplo:
Escaner de virus.
Muchos escáner de virus utilizan formas heuréticas con el fin de detectar virus u otras
formas de malware. El escáner heurístico busca familias de virus para relacionarlos con
virus ya existentes, con un tipo de reglas diferentes dependiendo del virus.Si se observa
que un archivo o un ejecutable tiene partes de código que lo relacionan con el virus y está
realizando ese tipo de actividad , entonces el escáner detecta que el archivo está infectado.
La parte más avanzada de estos motores heurísticos es que puede trabajar contra virus
altamente polinomizados, contra los que un escáner simple no puede hacer nada al no estar
en su base de datos.

Equipo Delta
Fundamentos de Inteligencia Artificial 2NV60 Unidad 3

Bibliografía:
https://www.nebrija.es/~cmalagon/ia/transparencias/busqueda_heuristica.pdf
http://www.posgradoeinvestigacion.uadec.mx/CienciaCierta/CC30/3.html

5.4 Métodos de búsqueda

Método Primero en anchura

El conjunto open se maneja como una lista FIFO, es decir, como una cola, siempre se
estará visitando primero los primeros estados en ser generados. El recorrido del espacio de
estados se hace por niveles de profundidad.

procedure Búsqueda_en_amplitud {
open ()[estado_inicial]
closed () {}
while (open no está vacía) {
remover el primer estado X de la lista open
if (X es un estado objetivo) return éxito
else {
generar el conjunto de sucesores del estado X
agregar el estado X al conjunto closed
eliminar sucesores que ya están en open o en closed
agregar el resto de los sucesores al final de open
}
}
return fracaso
}

Equipo Delta
Fundamentos de Inteligencia Artificial 2NV60 Unidad 3

Si el factor de ramificación es B y la profundidad a la cual se encuentra el estado objetivo


más cercano es n, este algoritmo tiene una complejidad en tiempo y espacio de O(Bn).
Contrariamente a la búsqueda en profundidad, la búsqueda en amplitud garantiza encontrar
el camino más corto.

Método Primero en profundidad

Si el conjunto open se maneja como una lista LIFO, es decir, como un stack, siempre se
estará visitando primero los últimos estados en ser generados. Esto significa que si A
genera B y C, y B genera D, antes de visitar C se visita D, que está más alejado de la raiz A,
o sea más profundo en el árbol de búsqueda. El algoritmo tiene en este caso la tendencia
de profundizar la búsqueda en una rama antes de explorar ramas alternativas.

procedure Búsqueda_en_profundidad {
open () [estado_inicial]
closed () {}
while (open no está vacía) {
remover el primer estado X de la lista open
if (X es un estado objetivo) return éxito
else {
generar el conjunto de sucesores del estado X
agregar el estado X al conjunto closed
eliminar sucesores que ya están en open o en closed
agregar el resto de los sucesores al principio de open
}
}
return fracaso
}

Equipo Delta
Fundamentos de Inteligencia Artificial 2NV60 Unidad 3

Considerando que la cantidad promedio de sucesores de los nodos visitados es B (llamado


en inglés el branching factor y en castellano el factor de ramificación), y suponiendo que la
profundidad máxima alcanzada es n, este algoritmo tiene una complejidad en tiempo de
O(Bn) y, si no se considera el conjunto closed, una complejidad en espacio de O(B × n). En
vez de usar el conjunto closed, el control de ciclos se puede hacer descartando aquellos
estados que aparecen en el camino generado hasta el momento (basta que cada estado
generado tenga un puntero a su padre).

El mayor problema de este algoritmo es que puede "perderse" en una rama sin encontrar la
solución. Además, si se encuentra una solución no se puede garantizar que sea el camino
más corto.

Opinión:
Aquí podríamos apreciar casos de teoría de grafos de forma aplicada y algo de
interacciones entre los nodos de los que está compuesto el diagrama en su totalidad. Es
apasionante analizar profundamente todos los posibles resultados a través de las
combinaciones generadas por los estados. A través de tales exploraciones es como
podemos obtener criterios de búsqueda más sutiles.

Ejemplo:
La generación de trayectos a partir del punto de origen respecto a un destino, se utilizan
previamente esta clase de búsquedas para definir el camino más rápido. Esta tecnología se
aplica en los sistemas de GPS.

Bibliografía:
http://inteligenciaartificial-isc.blogspot.mx/p/unidad-2.html
https://www.youtube.com/watch?v=nA1MkxmVAI0

Equipo Delta