Você está na página 1de 32

Ctedra de: ALGORITMOS GENTICOS

ALGORITMOS GENTICOS Y LA OPTIMIZACIN.


BSQUEDAS EXHAUSTIVAS Y HEURSTICAS












Profesora: Ing. Daniela Daz

Universidad Tecnolgica Nacional
Facultad Regional Rosario

Ao: 2013
Ctedra de Algoritmos Genticos Ao: 2013
Universidad Tecnolgica Nacional - FRRO

Prof. Ing. Daniela E. Daz Pgina: 1
Buscando el ptimo:
En un Algoritmo Gentico comn, el objetivo es encontrar el ptimo global del problema.
De haber ms de un punto del espacio de bsqueda que realice ese valor, algunas
arquitecturas pueden encontrar algunos, pero no estn diseadas para encontrarlos todos.

Del mismo modo, de existir ptimos locales (mximos o mnimos locales, segn el problema),
sern eventualmente descartados en funcin del ptimo global, que ganar en la comparacin.

Existen sin embargo arquitecturas de AG diseadas para encontrar y conservar todos los
posibles Nichos Ecolgicos posibles, o sea, todos los posibles puntos o zonas del espacio de
bsqueda, que correspondan a ptimos locales o al ptimo global.

As, el Algoritmo deber encontrar y conservar todos los puntos que realicen el ptimo global, y
los eventuales ptimos locales.




















Restriccin de Deriva Gentica

Existen muchas arquitecturas distintas. Una clase de Algoritmos Genticos Niching tienen
como idea principal restringir la competencia, de modo de demorar el proceso de deriva
gentica. Este es el proceso por el cual el ptimo global gana sobre los ptimos locales, de
modo que stos desaparecen de la poblacin.

De este tipo son los algoritmos que utilizan Tournament Selection (seleccin por torneo), o los
algoritmos de divisin en subpoblaciones mientras la migracin sea restringida.
Esto tiene el defecto de que slo se consigue demorar el proceso; o sea, si se deja evolucionar
el sistema lo suficiente, eventualmente el ptimo global terminar copando la poblacin. La
Cantidad de Generaciones es crtica, ya que dejando evolucionar lo suficiente, el sistema
eventualmente converger y slo se obtendrn variantes menores del ptimo global.

Ms an, no hay garantas de que un ptimo local encontrado durante el proceso sea
conservado, slo ms probabilidades de que no todos sean eliminados



Ctedra de Algoritmos Genticos Ao: 2013
Universidad Tecnolgica Nacional - FRRO

Prof. Ing. Daniela E. Daz Pgina: 2
Entornos:
Existe un segundo tipo de Algoritmos Genticos Niching, diseados de modo que cualquier
ptimo local encontrado durante la bsqueda tenga buenas probabilidades de sobrevivir, sin
importar la Cantidad de Generaciones considerada.

La idea principal es definir de alguna manera un Entorno del ptimo (mximo). Si un punto con
un valor ms alto es encontrado dentro del entorno, estamos trepando una ladera y no en una
cima, por lo tanto el punto presente se descarta y se toma el nuevo.
De lo contrario, si otro punto con valor ms alto es encontrado pero fuera del entorno, entonces
se considera que estamos en una cima (claramente no la ms alta de la funcin), y ambos
puntos se conservan.
Los diferentes Algoritmos Geneticos Niching de esta clase, se basan entonces en la forma en
que definen y manejan este entorno (implcita o explcita, esttica o dinmica, Homognea en
toda la poblacin o no)

Algoritmos de Bsqueda:
Los algoritmos de bsqueda tienen como objetivo encontrar la mejor solucin dentro de un
espacio de posibles soluciones. Deben maximizar o minimizar una determinada funcin.
Las mejoras son iterativas. Se empieza con un estado inicial cualquiera y se mejora paso a
paso
Definicin de la palabra Bsqueda:
Bsqueda es la accin de buscar. Este verbo permite nombrar a la accin de hacer algo para
hallar a alguien o algo, hacer lo necesario para conseguir algo, ir por una persona para llevarla
a otra parte o provocar.
En el mbito de Internet, una bsqueda es la accin que se lleva a
cabo en un buscador para hallar ciertos archivos o
documentoscque estn alojados en servidores web. El usuario
debe ingresar trminos o frases (conocidos como palabras clave o
keywords) en el buscador para que ste presente una pgina con
resultados.
Se conoce como bsqueda y rescate a la operacin que se lleva a
cabo en situaciones de emergencia. Lo habitual es que la operacin
tenga lugar en lugares de difcil acceso cuando hay personas perdidas, heridas o enfermas.

Mtodo exhaustivo
El mtodo exhaustivo es un procedimiento geomtrico de aproximacin a un resultado, con el
cual el grado de precisin aumenta en la medida en que avanza el clculo.
Tambin se lo conoce como:
mtodo por agotamiento
mtodo de exhauscin o
mtodo de exhaucin.

El trmino proviene del ingls method of exhaustion (que podra ser traducido como mtodo
por agotamiento, ya que la Real Academia Espaola no ha aceptado an el sustantivo
exhauscin, a pesar de reconocer el adjetivo exhausto). El ingls exhaustion proviene del
latn exhausti (agotamiento).

Historia:
El sofista Antifonte (430 a. C.) trat de determinar el rea del crculo inscribiendo en l un
mayor nmero de tringulos, cada vez ms pequeos, hasta que su rea se colmara.
Un ejemplo ms famoso del mtodo exhaustivo o por agotamiento es el del clculo de la
longitud de una circunferencia efectuado por Arqumedes. l utiliz dos mtodos: el mtodo de
agotamiento, inscribiendo polgonos regulares en una circunferencia de radio unitario, y el
mtodo de compresin, circunscribiendo polgonos a la circunferencia.


Ctedra de Algoritmos Genticos Ao: 2013
Universidad Tecnolgica Nacional - FRRO

Prof. Ing. Daniela E. Daz Pgina: 3
De este modo, al aumentar el nmero de lados de los polgonos, las figuras tendern a
acercarse a la forma de la circunferencia, tanto que Arqumedes pudo obtener una medida
bastante precisa del nmero .

El mtodo de agotamiento est descrito en el Mtodo, un libro de Arqumedes en el que se
explica este procedimiento. Es la base de los conceptos que en el siglo XVII permitieron a
Isaac Newton y a Leibniz unificar el clculo diferencial con el integral, lo cual conllev la
posterior definicin rigurosa de lmite de una funcin por Bernard Bolzano, Cauchy y
Weierstrass.
El mtodo de agotamiento es el precursor del concepto de Suma de Riemann que permite
definir con rigor la integral de una funcin en un intervalo.

Bsqueda Exhaustiva:

La bsqueda exhaustiva es una tcnica general de resolucin de problemas. Se realiza una
bsqueda exhaustiva y sistemtica en el espacio de soluciones. Por ello, suele resultar
ineficiente.
La bsqueda se suele realizar recorriendo un rbol con el que se representan las posibles
soluciones.
Hay algunos mtodos de recorrido del rbol:
Recorrido en anchura (consiste en visitar todos los elementos del rbol una sola vez, de la
Forma que primero se visitan los elementos del nivel 0, luego los del nivel 1, y as
sucesivamente. En cada nivel, se visitan los elementos de izquierda a derecha).
Backtracking (el algoritmo realiza una bsqueda en profundidad en el rbol de soluciones del
problema).
Branch and Bound (ramificacin y acotacin).

La solucin de un problema se puede expresar como una tupla (x1, x2, ..., xn ), satisfaciendo
unas restricciones P(x1, x2, ..., xn) y tal vez optimizando una cierta funcin objetivo.
En cada momento, el algoritmo se encontrar en un cierto nivel k, con una solucin parcial (x1,
..., xk ).
Cada conjunto de posibles valores de la tupla representa un nodo del rbol de soluciones.
Se sigue hasta que la solucin parcial sea una solucin completa del problema, o hasta que no
queden ms posibilidades por probar.

Se recorre un rbol de soluciones. Sin embargo, este rbol es implcito, no se almacena en
ningn lugar.












Ctedra de Algoritmos Genticos Ao: 2013
Universidad Tecnolgica Nacional - FRRO

Prof. Ing. Daniela E. Daz Pgina: 4
El recorrido se hace en un cierto orden. Por ejemplo, con backtracking se hace en profundidad:













Los algoritmos de Backtracking y Branch and Bound se suelen aplicar en la resolucin de un
gran nmero de problemas, muy especialmente en los de optimizacin. Estos algoritmos
realizan una bsqueda exhaustiva y sistemtica en el espacio de soluciones del problema.
Suelen ser muy ineficientes. Se utilizan para resolver problemas para los que no existe un
algoritmo eficiente para resolverlos.

Backtracking
Es una tcnica general de resolucin de problemas, que suele aplicarse sobre todo a juegos y
problemas de ptimizacin. Realiza una bsqueda exhaustiva y sistemtica en el espacio de
soluciones del problema. La solucin de un problema de backtracking se puede expresar como
una tupla (x1,x2,,xn), que satisface una restricciones R(x1,x2,,xn) y a veces optimizando
una funcin objetivo.

En cada momento el algoritmo se encontrar en un cierto nivel k, con una solucin parcial
(x1,x2,,xk) (con k<=n).
Si puede aadirse un elemento xk+1 a la solucin parcial se avanza al nivel k+1.
Si no se prueban otros valores vlidos para xk.
Si no existe ningn valor que sea vlido por probar, se retrocede al nivel anterior k-1.
Se continua con este proceso hasta que la solucin parcial sea una solucin del problema
o hasta que no queden ms posibilidades por probar (en el caso de que no se encuentre
ninguna solucin o se busquen todas las soluciones del problema).
En definitiva, el algoritmo realiza una bsqueda en profundidad en el rbol de soluciones del
problema.

x
3

x
2

x
1












1
2 1 1
3 6 7 1 1 1 1
x
3

4 5 8 9 1 1
x
2

x
1

1
Por realizar una bsqueda exhaustiva en el espacio de soluciones del problema, los algoritmos
de backtracking son bastante ineficientes.


Ctedra de Algoritmos Genticos Ao: 2013
Universidad Tecnolgica Nacional - FRRO

Prof. Ing. Daniela E. Daz Pgina: 5
En general, se tienen tiempos con rdenes de complejidad factoriales o exponenciales.
Por esto, los algoritmos de backtracking se utilizan en problemas para los que no existen un
algoritmo eficiente que los resuelva.

Problema N-Reinas

El problema de las N-Reinas consiste en colocar n reinas en un tablero de ajedrez de tamao
n*n de forma que las reinas no se amenacen (una reina amenaza a otra si est en la
misma la, columna o diagonal) segn las normas del ajedrez. Se busca encontrar una
solucin o todas las soluciones posibles.
Este problema puede resolverse utilizando un
esquema de backtracking.


Cualquier solucin del problema estar
formada por una n-tupla (x1,x2,,xn), dnde
cada xi indica la columna donde la reina de la
fila i-sima es colocada.

Las restricciones para este problema consisten
en que dos reinas no pueden colocarse en la
misma fila, ni en la misma columna ni en la misma diagonal.

Representacin del problema de la N Reinas:
Para representar el problema, se podra plantear como una matriz de NxN enteros, donde
un 1 signica que la reina est en esa posicin, y un 0 que la casilla est vaca. Resulta
una representacin ineciente, ya que se usa ms espacio del necesario.
Otra opcin es hacer uso de un vector de N enteros, donde cada posicin corresponde a
una columna del tablero, y el entero representa la la en la que se encuentra la reina dentro
de dicha columna.Ms eciente y ms sencilla de usar.
Soluciones:
Como cada posicin del vector representa una columna, no pueden situarse dos reinas en la
misma columna.Si el vector tiene varios enteros iguales, quiere decir que esas reinas estn en
la misma la, por lo que sera incorrecta la solucin.
Queda el problema de las diagonales, ya que dos reinas estn en la misma diagonal si:
Mismo valor de la - columna
(Diagonal descendente)
Mismo valor de la + columna
(Diagonal ascendente)


















Resolucin secuencial
La solucin secuencial se podra plantear como un backtracking.
La resolucin resulta poco eciente, para tamao grande del tablero dado que puede tardar
demasiado.
Ctedra de Algoritmos Genticos Ao: 2013
Universidad Tecnolgica Nacional - FRRO

Prof. Ing. Daniela E. Daz Pgina: 6

Plantear la resolucin del problema de las N Reinas. Se puede tomar como modelo el siguiente
planteo:



Ejercicio: Resolver el problema de las N Reinas utilizando la bsqueda exhaustiva con el
mtodo de backtraking.



Backtracking paralelo

Esquema usado no es puramente paralelo, es un esquema utilizado en programacin
secuencial que se intenta paralelizar. Esto supone que la ganancia de tiempo no sea tan
elevada como se pudiera esperar a priori. Se intenta distribuir el espacio de bsqueda entre los
distintos procesadores, de forma que cada uno busque la solucin del problema en un
subespacio de soluciones distinto. As se exploran varias ramas del rbol de soluciones al
mismo tiempo por distintos procesadores. Aumentan las posibilidades de encontrar la solucin
del problema en menor tiempo.









1 1
7
8
9
1
1
1
1
1
1
Soluciones
6
5
4
3
2
1

P
0
P
1












Ctedra de Algoritmos Genticos Ao: 2013
Universidad Tecnolgica Nacional - FRRO

Prof. Ing. Daniela E. Daz Pgina: 7

Un factor crtico a la hora de formular un algoritmo de backtracking en paralelo es cmo se
realizar la distribucin del espacio de bsqueda entre los distintos procesadores.
Dos alternativas:
Asignacin esttica
Asignacin dinmica
Un procesador expande el nodo raz y genera varios nodos. A cada procesador se le asigna un
nmero de estos nodos. As se divide el espacio de bsqueda global entre los distintos
procesadores. Cada procesador comienza a buscar la solucin en el espacio de bsqueda que
le corresponda, siguiendo el proceso normal de backtracking. No se necesitan comunicaciones
entre procesos.
Un problema que surge es que no se sabe a priori si se divide el espacio de bsqueda
equitativamente entre los distintos procesadores. Puede haber desequilibrio entre la carga de
trabajo de los procesadores. A un procesador puede que se le asigne poco trabajo y est la
mayor parte de tiempo inactivo.
Backtracking Paralelo: con Asignacin esttica

P
1
P
0










P
0

P
1












Cada procesador trabaja en una parte del espacio de bsqueda. Cuando un procesador
termina de trabajar, solicita ms trabajo a otro procesador que tiene ms trabajo.
El Proceso:
Cada procesador dispone una pila en su espacio local para guardar nodos no expandidos.
Cuando un procesador expande un nodo, los nuevos nodos que se crean se introducen en
la pila.
Cuando la pila de un procesador esta vaca, el procesador solicita nodos de la pila de otro
procesador.
Al principio, el espacio total de bsqueda es asignado a un procesador y a los dems
procesadores no se les asigna ningn trabajo. Ese procesador ser el encargado de distribuir
inicialmente el trabajo cuando los dems procesadores se lo soliciten. A los procesos que
envan trabajo se les denomina donadores y a los que lo solicitan y lo reciben se les denomina
receptores.
Un procesador puede estar en 2 estados:
Activo: Est realizando algn trabajo.
Inactivo: Al procesador no le queda ningn nodo por explorar en su pila y esta solicitando
trabajo a otros procesadores.

Estado inactivo:
El procesador selecciona un procesador donador y le enva una peticin de trabajo.
Si recibe trabajo del donador, se activa y comienza a trabajar.


Ctedra de Algoritmos Genticos Ao: 2013
Universidad Tecnolgica Nacional - FRRO

Prof. Ing. Daniela E. Daz Pgina: 8
Si recibe un mensaje de reject (el procesador donador esta inactivo), selecciona a otro
procesador donador para enviarle una peticin de trabajo.
Este proceso se repite hasta que el procesador recibe trabajo del donador o hasta que
todos los procesadores entran en estado inactivo.

Estado activo:
El procesador realiza una cantidad de trabajo fijo (expande un n determinado de nodos).
Cuando termina de realizar el trabajo, chequea si existen peticiones de trabajo a cargo de
los dems procesadores.
Si recibe alguna peticin de trabajo, el procesador donador particiona en dos partes su pila
de nodos, y enva una parte al procesador que realizo la peticin.
Cuando el procesador ha recorrido todo su espacio de bsqueda (su pila esta vaca), entra
en estado inactivo.





Servicio pendiente de
recibir mensajes
Procesador
Activo
Realizar una cantidad
de trabajo fija
Seleccionar un
procesador y solicitarle
trabajo
Servicio pendiente de
recibir mensajes
Comienza a
trabajar
Termina el
trabajo
Procesador
I nactivo
No existe trabajo
disponible
Enviar una peticin
Cuando un procesador encuentra la solucin, enva un mensaje de broadcast a todos los
procesadores para que estos paren la bsqueda.
Si no se recibe este mensaje, el algoritmo terminar cuando todos los procesos estn en
estado inactivo.

Los algoritmos paralelos de bsqueda en un rbol de soluciones tienen 2 caractersticas
fundamentales que determinan su rendimiento:
La estrategia utilizada para dividir el trabajo de un procesador cuando ste recibe una
peticin de trabajo.
El esquema usado para determinar el procesador donador cuando un procesador entra en
estado inactivo.

Estrategia de Divisin del trabajo
Cuando un procesador donador recibe una peticin de trabajo de otro procesador y tiene nodos
su pila, el procesador donador divide su pila en dos y una de ellas se enva al proceso que
realizo la peticin.
Si se enva poco trabajo, el receptor rpidamente pasa a estar en estado inactivo.
Si se enva demasiado trabajo, el donador entrar rpidamente en estado inactivo.
Lo ideal sera dividir la pila en dos partes iguales de modo que el espacio de bsqueda
representado por cada una sea el mismo.A este mtodo se le llama Divisin por la mitad.
Pero la dificultad reside en estimar el tamao que tendrn los subrboles asociados a cada uno
de los nodos que se encuentran en la pila.
Normalmente los nodos cercanos al fondo de la pila (nodos con profundidad cercana al nodo
raz del procesador) tienen ms posibilidades de generar rboles de mayor tamao.
Los nodos ms cercanos al tope de la pila (nodos que estn a mayor profundidad) tienen ms
posibilidades de generar rboles de menor tamao.


Ctedra de Algoritmos Genticos Ao: 2013
Universidad Tecnolgica Nacional - FRRO

Prof. Ing. Daniela E. Daz Pgina: 9
Para evitar mandar cantidades pequeas de trabajo, los nodos de la pila que estn ms all de
una determinada profundidad no son enviados. A esta profundidad se le llama cota de
profundidad.
Algunas estrategias posible para la divisin del trabajo son:
Enviar nodos cercanos al fondo de la pila
Enviar nodos cercanos a la cota de profundidad.
Enviar la mitad de los nodos que estn entre el fondo de la pila y la cota de profundidad.
La idoneidad de una estrategia u otra depender de la naturalidad del espacio de bsqueda.
















Esquemas de balanceo de carga
Los esquemas de balanceo de carga se utilizan para decidir qu procesador donador se elige
cuando un procesador entra en estado inactivo.
Algunos esquemas posibles son los siguientes:
Round Robin Asncrono
Round Robin Global
Seleccin aleatoria


Round Robin Asncrono
Cada procesador mantiene una variable local llamada target.
Cuando un procesador termina de trabajar, usa el valor de su variable target para determinar
el procesador donador al que enviar la peticin de trabajo.
Cada vez que se enva una peticin, se incrementa en una unidad el valor de la variable
target del procesador:
target = ((target+1) modulo p)
El valor inicial de target ser:
target0 = ((n procesador+1) modulo p)
Round Robin Global
Existe una nica variable target almacenada en el procesador P0.
Cuando un procesador necesita trabajo, solicita y recibe el valor de la variable target de P0.
Una vez que se sabe cual es el procesador donador, el procesador le enva una peticin de
trabajo.
Luego, P0 incrementa la variable target antes de responder a otra peticin.
target = ((target+1) modulo p)
Este esquema garantiza que sucesivas peticiones de trabajo se distribuyen uniformemente
entre todos los procesadores.
La desventaja principal de este esquema es que el procesador P0 debe gestionar todas las
peticiones de acceso a la variable target, y esto puede convertirse en un cuello de botella.
Seleccin aleatoria
Es el esquema ms simple de todos. Cuando un procesador entra en estado inactivo, se elige
un procesador al azar. Cada procesador tiene la misma probabilidad de ser seleccionado como
donador. As se asegura que las peticiones se distribuyan uniformemente.


Ctedra de Algoritmos Genticos Ao: 2013
Universidad Tecnolgica Nacional - FRRO

Prof. Ing. Daniela E. Daz Pgina: 10

Deteccin de terminacin
Cuando un procesador encuentra una solucin del problema se enva un mensaje de broadcast
a todos los procesadores para indicarle que terminen.
Pero cuando no se encuentra ninguna solucin. Cmo detectar cuando termina el proceso de
bsqueda?
Dos algoritmos para detectar la terminacin de la bsqueda.
o Algoritmo de terminacin de Dijkstras.
o Algoritmo de terminacin basado en rbol.

- Algoritmo de terminacin de Dijkstras
Los procesadores se organizan en un anillo lgico y se irn pasando un token. Un procesador
puede estar en dos estados: blanco o negro. Un token tambin puede estar en dos estados:
blanco o negro. Inicialmente todos los procesadores estn en estado blanco.
El algoritmo es el siguiente:
Cuando P0 esta inactivo, el procesador crea un token y enva un token blanco al
procesador P1.
Si el procesador Pi enva trabajo al procesador Pj (i>j), el procesador Pi cambia a estado
negro.
Si el procesador Pi tiene el token y est inactivo, pasa el token al Pi+1. Si Pi est en estado
negro, el color del token se establecer a negro antes de pasarlo a Pi+1. Si Pi esta en
estado blanco, el token se pasa sin cambiarlo.
Cuando Pi pasa el token a Pi+1 pasa a estado blanco.
El algoritmo termina cuando a P0 le llega un token blanco.

- Algoritmo de terminacin basado en rbol
Se asocia un peso a cada procesador. Inicialmente, P0 tiene todo el trabajo y se le asocia
un peso de 1.
Cuando Pi particiona y manda trabajo a otro procesador, Pi se queda con la mitad del peso
y la otra mitad se la enva al otro procesador.
Cuando un procesador termina su trabajo, se devuelve el peso al procesador del que se
recibi el trabajo.
El algoritmo termina cuando el peso del procesador P0 vuelve a ser 1.





w0=0.
5
w1=0.5



w0=0.
w1=0.5
w0=0.
w1=0.2
w2=0.2
w1=0.5
w0=0.
w2=0.2
w1=0.2
w0=0.

w1=0.2 w3=0.2
w0=0.2
w2=0.2


Ctedra de Algoritmos Genticos Ao: 2013
Universidad Tecnolgica Nacional - FRRO

Prof. Ing. Daniela E. Daz Pgina: 11











w0=0.
w1=0.5
w0=0.
w1=0.2
w2=0.2
w1=0.2
w2=0.2
w0=0.2
w3=0.2
w1=0.5
w0=0.2
w3=0.2

w0=0.
5
w1=0.5
w0=0.
5
w1=0.2
5
w2=0.2
5


w1=0.2
5
w2=0.2
5
w0=0.2
5
w3=0.2
5

w1=0.5

w0=0.2
5
w3=0.2
5
w1=0.5
w0=0.5

w1=0.5
w0=0.
w2=0.2
w1=0.2
w0=0.
w1=0.2 w3=0.2
w0=0.2
w2=0.2




w1=0.5 w3=0.2
w0=0.2 w0=0.5
w1=0.5
w0=1
Ctedra de Algoritmos Genticos Ao: 2013
Universidad Tecnolgica Nacional - FRRO

Prof. Ing. Daniela E. Daz Pgina: 12

Branch and Bound
Es una tcnica similar a Backtracking. Suele utilizarse en problemas de optimizacin. Esta
tcnica puede verse como una mejora del esquema de backtracking. Al igual que en
backtracking, el algoritmo realiza una bsqueda sistemtica en un rbol de soluciones.
Pero Branch and Bound aade dos caractersticas nuevas:
Estrategia de ramificacin: La bsqueda se guiar por estimaciones de beneficio que se
harn en cada nodo.
Estrategia de poda: Para eliminar nodos que no lleven a la solucin ptima. Estimacin de
cotas de beneficio en cada nodo.
Para cada nodo tendremos la siguiente informacin:
Cota inferior (CI) y cota superior (CS) de beneficio que se puede obtener a partir del nodo.
Determinan cuando se puede realizar una poda.
Estimacin del beneficio que se puede encontrar a partir del nodo. Ayuda a decidir el orden
de evaluacin de los nodos.

Estrategia de poda:
Suponemos un problema de maximizacin. Se han recorrido varios nodos y ha estimado la
cota inferior y superior de cada uno de ellos.


1












El nodo 2 puede podarse, ya que el nodo 5 tiene una cota inferior mayor que la cota superior
del nodo 2.













Estrategia de ramificacin
Se pueden utilizar distintas estrategias para recorrer el rbol de soluciones. Puede recorrerse
en profundidad, en anchura, segn el beneficio estimado, etc.
Se utiliza una lista de nodos vivos (contiene nodos generados y an no explorados).
Algoritmo:
Sacar un nodo de la lista de nodos vivos
Generar sus descendientes
Si no se podan, se introducen en la lista de nodos vivos.
Qu criterio se utiliza para seleccionar el nodo que se saca de la lista de nodos vivos?
Estrategia FIFO
Estrategia LIFO
Estrategia del menor costo
2 3
4
9 3
15
5
2 12 25
1
2 3
4 5
9 3
1 2 2 1
x
Ctedra de Algoritmos Genticos Ao: 2013
Universidad Tecnolgica Nacional - FRRO

Prof. Ing. Daniela E. Daz Pgina: 13



Complejidad
El tiempo de ejecucin depende:
Nmero de nodos recorridos.
Tiempo gastado en cada nodo.
En el caso promedio se suelen obtener mejoras respecto al algoritmo de backtracking.
Pero en algunos casos, el tiempo puede ser peor.
Se debe buscar un compromiso entre la exactitud de las cotas y el tiempo utilizado en
calcularlas.

En general, el esquema de branch and bound suele obtener mejores resultados que el de
backtracking. Sin embargo sigue siendo muy ineficiente.

Branch and Bound paralelo
Al igual que suceda con backtracking, no es un esquema puramente paralelo. En el proceso
secuencial, se necesita informacin global para poder hacer la poda de nodos.
Se puede paralelizar distintos tipos de niveles.
Tipos de niveles:
Bsqueda paralela: ejecutando el algoritmo con distintos parmetros sobre el espacio
global de bsqueda en varios procesadores. Clculo de cotas, de estimaciones, y
criterio selec.
Se paralelizan partes del algoritmo.
La estructura del algoritmo no cambia.
Por ejemplo, se expanden en paralelo los nodos.
Se divide el espacio de bsqueda entre los procesadores.
De la lista de nodos vivos se asignan nodos distintos a cada procesador.
La distribucin del trabajo puede ser esttica o dinmica, del mismo modo que suceda
con backtracking.

Asignacin esttica
A cada procesador se le asigna un nmero fijo de nodos de la lista de nodos vivos.
Los procesos pueden comunicarse la cotas o no.
Si no se comunican las cotas:
- Se necesitan pocas comunicaciones entre procesos.
- Puede que se estudien nodos que se podan haber podado.
Si se comunican las cotas:
- Se evita que los procesadores estudien nodos innecesarios.
- Se necesitan bastantes comunicaciones entre los procesos.
Adems, al asignar los nodos estticamente puede darse un desbalanceo de carga de trabajo
entre los procesadores.

Asignacin dinmica:
Puede utilizarse una bolsa de tareas para asignar los nodos a los procesos de forma dinmica,
como se haca con backtracking.
Pero ahora tenemos la opcin de comunicar las cotas. Los procesadores toman los nodos y los
exploran y depositan los descendientes de los nodos explorados en la bolsa de trabajo.
Existen dos estrategias para depositar los nodos: inmediata o pospuesta.
- Actualizacin inmediata
Cuando se generan los descendientes de un nodo se introducen de inmediato en la bolsa. Se
realizan muchas comunicaciones.
- Actualizacin pospuesta
Cuando se generan los descendientes de un nodo no se introducen de inmediato en la bolsa,
se sigue generado descendientes a partir de estos. Cada cierto tiempo se introducen en la
bolsa. Entre las ventajas encontramos que pueden podarse algunos nodos y no se accede
tanto a la bolsa de tareas.
Sistema de memoria compartida: se tiene una estructura centralizada de donde los
procesadores toman e introducen tareas.
Ctedra de Algoritmos Genticos Ao: 2013
Universidad Tecnolgica Nacional - FRRO

Prof. Ing. Daniela E. Daz Pgina: 14


Sistema de memoria distribuida: se tienen bolsas de trabajo en uno o en varios procesadores.
Las peticiones y el depsito de los trabajos conllevan comunicaciones. Se descentraliza la
bolsa de tareas. La actualizacin es inmediata o pospuesta.
Comunicacin de cotas:
- Si se comunican las cotas con mucha frecuencia, se podrn podar ms nodos pero puede
pederse eficiencia al realizar tantas comunicaciones.
- Si no se comunican con mucha frecuencia, no se podarn tantos nodos pero no habr
tantas comunicaciones.
Una nica bolsa de trabajos:
- Mayor contencin.
- La bolsa puede convertirse en un cuello de botella.
Varias bolsas de trabajos
- Aumenta el desbalanceo de las tareas.
Se trata de buscar un compromiso entre el desbalanceo y la contencin.




Ctedra de Algoritmos Genticos Ao: 2013
Universidad Tecnolgica Nacional - FRRO

Prof. Ing. Daniela E. Daz Pgina: 15
Algunos ejemplos:
Suma de nmeros
Dado un conjunto de numeros enteros {13, 11, 7}, encontrar si existe algn subconjunto cuya
suma sea exactamente 20.
La primera decisin a tomar: cmo es la forma del rbol?
- Preguntas relacionadas: .Qu significa cada valor de la tupla solucion (x1, ..., xn)? Cmo
es la representacin de la solucin al problema?
Posibilidad 1) rbol binario: En cada nivel i decidir si el elemento i est o no en la solucin.
Representacin de la solucin: (x1, x2, x3), donde xi= (0, 1).


Cada nodo representa un paso del algoritmo, una solucin parcial en cada momento dado. El
rbol indica un orden de ejecucin (recorrido en profundidad) pero no se almacena en ningn
lugar.
Una solucin es un nodo hoja con valor de suma 20.
Una posible mejora es que en cada nodo llevamos el valor de la suma hasta ese punto. Si el
valor es mayor que 20: retroceder al nivel anterior.

Posibilidad 2) rbol combinatorio: En cada nivel i decidir que elemento se aade (1, 2 o 3).
Representacin de la solucin (s1, ..., sm), donde m<=n y s pertenece a {1, 2, 3}.



Cada nodo es una posible solucin. Ser valida si la suma es 20.
El recorrido es tambin en profundidad. Necesitamos funciones para generar los nodos, para
descartar nodos y para saber si un nodo es solucin.
La eficiencia del algoritmo, depende del nmero de nodos, por lo que seria conveniente tener
algn criterio para eliminar nodos.


Ctedra de Algoritmos Genticos Ao: 2013
Universidad Tecnolgica Nacional - FRRO

Prof. Ing. Daniela E. Daz Pgina: 16
Tipos comunes de rboles:
rboles binarios.
rboles k-arios.
rboles permutacionales.
rboles combinatorios.

rboles binarios: s= (x1, x2, ..., xn), con xi {0, 1}














Tipo de problemas para los cuales pueden utilizarse: elegir ciertos elementos de entre un
conjunto, sin importar el orden de los elementos.

rboles k-arios: s= (x1, x2, ..., xn), con xi pertenece a {1,..,k}














Tipo de problemas para los cuales pueden utilizarse: varias opciones para cada xi.

rboles permutacionales: s= (x1, x2, ..., xn), con xi pertenece a {1,..,n} y xi xj

















Ctedra de Algoritmos Genticos Ao: 2013
Universidad Tecnolgica Nacional - FRRO

Prof. Ing. Daniela E. Daz Pgina: 17
Tipo de problemas: los xi no se pueden repetir.


rboles combinatorios: s= (x1, x2, ..., xm), con mn, xi pertenece a {1,..,n} y xi < xi+1













Tipo de problemas: los mismos que con rboles. binarios.

Cuestiones a resolver antes de programar:
Qu tipo de rbol es adecuado para el problema?
Cmo es la representacin de la solucin?
Cmo es la tupla solucin? .Qu indica cada xi y qu valores puede tomar?
Cmo generar un recorrido segn ese rbol?
- Generar un nuevo nivel.
- Generar los hermanos de un nivel.
- Retroceder en el rbol.
Qu ramas se pueden descartar por no conducir a soluciones del problema? (uso de variables
auxiliares, que se modifican al moverse por el rbol)
Poda por restricciones del problema.
Poda segn el criterio de la funcin objetivo.

Backtracking
Esquema general: Problema de satisfaccin de restricciones: buscamos cualquier solucin
que cumpla cierta propiedad, y se supone que existe alguna.

Backtracking (var s: TuplaSolucin)
nivel = 1
s = s
INICIAL
fin = false
repetir
Generar (nivel, s)
si Solucin (nivel, s) entonces
fin = true
sino si Criterio (nivel, s) entonces
nivel = nivel + 1
sino mientras NOT MasHermanos (nivel, s) hacer
Retroceder (nivel, s)
hasta fin

Variables:
s: almacena la solucin parcial hasta cierto punto.
s
INICIAL
: valor de inicializacin.
nivel: indica el nivel actual en el que se encuentra el algoritmo.
fin: valdr true cuando hayamos encontrado alguna solucin.


Ctedra de Algoritmos Genticos Ao: 2013
Universidad Tecnolgica Nacional - FRRO

Prof. Ing. Daniela E. Daz Pgina: 18


Uso de variables auxiliares para eliminacin de nodos o evitar clculos, por ejemplo, suele
ser comn utilizar variables temporales con el valor actual (beneficio, peso, etc.) de la tupla
solucin.

Funciones:
Generar (nivel, s): genera el siguiente hermano, o el primero, para el nivel actual.
Solucin (nivel, s): comprueba si la tupla (s[1], ...,
s[nivel]) es una solucion valida para el problema.
Criterio (nivel, s): comprueba si a partir de (s[1], ...,s[nivel]) se puede alcanzar una solucin
valida. En otro caso se rechazaran todos los descendientes (poda).
MasHermanos (nivel, s): devuelve true si hay mas hermanos del nodo actual que todavia no
han sido generados.
Retroceder (nivel, s): retrocede un nivel en el rbol de soluciones. Disminuye en 1 el valor de
nivel, y posiblemente tendr que actualizar la solucin actual, quitando los elementos
retrocedidos.

Backtracking: suma de nmeros
Ejemplo, problema de subconjunto de nmeros que suma un valor P.
Variables:
Representacin de la solucin con un rbol binario.
s: array [1..n] de {-1, 0, 1}
s[i] = 0 , el numero i-esimo no se utiliza
s[i] = 1 , el numero i-esimo si se utiliza
s[i] = -1 , valor de inicializacion (numero i-esimo no estudiado)
s
INICIAL
: (-1, -1, ..., -1)
fin: valdr true cuando se haya encontrado solucin.
suma: suma acumulada hasta ahora (inicialmente 0).

Funciones:
Generar (nivel, s)
s[nivel] += 1
si s[nivel]==1 entonces suma += num[nivel]
Solucin (nivel, s)
devolver (nivel==n) Y (suma==P)
Criterio (nivel, s)
devolver (nivel<n) Y (sumaP)
MasHermanos (nivel, s)
devolver s[nivel] < 1
Retroceder (nivel, s)
suma -= num[nivel]*s[nivel]
s[nivel] = -1
nivel -= 1

Ctedra de Algoritmos Genticos Ao: 2013
Universidad Tecnolgica Nacional - FRRO


Backtracking: variaciones
Variaciones del esquema general:
1) .Y si no es seguro que exista una solucin?
2) .Y si queremos almacenar todas las soluciones (no solo una)?
3) .Y si el problema es de optimizacin (maximizar o minimizar)?

Si puede no existir solucion:
Backtracking (var s: TuplaSolucin)
nivel = 1
Prof. Ing. Daniela E. Daz Pgina: 19


s = s
INICIAL

fin = false
repetir
Generar (nivel, s)
si Solucion (nivel, s) entonces
fin:= true
sino si Criterio (nivel, s) entonces
nivel = nivel + 1
sino
mientras (nivel > 0) and NOT MasHermanos (nivel, s)
hacer Retroceder (nivel, s)
finsi
hasta fin OR (nivel==0)
Para poder
generar todo el
rbol de
backtracking


Cuando queremos almacenar todas las soluciones:
Backtracking (var s: TuplaSolucin)
nivel = 1
s = s
INICIAL

O bien, retroceder
despus de encontrar
una solucin
En algunos problemas
los nodos
intermedios pueden
ser soluciones
fin = false
repetir
Generar (nivel, s)
si Solucin (nivel, s) entonces
Almacenar (nivel, s)
si Criterio (nivel, s) entonces
nivel := nivel + 1
sino
mientras (nivel>0) AND NOT MasHermanos (nivel, s)
hacer Retroceder (nivel, s)
finsi
hasta nivel==0

















|

Ctedra de Algoritmos Genticos Ao: 2013
Universidad Tecnolgica Nacional - FRRO

Prof. Ing. Daniela E. Daz Pgina: 20


Cuestiones a considerar:
- Modificar el programa nmeros.pl para que obtenga, de todos los subconjuntos que suman
la cantidad dada, el que este formado por menos elementos.
- Hacer un programa que resuelva esta versin de optimizacin del problema de la suma de
nmeros siguiendo un esquema de backtracking. Comparar experimentalmente el tiempo
de ejecucin de las dos versiones, justificando tericamente las diferencias.


Ctedra de Algoritmos Genticos Ao: 2013
Universidad Tecnolgica Nacional - FRRO

Prof. Ing. Daniela E. Daz Pgina: 21
Bsqueda Heurstica
A qu se llama Bsqueda?
La bsqueda es un mtodo computacional para resolver problemas.
Qu problemas se pueden resolver a travs de bsquedas?
single-agent path-finding: nico agente encuentra camino
two-player games: juegos de dos jugadores
constraint satisfaction: satisfaccin de restricciones
Caractersticas:
problemas difciles: NP-completos
la solucin se calcula por enumeracin
se supone que requieren inteligencia Inteligencia Artificial

Heurstica:
EUREKA !!








Origen: heuriskein (encontrar en griego)
Heurstica: procedimiento: criterio que puede resolver un problema pero que no hay garanta de
que siempre lo resuelva. Funcin: estimacin del coste necesario para alcanzar una solucin
desde el estado actual.

Los mtodos de bsqueda heurstica disponen de alguna informacin sobre la proximidad de
cada estado a un estado objetivo, lo que permite explorar en primer lugar los caminos ms
prometedores.

Son caractersticas de los mtodos heursticos:
No garantizan que se encuentre una solucin, aunque existan soluciones.
Si encuentran una solucin, no se asegura que sta tenga las mejores propiedades (que
sea de longitud mnima o de coste ptimo).
En algunas ocasiones (que, en general, no se podrn determinar a priori), encontrarn
una solucin (aceptablemente buena) en un tiempo razonable.

Para resolver una bsqueda a travs de heurstica deben evaluarse dos efectos:
positivo: ahorra esfuerzo de bsqueda
negativo: coste de clculo de la heurstica en cada nodo
Efecto neto positivo si: ahorro > coste

En general, los mtodos heursticos son preferibles a los mtodos no informados en la solucin
de problemas difciles para los que una bsqueda exhaustiva necesitara un tiempo demasiado
grande. Esto cubre prcticamente la totalidad de los problemas reales que interesan en
Inteligencia Artificial.

El concepto de heurstica es difcil de aprehender. Newell, Shaw y Simon en 1963 dieron la
siguiente definicin:

"Un proceso que puede resolver un problema dado, pero que no ofrece ninguna garanta de
que lo har, se llama una heurstica para ese problema".



Ctedra de Algoritmos Genticos Ao: 2013
Universidad Tecnolgica Nacional - FRRO

Prof. Ing. Daniela E. Daz Pgina: 22


Si nos planteamos seguir concretando como aprovechar la informacin sobre el problema en
sistemas de produccin, la siguiente idea consiste en concentrar toda la informacin heurstica
en una nica funcin que se denomina funcin de evaluacin heurstica.
Se trata de una funcin que asocia a cada estado del espacio de estados una cierta cantidad
numrica que evala de algn modo lo prometedor que es ese estado para acceder a un
estado objetivo. Habitualmente, se denota esa funcin por h(e).

La funcin heurstica puede tener dos interpretaciones. Por una parte, la funcin puede ser una
estimacin de lo prximo que se encuentra el estado de un estado objetivo.
Bajo esta perspectiva, los estados de menor valor heurstico son los preferidos. Pero en otros
casos puede suceder que lo que convenga sea maximizar esa funcin.

Ejemplos de heursticas para algunos problemas concretos.
Para el problema del 8-puzzle tenemos la siguientes heursticas:
a) La basada en la distancia Manhattan (o distancia taxi). Se asocia a cada casilla un nmero
que es la suma de las distancias horizontal y vertical a su posicin en el tablero objetivo (esto
es, la suma de diferencias de sus coordenadas x e y). La funcin heurstica es la suma de las
distancias de cada una de las casillas (excluyendo la que se encuentra vaca).
2 3
1 8 4
7 6 5
H(Ei)=2 (1 de la casilla 1 ms 1 de la casilla 8)

b) Otra heurstica, mucho ms simple, consiste en contar el nmero de casillas que estn fuera
de su sitio (respecto al tablero objetivo). Es una heurstica ms pobre que la anterior, puesto
que no usa la informacin relativa al esfuerzo (nmero de movimientos) necesario para llevar
una pieza a su lugar.


Otra heurstica posible para el 8-puzzle, si el estado objetivo es el recogido en la figura anterior,
es la siguiente: h(e) = 3 * seq(e), donde seq(e) cuenta 1 si hay un dgito central en e y 2 por
cada dgito x no central que no es seguido (en el sentido de la agujas del reloj) por su sucesor
x+1 (imponemos por convenio que 8 + 1 = 1).
Podra realizarse el clculo del valor de esta heurstica para los estados que aparecen en la
figura anterior.


El problema del viajante:
Estado inicial: un viajante se encuentra en una capital de provincia.
Estado meta: quiere viajar a otra capital por la mejor ruta posible (la ms corta)

Medios: Las capitales de provincia colindantes estn unidas por carreteras; se dispone de un
mapa con la disposicin de las provincias y sus "coordenadas" en kilmetros respecto al
"centro" (por ejemplo, Madrid, con coordenadas (0,0)).
Una funcin heurstica para ese problema consiste en asignar a cada estado un valor que es la
distancia area (en lnea recta) con el estado objetivo. Dicha distancia es la distancia eucldea
entre las coordenadas de dos ciudades.

Se elige una ciudad como siguiente en el camino cuando la suma de la distancia a la ciudad
actual ms la distancia area a la meta sea la menor

Ctedra de Algoritmos Genticos Ao: 2013
Universidad Tecnolgica Nacional - FRRO

Prof. Ing. Daniela E. Daz Pgina: 23
Una persona quiere viajar de Madrid a Santander considerando el mapa de carreteras de la
figura.















Cuatro alternativas en la primera etapa: Cceres, Palencia, Zaragoza y Valencia.

Funcin heurstica considerando la distancia area:
Distancia (Madrid, Santander)=Distancia(Madrid, Palencia)+Distancia area (Palencia,
Santander)
que es ms pequea que la obtenida a travs de Cceres
Distancia (Madrid, Santander)=Distancia(Madrid, Cceres)+Distancia area (Cceres,
Santander)

Funcin heurstica considerando distancias parciales:
Distancia (Madrid, Santander)=Distancia(Madrid, Palencia)+Distancia (Palencia, Santander)


El problema del viajante (tambin conocido como problema del viajante de comercio o por sus
siglas en ingls: TSP (Traveling Salesman Problem), es uno de los problemas ms famosos (y
quizs el mejor estudiado) en el campo de la optimizacin combinatoria computacional.
A pesar de la aparente sencillez de su planteamiento, el TSP es uno de los ms complejos de
resolver y existen demostraciones que equiparan la complejidad de su solucin a la de otros
problemas aparentemente mucho ms complejos que han retado a los matemticos desde
hace siglos.


DEFINICIN: Sean N ciudades de un territorio. La distancia entre cada ciudad viene
dada por la matriz D: NxN, donde d[x,y] representa la distancia que hay entre la ciudad
X y la ciudad Y. El objetivo es encontrar una ruta que, comenzando y terminando en una
ciudad concreta, pase una sola vez por cada una de las ciudades y minimice la distancia
recorrida por el viajante.
Es decir, encontrar una permutacin


P = {c,c1,...,c}
0n 1
tal que sea mnimo.

El TSP est entre los problemas denominados NP-Completos, esto es, los problemas que no
se pueden resolverse en tiempo polinomial en funcin del tamao de la entrada (en este caso
el nmero N de ciudades que el viajante debe recorrer).
Sin embargo, algunos casos concretos del problema s han sido resueltos hasta su
optimizacin, lo que le convierte en un excelente banco de pruebas para algoritmos de


Ctedra de Algoritmos Genticos Ao: 2013
Universidad Tecnolgica Nacional - FRRO

Prof. Ing. Daniela E. Daz Pgina: 24
optimizacin que pertenezcan a la misma familia (lo que en jerga matemtica se denominan
problemas isomorfos).
La solucin ms directa es la que aplica la fuerza bruta: evaluar todas las posibles
permutaciones y quedarse con la mejor.
No obstante, el nmero de posibles ciclos viene dado por el factorial del nmero de ciudades
(N!) y esto hace que la solucin por fuerza bruta sea impracticable para valores de N incluso
moderados.
Por ejemplo, si un ordenador fuese capaz de calcular la longitud de cada ciclo en un
microsegundo, tardara algo ms de 3 segundos en resolver el problema para 10 ciudades,
algo ms de medio minuto en resolver el problema para 11 ciudades y. 77.146 aos en resolver
el problema para slo 20 ciudades.
Se puede demostrar que el requerimiento de volver a la ciudad de partida no cambia la
complejidad computacional del problema.
Dada la explosin combinatoria de las posibles soluciones, los algoritmos clsicos no son
capaces de resolver el problema general. Por ello, a su solucin se han aplicado distintas
tcnicas computacionales: heursticas, redes de Hopfield, etc. Sin embargo, desde el punto de
vista terico, estas aproximaciones no suponen una resolucin real del TSP y slo ofrecen
soluciones aproximadas suficientemente aceptables.

Hay algoritmos que se basan en una configuracin concreta del problema. Por ejemplo,
algunos algoritmos de ramificacin y consolidacin se pueden utilizar para resolver problemas
de entre 40 a 60 ciudades.
Otros han mejorado a stos con tcnicas reminiscentes de la programacin lineal que permiten
resolver el TSP para valores de N entre 120 y 200 ciudades.
En el ao 2001 se utiliz una red de 110 ordenadores para resolver el TSP para las 15.112
poblaciones de Alemania y utilizando el equivalente computacional a 22,5 aos de un PC.
En mayo del 2004 se aplicaron algunas de estas tcnicas para la resolucin del problema
aplicado a las 24.978 poblaciones suecas en un ciclo de unos 72.500 Km (probndose adems
que no se poda encontrar un ciclo ms corto).
Los algoritmos genticos basados en heursticas no encuentran soluciones exactas, pero
permiten encontrar aproximaciones suficientemente buenas (un 97% de optimizacin) y se
pueden aplicar a conjuntos de ciudades muy grandes (redes con millones de nodos) con
tiempos de ejecucin razonables en un superordenador (semanas o meses).






Ctedra de Algoritmos Genticos Ao: 2013
Universidad Tecnolgica Nacional - FRRO

Prof. Ing. Daniela E. Daz Pgina: 25
El problema tiene considerables aplicaciones prcticas, a parte de las ms evidentes en reas
de logstica de transporte. Por ejemplo, en robtica, permite resolver problemas de fabricacin
para minimizar el nmero de desplazamientos para conseguir realizar un nmero determinado
de perforaciones en una plancha o en un circuito impreso.

Ejercicio: Hallar la ruta de distancia mnima que logre unir todas las capitales de provincias de
la Repblica Argentina, utilizando un mtodo exhaustivo. Puede resolver el problema?
Justificar.

Ejercicio: Hallar la ruta de distancia mnima que logre unir todas las capitales de provincias de
la Repblica Argentina, utilizando la siguiente heurstica: Desde cada ciudad ir a la ciudad ms
cercana no visitada. Presentar un mapa de la Repblica con el recorrido indicado. Adems
indicar la ciudad de partida y la longitud del trayecto.

Ejercicio: Hallar la ruta de distancia mnima que logre unir todas las capitales de provincias de
la Repblica Argentina, utilizando un algoritmo gentico. Comparar los resultados obtenidos
con los del ejercicio anterior.
Recomendaciones para el algoritmo:
N = 50 Nmero de cromosomas de las poblaciones.
M = 200 Cantidad de ciclos.
Cromosomas: permutaciones de 23 nmeros naturales del 1 al 23 donde cada
gen es una ciudad.
Las frecuencias de crossover y de mutacin quedan a criterio del grupo.

Bsqueda informada: primero el mejor
Funcin f(n): coste del nodo n
Lista OPEN: nodos generados pero no testeados
Primero el mejor: siguiente n con min f(x) x OPEN
Rendimiento: mucho mejor que la bsqueda ciega


Algoritmo A*
Heurstica: h(n) estima el coste de un camino ptimo de n a una solucin.
g(n): es una medida del coste para ir desde el estado inicial hasta el nodo actual (suma de los
costes o valores heursticos de todos los nodos). Es decir es el coste desde la raz hasta n.
h(n) : admisible: si no sobreestima el coste ptimo. Es una estimacin del coste adicional
necesario para alcanzar un nodo objetivo a partir del nodo actual, es decir, es una estimacin
de lo que me queda por recorrer hasta la meta.
A*: primero el mejor con f(n) = g(n) + h(n), h admisible


La funcin combinada f es una estimacin del coste
necesario para alcanzar un estado objetivo por el camino
que se ha seguido para generar el nodo actual (si se
puede generar por varios caminos el algoritmo se queda
con el mejor).
Los nodos buenos deben poseer valores bajos.

En cada paso se selecciona el nodo ms prometedor que se haya generado hasta ese
momento (funcin heurstica).
A continuacin se expande el nodo elegido generando todos sus sucesores.
Si alguna de ellos es meta el proceso acaba. Si no contino con el algoritmo.

Es parecido a la bsqueda en profundidad, pero si en una rama por la que estoy explorando no
aparece la solucin la rama puede parecer menos prometedora que otras por encima de ella y
que se haban ignorado. Podemos pues abandonar la rama anterior y explorar la nueva.
Sin embargo la vieja rama no se olvida. Su ltimo nodo se almacena en el conjunto de nodos
generados pero an sin expandir.

Ctedra de Algoritmos Genticos Ao: 2013
Universidad Tecnolgica Nacional - FRRO

Prof. Ing. Daniela E. Daz Pgina: 26



Usaremos para la resolucin dos listas de nodos (ABIERTA Y CERRADA)
Abierta: nodos que se han generado y a los que se les ha aplicado la funcin heurstica, pero
que an no han sido examinados (es decir, no se han generado sus sucesores)
Es decir, es una cola con prioridad en la que los elementos con mayor prioridad son aquellos
que tienen un valor ms prometedor de la funcin heurstica.
Cerrada: nodos que ya se han examinado. Es necesaria para ver si cuando se genera un
nuevo nodo ya ha sido generado con anterioridad.
Algoritmo:
1. Empezar con ABIERTA conteniendo slo el nodo inicial. Poner el valor g de ese nodo a 0, su
valor h al que corresponda, y su valor f a h+0, es decir, a h.
2. Inicializar CERRADA como una lista vaca.
3. Hasta que se encuentre una meta o se devuelva fallo realizar las siguientes acciones:
3.1 Si ABIERTA est vaca terminar con fallo; en caso contrario continuar.
3.2 Eliminar el nodo de ABIERTA que tenga un valor mnimo de f; llamar a este nodo m
e introducirlo en la lista cerrada.
3.3 Si m es meta, abandonar el proceso iterativo iniciado en 2 devolviendo el camino
recorrido (punteros a sus antepasados)
3.4 En caso contrario expandir m generando todos sus sucesores.
3.5 Para cada sucesor n de m:
1) Crear un puntero de n a m.
2) Calcular g(n)=g(m)+c(m,n), tal que c(a,b) es el coste de pasar de a a b.
3) Si n est en ABIERTA llamar n al nodo encontrado en dicha lista, aadirlo a los
sucesores de m y realizar el siguiente paso:
3.1)Si g(n)<g(n), entonces redirigir el puntero de n a m y cambiar el camino de menor
coste encontrado a n desde la raz;
g(n)=g(n) y f(n)=g(n)+h(n).
4) Si n no cumple 3), comprobar si est en cerrada; llamar n al nodo encontrado en dicha lista
y realizar las siguientes acciones:
Si 3.1) no se cumple, abandonar 4); en caso contrario propagar el nuevo menor coste
g(n) (por lo que tambin actualizarn los valores de f correspondientes(que llamaremos
ni tal que i=1,2,, siendo sus costes anteriores g(ni )), realizando un recorrido en
profundidad de stos, empezando en n y teniendo en cuenta las siguientes
consideraciones:
4.1) Para los nodos descendientes ni cuyo puntero (que debe apuntar siempre al mejor
predecesor hasta ese momento) conduzca hacia el nodo ni , actualizar g(ni )=g(ni) y
f(ni)=g(ni)+h(ni) y seguir el recorrido hasta que se encuentre un ni que no tenga ms
sucesores calculados o se llegue a un nodo en que ya ocurra que g(ni )=g(ni ), en cuyo
caso se habra producido un ciclo y tambin habra que terminar la propagacin.
4.2) Para los nodos descendientes ni cuyo puntero no conduzca hacia el nodo n,
comprobar si g(ni )< g(ni ), en cuyo caso se debe actualizar el puntero para que
conduzca hacia el nodo n (mejor camino desde la raz encontrado hasta ese momento)
y se contina el proceso de propagacin.
5) Si nno est en ABIERTA o en CERRADA, calcular h(n) y f(n)=g(n)+h(n), introducirlo en
ABIERTA y aadirlo a la lista de sucesores de m.

Caractersticas:
Es un mtodo completo de bsqueda, es decir, termina encontrando la solucin cuando
sta exista para cualquier tipo de grafos.
Es admisible. Es decir, no slo encuentra la solucin sino que la que encuentra es la
optima si se cumple la siguiente condicin:
Para todo n h(n) es menor o igual que h*(n), es decir, si la funcin heurstica que estima
la distancia a la meta nunca puede superar la distancia real existente entonces A* garantiza
encontrar la solucin ptima.
Ventajas:
Mtodo ms completo
Solucin ptima
Desventaja:
El espacio: a menudo degenera en exponencial
Ctedra de Algoritmos Genticos Ao: 2013
Universidad Tecnolgica Nacional - FRRO

Prof. Ing. Daniela E. Daz Pgina: 27


























Bsqueda con discrepancias
rbol de bsqueda + heurstica: ordena los sucesores, izquierda. preferido a derecha

Discrepancia: ir en contra de la heurstica.
IDEA1: si la heurstica casi siempre acierta, la
solucin estar en una rama con pocas
discrepancias.
IDEA2: recorrer el rbol por orden creciente de discrepancias









Juegos
Con dos jugadores, informacin perfecta.
Programas campeones del mundo: damas, othello
Programa con muy buen rendimiento: ajedrez
Se le da importante: desde 1956, el ajedrez era un objetivo para IA.
Deep Blue gano a Kasparov en 1997
quantity had become quality La cantidad se haba convertido en la calidad


Ctedra de Algoritmos Genticos Ao: 2013
Universidad Tecnolgica Nacional - FRRO

Prof. Ing. Daniela E. Daz Pgina: 28

Estrategia: bsqueda en un espacio de billones de nodos, profundizacin selectiva.


























































Ctedra de Algoritmos Genticos Ao: 2013
Universidad Tecnolgica Nacional - FRRO

Prof. Ing. Daniela E. Daz Pgina: 29


En sntesis:
Bsqueda: es un mtodo computacional para resolver problemas
Qu problemas podemos resolver? Resolucin por enumeracin

Espacio de estados, operadores, inicial, objetivo
Bsqueda ciega
Heurstica: funcin que estima el coste al objetivo
Bsqueda informada, A*
Bsqueda en memoria acotada
Bsqueda con discrepancias
Bsqueda para juegos
Bsqueda en tiempo real
Ctedra de Algoritmos Genticos Ao: 2013
Universidad Tecnolgica Nacional - FRRO

Prof. Ing. Daniela E. Daz Pgina: 30


Indice

Buscando el ptimo: ..................................................................................... 1
Restriccin de Deriva Gentica ....................................................................... 1
Entornos ..................................................................................................... 2
Algoritmos de Bsqueda................................................................................ 2
Definicin de la palabra Bsqueda: ................................................................. 2
Mtodo exhaustivo ....................................................................................... 2
Bsqueda Exhaustiva:................................................................................... 3
Backtracking................................................................................................ 4
Problema N-Reinas ....................................................................................... 5
Resolucin secuencial.................................................................................... 5
Backtracking paralelo.................................................................................... 6
Backtracking Paralelo: con Asignacin esttica.................................................. 7
Estrategia de Divisin del trabajo.................................................................... 8
Esquemas de balanceo de carga ..................................................................... 9
Deteccin de terminacin ............................................................................ 10
Algunos ejemplos ....................................................................................... 15
Tipos comunes de rboles............................................................................ 16
Cuestiones a resolver antes de programar ..................................................... 17
Bsqueda Heurstica ................................................................................... 21
El problema del viajante:............................................................................. 22


Ctedra de Algoritmos Genticos Ao: 2013
Universidad Tecnolgica Nacional - FRRO

Prof. Ing. Daniela E. Daz Pgina: 31


Bibliografa:

http://definicion.de/busqueda/

http://www.wordreference.com/definicion/b%C3%BAsqueda

Introduccin a la Programacin Paralela:
http://es.wikipedia.org/wiki/Problema_de_las_ocho_reinas

http://euitio178.ccu.uniovi.es/wiki/index.php/TP:n_reinas_-

Backtracking
http://www.lcc.uma.es/~av/Libro/CAP7.pdf

http://itaim.vtrbandaancha.net/paper/nreinas3.pdf

http://www.nebrija.es/~cmalagon/ia/transparencias/busqueda_heuristica.pdf (por el Prof.
Constantino Malagn)

Artculo realizado por Pedro Meseguer

Você também pode gostar