|
RECORRIDO DE GRAFOS Casi todos los algoritmos para resolver problemas con un grafo examinan o procesan cada vértice y cada arista. La búsqueda primero en amplitud y la búsqueda primero en profundidad son dos estrategias de recorrido que permiten "visitar" de forma eficiente cada vértice y arista exactamente una vez. Por consiguiente, muchos algoritmos basados en tales estrategias se ejecutan en un tiempo que crece linealmente al crecer el tamaño del grafo de entrada.
Bosquejo de la Búsqueda Primero en Profundidad BPP(G,v) {
} La estrategia primero en profundidad de siempre explorar un camino lo más lejos posible antes de retroceder (y explorar caminos alternos lo más lejos posible antes de retroceder más) tiene el efecto de visitar todos los vértices de G1 antes de pasar a un subgrafo nuevo adyacente a v, en este caso G2 ó G3, después se visitarían todos los vértices de G2 antes de visitar cualquier vértice de G3. Esto es análogo al recorrido de árboles.
Generalidades de la búsqueda primero en amplitud
En la búsqueda primero en amplitud los vértices se visitan en orden de distancia creciente respecto al punto de partida. Para tratar el algoritmo, se deben hacer las siguientes consideraciones: Entradas: G = (V, E), un grafo representado por una estructura de listas de adyacencia, Salidas: Un árbol primero en amplitud, almacenado en el arreglo padre. Ese arreglo se pasa como parámetro y el algoritmo se encarga de llenarlo. Comentarios: Para una cola Q, suponemos que se usan operaciones del tipo de datos abstracto Cola. El arreglo color[ 1 ],..., color[ n ] denota la situación actual de todos los vértices respecto a la búsqueda. Los vértices no visitados son blancos; los que ya se visitaron pero todavía no se procesan (en la cola) son grises; los que ya se procesaron son negros.
}
Análisis de Búsqueda Primero en Amplitud Suponemos que G tiene n vértices y m aristas, y que la búsqueda llega a todo G. Además, suponemos que cada operación de cola tarda un tiempo constante. Por último, suponemos que el procesamiento que la aplicación efectúa con vértices y aristas individuales tarda un tiempo constante con cada uno; de lo contrario, sería necesario multiplicar los costos apropiados por el tiempo que tarda el procesamiento de cada operación. |