Está en la página 1de 13

UPC – Departamento de Ciencias – MATEMATICA COMPUTACIONAL (MA475)

Componentes conexas y
Problema del camino mínimo

CONTENIDO

Unidad N°3: TEORÍA DE GRAFOS Y REDES


3.2 Componentes conexas y Problema del camino mínimo
▪ Conexión
▪ Componentes conexas
▪ El problema del camino mínimo
▪ Algoritmo de Dijkstra

Profesores MA475 1
UPC – Departamento de Ciencias – MATEMATICA COMPUTACIONAL (MA475)

Componentes conexas y Problema del camino


mínimo

Introducción
La teoría de grafos es una mezcla extraordinaria de historia, cultura y soluciones a problemas
complejos desde el mundo de la matemática. Con esta teoría se busca representar de forma
visual conjuntos de datos abstractos en formas de nodos o vértices y la unión o relaciones que
estas pueden tener con otros nodos a través de aristas. Gracias a esta teoría se han podido
lograr grandes avances en el análisis de amplios volúmenes de datos.
Los orígenes que fundamentan la teoría de grafos nacen con un estudio realizado por el
matemático suizo Leonhard Euler en 1736. La investigación de Euler trataba de resolver el
mítico problema de los puentes de Königsberg.
Este problema consistía en obtener una ruta eficiente para cruzar todos los puentes de la
ciudad, cruzándolos una sola vez. Las conclusiones de Euler demostraron su improbabilidad,
pero fue el punto de partida a un número increíble de estudios.

Conexión
Un grafo G es llamado conexo si para cualquier par de vértices de G existe un camino entre
ellos.

• Un subgrafo es un subconjunto de vértices y aristas que forman un grafo.


• Un grafo que no es conexo es la unión de 2 o más subgrafos conexos, que dos a dos no
tienen vértices en común.

Profesores MA475 2
UPC – Departamento de Ciencias – MATEMATICA COMPUTACIONAL (MA475)

Componentes Conexas
Las componentes conexas de un grafo son los subgrafos conexos disjuntos con el mayor
número de vértices, que se pueden formar a partir del grafo original.

Componentes conexas del


Grafo G
grafo G

Cálculo de las componentes conexas


Paso 1: Construir la matriz de adyacencia asociada al grafo y agregarle (si fuese necesario)
el valor 1 en la diagonal de la matriz.
Paso 2: Calcular la matriz de caminos a partir de la matriz obtenida en el paso 1.
Paso 3: Contar la cantidad de 1’s en cada fila de la matriz. Ordenar las filas según el
número de 1’s (de mayor a menor). Si hubiera dos filas que tienen la misma
cantidad de 1’s, entonces se debe colocar primero aquella que tiene el 1 más
cercano a la primera columna.
Paso 4: Ordenar las columnas de acuerdo con el orden de las filas. Las componentes
conexas serán aquellas que se formen con los bloques cuadrados diagonales
formados por 1’s.

Ejemplo
Determine las componentes conexas del grafo mostrado.

Profesores MA475 3
UPC – Departamento de Ciencias – MATEMATICA COMPUTACIONAL (MA475)

Paso 1: Construir la matriz de adyacencia asociada al grafo y agregarle (si fuese necesario)
el valor 1 en la diagonal de la matriz.

Paso 2: Calcular la matriz de caminos a partir de la matriz obtenida en el paso 1.

Paso 3: Ordenar las filas según el número de 1’s que contiene (de mayor a menor).

Paso 4: Ordenar las columnas de acuerdo con el orden de las filas. Las componentes
conexas serán aquellas que se formen con los bloques cuadrados diagonales
formados por 1’s.

Entonces, las componentes conexas son:


𝑉1 = {1; 2; 4} 𝑉2 = {3; 5}

Profesores MA475 4
UPC – Departamento de Ciencias – MATEMATICA COMPUTACIONAL (MA475)

Gráficamente:

Ejercicios
1. Determine las componentes conexas del grafo:

2. Determine las componentes conexas del grafo, si los nodos son A, B, C, D, E, y cuya matriz
de adyacencia es:

0 1 0 0 0 
0 1 1 0 0 

0 0 0 1 0 
 
0 1 0 0 1 
0 0 0 0 0 

El problema del camino mínimo


El algoritmo de Dijkstra, también llamado algoritmo de caminos mínimos es un algoritmo
para la determinación del camino más corto, dado un vértice origen, hacia el resto de los
vértices en un grafo que tiene pesos en cada arista. Su nombre alude a Edsger
Dijkstra, científico de la computación de los Países Bajos que lo describió por primera vez
en 1959.
La idea subyacente en este algoritmo consiste en ir explorando todos los caminos más cortos
que parten del vértice origen y que llevan a todos los demás vértices; cuando se obtiene el
camino más corto desde el vértice origen hasta el resto de los vértices que componen el grafo,
el algoritmo se detiene. Se trata de una especialización de la búsqueda 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 búsqueda nodos que en próximas iteraciones
bajarían el costo general del camino al pasar por una arista con costo negativo).

Profesores MA475 5
UPC – Departamento de Ciencias – MATEMATICA COMPUTACIONAL (MA475)

Una de sus aplicaciones más importantes reside en el campo de la telemática. Gracias a él, es
posible resolver grafos con muchos nodos, lo que sería muy complicado resolver sin dicho
algoritmo, encontrando así las rutas más cortas entre un origen y todos los destinos en una
red.
Ejemplo:
En la siguiente figura se representa las distancias, en kilómetros, entre ciudades. ¿Cuál es la
longitud del camino más corto para ir desde la ciudad 0 hasta la ciudad 4?

Aplicaciones
• Diseño de redes de telecomunicaciones
– Redes de fibra óptica
– Redes de computadoras
– Redes telefónicas
– Redes de Internet o TV por cable

• Diseño de redes de transporte


– Vías ferroviarias
– Carreteras
• Diseño de una línea de transmisión eléctrica de alto voltaje.

Algoritmo de Dijkstra
Etiquetación de un vértice adyacente a B, el cual fue etiquetado en la primera iteración

Dado un grafo etiquetado de nodos no aislados:


1. Etiquete el vértice origen.
2. Mientras existan vértices no etiquetados:
o Etiquete los vértices adyacentes al vértice de menor distancia acumulada.
o En caso exista un vértice etiquetado anteriormente, el etiquetado del vértice
corresponderá al de menor distancia asociada.

Profesores MA475 6
UPC – Departamento de Ciencias – MATEMATICA COMPUTACIONAL (MA475)

Ejemplo
Utilice el algoritmo de Dijkstra para hallar el camino más corto de A a H en el siguiente grafo:

Iteración 0: Etiquetado del vértice A

Iteración 1: Etiquetado de los vértices adyacentes a A.

Iteración 2: Etiquetado de los vértices adyacentes a C.

Profesores MA475 7
UPC – Departamento de Ciencias – MATEMATICA COMPUTACIONAL (MA475)

Iteración 3: Etiquetado de los vértices adyacentes a D (pudo ser también B).

Iteración 4: Etiquetado de los vértices adyacentes a B.

Profesores MA475 8
UPC – Departamento de Ciencias – MATEMATICA COMPUTACIONAL (MA475)

Continuamos hasta que todos los vértices estén etiquetados.

La distancia mínima de A a H es 8 y hay dos caminos mínimos:

Ejercicio
Dado el siguiente grafo, determine el camino de longitud mínima de A a L usando el algoritmo
de Dijkstra.
B
103
E
100 83 H

85
105
92 D
A 100 95

100 L
72
90
92 95 G K
100 72
115
70
C J
I
88 85
72

Profesores MA475 9
UPC – Departamento de Ciencias – MATEMATICA COMPUTACIONAL (MA475)

ALGORITMO DE DIJKSTRA DESDE UNA MATRIZ1


Utilice el algoritmo de Dijkstra para hallar el camino más corto de A a H. Los valores en las
celdas de la matriz representan la distancia entre los vértices respectivos.
A B C D E F G H
A 3 1
B 1 5
C 2 5
D 4 2
E 2 1
F 3
G
H
OBSERVACIONES
• Todo el proceso se debe de realizar en una sola tabla.
• Por fines didácticos, de presentación del algoritmo, se va a explicar en varias tablas.
• Los valores en cada celda representan a la etiqueta de cada vértice.
• Etiqueta en cada celda: Acumulado, Vértice de origen.
• Si el vértice Q tiene la etiqueta 19, P quiere decir que hasta Q llegando desde P hay un
acumulado de 19.

PASO 1
• Se elige el vértice de origen (celda sombreada o marcada de alguna manera).
• Se etiquetan los vértices adyacentes al vértice A. (B y C, ver matriz).
• Se elige el vértice con el menor acumulado (C: 1, A celda sombreada)
Iteración 1 Iteración 2 Iteración 3 Iteración 4 Iteración 5 Iteración 6
A
B 3, A
C 1, A
D
E
F
G
H
PASO 2
• Se etiquetan los vértices adyacentes al vértice C. (D y F, ver matriz).
• Para etiquetar D: como C tiene etiqueta 1, A y de C a D hay 2, entonces la etiqueta para
D será 1+2 = 3, C.
• Para etiquetar F: como C tiene etiqueta 1, A y de C a F hay 5, entonces la etiqueta para
F será 1+5 = 6, C.
• Se elige el vértice con el menor acumulado; en este paso hay dos vértices posibles B y
D, se elige cualquiera. Se ha elegido D.

1
Créditos: Marcos Medina

Profesores MA475 10
UPC – Departamento de Ciencias – MATEMATICA COMPUTACIONAL (MA475)

Iteración 1 Iteración 2 Iteración 3 Iteración 4 Iteración 5 Iteración 6


A
B 3, A
C 1, A
D 3, C
E
F 6, C
G
H

PASO 3
• Se etiquetan los vértices adyacentes al vértice D. (E y F, ver matriz).
• Para etiquetar E: como D tiene etiqueta 3, C y de D a E hay 4, entonces la etiqueta para
E será 3+4 = 7, D.
• Para etiquetar F: como D tiene etiqueta 3, C y de D a F hay 2, entonces la etiqueta para
F será 3+2 = 5, D.
• En este paso se observa que F tiene dos etiquetas 6, C y 5, D, entonces se elimina la
etiqueta con el mayor acumulado (celda tachada).
• Se elige el vértice con el menor acumulado (B: 3, A celda sombreada).
Iteración 1 Iteración 2 Iteración 3 Iteración 4 Iteración 5 Iteración 6
A
B 3, A
C 1, A
D 3, C
E 7, D
F 6, C 5, D
G
H

PASO 4
• Se etiquetan los vértices adyacentes al vértice B. (D y G, ver matriz).
• D tiene dos etiquetas, se elimina una.
• Se elige el vértice con el menor acumulado (F: 5, D).
Iteración 1 Iteración 2 Iteración 3 Iteración 4 Iteración 5 Iteración 6
A
B 3, A
C 1, A
D 3, C 4, B
E 7, D
F 6, C 5, D
G 8, B
H

Profesores MA475 11
UPC – Departamento de Ciencias – MATEMATICA COMPUTACIONAL (MA475)

PASO 5
• Se etiquetan los vértices adyacentes al vértice F. (H, ver matriz).
• Se elige el vértice con el menor acumulado (E: 7, D).
Iteración 1 Iteración 2 Iteración 3 Iteración 4 Iteración 5 Iteración 6
A
B 3, A
C 1, A
D 3, C 4, B
E 7, D
F 6, C 5, D
G 8, B
H 8, F

PASO 6
• Se etiquetan los vértices adyacentes al vértice E. (G y H, ver matriz).
• G tiene dos etiquetas, se elimina una.
• Se observa que G aún no ha sido elegido, pero tiene igual acumulado que H y además
no tiene vértice con el cual se le pueda relacionar (ver matriz).
Iteración 1 Iteración 2 Iteración 3 Iteración 4 Iteración 5 Iteración 6
A
B 3, A
C 1, A
D 3, C 4, B
E 7, D
F 6, C 5, D
G 8, B 9, E
H 8, F 8, E
• H tiene dos etiquetas, pero en ambos casos tiene el mismo acumulado, esto quiere
decir que hay dos soluciones, hay dos rutas de longitud mínima para ir de A hacia H.
• En H: 8, F (vamos al vértice F) – 5, D (vamos al vértice D) – 3, C (vamos al vértice C) – 1,
A (A es el origen), esto quiere decir que la ruta es A, C, D, F, H
• En H: 8, E (vamos al vértice E) – 7, D (vamos al vértice D) – 3, C (vamos al vértice C) – 1,
A (A es el origen), esto quiere decir que la ruta es A, C, D, E, H.

RESPUESTA: La longitud del camino más corto para ir de A hacia H es de 8 unidades. Existen
dos rutas posibles con esta longitud mínima:
❖ A, C, D, F, H
❖ A, C, D, E, H

Observación: Todo el proceso de este algoritmo se puede desarrollar en una sola tabla.

Profesores MA475 12
UPC – Departamento de Ciencias – MATEMATICA COMPUTACIONAL (MA475)

Ejercicio
Supongamos que el servicio de transporte capitalino permite el transbordo de una línea de
ómnibus a otra sin costos adicionales, y que un trabajador desea saber cuáles son los
transbordos que debe realizar para que el camino de su casa al trabajo sea el menor posible.
Luego de un estudio detallado se establecen los siguientes tiempos de viaje, incluyendo
tiempos de espera para los nodos A (casa), B, C, D, E, F, G (transbordos), y H (trabajo).
Hacia
A B C D E F G H
Desde
A 10 6 2
B 5 1 1
C 4 3 1
D 2
E 3 2
F 6
G 9
H
Ayude al trabajador a encontrar el camino más rápido a seguir desde su casa al trabajo.

Profesores MA475 13

También podría gustarte