Sei sulla pagina 1di 4

Algoritmos Computacionales 2CM31 Equipo.

En general la bsqueda en anchura comenzando de un nodo de partida A es la siguiente: Primero examinamos el nodo de partida A. Luego examinamos todos los vecinos de A. Luego examinamos todos los vecinos de los vecinos de A y as sucesivamente. Con el uso de una cola, garantizamos que ningn nodo sea procesado ms de una vez y usando un campo ESTADO que nos indica el estado actual de los nodos. Algoritmo para la bsqueda en anchura:

Este algoritmo realiza la bsqueda en anchura en un grafo G comenzando en un nodo de partida A. 1.- Inicializar todos los nodos al estado de preparados (ESTADO=1). 2.- Poner el nodo de partida A en la COLA y cambiar su estado a espera (ESTADO=2). 3.- Quitar el nodo del principio de la cola, N. Procesar N y cambiar su preparados (ESTADO=1) y cambiar su estado al de espera (ESTADO=2). [ fin del bucle del paso 3 ] 4.- Aadir a COLA todos los vecinos de N que estn en estado de 5.- Salir. Fuentes de informacin. Algoritmos en C++. Joyanes Aguilar, Luis McGraw Hill

http://rua.ua.es/dspace/bitstream/10045/16037/12/ped-09_10-tema5.pdf

Equipo. 7 Cuellar Espndola Ivn.

Cruz Domnguez Cristina. Meza Gallegos Guillermo.

Algoritmos Computacionales 2CM31 Equipo. 7

GRAFOS
Concepto. Un grafo es un conjunto de puntos (vrtices) en el espacio, que estn conectados por un conjunto de lneas (aristas). Dos vrtices son adyacentes si comparten la misma arista. Los extremos de una arista son los vrtices que comparte dicha arista. Un grafo se dice que es finito si su nmero de vrtices es finito. Tambin un grafo es una terna G = (V,A,j ), en donde V y A son conjuntos finitos, y j es una aplicacin que hace corresponder a cada elemento de A un par de elementos de V. Los elementos de V y de A se llaman, respectivamente, "vrtices" y "aristas" de G, y j asocia entonces a cada arista con sus dos vrtices. Clases de grafos. Un multgrafo es un grafo con varias aristas entre dos vrtices. Un pseudografo es un grafo en el que hay aristas (lazos) que tienen el mismo extremo. Un digrafo es un grafo donde a cada arista se le indica un sentido mediante una flecha. Un subgrafo es un grafo que esta contenido dentro de otro grafo y que se obtiene eliminando algunas aristas y vrtices del grafo principal. Teoremas. Dos grafos con la misma matriz de adyacencia son isomorfos. Un rbol es un grafo conexo sin ciclos. Un grafo es un rbol si y solo si cada dos vrtices distintos se conectan por un nico camino simple. Un grafo es etiquetado si sus aristas tienen asignado un nmero. Se llama distancia de un grafo etiquetado a la longitud mnima del camino entre dos vrtices dados. Existen muchas forma de representar grafos, la mas comn es usar crculos para los nodos y lneas para las aristas.

Algoritmos Computacionales 2CM31 Equipo. 7

El grafo consiste en un arreglo de nodos, los cuales pueden apuntar a otros nodos dentro del mismo arreglo as:

Interpretacin: [A] tiene como adyacentes a [B],[C],[F] [B] tiene como adyacentes a [A],[F] [C] tiene como adyacentes a [A],[D] [D] tiene como adyacentes a [C] [F] tiene como adyacentes a [A],[B] Propiedades. Adyacencia: dos aristas son adyacentes si tienen un vrtice en comn, y dos vrtices son adyacentes si una arista los une. Incidencia: una arista es incidente a un vrtice si sta lo une a otro. Ponderacin: corresponde a una funcin que a cada arista le asocia un valor (costo, peso, longitud, etc.), para aumentar la expresividad del modelo. Esto se usa mucho para problemas de optimizacin, como el del vendedor viajero o del camino ms corto. Etiquetado: distincin que se hace a los vrtices y/o aristas mediante una marca que los hace unvocamente distinguibles del resto. Bsqueda en grafos. Bsqueda en profundidad (BEP): Se comienza en cualquier vrtice y en cada paso se avanza a un nuevo vrtice adyacente siempre que se pueda. Cuando todos los adyacentes a X hayan sido visitados, se retrocede al vrtice desde el que se alcanz X y se prosigue. As se consigue etiquetar todos los vrtices de la componente conexa en que se encuentre el vrtice inicial.

Algoritmos Computacionales 2CM31 Equipo. 7

Esta tcnica se utiliza cuando necesitamos encontrar respuesta a un problema sobre un grafo sin condiciones de optimizacin. La idea en general de la bsqueda en profundidad comenzando en un nodo A es la siguiente: Primero examinamos el nodo inicial A. Luego examinamos cada nodo N de un camino P que comience en A; a sea, procesamos un vecino de A, luego un vecino de un vecino de A y as sucesivamente, hasta llegar a un punto muerto o final del camino P, y de aqu volvemos atrs por P hasta que podamos continuar por otro camino P y as sucesivamente. Este algoritmo es similar al del recorrido inorden de un rbol binario, y tambin a la forma en que se debe pasar a travs de un laberinto. Observe que se hace uso una pila en lugar de una cola, y este es el detalle fundamental que hace la diferencia para realizar la bsqueda en profundidad. Algoritmo para la bsqueda en profundidad:

Este algoritmo realiza la bsqueda en profundidad el grafo G comenzando en un nodo A. 1.- Inicializar todos los nodos al estado de preparado (ESTADO=1) 2.- Meter el nodo inicial A en la pila y cambiar su estado a estado de espera (ESTADO=2). 3.- Repetir los pasos 4 y 5 hasta que la pila este vacia. 4.- Estado al de procesado (ESTADO=3). 5.- Sacar el nodo N en la cima de la pila. Procesar el nodo N y cambiar su preparados (ESTADO=1) y cambiar su estado a estado de espera (ESTADO=2). [ fin de bucle del paso 3 ]. 6.- Meter en la pila todos los vecinos de N que estn en estado de Salir. Bsqueda en anchura (BEA). A diferencia con la BEP ahora se visitan todos los vecinos de un vrtice antes de pasar al siguiente. Por tanto no hay necesidad de retroceder. Una vez etiquetados todos los vecinos de un vrtice X, se contina con el primer vrtice alcanzado despus de X en la bsqueda. Esta tcnica se utiliza para resolver problemas en los que se pide hallar una solucin ptima.

Potrebbero piacerti anche