Você está na página 1de 7

ALGORITMOS DE BSQUEDA EN PROFUNDIDAD Y EN ANCHURA

AUTOR: Samuel Gutirrez Revenga TUTORA: Gloria Snchez Torrubia

Introduccin a la teora de grafos Bsqueda en Profundidad (BEP) Bsqueda en Anchura (BEA) Instrucciones para el uso del applet Applet para la ejecucin de los algoritmos

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 v1, a1, v2, a2, ... , aj-1, vj tal que vi y vi+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 v1, a1, v2, , a2, ... , aj-1, vj en G tal que x = v1 e y = vj. 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 = V1 V2 ... Vr la particin de V correspondiente a la relacin de accesibilidad ~. Sea Ai (1 i r) el subconjunto de A formado por las aristas cuyos extremos estn ambos en Vi. Los grafos Gi = (Vi , Ai) 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. 2. 3. 4. Se introduce el vrtice inicial en P y se elimina del conjunto V. Mientras V no sea vaco repetir los puntos 3 y 4. En otro caso parar. Se toma el ltimo elemento de P como vrtice activo. 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.
[ inicio ]

INSTRUCCIONES DE USO DEL APPLET El proceso consta de dos fases, en la primera de ellas hay que construir el grafo al que queremos aplicar el algoritmo, una vez que se ha construido el grafo se pasa a la segunda fase que es la de resolucin del algoritmo.

CONSTRUCCIN DEL GRAFO: Para construir el grafo hay que comenzar dibujando el vrtice inicial (vrtice con ndice 1), una vez que se ha finalizado la construccin del grafo se puede pasar a la fase de resolucin del algoritmo seleccionando el algoritmo que se quiere aplicar al grafo dibujando

("BProfundidad" o "BAnchura"), y presionando el botn "Resolver algoritmo". Si se ha construido un grafo correcto, es decir conexo, se pasa a la fase de resolucin del algoritmo en otro caso se permanece en la fase de construccin para poder modificar el grafo y convertirlo en un grafo correcto. - Crear vrtice: Estando seleccionada la opcin "Dibujar nodo" en la lista, posicionarse sobre la zona del rea de dibujo en la que se quiere dibujar el vrtice y presionar el botn del ratn. - Crear arcos: Estando seleccionada la opcin "Dibujar arco" en la lista, posicionarse sobre el vrtice origen del arco y pulsar el botn del ratn, sin soltar el botn arrastrar el ratn hasta posicionarse sobre el vrtice destino del arco y soltar el botn del ratn. - Mover vrtices: Estando seleccionada la opcin "Dibujar nodo" en la lista, presionar el botn del ratn sobre el vrtice que se quiere mover, sin soltar el botn arrastrar el ratn despacio hasta la posicin deseada y soltar el botn del ratn. - Borrar elementos: Presionando el botn "Borrar ltimo" se elimina el ltimo elemento dibujado en el grafo. Tambin es posible borrar todo el grafo y comenzar la construccin de uno nuevo presionando el botn "Nuevo grafo".

RESOLUCIN DEL ALGORITMO:

Comenzando por el vrtice inicial (vrtice con ndice 1), presionar sobre los vrtice en el orden en el que aparecen en la solucin del algoritmo seleccionado. Si el vrtice seleccionado no es el siguiente en la solucin del algoritmo aparecer un mensaje de error en otro caso seleccionar el vrtice siguiente. Durante la fase de resolucin del algoritmo se irn marcando en color verde los vrtice pertenecientes a la solucin y en color azul los arcos pertenecientes a la solucin, adems el vrtice activo de la solucin se marcar en color azul claro. - Volver a la fase de construccin: En cualquier momento del desarrollo de la fase de resolucin del algoritmo se puede volver a la fase de construccin del grafo presionando el botn "Modo dibujo". De esta manera se puede construir otro grafo partiendo del grafo actual.

- Reiniciar la resolucin: En cualquier momento del desarrollo de la fase de resolucin del algoritmo se puede reiniciar la resolucin desde el principio presionando el botn "Resolver algoritmo". Tambin se puede aplicar otro tipo de algoritmo al mismo grafo seleccionando previamente "BProfundidad" o "BAnchura". - Crear un nuevo grafo: Una vez que se ha terminado con xito la resolucin del algoritmo se puede regresar a la fase de construccin del grafo pulsando el botn "Nuevo grafo". De esta forma se comienza la construccin de un nuevo grafo para posteriormente ser resuelto por alguno de los algoritmos mencionados.

Você também pode gostar