Download - Teoría de Grafos - eva.fing.edu.uy
![Page 1: Teoría de Grafos - eva.fing.edu.uy](https://reader035.vdocuments.pub/reader035/viewer/2022081700/62d97a4dd65c6962303a5425/html5/thumbnails/1.jpg)
Teoría de Grafos
Herramientas de programación para procesamiento de señales
![Page 2: Teoría de Grafos - eva.fing.edu.uy](https://reader035.vdocuments.pub/reader035/viewer/2022081700/62d97a4dd65c6962303a5425/html5/thumbnails/2.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081700/62d97a4dd65c6962303a5425/html5/thumbnails/3.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081700/62d97a4dd65c6962303a5425/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081700/62d97a4dd65c6962303a5425/html5/thumbnails/5.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081700/62d97a4dd65c6962303a5425/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081700/62d97a4dd65c6962303a5425/html5/thumbnails/7.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081700/62d97a4dd65c6962303a5425/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081700/62d97a4dd65c6962303a5425/html5/thumbnails/9.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081700/62d97a4dd65c6962303a5425/html5/thumbnails/10.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081700/62d97a4dd65c6962303a5425/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081700/62d97a4dd65c6962303a5425/html5/thumbnails/12.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081700/62d97a4dd65c6962303a5425/html5/thumbnails/13.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081700/62d97a4dd65c6962303a5425/html5/thumbnails/14.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081700/62d97a4dd65c6962303a5425/html5/thumbnails/15.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081700/62d97a4dd65c6962303a5425/html5/thumbnails/16.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081700/62d97a4dd65c6962303a5425/html5/thumbnails/17.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081700/62d97a4dd65c6962303a5425/html5/thumbnails/18.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081700/62d97a4dd65c6962303a5425/html5/thumbnails/19.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081700/62d97a4dd65c6962303a5425/html5/thumbnails/20.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081700/62d97a4dd65c6962303a5425/html5/thumbnails/21.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081700/62d97a4dd65c6962303a5425/html5/thumbnails/22.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081700/62d97a4dd65c6962303a5425/html5/thumbnails/23.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081700/62d97a4dd65c6962303a5425/html5/thumbnails/24.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081700/62d97a4dd65c6962303a5425/html5/thumbnails/25.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081700/62d97a4dd65c6962303a5425/html5/thumbnails/26.jpg)
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)