Sei sulla pagina 1di 16

pg.

1
UNIVERSIDAD NACIONAL DANIEL ALICIDES CARRIN
SISTEMAS Y COMPUTACIN

INFORME:
Bsqueda Heurstica IDA*
Integrantes:
BALDEN HINOSTROZA, Luis Alberto.
CARLOS MORALES, Edison.
CRISTOBAL NEYRA, Manuel.
CURI ESTRELLA, Henry.
ECHEVARRIA MESIA, Juan Carlos E.
HUINCHO LOPEZ, Jhan Carlos.
PICOY CALERO, Cristhian.

Docente:
Ing. CANTA HILARIO, Diana.

Cerro de Pasco 2017

pg. 2
Dedicamos este trabajo
a todas las personas
interesadas en conocer
ms sobre el mtodo
heurstico IDA*.

pg. 3
ndice
1. Introduccin .............................................................................................................................. 5
2. Fundamentos de la bsqueda en tiempo real .......................................................................... 6
3. Descripcin de las fases de la bsqueda heurstica en tiempo real.......................................... 7
3.1. La fase de planificacin .......................................................................................................... 7
3.2. La fase de ejecucin ............................................................................................................... 9
4.1 IDA* ........................................................................................................................................ 9
4.1.1 Conocimiento previo ............................................................................................................ 9
4.1.2 Pros y Contras .................................................................................................................... 12
4.1.3 Trabajando ......................................................................................................................... 13
4.1.4 Algoritmo............................................................................................................................ 14
5. Conclusiones............................................................................................................................ 15

pg. 4
1. Introduccin

La profundizacin iterativa A* (IDA *) es un algoritmo de recorrido transversal y


bsqueda de trayectos que puede encontrar la ruta ms corta entre un nodo de
inicio designado y cualquier miembro de un conjunto de nodos objetivo en un
grfico ponderado.
Es una variante de la profundizacin profunda iterativa de primera bsqueda que
toma prestada la idea de utilizar una funcin heurstica para evaluar el costo
restante para llegar a la meta del algoritmo de bsqueda A *. Debido a que es un
algoritmo de bsqueda en profundidad, su uso de memoria es menor que en A*,
pero a diferencia de la bsqueda de profundizacin iterativa ordinaria, se
concentra en explorar los nodos ms prometedores y por lo tanto no va a la
misma profundidad en todas partes del rbol de bsqueda.
A diferencia de A *, IDA * no utiliza la programacin dinmica y por lo tanto a
menudo termina explorando los mismos nodos muchas veces.

Mientras que la profundidad de profundidad iterativa estndar utiliza la


profundidad de bsqueda como el punto de corte para cada iteracin, el IDA *
utiliza la informacin ms informativa f (n) = g (n) + h (n), dnde g (n). Es el costo
de viajar de la raz al nodo n y h (n). Es una estimacin heurstica especfica del
problema del costo de viajar de n. A la solucin.

El algoritmo fue descrito por primera vez por Richard Korf en 1985. [1]

pg. 5
2. Fundamentos de la bsqueda en tiempo real

La bsqueda es una tcnica para resolver problemas cuya solucin consiste en


una serie de pasos que frecuentemente deben determinarse mediante la prueba
sistemtica de las alternativas. Desde los inicios de la Inteligencia Artificial, la
bsqueda se ha aplicado en diversas clases de problemas como juegos de dos
jugadores, problemas de satisfaccin de restricciones y problemas de
pathfinding de un nico agente [Korf- 00].
En la figura 1, se presenta una clasificacin de los algoritmos de bsqueda,
haciendo hincapi en su modo de operacin, y se incluyen los algoritmos ms
representativos de cada clase [Bender- 96].

Breadth first search Best first search


Depth first search A star search (A*)
Iterative deepeningIterative deepening A star search (IDA*)
search
Figura 1: Clasificacin de los algoritmos de bsqueda.

Los algoritmos de bsqueda completa 1 tradicionales se caracterizan por su


modo de operacin off- line, que determina que debe encontrarse la solucin
entera en una nica etapa de planificacin, antes de comenzar la ejecucin de
los pasos o acciones que la componen (figura 2). Es posible utilizar este
esquema de bsqueda si se cuenta con la informacin suficiente sobre el
problema y el tamao del espacio de bsqueda permite el
clculo de la solucin con los recursos computacionales disponibles.

pg. 6
Planificacin Ejecucin

Figura 2: Modo de operacin off- line.

Hacia fines de los 80' se comenz a utilizar conceptos de la bsqueda


aplicada a juegos de dos jugadores en el desarrollo de estrategias para resolver
problemas de pathfinding de un nico agente. La idea fundamental que se tom
fue la de intercalar etapas de planificacin (donde se realizan bsquedas de
profundidad limitada) con etapas de ejecucin (figura 3). Este modo de
operacin se denomina on- line y da lugar los algoritmos de bsqueda de tiempo
real2. Estos algoritmos de bsqueda general son capaces de responder a los
requerimientos de las aplicaciones de tiempo real sobre espacios de bsqueda
grandes y en condiciones de incertidumbre. Algunos algoritmos desarrollados
con estas caractersticas son el Real- Time A*, el Learning Real- Time A* y
el Min- Max Learning Real- Time A*.

Planificacin Ejecucin Planificacin Ejecucin ... Planificacin Ejecucin


Figura 3: Modo de operacin on- line.

3. Descripcin de las fases de la bsqueda heurstica en


tiempo real
De la discusin anterior se ve que el proceso de bsqueda en tiempo real se
lleva a cabo
alternando dos modos de operacin bastante distintos. El primer modo es de
planificacin, donde se simulan los movimientos del agente para evaluar los
resultados de las acciones inmediatas. Luego de terminar la bsqueda, en este
espacio acotado de posibilidades, el agente pasa al modo de ejecucin y realiza
efectivamente un movimiento. El proceso contina alternando fases de
planificacin y ejecucin hasta que se alcanza el estado objetivo [Korf- 90].

3.1. La fase de planificacin


Durante la etapa de planificacin, es fundamental restringir la profundidad de
bsqueda para poder responder dentro de los lmites de tiempo impuestos. Si
bien el tiempo de ejecucin de los algoritmos de bsqueda es exponencial
respecto a la frontera de bsqueda, la misma est acotada por una constante y
por lo tanto tambin lo est el tiempo de ejecucin. Dado que la profundidad de
bsqueda es limitada, es necesario contar con un mtodo para evaluar los
estados no- objetivos. Es esencial para el funcionamiento de esta estrategia la

pg. 7
utilizacin de heursticas que permitan estimar el costo de alcanzar un objetivo
desde un estado intermedio.
Utilizando una funcin heurstica, extendida mediante bsqueda, es posible
construir una funcin de evaluacin de estados que incluya el costo para
alcanzar un estado determinado as como una aproximacin sobre el costo para
encontrar el objetivo desde ese estado (figura 4). Se definen los siguientes
costos:
f(n) es el costo heurstico asociado a un estado n
g(n) es el costo real para alcanzar un estado n a partir del estado actual 3
h(n) es el costo heurstico para alcanzar un objetivo desde el estado n
La relacin que existe entre los costos es:
f(n) = g(n) + h(n)

Una funcin heurstica h es admisible si las estimaciones arrojadas nunca


sobrestiman los valores reales de los estados evaluados. La admisibilidad es
una propiedad importante de la funcin heurstica, y frecuentemente es
requerida por los algoritmos de control para garantizar un funcionamiento
correcto.
Figura 4: Los componentes de la funcin de evaluacin
de estados para un ejemplo sencillo Los grficos
corresponden a los estados alcanzados mediante los
movimentos simulados.

pg. 8
La heurstica utilizada es la distancia eucldea y la profundidad de bsqueda es
3.

Al disear el algoritmo de planificacin se deben realizar concesiones entre


los recursos computacionales invertidos y la precisin de las evaluaciones
devueltas. La funcin heurstica h en conjunto con la bsqueda de profundidad
limitada se consideran una sola funcin heurstica f. La precisin de los valores
obtenidos durante la planificacin aumenta al incrementar la profundidad
bsqueda, pero al mismo tiempo el costo de ejecucin aumenta
exponencialmente. De esta forma, se obtiene toda una gama de funciones de
evaluacin heursticas que intercambian precisin por costo [Korf- 00].

3.2. La fase de ejecucin

Uno de los principios ms importantes de la bsqueda en tiempo real es la


utilizacin de la estrategia del menor compromiso para los movimientos. Es
decir, la informacin obtenida en cada etapa de planificacin slo se utilizar
para determinar el prximo movimiento. La razn es que luego de ejecutar la
accin, se supone que la frontera de bsqueda se expandir, lo cual puede llevar
a una eleccin para el segundo movimiento diferente a que la que arroj la
primera bsqueda.
Sin embargo, para realizar una secuencia de decisiones no es suficiente con
la informacin devuelta por el algoritmo de planificacin. La estrategia bsica de
repetir el algoritmo de planificacin para cada decisin resulta inadecuada al
ignorar la informacin relacionada con los estados anteriores. El problema radica
en que, al volver a un estado previamente visitado, se entrar en un ciclo infinito.
Esto es algo que suceder con frecuencia, debido a que las decisiones se basan
en informacin limitada y por lo tanto direcciones que al principio parecan
favorables pueden resultar equivocadas al reunir ms informacin durante la
exploracin. En general, se desea evitar entrar en ciclos infinitos y a la vez
permitir volver a estados ya visitados cuando parezca favorable.
El principio para resolver el problema del control de la etapa de ejecucin es:
slo se debera regresar a un estado visitado cuando la estimacin de resolver
el problema desde ese estado ms el costo de volver al mismo es menor que el
costo estimado de seguir hacia adelante desde el estado actual. Los primeros
algoritmos en implementar esta solucin fueron el Real- Time A* y una variante
llamada Learning Real- Time A* [Korf- 90].

4.1 IDA*

4.1.1 Conocimiento previo

pg. 9
Hay algunas cosas que usted necesita saber antes de probar su mano en la
programacin de IDA *.

Usted necesita saber cmo convertir su problema en un grfico, es decir,


en los nodos y los bordes.
Esta es la materia ms importante que usted necesita conseguir derecho, as
que qu es una grfica?
Un grfico es una representacin de un conjunto de objetos donde algunos pares
de objetos estn conectados por enlaces. Los objetos interconectados estn
representados por abstracciones matemticas llamadas vrtices (tambin
llamadas nodos o puntos), y los enlaces que conectan algunos pares de vrtices
se llaman arcos (tambin llamados arcos o lneas).

FIGURA 1.

Como se muestra en la Figura 1 anterior. Desde el punto de vista de la


programacin, un nodo es donde toda su informacin se almacena para un
estado particular del problema, como las coordenadas actuales en
pathfinding. El borde no es nada ms que el puntero al siguiente nodo que se
almacena en el nodo anterior. La distancia entre cada nodo se llama coste.
Hay varios tipos de grficos como el grfico cclico, acclico, dirigido cclico,
acclico dirigido etc etc, explicando que ser fuera de tema.
Tomemos el ejemplo del problema de la jarra de agua . En este ejemplo
particular tenemos una jarra de 5 galones y una jarra de 3 galones, tenemos que
recoger 4 galones.

pg. 10
FIGURA 2.
Como se ve en la Figura 2, el problema se convierte en un rbol y como saben,
un rbol es un caso especial de un Diagrama acclico dirigido (DAG), por lo tanto
IDA * puede aplicarse aqu tambin.
La figura es casi auto explicativa todava voy a explicar cmo va, por lo que los
nodos tienen datos como la cantidad de agua en cada jarra y estos estn
vinculados con cada paso posible desde el nodo anterior. Como se ve, el nodo
inicial es el nodo de inicio donde ambos jarros estn vacos de aqu hay dos
estados posibles, es decir, o llenar la jarra de 3 galones o la jarra de 5 galones,
por lo tanto, los dos nodos vinculados al inicio. Ahora bien, si vemos el LHS del
rbol en profundidad 1 hay dos pasos posibles, es decir, bien verter el agua de
la jarra de 3 galones a la jarra de 5 galones o llenar la jarra de 5 galones que se
describe por los nodos.
Este es un ejemplo sencillo de convertir su espacio de problemas en un rbol
para la implementacin de IDA *.
Nota: El agua en la jarra cuando se vierte a un recipiente con menos capacidad,
entonces el agua extra no se contar. Tambin los jarros se pueden vaciar como
un movimiento.
Necesita tener una heurstica admisible para el problema para una
bsqueda ptima y ms rpida (Opcional).
Qu es una heurstica admisible?
Una heurstica admisible es la que calcula el costo estimado para el estado
objetivo y siempre es menor o igual que el costo real de alcanzar el estado
objetivo, es decir, nunca sobrevalora el costo para alcanzar la
meta. A consistente o montona heurstica tambin se puede utilizar lo que
significa que es admisible y que es igual al costo a objetivo ms la distancia
estimada a partir de cada vecino en cuyo caso la solucin se encontrar el ms
rpido y se generaran los nodos menos innecesarios.

pg. 11
Por qu necesitamos heurstica?
La heurstica es el componente principal del algoritmo es decir los cerebros del
algoritmo sin l el algoritmo no es inteligente, las heursticas dan lmites al
algoritmo, como en que no seleccionar y cul a no desde heurstica dar la
estimacin general de la distancia a la meta Nodo que ayuda al algoritmo a elegir
el nodo ptimo en el siguiente paso.
- Usted necesita saber o calcular el costo necesario para viajar de un nodo
a otro.
Por lo general, el costo se toma como 1, pero puede variar de acuerdo a dnde
desea implementarlo. Por ejemplo un movimiento en diagonal puede costar 1,41
si lo est implementando en un mapa 2D con cada mosaico como un cuadrado
de 1 x 1 a travs de Pitgoras o por ejemplo si un nodo representa un mosaico
que contiene agua que ralentiza el movimiento puede ser valorado 2 etc .
- Necesitas estar familiarizado con la recursin.
La recursin en la informtica es un mtodo en el que la solucin a un problema
depende de soluciones a instancias ms pequeas del mismo problema. En la
recursin llamamos a la misma funcin dentro de esa funcin y, por tanto, un
conjunto infinito de objetos puede ser definido por enunciados finitos. La razn
por la que necesita estar familiarizado con la recursin es porque necesita
entender el flujo del programa en funciones recursivas, de lo contrario ser muy
difcil personalizar y terminar el algoritmo segn su conveniencia.

4.1.2 Pros y Contras


Pros:

Siempre encontrar la solucin ptima siempre que exista y que si se


suministra una heurstica debe ser admisible.
La heurstica no es necesaria, se utiliza para acelerar el proceso.
Se pueden integrar varias heursticas al algoritmo sin cambiar el cdigo
bsico.
El costo de cada movimiento puede ser ajustado en los algoritmos tan
fcilmente como la heurstica
Utiliza mucho menos memoria que aumenta linealmente, ya que no
almacena y olvida despus de que alcanza una cierta profundidad y
empezar de nuevo.

Contras:

No realiza un seguimiento de los nodos visitados y, por tanto, explora los


nodos ya explorados de nuevo.
Ms lento debido a la repeticin de la exploracin de nodos explorados.
Requiere ms potencia y tiempo de procesamiento que A *.

pg. 12
4.1.3 Trabajando

La caracterstica clave del algoritmo IDA * es que no mantiene una pista de cada
nodo visitado que ayuda a ahorrar consumo de memoria y puede utilizarse donde
la memoria est restringida. Es en gran parte similar a la bsqueda de
profundizacin iterativa, la nica diferencia es que en lugar de alcanzar la misma
profundidad para cada rama, decide la profundidad usando la puntuacin f
llamada como el umbral que aumenta cuando un nodo con mayor puntuacin f
es alcanzado y el algoritmo Comienza de nuevo desde el principio hasta la nueva
profundidad.
As que utilizamos un bucle infinito que es la base de la funcin que se llama en
recursividad, cuando la funcin regresa desde el umbral que comienza desde el
principio a travs de este bucle infinito donde la funcin se llama inicialmente y
el umbral se incrementa despus de cada retorno.
El umbral no slo se incrementa aleatoriamente sino que depende de lo que la
funcin recursiva devuelve como el nuevo umbral. Durante la recursividad
siempre que se alcanza un nodo con una puntuacin f ms alta que el umbral,
este nodo no se explora ms, pero se anota f, puesto que encontramos muchos
de tales nodos, el mnimo de esta puntuacin f se devuelve como el nuevo
umbral.
Qu es f score?
F es nada ms que la suma del costo para alcanzar ese nodo y el valor heurstico
de ese nodo.
Para cualquier nodo dar, la puntuacin f se define como:

F (x) = h (x) + g (x)


Donde g (x) es el coste de ese nodo, h (x) es la heurstica calculada de ese
nodo y x es el nodo actual.
Qu es la puntuacin g (costo)?
G se define como la suma de la puntuacin g del nodo padre y el costo de viajar
a ese nodo desde su padre.

G (x) = g (x.parent) + coste (x.parent, x)


Qu es h score (heurstica)?
La puntuacin heurstica es diferente para cada pregunta, tal como se explic
anteriormente, la heurstica debe ser admisible para cada tipo de problema. No
voy a discutir acerca de varias heursticas aqu, ya que esto es slo para explicar
el funcionamiento general de IDA *.
A continuacin se muestra el funcionamiento exacto del algoritmo IDA *

pg. 13
Aqu est la misma animacin ms claramente visible que la anterior.
Los nmeros escritos en el centro de los nodos son puntuaciones f.
Aqu estamos considerando inicialmente el umbral como 3 y el ciclo a travs del
algoritmo. En cada rama visitamos la profundidad hasta que la puntuacin f es
mayor que el umbral y anotamos ese valor f, hacemos esto hasta que todas las
ramas se exploran hasta la profundidad determinada. A continuacin, el ciclo
contina desde el nodo de inicio nuevamente con el nuevo valor de umbral que
es el mnimo de las puntuaciones f anotadas. Esto contina hasta que se
encuentra la meta o se excede el lmite de tiempo.

4.1.4 Algoritmo

Raz = nodo inicial;


Objetivo = nodo final;
Funcin IDA * () // Funcin del controlador
{
Umbral = heurstico (Inicio);
Mientras que (1) // ejecutar para el infinito {
Integer temp = search ( Inicio , 0, umbral ); // bsqueda de funciones (nodo, puntuacin
g, umbral)
if (temp == FOUND ) // si el objetivo encontrado regresa
FOUND ; si (temp == ) // umbral mayor
que el mximo valor f posible retorno ; // o set Tiempo lmite
excedido threshold = temp;

}
}
Function Bsqueda ( nodo , g , umbral ) // funcin recursiva
{

pg. 14
F = g + heurstico ( nodo );
If ( f > umbral ) // mayor f encontrado return f ; If ( nodo == Meta )

// Nudo objetivo encontrado retorno FOUND; Entero min = MAX_INT;

// min = Nmero entero mnimo foreach ( tempnode en nextnodes ( node )) {

// llamada recursiva con nodo siguiente como nodo actual para bsqueda de profundidad
integer temp = search ( tempnode , g + cost ( nodo , tempnode ), umbral ); If (temp
== FOUND ) // si el objetivo encontrado devuelve FOUND; If (temp <min)

// encontrar el mnimo de todos los 'f' mayor que el


umbral encontrado

min = temp;

}
Return min; // devuelve el valor mnimo 'f' encontrado mayor que el umbral
}
De funcin nextnodes ( nodo )
{
lista de retorno de todos los posibles prximos nodos de nodo ;
}

Asegrese de implementar este algoritmo prcticamente y leer mis posts


sobre pathfinding y N-Puzzle e implementarlos usando el algoritmo IDA *
explicado arriba en lugar de A *, todo lo dems permanece igual. Codificacin de
estos har ms claro prcticamente sobre cmo utilizar IDA * para la bsqueda
de grficos y cmo convertir los problemas en el grfico para utilizar este
algoritmo.

5. Conclusiones.

Siempre se consigue los nodos ms prometedores y termina explorando


lo mismos nodos varias veces.

Utiliza mucho menos memoria que aumenta linealmente, ya que no


almacena y olvida despus de que alcanza una cierta profundidad y
empezar de nuevo.

pg. 15
pg. 16

Potrebbero piacerti anche