grafos n.
Download
Skip this Video
Download Presentation
Grafos

Loading in 2 Seconds...

play fullscreen
1 / 31

Grafos - PowerPoint PPT Presentation


  • 291 Views
  • Uploaded on

10. 1. 2. 2. b. d. 2. 45. 20. 3. 55. 4. 25. s. 40. t. 1. 30. 5. 3. 25. 3. 3. 2. c. a. 50. 15. 4. Grafos. Indice general. 1. Introducción. 2. Definiciones y representación. 3. Recorridos en grafos. 4. Algoritmos de caminos más cortos.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Grafos' - dom


Download Now An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
grafos

10

1

2

2

b

d

2

45

20

3

55

4

25

s

40

t

1

30

5

3

25

3

3

2

c

a

50

15

4

Grafos

indice general
Indice general

1. Introducción.

2. Definiciones y representación.

3. Recorridos en grafos.

4. Algoritmos de caminos más cortos.

5. Árbol de cubrimiento de costo mínimo.

6. Flujo en redes. Flujo máximo.

indice
Indice
  • Introducción.
  • Definiciones.
  • Tipo de dato abstracto grafo.
  • Estructuras de datos para grafos.
    • Lista de aristas.
    • Lista de adyacencia.
    • Matriz de adyacencia.
introducci n
Introducción
  • Los grafos se usan para modelar problemas definidos en términos de relaciones o conexiones entre objetos.
  • Tienen un amplio uso en ingeniería para representar redes de todo tipo:
    • transporte (tren, carretera, avión),
    • servicios (comunicación, eléctrica, gas, agua),
    • de actividades en el planeamiento de proyectos, etc.
qu es un grafo

a

b

c

d

e

¿Qué es un grafo?
  • Un grafo G = (V, E) está compuesto de:

V : conjunto de vértices o nodos

E : conjunto de aristas o arcos que

conectan los vértices en V

  • Una arista e = (v, w) es un par de vértices
  • Ejemplo:

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

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

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

(d, e) }

aplicaciones

D(2)

A(3)

inicio

I(1)

C(4)

E(3)

final

B(2)

Aplicaciones
  • Tiempo de vuelos aéreos
  • Grafo de transiciones (AFD)

2

b

2

Santander

Barcelona

b

Coruña

1

2

inicio

1

b

a

b

0

1

2

3

Madrid

4

a

2

2

Valencia

3

Sevilla

a

a

  • Grafo asociado a un dibujo de líneas (visión artificial)
  • Planificación de tareas

(Pert/CPM)

definiciones

u

v

u

v

Definiciones
  • Arista dirigida: par ordenado (u, v)
  • Arista no dirigida: par no ordenado (u, v)
  • 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.
definiciones1
Definiciones
  • Vértices finales o extremos de la arista: vértices unidos por una arista.
    • Vértice origen: primer vértice de una arista dirigida.
    • Vértice destino: segundo vértice de una arista dirigida.
  • Arista incidente en un vértice: si el vértice es uno de los vértices de la arista.
  • Aristas salientes de un vértice: aristas dirigidas cuyo origen es ese vértice.
  • Aristas entrantes de un vértice: aristas dirigidas cuyo destino es ese vértice.

a

b

definiciones2

Vértices adyacentes:

a = { b, c, d }

b = { e }

c = { a, d, e }

d = { a, c }

e = { d }

a

b

c

d

e

Definiciones
  • Vértices adyacentes: vértices finales de una arista.
    • Un vértice w es adyacente a v sí y sólo si (v, w)

(ó (w,v)) pertenece a E.

    • En grafos no dirigidos la relación de adyacencia es simétrica.
    • En grafos dirigidos la relación de adyacencia no es simétrica.
definiciones3
Definiciones
  • Grado de un vértice v (grado(v)) en un grafo: número de aristas incidentes en v o número de vértices adyacentes.
    • En un digrafo:
      • Grado entrante de un vértice v (graent(v)): número de aristas entrantes a v.
      • Grado saliente de un vértice v (grasal(v)): número de aristas salientes de v.
    • Si G es un grafo con m aristas, entonces
    • Si G es un digrafo con m aristas, entonces
definiciones4

a

b

a

b

c

c

d

e

d

e

Definiciones
    • Sea G es un grafo con n vértices 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 vértices <v1, v2,…., vn> tal que (vi, vi+1) son adyacentes.

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

C2= { b, e, d, c}

definiciones5

a

b

c

d

e

Definiciones
  • Camino simple: todos los vértices son distintos.
  • Longitud de un camino: número de aristas del camino = n – 1.
  • Ciclo: camino simple que tiene el mismo vértice inicial y final.

Camino simple = { a, b, e}

Ciclo = { c, e, d, c}

definiciones6

a

b

c

d

e

Definiciones
  • Dos vértices v, w están conectados si existe un camino de v a w.
  • Grafo conectado (conexo): si hay un camino entre cualquier par de vértices.
    • Si es un grafo dirigido se llama fuertemente conexo.

a

b

c

d

e

No conectado

Conectado

definiciones7
Definiciones
  • Subgrafo: subconjunto de vértices y aristas que forman un grafo.
  • Componente conectado: subgrafo conectado máximo.

3 componentes conectados

definiciones8
Definiciones
  • Árbol: grafo conectado sin ciclos.
  • Bosque: colección de árboles.
  • Grafo completo: todos los pares de vértices son adyacentes. (m = n*(n-1)/2)
  • En un grafo no dirigido G con n vértices 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
definiciones9
Definiciones
  • Árbol de cubrimiento de un grafo G: subgrafo que
    • es un árbol.
    • contiene todos los vértices de G.

El fallo de una arista desconecta el sistema (menos

tolerante a fallos).

definiciones10

2

b

d

2

3

4

s

t

1

3

3

2

c

a

Definiciones
  • Un grafo está etiquetado si asociamos a cada arista un peso o valor.
  • Grafo con pesos: grafo etiquetado con valores numéricos.
definiciones11

C

A

D

B

Definiciones
  • Circuito de Euler: camino que recorre todas las aristas una vez y retorna al vértice de partida.

grafo

Puentes de Koenigsberg

  • Teorema de Euler (1736): un grafo tiene un circuito de Euler si y solo si todos los vértices tienen grado par.
  • Más definiciones y teoremas en Teoría de Grafos.
el tipo de dato abstracto grafo
El tipo de dato abstracto Grafo
  • El TDA Grafo es un contenedor de posiciones que almacena los vértices y las aristas del grafo.
  • Operaciones para la información posicional:
    • tamano(), devuelve el número de vértices más el número 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 información.

el tipo de dato abstracto grafo1
El tipo de dato abstracto Grafo
  • Operaciones generales: (v: vértice, e: arista, o: elemento de información).

numVertices() Devuelve el número de vértices de G

numAristas() Devuelve el número de aristas de G

vertices() Devuelve una lista de los índices de los vértices de G

aristas() Devuelve una lista de los índices de las aristas de G

grado(v) Devuelve el grado de v

verticesAdyacentes(v) Devuelve una lista de los vértices adyacentes a v

aristasIncidentes(v) Devuelve una lista de las aristas incidentes en v

verticesFinales(e) Devuelve un array de tamaño con los vértices

finales de e

opuesto(v, e) Devuelve los puntos extremos de la arista e

diferente a v

esAdyacente(v, w) Devuelve verdadero si los vértices v y w son

adyacentes

el tipo de dato abstracto grafo2
El tipo de dato abstracto Grafo
  • Operaciones con aristas dirigidas:

aristasDirigidas() Devuelve una lista de todas las aristas dirigidas

aristasNodirigidas() 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 través de las aristas de entrada a v

verticesAdyacentesSal(v) Devuelve una enumeración de todas las aristas

adyacentes a v a través 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

el tipo de dato abstracto grafo3
El tipo de dato abstracto Grafo
  • Operaciones para actualizar grafos:
    • insertaArista(v, w, o) Inserta y devuelve una arista no dirigida entre

los vértices v y w, almacenando el objeto o en

esta posición

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

vértices v y w, almacenando el objeto o en esta

posición

    • insertaVertice(o) Inserta y devuelve un nuevo vértice

almacenando el objeto o en esta posición

    • eliminaVertice(v) Elimina vértice v y todas las aristas incidentes
    • eliminaArista(e) Elimina arista e
    • convierteNoDirigida(e) Convierte la arista e en no dirigida
    • invierteDireccion(e) Invierte la dirección de la arista dirigida e
    • asignaDireccionDesde(e, v) Produce arista dirigida e salga del vértice v
    • asignaDireccionA(e, v) Produce arista dirigida e entrante al vértice v
estructuras de datos para grafos
Estructuras de datos para Grafos
  • Se necesita almacenar los vértices 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.
lista de aristas

e

d

c

b

a

Lista de Aristas
  • La estructura lista de aristas almacena los vértices y las aristas en secuencias sin ordenar.
  • Fácil de implementar.
  • Hallar las aristas incidentes sobre un determinado vértice es ineficiente porque requiere el examen entero de la estructura que almacena las aristas.

a

1

2

e

d

b

1

2

3

4

4

3

c

eficiencia de la estructura lista de aristas

Operación

Tiempo

tamano, estaVacio, remplazarElemento,

intercambiar

O(1)

numVertices, numAristas

O(1)

vertices

O(n)

aristas, aristasDirigidas, aristasNodirigidas

O(m)

elementos, posiciones

O(n + m)

verticesFinales, opuesto, origen, destino,

esDirigida, grado, gradoEnt, gradoSalida

O(1)

aristasIncidentes, aristasIncidentesEnt,

aristasIncidentesSal, verticesAdyacentes,

verticesAdyacentesEnt, verticesdyacentesSal

O(m)

esAdyacente

O(m)

aristasIncidentes, aristasIncidentesEnt,

aristasIncidentesSal, verticesAdyacentes,

verticesAdyacentesEnt, verticesdyacentesSal

O(1)

insertaVertice

O(1)

eliminaVertice

O(m)

Espacio requerido

O(n + m)

Eficiencia de la estructura Lista de Aristas
lista de adyacencia

4

d

2

a

1

3

b

2

4

c

3

2

e

4

Lista de Adyacencia
  • Lista de adyacencia del vértice v: secuencia de vértices adyacentes a v.
  • Representa el grafo por las listas de adyacencia de todos los vértices.
  • Es la estructura más usada para representar grafos con pocas aristas (dispersos).

a

1

2

e

d

b

4

3

c

eficiencia de la estructura lista de adyacencia

Operación

Tiempo

tamano, estaVacio, remplazarElemento,

intercambiar

O(1)

numVertices, numAristas

O(1)

vertices

O(n)

aristas, aristasDirigidas, aristasNodirigidas

O(m)

elementos, posiciones

O(n + m)

verticesFinales, opuesto, origen, destino,

esDirigida, grado, gradoEnt, gradoSalida

O(1)

aristasIncidentes, aristasIncidentesEnt,

aristasIncidentesSal, verticesAdyacentes,

verticesAdyacentesEnt, verticesdyacentesSal

O(grado(v))

esAdyacente

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)

Eficiencia de la estructura Lista de Adyacencia
matriz de adyacencia

F

V

V

1

F

V

V

2

V

F

V

F

F

V

3

V

V

F

4

V

1

2

4

3

Matriz de Adyacencia
  • Matriz M[i][j] con entradas para todos los pares de vértices.
    • 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 simétrica.

1

2

3

4

matriz de adyacencia1

-

-

1

-

-

e

-

-

2

a

b

-

3

-

-

-

-

d

4

c

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 más usada para representar grafos con muchas aristas (densos).

a

1

2

1

e

d

b

2

3

4

4

3

c

eficiencia de la estructura matriz de adyacencia

Operación

Tiempo

tamano, estaVacio, remplazarElemento,

intercambiar

O(1)

numVertices, numAristas

O(1)

vertices

O(n)

aristas, aristasDirigidas, aristasNodirigidas

O(m)

elementos, posiciones

O(n + m)

verticesFinales, opuesto, origen, destino,

esDirigida, grado, gradoEnt, gradoSalida

O(1)

aristasIncidentes, aristasIncidentesEnt,

aristasIncidentesSal, verticesAdyacentes,

verticesAdyacentesEnt, verticesdyacentesSal

O(n)

esAdyacente

O(1)

aristasIncidentes, aristasIncidentesEnt,

aristasIncidentesSal, verticesAdyacentes,

verticesAdyacentesEnt, verticesdyacentesSal

O(1)

insertaVertice

O(n2)

eliminaVertice

O(n2)

Espacio requerido

O(n2)

Eficiencia de la estructura Matriz de Adyacencia
indice1
Indice

1. Introducción.

2. Definiciones y representación.

3. Recorridos en grafos.

4. Algoritmos de caminos más cortos.

5. Árbol de cubrimiento de costo mínimo.

6. Flujo en redes. Flujo máximo.