Está en la página 1de 10

Algoritmos de bsqueda en grafos

Los algoritmos de bsqueda en grafos nacen por la necesidad de crear un mecanismo de navegacin
autnoma, bien sea de robots, coches, o personajes en un videojuego. Algunos de los mas conocidos
son A*, LPA*, o D*.

Contenido
[ocultar]
1
Descripci
n
2
Notacin
3 Ejemplo
de
algoritmo
simple
3.
1
Ps
eu
do
c
di
go
de
b
sq
ue
da
3.
2
Ex
pli
ca
ci
n
del
alg
ori
tm
o
3.
3
Ef
ect
ivi
da
d
4
Referenci
as
[editar] Descripcin
Un grafo, representa un conjunto de nodos unidos en una red. Si dos nodos estn unidos, al viajar de
uno a otro se considerara sucesor el nodo al que nos movemos, y predecesor el nodo del que venimos.
Adems, normalmente existir un coste vinculado al desplazamiento entre nodos. Un algoritmo de
bsqueda tratar, de encontrar un camino optimo entre dos nodos como por ejemplo un camino que
minimice el coste de desplazamiento, o el numero de pasos a realizar. La principal diferencia entre los
algoritmos es la informacin que guardan a cerca del grafo. Algunos de ellos no guardan informacin
alguna, simplemente expanden la bsqueda desde el nodo inicial, hasta que se llega al nodo final, otros
guardan el coste de viajar desde el origen hasta ese nodo, o incluso una estimacin de lo prometedor
que es un nodo para conducir el camino a su objetivo. La expansin de la bsqueda se realiza en forma
de rbol. Partiendo del nodo inicial, se extender la bsqueda a sus nodos vecinos, de cada uno de estos
nodos vecinos, a sus respectivos nodos vecinos, y as hasta que uno de los nodos a los que se expande
la bsqueda es el nodo objetivo. En esta pgina se desarrollar un algoritmo de bsqueda lo
suficientemente general para trabajar en la mayora de los grafos, y que da paso a otros mtodos de
bsqueda ms complejos.
[editar] Notacin
El algoritmo consta de dos listas, Abierta, y Cerrada. En la lista Abierta se guardan los nodos que aun
no se han expandido para la bsqueda, que en otras palabras, serian las hojas de un rbol. En la lista
Cerrada, se guardan los nodos que ya se han procesado y expandido, estos nodos se guardan porque la
expansin de la bsqueda podra intentar volver a pasar por uno de esos nodos y de estar almacenados,
se tiene constancia de los nodos que ya se han procesado. Adems, cada nodo, almacenar informacin
a cerca de quien es su nodo predecesor.
[editar] Ejemplo de algoritmo simple
[editar] Pseudocdigo de bsqueda


















[editar] Explicacin del algoritmo
Primero se crean dos listas que almacenarn nodos, la lista Abiertos, que contiene los nodos que se
tienen que expandir, y la lista Cerrados que contiene los que ya han sido expandidos. El nodo de origen,
llamado O en este caso, se mete en la lista de Abiertos para ser expandido. En este punto, se inicia la
propagacin de la busqueda, se crea un bucle que acabar en dos posibles ocasiones: Cuando la lista
Abiertos este vaca, o cuando se encuentre el nodo destino. El bucle consiste en varios pasos: Primero
se obtiene el primer nodo de la lista Abiertos. El nodo a coger el arbitrario, en otros algoritmos se
cogera un nodo que cumpliera ciertas propiedades, pero no es lo que se busca aqu. Si esta lista esta
vaca, quiere decir que no quedan mas candidatos para la expansin, y aun asi no se encontr el
destino, el algoritmo ha fallado. Por otra parte, si el nodo que cojimos de la lista Abiertos es el destino,
el algoritmo habr acabado, ya que hemos encontrado el destino. El camino entre el origen y el destino
es un conjunto de nodos que se obtendrn guardando cada predecesor del nodo destino. En otro caso, se
seguira expandiendo la lista, obteniendo una lista de sucesores del nodo actual, y guardando en la lista
Abiertos, aquellos nodos que no estuvieran antes en una lista, o con otras palabras, aquellos nodos a los
que aun no se haba llegado. De esta forma, el algoritmo acabar encontrando el destino, o recorriendo
todo el mapa.
[editar] Efectividad

Nota: La animacin tiene un fallo, ya que el camino debera de haber empezado en direccin norte en
vez de en direccin oeste. Esto ha pasado porque no se meti el cuadro destino en la lista abierta en el
momento oportuno (se metio dos turnos mas tarde). El algoritmo trata de llegar desde el cuadro verde
(el origen), hasta el cuadro rojo (el destino). La zona negra es un nodo por el que no puede pasar.
Siguiendo el algoritmo, el nodo inicial se ira expandiendo, pasando a estar el nodo actual en la lista
Cerrados (color violeta) y metiendo otros nodos en la lista de Abiertos (color azul). Adems cada nodo
almacenar quien es su predecesor, que est simbolizado con las muescas en los bordes de los
cuadrados. Una vez que la expansin alcanza el nodo destino, se genera un camino siguiendo la cadena
de predecesores.
Como se aprecia, la expansin se realiza sin orientacin alguna, a lo largo y ancho del espacio. Esto
aumentar considerablemente el tiempo de computacin, ya que se procesan muchos mas nodos que si
la expansin estuviera orientada en la direccin del destino. Otro factor a tener en cuenta es que a pesar
de haber alcanzado el nodo destino, el algoritmo no finaliza hasta que lo procesa, o en otras palabras,
hasta que pasa a ser el primer nodo de la lista Abiertos. Estas dos taras, estn relacionadas con la
prioridad de busqueda, y en algoritmos ms avanzados se corrige mediante el uso de estimadores
heursticos como la distancia manhattan, o la distancia eucldea. Usando estos estimadores el algoritmo
procesar primero los nodos de la lista abierta que tengan una menor distancia al origen, evitando as
expansiones innecesarias.
Otra desventaja importante del algoritmo, es que no tiene capacidad para resolver cambios inesperados
en el mapa. Una vez calculada la ruta, si un obstaculo se interpone en el camino obtenido no se har
absolutamente nada por evitarlo. Esto se resuelve en algoritmos como D*, que si tienen en cuenta estas
variaciones.

TEORA DE GRAFOS
Para la comprensin y resolucin de los algoritmos de Bsqueda en Profundidad y
Bsqueda en Anchura es necesario el conocimiento de una serie de conceptos bsicos de la
teora de grafos que se explican a continuacin:

GRAFO: Un grafo G es un par (V, A) donde V es un conjunto finito y no vaco,
cuyos elementos reciben el nombre de vrtices, y A es un conjunto de arcos
representados por pares no ordenados de elementos de V.
Un ejemplo de grafo sera G = ( V, A ) dado por los conjuntos: V = {1, 2, 3, 4, 5,
6} y A = { {1,4}, {1,5}, {1,6}, {2,4}, {2,6}, {3,5}, {4,5} }, y cuya representacin grfica
se refleja en la figura 1.


CAMINO: Un camino en un grafo G es una sucesin de vrtices y arcos v
1
, a
1
, v
2
,
a
2
, ... , a
j-1
, v
j
tal que v
i
y v
i+1
son los extremos de ai (1 i j-1). Sea G un
grafo, un camino simple en G es un camino en el que todos los vrtices son
distintos.

As pues, un camino especifica una ruta en G que va de un vrtice a otro
adyacente, y as sucesivamente. Un camino puede visitar un vrtice varias
veces, y en particular puede cambiar de direccin yendo de x a y e
inmediatamente de vuelta a x. En un camino simple, cada vrtice se visita una
vez como mximo.
Se escribe x ~ y, y se dice que x es accesible desde y, si los vrtices de x e
y de G pueden unirse por un camino en G: hablando con precisin, esto
significa que existe un camino v
1
, a
1
, v
2
, , a
2
, ... , a
j-1
, v
j
en G tal que x = v
1

e y = v
j
. Es sencillo comprobar que ~ es una relacin de equivalencia en el
conjunto de vrtices V de G, con lo que V queda dividido en clases de
equivalencia. Dos vrtices estn en la misma clase si pueden unirse por un
camino y en clases distintas en caso contrario.

COMPONENTE CONEXA: Sea G = (V, A) un grafo y V = V
1
V
2
... V
r
la
particin de V correspondiente a la relacin de accesibilidad ~. Sea A
i
(1 i r) el
subconjunto de A formado por las aristas cuyos extremos estn ambos en V
i
. Los
grafos G
i
= (V
i
, A
i
) se conocen como las componentes conexas de G.

GRAFO CONEXO: Un grafo G es conexo si tiene una nica componente conexa.
Corolario: Un grafo g es conexo si, y solo si para todo par de vrtices u y v de G existe un
camino en G que conecta u y v. Un ejemplo de grafo no conexo aparece en la figura 2.




[ inicio ]



BSQUEDA EN PROFUNDIDAD (BEP)
Se comienza en el vrtice inicial (vrtice con ndice 1) que se marca como vrtice
activo. Hasta que todos los vrtices hayan sido visitados, en cada paso se avanza al vecino
con el menor ndice siempre que se pueda, pasando este a ser el vrtice activo. Cuando
todos los vecinos al vrtice activo hayan sido visitados, se retrocede al vrtice X desde el
que se alcanz el vrtice activo y se prosigue siendo ahora X el vrtice activo.
ALGORITMO BEP:
Sea G = (V, A) un grafo conexo, V = V un conjunto de vrtice, Aun vector de arcos
inicialmente vaco y P un vector auxiliar inicialmente vaco:
1. Se introduce el vrtice inicial en P y se elimina del conjunto V.
2. Mientras V no sea vaco repetir los puntos 3 y 4. En otro caso parar.
3. Se toma el ltimo elemento de P como vrtice activo.
4. Si el vrtice activo tiene algn vrtice adyacente que se encuentre en V:
Se toma el de menor ndice.
Se inserta en P como ltimo elemento.
Se elimina de V.
Se inserta en A el arco que le une con el vrtice activo.
Si el vrtice activo no tiene adyacentes se elimina de P.


[ inicio ]



BSQUEDA ANCHURA (BEA)
Se comienza en el vrtice inicial (vrtice con ndice 1) y se marca como vrtice activo,
a diferencia con la BEP ahora se visitan en orden creciente de ndice todos los vecinos del
vrtice activo antes de pasar al siguiente. Hasta que todos los vrtices hayan sido visitados,
en cada paso se van visitando en orden creciente de ndice todos los vecinos del vrtice
activo. Cuando se han visitado todos los vecinos del vrtice activo, se toma como nuevo
vrtice activo el primer vrtice X visitado despus del actual vrtice activo en el desarrollo
del algoritmo.
ALGORITMO BEA:
Sea G = (V, A) un grafo conexo, V = V un conjunto de vrtices, A un vector de arcos
inicialmente vaco y P un vector auxiliar inicialmente vaco:
1. Se introduce el vrtice inicial en P y se elimina del conjunto.
2. Mientras V no sea vaco repetir los puntos 3 y 4. En otro caso parar.
3. Se toma el primer elemento de P como vrtice activo.
4. Si el vrtice activo tiene algn vrtice adyacente que se encuentre en V:
Se toma el de menor ndice.
Se inserta en P como ltimo elemento.
Se elimina de V.
Se inserta en A el arco que le une con el vrtice activo.
Si el vrtice activo no tiene adyacentes se elimina de P.

También podría gustarte