principios de computadoras ii

37
Principios de Computadoras II Grafos Departamento de Ingeniería Electrónica y Computadoras Universidad Nacional del Sur Ricardo Coppo [email protected]

Upload: others

Post on 18-Apr-2022

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Principios de Computadoras II

Principios de Computadoras II

Grafos

Departamento de Ingeniería Electrónica y ComputadorasUniversidad Nacional del Sur

Ricardo [email protected]

Page 2: Principios de Computadoras II

Principios de Computadoras IIGrafosRicardo Coppo

2Universidad Nacional del Sur

Definición conceptual� Un grafo G = ( V, A ) es una estructura que

posee un conjunto de vértices V y un conjunto de aristas A.

� Una arista es un par de vértices (u,v). Las aristas también se conocen como arcos.

� Si el par (u,v) es ordenado, entonces el grafo es dirgido.

Page 3: Principios de Computadoras II

Principios de Computadoras IIGrafosRicardo Coppo

3Universidad Nacional del Sur

Ejemplo gráfico

a

b

c

d

e

f

Grafo no dirigidoV = { a, b, c, d, e, f }A = { (a,b), (a,c), (b,d), (c,d), (d,e), (b,f), (d,f) }

bd

a ce

f

Grafo dirigidoV = { a, b, c, d, e, f }A = { (a,b), (b,c), (b,d), (c,e), (d,e), (e,f) }

Page 4: Principios de Computadoras II

Principios de Computadoras IIGrafosRicardo Coppo

4Universidad Nacional del Sur

Ejemplos � Correlativas de materias para un plan de

estudios

� Esquema de conexión de una red de computadoras

� Red vial de una municipalidad

Page 5: Principios de Computadoras II

Principios de Computadoras IIGrafosRicardo Coppo

5Universidad Nacional del Sur

Grafos ponderados� Un grafo ponderado es aquel a la que se le

asigna un “costo” o valor a cada arista.

a

b

c

d

e

f

4 3

2

7

9

2

Page 6: Principios de Computadoras II

Principios de Computadoras IIGrafosRicardo Coppo

6Universidad Nacional del Sur

Grafos ponderados� Esquema de un circuito electrónico con

impedancias

� Workflow de un proceso de fabricación (cada vértice es un hito del proyecto y cada arista un proceso). Cada proceso se desarrolla en t días.

� Redes de computadoras ponderados por costo de transmisión de cada paquete ($ o velocidad)

Page 7: Principios de Computadoras II

Principios de Computadoras IIGrafosRicardo Coppo

7Universidad Nacional del Sur

Definiciones� Un vértice w es adyacente a v si y solo si

(w,v) es una arista del grafo.

� Observar que si el grafo es dirigido� (w,v) # (v,w)

v w

v

w

v es adyacente de ww es adyacente de v

v es adyacente de w

Page 8: Principios de Computadoras II

Principios de Computadoras IIGrafosRicardo Coppo

8Universidad Nacional del Sur

Definiciones� Un camino en un grafo es una secuencia de

vértices w1,w2,w3,…, wn si existen las aristas que (w1,w2), (w2,w3) … (wn-1, wn)

� La longitud de un camino es el número de aristas que el mismo posee. (n-1)

v vLongitud 0 Longitud 1

Page 9: Principios de Computadoras II

Principios de Computadoras IIGrafosRicardo Coppo

9Universidad Nacional del Sur

Definiciones� Un camino es simple si todos los vértices son

distintos con excepción del primero y del último que podrían ser el mismo.

� Un ciclo es un camino que nace y termina en el mismo vértice y cuya longitud mínima es 1.

� Un ciclo es simple si el camino que lo define es simple.

Page 10: Principios de Computadoras II

Principios de Computadoras IIGrafosRicardo Coppo

10Universidad Nacional del Sur

Ejemplos

a

b

c

d

e

f

Ciclo simple

a

b

c

d

e

f

Ciclo no simple

Page 11: Principios de Computadoras II

Principios de Computadoras IIGrafosRicardo Coppo

11Universidad Nacional del Sur

Definiciones� Un grafo es acíclico si no presenta ningún ciclo

� Un grafo no dirigido es conexo si hay un camino desde cualquier vértice a cualquier otro

� Si el grafo es dirigido y presenta esta propiedad se dice que es fuertemente conexo. Si solo es conexo el subgrafo no dirigido subyacente se dice que es débilmente conexo

Page 12: Principios de Computadoras II

Principios de Computadoras IIGrafosRicardo Coppo

12Universidad Nacional del Sur

Ejemplos

A

B C D E

F G I JH

K

Grafo acíclico

Page 13: Principios de Computadoras II

Principios de Computadoras IIGrafosRicardo Coppo

13Universidad Nacional del Sur

Ejemplos

bd

a ce

f

bd

a ce

f

Fuertemente conexo Débilmente conexo

Page 14: Principios de Computadoras II

Principios de Computadoras IIGrafosRicardo Coppo

14Universidad Nacional del Sur

Formas de representación� ¿Cómo introducir y almacenar en la memoria

de la computadora una estructura gráfica?

� Matriz de adyacencia

� Lista de adyacencia

Page 15: Principios de Computadoras II

Principios de Computadoras IIGrafosRicardo Coppo

15Universidad Nacional del Sur

Matriz de adyacencia

1

3 4

25

1 2 3 4 5

1 1 1 1 0 0

2 1 1 1 0 1

3 1 1 1 1 0

4 0 0 1 1 1

5 0 1 0 1 1

Page 16: Principios de Computadoras II

Principios de Computadoras IIGrafosRicardo Coppo

16Universidad Nacional del Sur

Matriz de adyacencia

1

3 4

25

1 2 3 4 5

1 0 1 1 0 0

2 0 0 1 0 1

3 0 0 0 1 0

4 0 0 0 0 1

5 0 0 0 0 0

Desde

Hasta

Page 17: Principios de Computadoras II

Principios de Computadoras IIGrafosRicardo Coppo

17Universidad Nacional del Sur

Matriz de adyacencia

1 2 3 4 5

1 ∞ 5 7 ∞ ∞

2 ∞ ∞ 3 ∞ 9

3 ∞ ∞ ∞ 2 ∞

4 ∞ ∞ ∞ ∞ 6

5 ∞ ∞ ∞ ∞ ∞

Desde

Hasta

1

3 4

25

5

7

3

2

9

6

Se utiliza un valor “centinela” en las celdas de los arcos no existentes. El “0” puede confundirse como costo nulo.

Page 18: Principios de Computadoras II

Principios de Computadoras IIGrafosRicardo Coppo

18Universidad Nacional del Sur

Matriz de adyacencia� Problemas con esta representación:

� Se almacena mucha información de arcos no existentes. (Tablas “ralas”)

� El uso de memoria es del orden O(V2). (Crece con el cuadrado de la cantidad de vértices)

Page 19: Principios de Computadoras II

Principios de Computadoras IIGrafosRicardo Coppo

19Universidad Nacional del Sur

Listas de adyacencia

1

3 4

25

1 2

2

3

4

5

3

3 5

4

5

Si el grafo es ponderado el nodoalmacena el costo también

Page 20: Principios de Computadoras II

Principios de Computadoras IIGrafosRicardo Coppo

20Universidad Nacional del Sur

Algoritmos principales� Operaciones de creación, inserción y

eliminación de vértices y aristas en el grafo.

� Ordenación topológica

� Caminos de costo mínimo

Page 21: Principios de Computadoras II

Principios de Computadoras IIGrafosRicardo Coppo

21Universidad Nacional del Sur

Ordenación topológica� Es una ordenación de los vértices de un

grafo dirigido acíclico tal que si hay un camino de vi a vj entonces vi precede a vj en la secuencia.

1

3 4

25

Orden topológico = { 1, 2, 3, 4, 5 }

Page 22: Principios de Computadoras II

Principios de Computadoras IIGrafosRicardo Coppo

22Universidad Nacional del Sur

Grado de entrada � Se define como grado de entrada de un

vértice en un grafo dirigido acíclico a la cantidad de aristas que finalizan en dicho vértice.

Grado de entrada = 3

Page 23: Principios de Computadoras II

Principios de Computadoras IIGrafosRicardo Coppo

23Universidad Nacional del Sur

Ordenación topológica

1 2

5

4

6

31 2 53 4 6

0 2 12 1 1

Orden topológico = { }

Page 24: Principios de Computadoras II

Principios de Computadoras IIGrafosRicardo Coppo

24Universidad Nacional del Sur

Ordenación topológica

1 2

5

4

6

31 2 53 4 6

0 2 12 1 1

Orden topológico = { 1 }

Page 25: Principios de Computadoras II

Principios de Computadoras IIGrafosRicardo Coppo

25Universidad Nacional del Sur

Ordenación topológica

1 2

5

4

6

31 2 53 4 6

0 2 12 1 1

1 02 1 1

Orden topológico = { 1 }

Page 26: Principios de Computadoras II

Principios de Computadoras IIGrafosRicardo Coppo

26Universidad Nacional del Sur

Ordenación topológica

1 2

5

4

6

31 2 53 4 6

0 2 12 1 1

1 02 1 1

Orden topológico = { 1, 5 }

Page 27: Principios de Computadoras II

Principios de Computadoras IIGrafosRicardo Coppo

27Universidad Nacional del Sur

Ordenación topológica

1 2

5

4

6

31 2 53 4 6

0 2 12 1 1

1 02 1 1

0 2 1 1Orden topológico = { 1, 5 }

Page 28: Principios de Computadoras II

Principios de Computadoras IIGrafosRicardo Coppo

28Universidad Nacional del Sur

Ordenación topológica

1 2

5

4

6

31 2 53 4 6

0 2 12 1 1

1 02 1 1

0 2 1 1Orden topológico = { 1, 5, 2 }

Page 29: Principios de Computadoras II

Principios de Computadoras IIGrafosRicardo Coppo

29Universidad Nacional del Sur

Ordenación topológica

1 2

5

4

6

31 2 53 4 6

0 2 12 1 1

1 02 1 1

0 2 1 1

1 1 0

Orden topológico = { 1, 5, 2 }

Page 30: Principios de Computadoras II

Principios de Computadoras IIGrafosRicardo Coppo

30Universidad Nacional del Sur

Ordenación topológica

1 2

5

4

6

31 2 53 4 6

0 2 12 1 1

1 02 1 1

0 2 1 1

1 1 0

Orden topológico = { 1, 5, 2, 6 }

Page 31: Principios de Computadoras II

Principios de Computadoras IIGrafosRicardo Coppo

31Universidad Nacional del Sur

Ordenación topológica

1 2

5

4

6

31 2 53 4 6

0 2 12 1 1

1 02 1 1

0 2 1 1

1 1 0

0 1

Orden topológico = { 1, 5, 2, 6 }

Page 32: Principios de Computadoras II

Principios de Computadoras IIGrafosRicardo Coppo

32Universidad Nacional del Sur

Ordenación topológica

1 2

5

4

6

31 2 53 4 6

0 2 12 1 1

1 02 1 1

0 2 1 1

1 1 0

0 1

Orden topológico = { 1, 5, 2, 6, 3 }

Page 33: Principios de Computadoras II

Principios de Computadoras IIGrafosRicardo Coppo

33Universidad Nacional del Sur

Ordenación topológica

1 2

5

4

6

31 2 53 4 6

0 2 12 1 1

1 02 1 1

0 2 1 1

1 1 0

0 1

0

Orden topológico = { 1, 5, 2, 6, 3 }

Page 34: Principios de Computadoras II

Principios de Computadoras IIGrafosRicardo Coppo

34Universidad Nacional del Sur

Ordenación topológica

1 2

5

4

6

31 2 53 4 6

0 2 12 1 1

1 02 1 1

0 2 1 1

1 1 0

0 1

0

Orden topológico = { 1, 5, 2, 6, 3, 4 }

Page 35: Principios de Computadoras II

Principios de Computadoras IIGrafosRicardo Coppo

35Universidad Nacional del Sur

Ordenación topológica� Algoritmo

1. Calcular el grado de entrada para todos los vértices del grafo

2. Identificar los vértices con grado 0 (puede haber mas de uno) y asignarles un número de orden

3. Restar 1 al grado de entrada a todos los vértices adyacentes a los identificados en el punto anterior.

4. Si quedan vértices sin ordenar, repetir los pasos 2 y 3.

Page 36: Principios de Computadoras II

Principios de Computadoras IIGrafosRicardo Coppo

36Universidad Nacional del Sur

Ordenación topológica� Ideas para la implementación

� Usar listas enlazadas para almacenar los vértices “ordenados” y “sinProcesar”. A medida que se procesa el grafico se pasan los nodos de una lista a otra.

� Puede ser necesaria una clase auxiliar que almacena la información del vértice y del grado de entrada actual para facilitar el uso de las listas.

� No debe destruirse el grafo original.

Page 37: Principios de Computadoras II

Principios de Computadoras II

Grafos

Departamento de Ingeniería Electrónica y ComputadorasUniversidad Nacional del Sur

Ricardo [email protected]