Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Enteoradegrafos,unrboldeexpansin,rbolgeneradororbolrecubridorTdeungrafoconexo,no
dirigidoGesunrbolcompuestoportodoslosvrticesyalgunas(quiztodas)delasaristasdeG.
Informalmente,unrboldeexpansindeGesunaseleccindearistasdeGqueformanunrbolque
cubretodoslosvrtices.Estoes,cadavrticeestenelrbol,peronohayciclos.Porotrolado,todos
lospuentesdeGdebenestarcontenidosenT.
UnrboldeexpansinorbolrecubridordeungrafoconexoGpuedesertambindefinidocomoel
mayorconjuntodearistasdeGquenocontieneciclos,ocomoelmnimoconjuntodearistasque
conectatodoslosvrtices.
Construccin
Unrboldeexpansindeungrafosepuedeencontrar,yaseaporbsquedaenprofundidadola
bsquedaenamplitud.Ambosdeestosalgoritmosexploranelgrficodado,partiendodeunvrtice
arbitrario,haciendounbucleatravsdelosvecinosdelosvrticesquedescubrenyaadiendocada
vecinosinexploraraunaestructuradedatosparaserexploradomsadelante.Sielgrafoexaminadoes
ponderadopodemosutilizarelalgoritmodeKruskal.
Algoritmo de Kruskal
ElalgoritmodeKruskalesunalgoritmodelateoradegrafosparaencontrarunrbolrecubridor
mnimoenungrafoconexoyponderado.Esdecir,buscaunsubconjuntodearistasque,formandoun
rbol,incluyentodoslosvrticesydondeelvalortotaldetodaslasaristasdelrboleselmnimo.Siel
grafonoesconexo,entoncesbuscaunbosqueexpandidomnimo
Funcionadelasiguientemanera:
1. secreaunbosqueB(unconjuntoderboles),dondecadavrticedelgrafoesunrbolseparado
2. secreaunconjuntoCquecontengaatodaslasaristasdelgrafo
3. mientrasCesnovaco
1. eliminarunaaristadepesomnimodeC
2. siesaaristaconectadosrbolesdiferentesseaadealbosque,combinandolosdosrboles
enunsolorbol
3. encasocontrario,sedesechalaarista
Pseudocdigo Kruskal(G)
Para cada v en V[G] hacer
Nuevo conjunto C(v) {v}.
Nuevo heap Q que contiene todas las aristas de G, ordenando por su peso.
Defino un rbol T
// n es el nmero total de vrtices
Mientras T tenga menos de n-1 vertices hacer
(u,v) Q.sacarMin()
// previene ciclos en T. agrega (u,v) si u y v estn diferentes
componentes en el conjunto.
// Ntese que C(u) devuelve la componente a la que pertenece u.
if C(v) C(u) then
Agregar arista (v,u) a T.
Merge C(v) y C(u) en el conjunto
Return arbol T
Ejemplo
El camino ms corto
En la teora de grafos, el problema del camino ms corto es el problema que consiste en encontrar un
camino entre dos vrtices (o nodos) de tal manera que la suma de los pesos de las aristas que lo
constituyen es mnima. Un ejemplo de esto es encontrar el camino ms rpido para ir de una ciudad a
otra en un mapa. En este caso, los vrtices representaran las ciudades y las aristas las carreteras que las
unen, cuya ponderacin viene dada por el tiempo que se emplea en atravesarlas.
Algoritmos
Los algoritmos ms importantes para resolver este problema son:
Algoritmo de Dijkstra, resuelve el problema de los caminos ms cortos desde un nico vrtice
origen hasta todos los otros vrtices del grafo.
Algoritmo de Bellman - Ford, resuelve el problema de los caminos ms cortos desde un origen
si la ponderacin de las aristas es negativa.
Algoritmo de Bsqueda A*, resuelve el problema de los caminos ms cortos entre un par de
vrtices usando la heurstica para intentar agilizar la bsqueda.
Algoritmo de Floyd - Warshall, resuelve el problema de los caminos ms cortos entre todos los
vrtices.
Algoritmo de Johnson, resuelve el problema de los caminos ms cortos entre todos los vrtices
y puede ser ms rpido que el de Floyd-Warshall en grafos de baja densidad.
Algoritmo de Viterbi, resuelve el problema del camino estocstico ms corto con un peso
probabilstico adicional en cada vrtice.
Algoritmo de Dijkstra
El algoritmo de Dijkstra, tambin llamado algoritmo de caminos mnimos, es un algoritmo para la
determinacin del camino ms corto dado un vrtice origen al resto de los vrtices en un grafo con
pesos en cada arista. Su nombre se refiere a Edsger Dijkstra, quien lo describi por primera vez en
1959.
La idea subyacente en este algoritmo consiste en ir explorando todos los caminos ms cortos que parten
del vrtice origen y que llevan a todos los dems vrtices; cuando se obtiene el camino ms corto desde
el vrtice origen, al resto de vrtices que componen el grafo, el algoritmo se detiene. El algoritmo es
una especializacin de la bsqueda de costo uniforme, y como tal, no funciona en grafos con aristas de
coste negativo (al elegir siempre el nodo con distancia menor, pueden quedar excluidos de la bsqueda
nodos que en prximas iteraciones bajaran el costo general del camino al pasar por una arista con
costo negativo).
Algoritmo
1. Teniendo un grafo dirigido ponderado de N nodos no aislados, sea x el nodo inicial, un vector D
de tamao N guardar al final del algoritmo las distancias desde x al resto de los nodos.
2. Inicializar todas las distancias en D con un valor infinito relativo ya que son desconocidas al
principio, exceptuando la de x que se debe colocar en 0 debido a que la distancia de x a x sera
0.
3. Sea a = x (tomamos a como nodo actual).
1. Recorremos todos los nodos adyacentes de a, excepto los nodos marcados, llamaremos a
estos nodos no marcados vi.
2. Para el nodo actual, calculamos la distancia tentativa desde dicho nodo a sus vecinos con la
siguiente frmula: dt(vi) = Da + d(a,vi). Es decir, la distancia tentativa del nodo vi es la
distancia que actualmente tiene el nodo en el vector D ms la distancia desde dicho el nodo
a (el actual) al nodo vi. Si la distancia tentativa es menor que la distancia almacenada en el
vector, actualizamos el vector con esta distancia tentativa. Es decir: Si dt(vi) < Dvi Dvi =
dt(vi)
4. Marcamos como completo el nodo a.
5. Tomamos como prximo nodo actual el de menor valor en D (puede hacerse almacenando los
valores en una cola de prioridad) y volvemos al paso 3 mientras existan nodos no marcados.
6. Una vez terminado al algoritmo, D estar completamente lleno.
Ejemplo
Inicializa, selecciona el nodo de inicio predeterminado, etiquetar los nodos.
0
1
2
1
2
3
2
1
6
2
2
2
4
3
2
2
4
4
6
4
2
1
4
3
2
3
2
2
0
1
6
4
2
1
2
3
2
2
0
1
2
1
4
3
2
2
2
3
3
2
0
1
2
3
4
4
2
6
4
2
3
Flujo mximo
En teora de grafos, una red de flujo es un grafo dirigido donde existen dos vrtices especiales, uno
llamado fuente, al que se le asocia un flujo positivo y otro llamado sumidero que tiene un flujo
negativo y a cada arista se le asocia cierta capacidad positiva. En cada vrtice diferente a los dos
especiales se mantiene la ley de corrientes de Kirchoff, en donde la suma de flujos entrantes a un
vrtice debe ser igual a la suma de flujos que salen de l. Puede ser utilizada para modelar el trfico en
un sistema de autopistas, fluidos viajando en tuberas, corrientes elctricas en circuitos elctricos o
sistemas similares por lo que viaje algo entre nodos.
Algoritmo de Ford-Fulkerson
El procedimiento para obtener el flujo mximo de una red, consiste en seleccionar repetidas
veces cualquier trayectoria de la fuente al destino y asignar el flujo mximo posible en esa
trayectoria.
Encuentre la trayectoria de la fuente al destino con capacidad de flujo estrictamente positivo (si
no existe alguno, es por que se ha encontrado el ptimo).
Examine estas trayectorias para encontrar la rama o arco con la menor capacidad de flujo
restante e incremente en ste valor, la capacidad del flujo en sentido contrario.
Determine todas las trayectorias estrictamente positivas, hasta que no se permita flujo del nodo
a un nodo destino.
Pseudocdigo Ford-Fulkerson(G,s,t) {
for (cada arco (u,v) de E) {
f[u,v]= 0;
f[v,u]= 0;
}
while (exista un camino p desde s a t en la red residual Gf) {
cf(p) = min{cf(u,v): (u,v) est sobre p};
for (cada arco (u,v) en p) {
f[u,v]= f[u,v] + cf(p);
f[v,u]= - f[u,v];
}
}
}
Ejemplo
red de inicio
Encuentra un camino p de s a t en G
El mtodo de la Ruta Crtica conocida tambin por CPM por sus siglas en ingls (Critical Path Method)
es una metodologa de la gestin de proyectos que nos permite entre otros aspectos estimar la duracin
de un Proyecto. Para este propsito es necesario conocer las actividades que contempla el proyecto, su
duracin en una unidad de tiempo y el orden en el cul deben ser realizadas (por ejemplo algunas
actividades se pueden desarrollar slo cuando una o varias actividades previas han sido completadas).
Cmo obtener la Ruta Crtica de un Proyecto
El ejemplo a continuacin muestra en detalle la aplicacin del mtodo de ruta crtica a un proyecto que
consta de 9 actividades cuyos tiempos estimados se encuentran en semanas. Adicionalmente en la
columna Predecesor se establece el orden en el cual se deben realizar las distintas actividades, por
ejemplo la actividad G se puede realizar una vez completada la actividad D y F.
Se puede observar que las actividades iniciales son A y B y la actividad final es I. Por tanto
laduracin del proyecto ser aquella ruta o camino ms largo que comenzando en A (o en
B) termine en I. Luego, dado el tamao reducido de este ejemplo es posible enumerar todas
Ruta:
Ruta:
Ruta:
Ruta:
A-C-I: 5[sem]+4[sem]+2[sem]=11[sem]
A-D-G-I: 5[sem]+3[sem]+14[sem]+2[sem]=24[sem]
A-E-F-G-I: 5[sem]+1[sem]+4[sem]+14[sem]+2[sem]=26[sem]
B-H-I: 6[sem]+12[sem]+2[sem]=20[sem]
La ruta crtica por tanto es A-E-F-G-I lo que determina que la duracin del proyecto es
de26[sem]. Adicionalmente podemos estimar cundo es lo ms pronto que se puede
comenzar cada actividad (inicio ms cercano o IC color rojo) y cundo es lo ms pronto
que se puede terminar una actividad (trmino ms cercano o TC color azul).
En este contexto se define el trmino Holgura (H) o Slack como el tiempo mximo que una
actividad se puede retrasar en su inicio sin que esto afecte el tiempo estimado para terminar
el proyecto como un todo:
Holgura = IL IC = TL TC
El siguiente diagrama muestra la ruta del proyecto con el clculo de las holguras de cada una
de las actividades. Se puede apreciar por ejemplo que la actividad B se puede retrasar un
mximo de 6[sem] (su holgura) y aun as estar en condiciones de terminar el proyecto en
26[sem]. Adicionalmente las actividades que pertenecen a la ruta crtica tienen
holgura igual a cero, lo que en este ejemplo en particular permite identificar una ruta
nica: A-E-F-G-I(notar que en general un proyecto puede tener ms de una ruta o camino
crtico).