teoría de grafos - eva.fing.edu.uy

26
Teoría de Grafos Herramientas de programación para procesamiento de señales

Upload: others

Post on 21-Jul-2022

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Teoría de Grafos - eva.fing.edu.uy

Teoría de Grafos

Herramientas de programación para procesamiento de señales

Page 2: Teoría de Grafos - eva.fing.edu.uy

Grafos Herramientas de programación 2

Indice• Nociones básicas:

– Definiciones

– Ejemplos

– Propiedades

• Nociones avanzadas:

– Grafos planares

– Árboles

– Representación en computadora

• Algoritmos clásicos:

– Búsqueda en profundidad

– Búsqueda en anchura

– Prim y Kruskal

• Algoritmos de ordenamiento:

– Mergesort

– Heapsort

– Bubblesort

• Estructuras de datos:

– Abstractas:

• Lists

• Maps

• Queues

• Arboles

– Concretas:

• Heap

• Complejidad

– Estimación

– NP-hard

• Problemas clásicos

– Árboles generadores

– Del viajante

– De Euler

– Caminos mínimos

Page 3: Teoría de Grafos - eva.fing.edu.uy

Grafos Herramientas de programación 3

Contenido

• Conceptos básicos• Conceptos Avanzados• Problemas Clásicos

Page 4: Teoría de Grafos - eva.fing.edu.uy

Grafos Herramientas de programación 4

• Definición:– Conjunto no vacío V: vértices– Conjunto E: aristas

• Representación gráfica• Definiciones:

– Vértices adyacentes: existe e, tal que e=(a,b)– a y e son incidentes– Vértices independientes: no existe e– Aristas adyacentes/independientes: vértice en común – Grado de un vértice: no. de aristas indicentes en a– Orden: |V|, grado de conexión |E|– No se permiten “aristas paralelas” o “autoconexiones”

Definiciones (1)

Page 5: Teoría de Grafos - eva.fing.edu.uy

Grafos Herramientas de programación 5

• Grafo dirigido:– par ordenado (a,b)!=(b,a)

• Ejemplos:– Calles (dirigido)– Red de computadoras (no-dirigido)

Definiciones (2)

Page 6: Teoría de Grafos - eva.fing.edu.uy

Grafos Herramientas de programación 6

Definiciones (3)• Grafo ponderado:

– Valor asignado a rama: w(e)– O a un vértice: u(v)– Estático o dinámico

• ejemplo:– Distancias entre ciudades– Redes de computadoras (retardo)

Page 7: Teoría de Grafos - eva.fing.edu.uy

Grafos Herramientas de programación 7

Definiciones (4)

• Recordatorio: – Los grafos son abstractos

• Isomorfismo:– Relación 1 a 1 entre vértices

Page 8: Teoría de Grafos - eva.fing.edu.uy

Grafos Herramientas de programación 8

Definiciones (5)•Camino:

•Secuencia: v1...v

n

•vi y v

i+1 adyacentes

•Cada nodo aparece una sola vez•Ciclo:

•Camino cerrado

Page 9: Teoría de Grafos - eva.fing.edu.uy

Grafos Herramientas de programación 9

Definiciones (6)•Grafo conexos:

•Para todo: v1...v

n existe un camino que los une

•Subgrafo:•Subconjunto de vértices y aristas

•Componente conexo:•Subgrafo conexo

Page 10: Teoría de Grafos - eva.fing.edu.uy

Grafos Herramientas de programación 10

Definiciones (7)•Tipos de grafos:

•Completo: |E|=n(n-1)/2•Bipartito (completo): |E|=n•Planares: cota superior

Page 11: Teoría de Grafos - eva.fing.edu.uy

Grafos Herramientas de programación 11

Contenido

• Conceptos básicos• Conceptos Avanzados• Problemas Clásicos

Page 12: Teoría de Grafos - eva.fing.edu.uy

Grafos Herramientas de programación 12

Árboles (1)•Grafo conexo sin ciclos:

•N nodos, N-1 aristas•Raíz: cualquiera

Page 13: Teoría de Grafos - eva.fing.edu.uy

Grafos Herramientas de programación 13

Árboles (2)•dirigido:

•Cada nodo tiene un único padre•Raíz: única

Page 14: Teoría de Grafos - eva.fing.edu.uy

Grafos Herramientas de programación 14

Árboles (3)•Algoritmos básicos:

•BFS:•DFS:

•Objetivo: •recorrer todos los nodos•Buscar uno en particular

•Motivación:• resolución de laberintos (C. Trémaux, S. XIX)

•Usos: •recorrer Árboles•Recorrer grafos•Árbol generador

•Derivados:•Prim y Kruskal: árbol generador mínimo

8

3

8

7

2

2

4

31

Page 15: Teoría de Grafos - eva.fing.edu.uy

Grafos Herramientas de programación 15

Árboles (4)•Estado: conjunto de nodos “procesados”•Ejecución:

•DFS: 5, 8, 7, 2, 3, 4, 6, 1•BFS: 1, 2, 3, 4, 6, 5, 7, 8

•Complejidad: |E|•Peor caso, denso: |E|~|V|^2

Page 16: Teoría de Grafos - eva.fing.edu.uy

Grafos Herramientas de programación 16

Representación en computadora (1)•Matriz de adyacencia:

•Convención 1/0 conectado/no conectado•Simple•Útil para grafos densos

•Dirigido: arbitraria•No dirigido: simétrica•Almacenamiento: n^2

Page 17: Teoría de Grafos - eva.fing.edu.uy

Grafos Herramientas de programación 17

Representación en computadora (2)•Ejemplo:

•Cálculo de grado

=2

Page 18: Teoría de Grafos - eva.fing.edu.uy

Grafos Herramientas de programación 18

Representación en computadora (3)•Lista de adyacencia

●Cada nodo tiene su lista de vecinos•Almacenamiento: k.n (promedio)•Más complejo•Eficiente para grafos “ralos”

Abstracta Implementación●Linked list:

●eficiente memoria●Engorroso programación

•Array•Ineficiente memoria•Fácil programación

•C++: std::vector

Page 19: Teoría de Grafos - eva.fing.edu.uy

Grafos Herramientas de programación 19

Representación en computadora (4)•Árbol:

•Mínimo: parent•Comodidad: first_child, next_sibiling

int id

node* parentnode* first_child

node* next_sibling

node

int n

node* root

node[] nodes

tree

*(().root) *(().first_child) *(().first_child)

*(().next_sibling)

*(().first_child)

*(().next_sibling)

*(().next_sibling)

4: *troot = 0x606310n = 7nodes = 0x606250

id  = 6 parent  = 0x0first_child  = 0x6062d0next_sibling = 0x0

id  = 4 parent  = 0x606310first_child  = 0x606250next_sibling = 0x6062f0

id  = 5 parent  = 0x606310first_child  = 0x606290next_sibling = 0x0

id  = 0 parent  = 0x6062d0first_child  = 0x0next_sibling = 0x606270

id  = 1 parent  = 0x6062d0first_child  = 0x0next_sibling = 0x0

id  = 2 parent  = 0x6062f0first_child  = 0x0next_sibling = 0x6062b0

id  = 3 parent  = 0x6062f0first_child  = 0x0next_sibling = 0x0

Page 20: Teoría de Grafos - eva.fing.edu.uy

Grafos Herramientas de programación 20

Contenido

• Conceptos básicos• Conceptos Avanzados• Problemas Clásicos

Page 21: Teoría de Grafos - eva.fing.edu.uy

Grafos Herramientas de programación 21

●Recorrido:●Secuencia de nodos

•Cada nodo puede estar más de una vez•Cada rama aparece sólo una vez

•Circuito: recorrido cerrado•Circuito euleriano

•Todas las ramas de un grafo•Visita los nodos al menos una vez

•Los 7 puentes de Könisberg•Euler 1735

•Condición necesaria:•“Cada vez que entramos, salimos”•Grado par o nulo

Problemas clásicos (1)

Page 22: Teoría de Grafos - eva.fing.edu.uy

Grafos Herramientas de programación 22

Problemas clásicos (2)•Circuito Hamiltoneano

•Visita los nodos exactamente una vez•Problema del viajante:

•Travelling Salesman Problem (TSP): 1930•NP-hard: grafo completo n vértices (n-1)! ciclos

1 2 3 4

Mapa de ciudades importantes de Francia

Page 23: Teoría de Grafos - eva.fing.edu.uy

Grafos Herramientas de programación 23

Problemas clásicos (3)•Camínos mínimos

•Camino de costo mínimo entre dos nodos•E. Dijkstra 1959

Page 24: Teoría de Grafos - eva.fing.edu.uy

Grafos Herramientas de programación 24

Algoritmo de Dijsktra (1)Ingredientes:

•Conjunto T de nodos para los cuales ya se calculó la distancia•Lista dist(v) de distancias de cada nodo v al nodo inicial a•Lista prev(v) de nodos previos: prev(v) es el nodo anterior a v en el camino (mínimo) que va de a a v

Page 25: Teoría de Grafos - eva.fing.edu.uy

Grafos Herramientas de programación 25

Algoritmo de Dijsktra (2)Inicialización:

• T vacío•dist(v)=inf, para todo v!=a•dist(a)=0•prev(v)=NULL, para todo v•Nodo actual u=a

Iteración:•Sea u de V-T tal que u=argmin(dist(v))•Agrego u a T•Sean t los vecinos de v:

•Ver si u es un atajo para llegar a t: d=dist(u)+w(u,t)<dist(t)•Si es cierto, actualizo dist(t)=d, y prev(t)=u

Page 26: Teoría de Grafos - eva.fing.edu.uy

Grafos Herramientas de programación 26

Algoritmo de Dijsktra (3)Propiedades:

•greedy•Óptimo global•Complejidad:

•Ejecución: •Array: O(|V|^2+|E|) = O(|V|^2) •Heap: O((|E|+|V|) log |V|)

•Óptimo: O(|V| log |V|), si |E|~|V|•Peor caso si es denso: 0(|V|)^2), si |E|~|V|^2

•Almacenamiento: •Matriz: |V|^2•Heap: |V|•Aux: 3*N•Total: O(N^2)