Está en la página 1de 31

b

t
c

45

1
3

10

25

40

55
30

25
50

20
3

15

Grafos

Grafos

Indice general
1. Introduccin.
2. Definiciones y representacin.
3. Recorridos en grafos.
4. Algoritmos de caminos ms cortos.
5. rbol de cubrimiento de costo mnimo.
6. Flujo en redes. Flujo mximo.

Grafos

Indice

Introduccin.
Definiciones.
Tipo de dato abstracto grafo.
Estructuras de datos para grafos.
Lista de aristas.
Lista de adyacencia.
Matriz de adyacencia.

Grafos

Introduccin

Los grafos se usan para modelar


problemas definidos en trminos de
relaciones o conexiones entre objetos.
Tienen un amplio uso en ingeniera para
representar redes de todo tipo:
transporte (tren, carretera, avin),
servicios (comunicacin, elctrica, gas,
agua),
de actividades en el planeamiento de
proyectos, etc.

Grafos

Qu es un grafo?

Un grafo G = (V, E) est compuesto de:


V : conjunto de vrtices o nodos
E : conjunto de aristas o arcos que
conectan los vrtices en V

Una arista e = (v, w) es un par de vrtices

Ejemplo:
a

V = { a, b, c, d, e}

E = { (a, b), (a, c), (a,d),


(b, e), (c, d), (c, e),
(d, e) }

c
d
Grafos

Aplicaciones

Grafo de transiciones (AFD)

b
inicio

b
a

Corua

4
Sevilla

Planificacin de tareas
(Pert/CPM)

inicio

A(3)

I(1)

Santander
1

Tiempo de vuelos areos


2

Barcelona

Madrid
2

2
3

Valencia

Grafo asociado a un dibujo de lneas (visin


artificial)

D(2)
C(4)

E(3)

final

B(2)
Grafos

Definiciones

Arista dirigida: par ordenado (u, v)


u

Arista no dirigida: par no ordenado (u, v)


u

Grafos

Grafo dirigido o digrafo: grafo cuyas aristas son


todas dirigidas.
Grafo no dirigido o grafo: grafo cuyas aristas son
todas no dirigidas.
Grafo mixto: grafo con aristas dirigidas y no
dirigidas.

Definiciones

Vrtices finales o extremos de la arista: vrtices unidos por una arista.


Vrtice origen: primer vrtice de una arista dirigida.
Vrtice destino: segundo vrtice de una arista dirigida.

Arista incidente en un vrtice: si el vrtice es uno de los vrtices de la


arista.
Aristas salientes de un vrtice: aristas dirigidas cuyo origen es ese
vrtice.
Aristas entrantes de un vrtice: aristas dirigidas cuyo destino es ese
vrtice.

a
Grafos

b
8

Definiciones

Vrtices adyacentes: vrtices finales de una arista.


Un vrtice w es adyacente a v s y slo si (v, w)
( (w, v)) pertenece a E.
En grafos no dirigidos la relacin de adyacencia es
simtrica.
En grafos dirigidos la relacin de adyacencia no es
simtrica.

b
c

d
Grafos

Vrtices adyacentes:
a = { b, c, d }
b={e}
c = { a, d, e }
d = { a, c }
e={d}
9

Definiciones

Grado de un vrtice v (grado(v)) en un grafo:


nmero de aristas incidentes en v o nmero de
vrtices adyacentes.
En un digrafo:
Grado entrante de un vrtice v (graent(v)): nmero de aristas
entrantes a v.
Grado saliente de un vrtice v (grasal(v)): nmero de aristas
salientes de v.

Si G es un grafo con m aristas, entonces


grado(v) 2m
vG

Si G es un digrafo con m aristas, entonces

graent (v) grasal (v) m


vG

Grafos

vG

10

Definiciones
Sea G es un grafo con n vrtices y m aristas.
Si G es no dirigido, entonces m n(n-1)/2.
Si G es dirigido, entonces m n(n-1).

Camino: secuencia de vrtices <v1, v2,., vn> tal


que (vi, vi+1) son adyacentes.
a

c
d
Grafos

b
c

C1= { a, b, e, d, c}

e
C2= { b, e, d, c}
11

Definiciones

Camino simple: todos los vrtices son distintos.

Longitud de un camino: nmero de aristas del


camino = n 1.

Ciclo: camino simple que tiene el mismo vrtice


inicial y final.
a

b
Camino simple = { a, b, e}
c

d
Grafos

Ciclo = { c, e, d, c}
e
12

Definiciones

Dos vrtices v, w estn conectados si existe un


camino de v a w.
Grafo conectado (conexo): si hay un camino
entre cualquier par de vrtices.
Si es un grafo dirigido se llama fuertemente conexo.
a

a
c

c
d

e
Conectado

Grafos

e
No conectado
13

Definiciones

Subgrafo: subconjunto de vrtices y aristas que


forman un grafo.
Componente conectado: subgrafo conectado
mximo.

3 componentes conectados
Grafos

14

Definiciones

rbol: grafo conectado sin ciclos.


Bosque: coleccin de rboles.

Grafo completo: todos los pares de vrtices son adyacentes. (m = n*(n-1)/2)


En un grafo no dirigido G con n vrtices y m aristas se cumple lo siguiente:
Si G es conectado, entonces m n - 1
Si G es un rbol, entonces m = n - 1
Si G es un bosque, entonces m n - 1

Grafos

15

Definiciones

rbol de cubrimiento de un grafo G: subgrafo que


es un rbol.
contiene todos los vrtices de G.

El fallo de una arista desconecta el sistema (menos


tolerante a fallos).

Grafos

16

Definiciones

Un grafo est etiquetado si asociamos a cada


arista un peso o valor.
Grafo con pesos: grafo etiquetado con valores
numricos.

Grafos

1
3

t
c

17

Definiciones

Circuito de Euler: camino que recorre todas las


aristas una vez y retorna al vrtice de partida.
C
grafo

Puentes de Koenigsberg

Grafos

D
B

Teorema de Euler (1736): un grafo tiene un circuito de Euler


si y solo si todos los vrtices tienen grado par.
Ms definiciones y teoremas en Teora de Grafos.

18

El tipo de dato abstracto Grafo

El TDA Grafo es un contenedor de posiciones que almacena los vrtices y las aristas del grafo.
Operaciones para la informacin posicional:

Grafos

tamano(), devuelve el nmero de vrtices ms el nmero de aristas de G.


estaVacio()
elementos()
posiciones()
reemplazar(p, r)
intercambiar(p, q)
donde p y q indican posiciones, y r indica un elemento de informacin.

19

El tipo de dato abstracto Grafo

Operaciones generales: (v: vrtice, e: arista, o: elemento de


informacin)

numVertices()
numAristas()
vertices()
aristas()
grado(v)
verticesAdyacentes(v)
aristasIncidentes(v)
verticesFinales(e)
opuesto(v, e)
esAdyacente(v, w)
Grafos

Devuelve el nmero de vrtices de G


Devuelve el nmero de aristas de G
Devuelve una lista de los ndices de los vrtices
de G
Devuelve una lista de los ndices de las aristas de G
Devuelve el grado de v
Devuelve una lista de los vrtices adyacentes a v
Devuelve una lista de las aristas incidentes en v
Devuelve un array de tamao con los vrtices
finales de e
Devuelve los puntos extremos de la arista e
diferente a v
Devuelve verdadero si los vrtices v y w son
adyacentes
20

El tipo de dato abstracto Grafo

Operaciones con aristas dirigidas:


aristasDirigidas()
aristasNodirigidas()

Devuelve una lista de todas las aristas dirigidas


Devuelve una lista de todas las aristas no
dirigidas
gradoEnt(v)
Devuelve el grado de entrada de v
gradoSalida(v)
Devuelve el grado de salida de v
aristasIncidentesEnt(v) Devuelve una lista de todas las aristas de
entrada a v
aristasIncidentesSal(v) Devuelve una lista de todas las aristas de salida a v
verticesAdyacentesEnt(v) Devuelve una lista de todas las aristas
adyacentes a v a travs de las aristas de entrada a v
verticesAdyacentesSal(v) Devuelve una enumeracin de todas las aristas
adyacentes a v a travs de las aristas de salida a v
destino(e)
Devuelve el destino de la arista dirigida e
origen(e)
Devuelve el origen de la arista dirigida e
esDirigida(e)
Devuelve verdadero si la arista e es dirigida
Grafos

21

El tipo de dato abstracto Grafo

Operaciones para actualizar grafos:


insertaArista(v, w, o)

Inserta y devuelve una arista no dirigida entre


los vrtices v y w, almacenando el objeto o en
esta posicin

insertaAristaDirigida(v, w, o) Inserta y devuelve una arista dirigida entre los


vrtices v y w, almacenando el objeto o en esta
posicin
insertaVertice(o)

Inserta y devuelve un nuevo vrtice


almacenando el objeto o en esta posicin

eliminaVertice(v)

Elimina vrtice v y todas las aristas incidentes

eliminaArista(e)

Elimina arista e

convierteNoDirigida(e)

Convierte la arista e en no dirigida

invierteDireccion(e)

Invierte la direccin de la arista dirigida e

asignaDireccionDesde(e, v) Produce arista dirigida e salga del vrtice v


asignaDireccionA(e, v)
Grafos

Produce arista dirigida e entrante al vrtice v


22

Estructuras de datos para Grafos

Se necesita almacenar los vrtices y las aristas


del grafo y realizar eficientemente las
operaciones del TDA Grafo.

Las estructuras de datos usuales son:


Lista de aristas.
Lista de adyacencia.
Matriz de adyacencia.

Grafos

23

Lista de Aristas

La estructura lista de aristas almacena los


vrtices y las aristas en secuencias sin ordenar.

Fcil de implementar.

Hallar las aristas incidentes sobre un determinado


vrtice es ineficiente porque requiere el examen
entero de la estructura que almacena las aristas.
1

4
Grafos

4
24

Eficiencia de la estructura Lista de Aristas


Operacin
tamano, estaVacio, remplazarElemento,
intercambiar
numVertices, numAristas

O(1)
O(1)

vertices

O(n)

aristas, aristasDirigidas, aristasNodirigidas

O(m)

elementos, posiciones
verticesFinales, opuesto, origen, destino,
esDirigida, grado, gradoEnt, gradoSalida
aristasIncidentes, aristasIncidentesEnt,
aristasIncidentesSal, verticesAdyacentes,
verticesAdyacentesEnt, verticesdyacentesSal
esAdyacente

Grafos

Tiempo

O(n + m)
O(1)
O(m)
O(m)

aristasIncidentes, aristasIncidentesEnt,
aristasIncidentesSal, verticesAdyacentes,
verticesAdyacentesEnt, verticesdyacentesSal

O(1)

insertaVertice

O(1)

eliminaVertice

O(m)

Espacio requerido

O(n + m)
25

Lista de Adyacencia

Lista de adyacencia del vrtice v: secuencia de


vrtices adyacentes a v.

Representa el grafo por las listas de adyacencia


de todos los vrtices.

Es la estructura ms usada para representar


grafos con pocas aristas (dispersos).
a

1
e

4
Grafos

2
b

1
2
3
4

2
3
4
2

a
b
c
e

3
26

Eficiencia de la estructura Lista de


Adyacencia
Operacin

tamano, estaVacio, remplazarElemento,


intercambiar
numVertices, numAristas

O(1)
O(1)

vertices

O(n)

aristas, aristasDirigidas, aristasNodirigidas

O(m)

elementos, posiciones
verticesFinales, opuesto, origen, destino,
esDirigida, grado, gradoEnt, gradoSalida
aristasIncidentes, aristasIncidentesEnt,
aristasIncidentesSal, verticesAdyacentes,
verticesAdyacentesEnt, verticesdyacentesSal
esAdyacente

Grafos

Tiempo

O(n + m)
O(1)
O(grado(v))
O(min(grado(u), grado(v))

aristasIncidentes, aristasIncidentesEnt,
aristasIncidentesSal, verticesAdyacentes,
verticesAdyacentesEnt, verticesdyacentesSal

O(1)

insertaVertice

O(1)

eliminaVertice

O(grado(v))

Espacio requerido

O(n + m)
27

Matriz de Adyacencia

Matriz M[i][j] con entradas para todos los pares


de vrtices.
En grafos no etiquetados:
M[i][j] = verdadero, si hay una arista (i, j) en el grafo.
M[i][j] = falso, si no hay una arista (i, j) en el grafo.

En grafos no dirigidos: M[i][j] = M[j][i]. La matriz es


simtrica.
1

2
1
2
3
4

4
Grafos

1
F
V
F
V

2
V
F
V
V

3
F
V
F
V

4
V
V
V
F

3
28

Matriz de Adyacencia
En grafos etiquetados:
M[i][j] = atributo de la arista (i, j) en el grafo, indicador especial
si no hay una arista (i, j).

Es la estructura ms usada para representar


grafos con muchas aristas (densos).

1
e

4
Grafos

2
b

1
2
3
4

1
-

2
a
e

3
b
-

4
d
c
29

Eficiencia de la estructura Matriz de Adyacencia


Operacin
tamano, estaVacio, remplazarElemento,
intercambiar
numVertices, numAristas

O(1)
O(1)

vertices

O(n)

aristas, aristasDirigidas, aristasNodirigidas

O(m)

elementos, posiciones
verticesFinales, opuesto, origen, destino,
esDirigida, grado, gradoEnt, gradoSalida
aristasIncidentes, aristasIncidentesEnt,
aristasIncidentesSal, verticesAdyacentes,
verticesAdyacentesEnt, verticesdyacentesSal
esAdyacente

Grafos

Tiempo

O(n + m)
O(1)
O(n)
O(1)

aristasIncidentes, aristasIncidentesEnt,
aristasIncidentesSal, verticesAdyacentes,
verticesAdyacentesEnt, verticesdyacentesSal

O(1)

insertaVertice

O(n2)

eliminaVertice

O(n2)

Espacio requerido

O(n2)
30

Indice
1. Introduccin.
2. Definiciones y representacin.
3. Recorridos en grafos.
4. Algoritmos de caminos ms cortos.
5. rbol de cubrimiento de costo mnimo.
6. Flujo en redes. Flujo mximo.

Grafos

31

También podría gustarte