Algoritmos y Estructuras de Datos III

Documentos relacionados
Algoritmos y Estructuras de Datos III

Unidad 2: Problemas de camino mínimo

Definición 1.1 Sea G = (V, A) un grafo no dirigido. G se denomina árbol si es conexo y no contiene ciclos.

Árboles. Un grafo no dirigido es un árbol si y sólo si existe una ruta unica simple entre cualquiera dos de sus vértices.

Grafos. 19 de diciembre de 2013

Capítulo 4: Grafos Clase 4: Árboles

ÁRBOLES CRISTIAN ALFREDO MUÑOZ ÁLVAREZ JUAN DAVID LONDOÑO CASTRO JUAN PABLO CHACÓN PEÑA EDUARDO GONZALES

Grafos. Algoritmos y Estructuras de Datos III

5.4 Caminos mínimos: Algoritmo de Dijkstra

Algoritmos para determinar Caminos Mínimos en Grafos

Algoritmos y Estructuras de Datos III Apunte Teórico Primer cuatrimestre

Algoritmo de Kruskal

Planaridad. Algoritmos y Estructuras de Datos III

Árboles. no es un árbol porque no es conexo. Sin embargo, cada componente conexa es un árbol y, este tipo de grafo se llama bosque.

Grafos Eulerianos y Hamiltonianos. Algoritmos y Estructuras de Datos III

Estructura de ciclos en MSDs (Minimally Strong Digraphs)

5.6 Árbol generador de un grafo

Matemáticas Discretas

Caminos y Flujos optimales. Introducción a la Investigación de Operaciones 2007

Definiciones y ejemplos.

Coloreo de vértices Definiciones: Coloreo de Grafos. Cotas para χ Proposición: Si H es un subgrafo de G entonces χ(h) χ(g).

Estructura de Datos Página 1 de 13 ESTRUCTURA DE DATOS

Centro Asociado Palma de Mallorca. Tutor: Antonio Rivero Cuesta

Capítulo 8. Árboles. Continuar

Teoría de redes y optimización en redes

Algoritmos Elementales de Grafos. Agustín J. González ELO-320: Estructura de Datos Y Algoritmos 1er.Sem. 2002

Metaheurísticas y heurísticas. Algoritmos y Estructuras de Datos III

Algoritmos voraces (greedy)

Tema 2: Grafos y Árboles. Algoritmos y Estructuras de Datos 3

Teoría de Grafos Introducción Grafos isomorfos

Algebra Matricial y Teoría de Grafos

Coloreo de Grafos. Algoritmos y Estructuras de Datos III

Análisis y Complejidad de Algoritmos. Arboles Binarios. Arturo Díaz Pérez

Estructuras de Datos y Algoritmos

Representación y manipulación de grafos: caminos, expansión, cortes y flujos

ESTRUCTURAS DE DATOS Y ALGORITMOS

Teoría de grafos y optimización en redes

Un GRAFO O GRAFO NO ORIENTADO es una terna G = {V, A,ϕ } conv

Introducción a la Teoría de Grafos

Gráficas : teoría, aplicaciones e interacciones : II

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

Ciencias de la Computación I

Grafos (principiantes) - Parte I

3.0.-ARBOLES ABARCADORES Y COMPONENTES CONEXOS CONCEPTO DE ARBOL ABARCADOR Y SU RELACION CON LOS RECORRIDOS.

TEORIA DE GRAFOS. Estructuras Discretas Ing. Jenny Paredes Aguilar

Recorridos de Gráficas. comp-420

Francisco J. Hernández López

Introducción a la Teoría de Grafos

Un grafo G = (V, E) se dice finito si V es un conjunto finito.

TEMA 5 El tipo grafo. Tipo grafo

Algoritmos glotones 2 (código de Huffman) mat-151

Tema 15: GRAFOS Algoritmos y estructuras de datos I - Tema 15 1

Coloreo de vértices. Coloreo de Grafos. Cota superior para χ(g) Algoritmos y Estructuras de Datos III. Definiciones:

Guía práctica de estudio 7

El origen: Los puentes de Königsberg. Grafos. Algoritmos y Estructuras de Datos III. Leonhard Euler ( )

Sesión 4: Teoría de Grafos

Problemas y algoritmos sobre Grafos

Árbol ABB equilibrado. Lección: Árboles. Algorítmica II (Tema 4) Lenguajes y Sistemas Informáticos, Universidad Pablo de Olavide 1/ 58

A5 Introducción a la optimización en redes

ARBOLES GENERADORES. Orlando Arboleda Molina. 16 de septiembre de Escuela de Ingeniería de Sistemas y Computación de La Universidad del Valle

Introducción a los árboles. Lección 11

Matemáticas Discretas L. Enrique Sucar INAOE. Teoría de Grafos. Problema de los puentes de Königsberg [Euler]

Grafos. Leopoldo Taravilse. Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires. Training Camp 2012

Matemáticas Discretas Tc1003 Teoría de Grafos

Teoría de Grafos y Árboles. UCR ECCI CI-0111 Estructuras Discretas Prof. Kryscia Daviana Ramírez Benavides

Algoritmos de búsqueda en grafos II

Introducción a la Complejidad Computacional

Matemática computable

Recorridos de Gráficas

Planaridad. Algoritmos y Estructuras de Datos III

Grafos. Amalia Duch Brown Octubre de 2007

Grafos. AMD Grado en Ingeniería Informática. AMD Grado en Ingeniería Informática (UM) Grafos 1 / 30

Digrafos fuertemente conexos minimales (MSD) vs árboles

Camino mínimo en grafos

1. Caminos Mínimos en un Grafo sin Pesos 2. Caminos Mínmos en un Grafo ponderado. 1. Algoritmo de Dijkstra

Trayectorias y circuitos Eulerianos y Hamiltonianos,

A) PREORDEN B) INORDEN C) POSTORDEN D) NIVELES

Definiciones: conjuntos, grafos, y árboles. Agustín J. González ELO 320: Estructura de Datos y Algoritmos. 2002

Matemáticas Discretas Tc1003 Teoría de Grafos

CLAVE V

Francisco J. Hernández López

Propiedades de lenguajes independientes del contexto

B s ú que u da p rim i ero o e n n p rof o u f n u d n id i ad: E tr t ate t gia i L I L FO B s ú que u da p rim i ero o e n n a nc n h c u h r u a:

Conceptos básicos en la Teoría de Grafos

Estructura de Datos. Estructuras de Datos no lineales : Árboles

TEMA IV TEORÍA DE GRAFOS

Demostrando cotas inferiores: Arboles de decisión

Parte de Algoritmos de la asignatura de Programación Master de Bioinformática. Grafos

MARITZA HERRERA FLOREZ YUDY MARCELA BOLAÑOS RIVERA

Tema 08: TAD Árbol. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom

The Traveling Salesperson Problem. D.Moshkovitz Complexity

Tema 5 Árboles y Grafos.

Ejercicio 2 Considere la representación para Lista de Naturales y Árbol Binario de Naturales de la Figura 1.

TEMA 6 GRAFOS Fundamentos y terminología básica. Estructuras de datos Tema 6 Página 101

Examen de Estructuras de Datos y Algoritmos. (Modelo 2)

Examen de Estructuras de Datos y Algoritmos. (Modelo 1)

Complejidad - Problemas NP-Completos. Algoritmos y Estructuras de Datos III

Transcripción:

Árboles Algoritmos y Estructuras de Datos III

Árboles Definición: Un árbol es un grafo conexo sin circuitos simples.

Árboles Teorema: Dado un grafo G = (V, X ) son equivalentes: 1. G es un árbol. 2. G es un grafo sin circuitos simples, pero si se agrega una arista e a G resulta un grafo con exactamente un circuito simple, y ese circuito contiene a e. 3. Existe exactamente un camino simple entre todo par de nodos. 4. G es conexo, pero si se quita cualquier arista a G queda un grafo no conexo. Lema 1: Sea G = (V, X ) un grafo conexo y e X. G e es conexo si y solo si e pertenece a un circuito simple de G.

Árboles Definición: Una hoja es un nodo de grado 1.

Árboles Definición: Una hoja es un nodo de grado 1. Lema 2: Todo árbol no trivial tiene al menos dos hojas. Lema 3: Sea G = (V, X ) árbol. Entonces m = n 1. Corolario 1: Sea G = (V, X ) sin circuitos simples y c componentes conexas. Entonces m = n c. Corolario 2: Sea G = (V, X ) con c componentes conexas. Entonces m n c.

Árboles Teorema: Dado un grafo G son equivalentes: 1. G es un árbol. 2. G es un grafo sin circuitos simples y m = n 1. 3. G es conexo y m = n 1.

Árboles orientados Definiciones: Un árbol orientado es un grafo orientado G tal que: 1. El grafo no orientado subyacente es un árbol. 2. En G existe un nodo r tal que existe un camino orientado desde r a todos los demás nodos (cualquier nodo es alcanzable desde r por un camino orientado).

Árboles enraizados Definiciones: En un árbol no orientado podemos definir un nodo cualquiera como raíz. El nivel de un nodo de un árbol es la distancia de ese nodo a la raíz. La altura h de un árbol es la longitud desde la raíz al nodo más lejano. Un árbol se dice (exactamente) m-ario si todos sus nodos, salvo las hojas y la raíz tienen grado (exactamente) a lo sumo m + 1 y la raíz (exactamente) a lo sumo m. Un árbol se dice balanceado si todas sus hojas están a nivel h o h 1. Un árbol se dice balanceado completo si todas sus hojas están a nivel h.

Árboles enraizados Definiciones: Los nodos internos de un árbol son aquellos que no son ni hojas ni la raíz.

Árboles enraizados Definiciones: Los nodos internos de un árbol son aquellos que no son ni hojas ni la raíz. Cuántos nodos tiene en total un árbol exactamente m-ario que tiene i nodos internos?

Árboles enraizados Teorema: Un árbol m-ario de altura h tiene a lo sumo m h hojas. Un árbol m-ario con l hojas tiene h log m l. Si T es un árbol exactamente m-ario balanceado entonces h = log m l.

Recorrido de árboles BFS (Breadth-First Search): Lista implementada como cola. DFS (Depth-First Search): Lista implementada como pila.

Algoritmo Recorrer (para grafos y árboles no orientados) Para todo nodo i, pred(i) :=, order(i) := next := 0 LIST := {(s, 0)} mientras LIST hacer sacar un elemento (i, padre) de LIST si order(i)= entonces (marcar nodo i) pred(i) := padre next := next + 1 order(i) := next Para cada arista (i, j) hacer LIST := LIST {(j, i)} retornar order y pred

Algoritmo Recorrer (para grafos y árboles no orientados) Para todo nodo i, pred(i) :=, order(i) := next := 0 LIST := {(s, 0)} mientras LIST hacer sacar un elemento (i, padre) de LIST si order(i)= entonces (marcar nodo i) pred(i) := padre next := next + 1 order(i) := next Para cada arista (i, j) con j padre hacer LIST := LIST {(j, i)} retornar order y pred

Algoritmo Recorrer (para grafos y árboles no orientados) Para todo nodo i, pred(i) :=, order(i) := next := 0 next := 0 LIST := {(s, 0)} mientras LIST hacer sacar un elemento (i, padre) de LIST si order(i)= entonces (marcar nodo i) pred(i) := padre next := next + 1 order(i) := next Para cada arista (i, j) con j padre hacer LIST := LIST {(j, i)} retornar order y pred

Algoritmo Recorrer (para grafos y árboles no orientados) Para todo nodo i, pred(i) :=, order(i) := next := 0 hayciclo := false LIST := {(s, 0)} mientras LIST hacer sacar un elemento (i, padre) de LIST si order(i)= entonces (marcar nodo i) pred(i) := padre next := next + 1 order(i) := next Para cada arista (i, j) con j padre hacer LIST := LIST {(j, i)} sino hayciclo := true, semillaciclo := (i, padre) retornar order, pred, hayciclo, semillaciclo

Algoritmo Recorrer (para grafos y árboles orientados) Para todo nodo i, pred(i) :=, order(i) := next := 0 LIST := {(s, 0)} mientras LIST hacer sacar un elemento (i, padre) de LIST si order(i)= entonces (marcar nodo i) pred(i) := padre next := next + 1 order(i) := next Para cada arista i j hacer LIST := LIST {(j, i)} retornar order y pred

Árbol generador mínimo Definiciones: Dado un grafo conexo G, un árbol generador de G es un subgrafo de G que es un árbol y tiene el mismo conjunto de nodos que G. Sea T = (V, X ) un árbol y l : X R una función que asigna longitudes (o pesos) a las aristas de T. Se define la longitud de T como l(t ) = e T l(e). Dado un grafo conexo G = (V, X ) un árbol generador mínimo de G, T, es un árbol generador de G de mínima longitud, es decir l(t ) l(t ) T árbol generador de G.

Enumeración Cuántos grafos diferentes hay que tengan ciertas características?

Enumeración Cuántos grafos diferentes hay que tengan ciertas características? Cuántos grafos conexos con 8 nodos y 2 circuitos?

Enumeración Cuántos grafos diferentes hay que tengan ciertas características? Cuántos grafos conexos con 8 nodos y 2 circuitos? Cuántos subgrafos de un cierto tipo de un grafo dado hay?

Enumeración Cuántos grafos diferentes hay que tengan ciertas características? Cuántos grafos conexos con 8 nodos y 2 circuitos? Cuántos subgrafos de un cierto tipo de un grafo dado hay? Cuántos árboles generadores tiene un grafo? Cuántos circuitos simples? Cuántos subgrafos completos maximales?

Enumeración Cuántos grafos diferentes hay que tengan ciertas características? Cuántos grafos conexos con 8 nodos y 2 circuitos? Cuántos subgrafos de un cierto tipo de un grafo dado hay? Cuántos árboles generadores tiene un grafo? Cuántos circuitos simples? Cuántos subgrafos completos maximales? En general son problemas difíciles.

Ejemplos de algunas cosas que se pueden calcular Cuántos grafos rotulados distintos de n nodos y m aristas hay? Cuántos grafos rotulados distintos de n nodos hay?

Teorema de Cayley (1875) El número de árboles rotulados distintos de n nodos es n n 2, para n 2. Demostración: Por inducción en n usando los algoritmos inversos de codificación y decodificación de Prüfer para establecer una biyección entre el conjunto de árboles rotulados de n nodos y el conjunto de palabras de n 2 símbolos usando el alfabeto {1,..., n}.

Algoritmo de codificación de Prüfer Dado un árbol de n nodos rotulado con los números de 1 a n, construye una palabra de longitud n 2 usando el alfabeto {1,..., n}. Entrada: Un árbol T rotulado de n nodos, n 3. para i = 1,..., n 2 hacer elegir v la hoja de menor rótulo de T poner como s i el rótulo del nodo adyacente a v T := T \ {v} i := i + 1 retornar palabra s 1... s n 2

Algoritmo de codificación de Prüfer Proposición: Si d k es el número de ocurrencias del número k en la palabra retornada por el algoritmo de codificación de Prüfer, entonces el grado del nodo con rótulo k en el árbol T es d k + 1.

Algoritmo de decodificación de Prüfer Dada una palabra de longitud n 2 usando el alfabeto {1,..., n} construye un árbol de n nodos rotulado con los números de 1 a n. Entrada: Una palabra P = s 1... s n 2. L := {1,..., n} V T := {1,..., n} X T := P := s 1... s n 2 para i = 1,..., n 2 hacer Sea k el menor número de L que no está en P Sea j el primer elemento de P X T := X T {(k, j)} L := L \ {k} P := s i+1... s n 2 X T := X T {(u, v)}, con u, v L retornar T = (V T, X T )

Algoritmo de decodificación de Prüfer Proposición: El algoritmo de decodificación de Prufel define una función del conjunto de palabras de longitud n 2 usando el alfabeto {1,..., n} sobre el conjunto de árboles rotulados de n nodos.