Академический Документы
Профессиональный Документы
Культура Документы
Unidad I
Semana 4
Grafos
Competencia General
Implementa algoritmos y estructuras de
datos avanzados, haciendo nfasis en los
algoritmos de internet, seguridad y redes.
Capacidades Especficas
Comprende la naturaleza de los
algoritmos asociados a estructuras de
datos avanzados.
Implementa
algoritmos
utilizando
estructura de datos avanzadas
Procedimientos
Implementar algoritmos fundamentales
para la solucin de problemas basados
en la teora de grafos.
Contenidos
Glosario
Grafo: Un grafo es una coleccin
de vrtices y aristas.
Los vrtices son objetos simples que
pueden tener un nombre y otras
propiedades;
Una arista es una conexin entre
dos vrtices.
A
B
A
B
E
F
Glosario
Grafo conexo: Un grafo es conexo
si hay un camino desde cada
nodo hacia otro nodo del grafo.
B
D
C
E
F
G
A
B
G
E
F
A
E
F
Glosario
Grafo completo: Son los grafos con
todas las aristas posibles.
A
G
A
G
Representacin de un grafo
Matriz de adyacencia:
A
A
B
D
F
C
E
La matriz de
adyacencia
solo es
satisfactoria si
los grafos a
procesar son
densos.
Representacin de un grafo
Lista de adyacencia:
La lista de adyacencia se adapta mejor a lo casos en los que
los grafos a procesar no son densos.
B
C
G
Recorridos en un grafo
En una gran cantidad de problemas
con grafos, es necesario visitar
sistemticamente los vrtices y aristas
del grafo.
La bsqueda en PROFUNDIDAD y en
AMPLITUD,
son
dos
tcnicas
importantes de recorrido del grafo.
Bsqueda en Profundidad
a
b
c
c
d
c
e
c
e
Bsqueda en Amplitud
0
0
a
1
c
0
a
1
c
2
d
En la bsqueda en
amplitud se utiliza una
cola para guardar tales
nodos a visitar.
Laberintos
La bsqueda en profundidad fue expuesta
formalmente como un mtodo para
recorrer laberintos.
Conectividad
Problemtica
Se examinar una generalizacin de la conectividad
denominada biconectividad, cuyo inters reside en
conocer si hay mas de un medio de pasar de un vrtice
de un grafo a otro.
Grafo biconexo: Un grafo es
biconexo, si solo si, existen al menos
dos caminos diferentes que conecten
cada par de vrtices. De esta forma
si se suprime un vrtice y todas las
aristas que inciden en el, el grafo
permanece conexo.
A
G
Conectividad
Problemtica
Una versin particular del problema de la
conectividad, se da con frecuencia en lo
que concierne a la situacin dinmica en las
que las aristas se aaden al grafo una a una,
intercalando preguntas sobre si dos vrtices
determinados pertenecen o no a la misma
componente conexa.
Componentes conexas
Conectividad
De un grafo no dirigido
Se puede saber si es conexo, si no
lo, es se pueden conocer sus
componentes Conexas
Componentes conexas:
entre ellas son conexas
CONEXO
B
C
E
D
B
C
E
D
No CONEXO
Conectividad
Biconectividad
A veces es til disear mas de una ruta entre puntos
de un grafo, aunque solo sea para identificar posibles
fallos en los puntos de conexin (vrtices). Esto nos
permitira tener recorridos alternativos por ejemplo
para llegar de una ciudad a otra.
A
Conectividad
Puntos de articulacin
Un punto de articulacin en un grafo conexo es un
vrtice que si se suprime romper el grafo en dos o
mas piezas.
La conectividad de un grafo
Es el numero de nodos que se necesitan eliminar para dejar a
un grafo desconectado
Puntos de articulacin
Conectividad
Ejemplo
A
B
C
D
Puntos de
Articulacin
Conectividad
rbol de expansin
Definicin: Un rbol T es
un rbol de expansin
de un grafo G si T es un
subgrafo que contiene a
todos los vrtices de G.
rbol de expansin
Para poder calcular los Puntos de Articulacin de un grafo
Conectividad
Este se obtiene
Ejemplo:
B
C
E
E
B
Arco en Retroceso:
Cuando se quiere
visitar un nodo que
ya ha sido visitado y
no es el padre
Un rbol en expansin
No es un rbol binario
Cada Vrtice puede tener 0, 1 o n hijos
Se encuentran en un arreglo
Representa un vrtice
040052
0 1 2 3 4 5
A B C D E F
A
D
F
A
B
C
D
E
F
Conectividad
Unin - Pertenencia
En algunas aplicaciones se desea simplemente
conocer si un vrtice x esta o no conectado a un
vrtice y de un grafo, sin que sea importante el
camino que los conecta.
Los grafos se corresponden de forma natural con los
conjuntos (colecciones de objetos): los vrtices representan
a los objetos y las aristas significan esta en el mismo
conjunto que.
C
A
D
Conjuntos
clases de
equivalencia
{A F D E}
{B C G}
Unin - Pertenencia
Conectividad
Conectividad
Unin - Pertenencia
Por correspondencia con el problema de los
conjuntos, la adicin de una
nueva arista se
denomina una operacin de unin, y las preguntas
se denominan operaciones de pertenencia.
El objetivo es escribir una funcin que pueda verificar
si dos vrtices x e y pertenecen al mismo conjunto (o,
en representacin de grafos, a la misma componente conexa) y, en
caso de que sea as, que pueda unirlos en el mismo
conjunto (colocando una arista entre ellos y el grafo).
En lugar de construir una lista de adyacencia directa o
cualquier otra representacin de los grafos, es mas eficaz utilizar
una estructura interna orientada especficamente a la
realizacin de las operaciones unin y pertenencia.
Unin - Pertenencia
Conectividad
En resumen:
Esta estructura interna es un bosque de
arboles, uno por cada componente
conexa.
Se necesita poder encontrar si dos vrtices
pertenecen al mismo rbol y combinar dos
arboles en uno.
Grafos ponderados
Problemtica
Con frecuencia se desea modelar problemas
prcticos utilizando grafos en los que se asocia a las
aristas unos pesos o costes.
En un mapa de lneas areas, en el que las aristas
representan rutas de vuelo, los pesos pueden
representar distancias o tarifas. Estas situaciones
hacen aparecer de forma natural cuestiones como
el minimizar costes.
Grafos ponderados
Problemtica
Se examinara los algoritmos de dos de estos
problemas:
1. Encontrar la forma de conectar todos los puntos
al menor coste (problema del rbol de expansin
mnima).
2. Encontrar el camino de menor coste entre dos
puntos dados (problema del camino mas corto).
La forma de representar a los grafos ponderados es obvia.
En la representacin por matriz de adyacencia, la matriz puede
contener pesos de aristas en lugar de valores booleanos y
En la representacin por listas de adyacencia se puede aadir un
campo a cada elemento de la lista, a manera de peso.
Algoritmo genrico
Se puede construir el rbol de expansin
mnimo comenzando en cualquier vrtice
y tomando siempre el vrtice mas prximo
de todos los que se hayan elegido.
En otras palabras; se busca la arista de
menor peso entre todas las que conectan
vrtices que ya estn en el rbol, con
vrtices que no lo estn todava, y despus
se aade al rbol la arista y el vrtice a los
que conduce la anterior.
En
este
caso
si
observamos la imagen los
vrtices 7 y 9 estn en la
misma
componente
conexa; asimismo en la
tabla de Union-Find el
elemento raz del vrtice
7 es el mismo que el del
vrtice
9
por
ello
afirmamos que estn el a
misma
componente
conexa, por lo tanto no
habr que realizar la
unin de ambos vrtices.
Con esto evitamos tener
ciclos en el rbol de
expansin mnima.
Nmero de Aristas = 8
Nmero de Vrtices = 9
Algoritmo de Dijkstra
El algoritmo de Dijkstra determina la ruta ms
corta desde un nodo origen hacia los dems
nodos para ello es requerido como entrada
un grafo cuyas aristas posean pesos.
Algoritmo de Dijkstra
Como trabaja:
Primero marcamos todos los vrtices como no
utilizados. El algoritmo parte de un vrtice
origen que ser ingresado, a partir de ese
vrtices evaluaremos sus adyacentes, como
dijkstra usa una tcnica greedy -La tcnica
greedy utiliza el principio de que para que un
camino sea ptimo, todos los caminos que
contiene tambin deben ser ptimos- entre
todos los vrtices adyacentes, buscamos el
que est ms cerca de nuestro punto origen, lo
tomamos como punto intermedio y vemos si
podemos llegar ms rpido a travs de este
vrtice a los dems. Despus escogemos al
siguiente ms cercano (con las distancias ya
actualizadas) y repetimos el proceso. Esto lo
hacemos hasta que el vrtice no utilizado ms
cercano sea nuestro destino. Al proceso de
actualizar las distancias tomando como punto
intermedio al nuevo vrtice se le conoce como
relajacin.
Donde:
->
0+7<
->
7<
->
0+2<
->
2<
->
2+3<7
->
5<7
En cuanto a la cola de
prioridad como tenemos un
vrtice con menor peso este
nuevo vrtice ira en el tope de
la cola, podemos ver que
tenemos 2 veces el mismo
vrtice pero como usamos una
tcnica greedy siempre
usaremos el valor ptimo:
->
5 + 1 < 10
->
6 < 10
->
6+5<7
->
11 < 7
Algoritmo de Dijkstra
Impresin camino encontrado
En el proceso anterior usbamos el arreglo previo[ u ] para almacenar
el ID del vrtice previo al vrtice con ID = u, ello me sirve para formar el
rbol de la ruta mas corta y adems me sirve para imprimir caminos de
la ruta mas corta.
Algoritmo de Dijkstra
Impresin camino encontrado
Para imprimir el camino mas corto deseado usamos el arreglo previo[ u ],
donde u tendr el ID del vrtice destino, o sea si quiero imprimir el
camino mas corto desde vrtice 1 -> vrtice 3 partir desde previo[ 3 ]
hasta el previo[ 1 ].
Veamos grficamente el funcionamiento, desde el grafo comenzamos
en 3
Algoritmo de Dijkstra
Impresin camino encontrado
El previo de 3 es el vrtice 2, por lo tanto ahora evalu 2:
Algoritmo de Dijkstra
Impresin camino encontrado
Ahora el previo de 2 es el vrtice 4:
Algoritmo de Dijkstra
Impresin camino encontrado
El previo de 4 es el vrtice inicial 1
Electivo I
Unidad I
Semana 4
Grafos