Documentos de Académico
Documentos de Profesional
Documentos de Cultura
JOSE RUIZ
TALLER DE GRAFOS
FECHA DE ENTREGA
Los números del vértice en una lista de adyacencia no están obligados a aparecer en
ningún orden en particular, aunque a menudo es conveniente enumerarlos en orden
ascendente, como en este ejemplo.
Algoritmo de Warshall-Dijkstra
Pseudocódigo
En el siguiente algoritmo de pseudocódigo, dist es una matriz que contiene las
distancias actuales desde la fuente a otros vértices, es decir, dist [ u ] es la distancia
actual desde la fuente al vértice u . La matriz anterior contiene punteros a los nodos
de salto anterior en la ruta más corta desde la fuente al vértice dado (de manera
equivalente, es el siguiente salto en la ruta desde el vértice dado a la fuente). El
código u ← vértice en Q con min dist [u], busca el vértice u en el conjunto de vértices
Q que tiene el menor valor de dist [ u ] . length ( u , v ) devuelve la longitud del borde
que une (es decir, la distancia entre) los dos nodos vecinos u y v . La variable alt en la
línea 18 es la longitud de la ruta desde el nodo raíz hasta el nodo vecino v si pasara
por u. Si esta ruta es más corta que la ruta más corta actual registrada para v, esa
ruta actual se reemplaza con esta ruta alternativa.
Por otro lado, suponga que queremos encontrar la posición POS de una arista (A
B) del grafo G. Primero debemos encontrar la posición POSA de A y la posición
POSB de B en la lista NODO. Luego debemos de buscar en la lista de
sucesores de A, que tiene el puntero de lista ADY[POSA], la posición POS de
POSB. Esto se implementa con el ejemplo siguiente, que también comprueba que
A y B sean nodos de G. Observe que POS de la posición de POSB en la lista
ARISTA.
El procedimiento es el siguiente:
Si va a eliminar un nodo N del grafo G. Esta operación es más complicada que las
operaciones de búsqueda e inserción y que la de eliminar una arista, ya que
debemos eliminar todas las aristas que contengan a N. Note que esas aristas son
de dos tipos; aquellas que empiezan en N y aquellas que terminan en N. El
procedimiento consistirá fundamentalmente en los siguientes cuatro pasos:
1. - Encontrar la posición POS del nodo N en G.
2. - Eliminar todas las aristas que terminen en N; o sea, eliminar POS de la
lista de sucesores de cada nodo M de G (este paso requiere recorrer la lista
de nodos de G).
3. - Eliminar todas las aristas que empiecen en N. Esto se hace encontrando
la posición COM del primer sucesor y la posición FIN del ultimo sucesor de
N, y luego añadiendo la lista de sucesores de N a la lista ADISP.
4. - Eliminar el nodo N mismo de la lista de NODO.
El procedimiento es el siguiente:
Recorrido en Anchura:
Recorrido en Profundidad