Documentos de Académico
Documentos de Profesional
Documentos de Cultura
• Ejemplo 10
• Ejemplo 11
• Ejercicio:
Realizar un método que recupere los caminos en la
matriz P de Floyd
}
Mª del Puerto Paule Ruiz
Floyd (VII)
Floyd (VIII)
• Ejercicio:
Modificar Floyd para calcular los caminos de coste
mínimo empleando solamente los nodos
pertenecientes a un conjunto L
Floyd (X)-Complejidades
Warshall
• Objetivo:
Determinar si existe camino entre cualquier par de
nodos del grafo
• Funciona prácticamente igual que Floyd.
• Matriz de caminos A: Para cada elemento i,j de la
matriz:
1/trueÆ si existe camino directo entre (i,j)
0/falseÆ si no existe
• Esta matriz A se conoce como el cierre transitivo
de un grafo
— ÆAk-1(i,j)=1
z Existe camino simple entre vi y vk y otro camino entre
vk y vj que no empleé otros nodos a aparte de
v1...vk-1.
— ÆAk-1(i,k)=1 Y Ak-1(k,j)=1
Juntándolo todo:
Warshall (III)
• Ejemplo 13
• Complejidad : O(n³)
• El cierre transitivo se puede determinar aplicando
Floyd y luego haciendo falso las casillas con coste
infinito
• Ejemplo 14
• Complejidades
Matrices de adyacencias:
z Caso mejor O(n)
Lista de adyacencias
z Caso mejor: O(1)
Recorrido en Anchura(I)
• Complejidades
Matrices de adyacencias
z Caso mejor O(n)
Lista de adyacencias
z Caso mejor O(1)
.....
parar=false;
while (!cola.vacia() && !parar) {
nodo=cola.sacar();
tratar(nodo);
parar=condicion(nodo);
if (!parar){
para cada sucesor k de nodo
....
}
Nota importante: Se debe vaciar la cola al
final (dependiendo del lenguaje)
Mª del Puerto Paule Ruiz
• Ejemplo de DAG:
Modelizar la construcción de un puente:
1. Construir cimientos
2. Construir columnas
3. Transportar y colocar columnas
4. Colocar vigas
5. Poner piso
Para realizar esto hay que seguir un orden:
1->3->4->5
2->3->4->5
• Salida Lineal II
Encontrar un vértice v que sólo tenga aristas de
entrada.
Imprimir ese vértice
Borrarlo (lógicamente) del grafo junto sus aristas
Aplicar la misma estrategia al resto de los nodos
del grafo
• Ejemplo 18
z Max²-(Max²+Max)/2=(Max²-Max)/2
Arboles libres
• Definición:
Grafo conexo sin ciclos
• Propiedades:
Todo árbol libre con n>=1 nodos tiene n-1 aristas
Si se añade cualquier arista, ésta forma parte de
un ciclo (el grafo deja de ser árbol libre)
Para cualquier par de nodos, sólo hay un camino
simple
• Ejemplo 20
• Objetivo:
Obtener el coste mínimo
• Estrategias
z Generar todos los árboles abarcadores, evaluar
su coste y quedarnos con aquel que tiene coste
mínimo.
—Esta estrategia daría lugar a un algoritmo NP
z Conseguir el coste mínimo con mejor
complejidad:
—Prim y Kruskal
del grafo.
Prim (II)
public void Prim(objetoNodo v){
T= vacio; //conjunto de aristas de coste
//mínimo
U= v; //nodo de partida
while U!=V {
elegir arista {u,v} de mínimo coste tal
que u pertenezca a U y v pertenezca a V-U
T=T+{u,v}
U=U+v;
}
}
• Ejemplo 23 y 24
Mª del Puerto Paule Ruiz
Prim (III)
• Evaluación:
El bucle principal (while U=!V) se realiza n-1 veces
z Búsqueda de la arista de menor coste Æ O(n) si
se emplean vectores auxiliares
z Si no se emplean dos vectores es una búsqueda
con complejidad O(n²)
La complejidad de Prim: O(n³) ó O(n²)
• El árbol libre abarcador resultante depende del
nodo de partida.
Kruskal (I)
• Objetivo:
El mismo que Prim
• Estrategia
Se trata de un grafo formado por n componentes
conexas (todos los nodos del grafo sin las aristas)
En cada iteración se selecciona una arista {u,v} y se
añade a un conjunto T de aristas.
z Se van seleccionando aristas {u,v} en la que no
formen parte de alguna componente conexa.
— Se trata de aristas que pueden conectar dos
componentes conexas
De todas las arista {u,v} se coge aquella de coste
mínimo, añadiéndola al conjunto de aristas T.
El algoritmo termina cuando hay sólo una única
componente conexa.
}
• Ejemplo 25 y 26
Mª del Puerto Paule Ruiz
Kruskal (III)
z Kruskal: nlog2n
z Prim:O(n²)
z Kruskal: n²log2n