Algoritmos y Estructuras de Datos III

Documentos relacionados
Á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.

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

Introducción a la Teoría de Grafos

Grafos. Algoritmos y Estructuras de Datos III

Algoritmos para determinar Caminos Mínimos en Grafos

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

Teoría de grafos y optimización en redes

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

Introducción a la Teoría de Grafos

Centro Asociado Palma de Mallorca. Tutor: Antonio Rivero Cuesta

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

Un grafo G es un par (V,E) donde V es un conjunto (llamado conjunto de vértices) y E un subconjunto de VxV (conjunto de aristas).

Grafos. Amalia Duch Brown Octubre de 2007

Objetivos formativos de Matemática Discreta. Tema 1: Conjuntos, aplicaciones y relaciones

Planaridad. Algoritmos y Estructuras de Datos III

TEORIA DE GRAFOS. Estructuras Discretas Ing. Jenny Paredes Aguilar

2007 Carmen Moreno Valencia

Estructuras de Datos. Estructuras de Datos para Conjuntos Disjuntos

Flujos de redes (Network Flows NF)

GRAMATICAS LIBRES DEL CONTEXTO

Tema: Los Grafos y su importancia para la optimización de redes.

Recorrido por niveles. Algoritmo recorrido por niveles

Grafos. Suponiendo que e = [u, v]. Entonces los nodos u y v se llaman extremos de e y u y v se dice que son nodos adyacentes o vecinos.

(d) Puede haber estrategias que funcionan mejor que Minimax si el contrincante es

Grafos y Redes. 3. Resolución: Dibujar el camino sin levantar el lápiz y pasando sólo una vez por cada arco o arista.

Minicurso de Teoría de Gráficas Escuela de Verano 2014 por María Luisa Pérez Seguí Facultad de Ciencias Físico-Matemáticas, Universidad Michoacana

Computabilidad y Lenguajes Formales: Autómatas Finitos

(e) Con la poda alfa-beta se eliminan nodos que nunca serán alcanzados

Es un conjunto de objetos llamados vértices o nodos unidos por enlaces llamados aristas o arcos, que permiten representar relaciones binarias entre

Máquinas Secuenciales, Autómatas y Lenguajes. Tema 3.1: Autómatas Finitos Deterministas

Capítulo 2: Inducción y recursión Clase 2: El principio de Inducción Fuerte

Tipos algebraicos y abstractos. Algoritmos y Estructuras de Datos I. Tipos algebraicos

Algoritmos sobre Grafos

Espacios Vectoriales

Los grafos estrella extendida: reconocimiento y propiedades estructurales

Conjuntos. Un conjunto es una colección de objetos. Si a es un objeto y R es un conjunto entonces por. a R. se entiende que a pertenece a R.

Figura 3.1. Grafo orientado.

Relaciones. Estructuras Discretas. Relaciones. Relaciones en un Conjunto. Propiedades de Relaciones en A Reflexividad

En la fig. 1 se representa el grafo, G=(V,A) donde: V = {1, 2, 3, 4, 5, 6} A = { {1,2}, {1,3}, {1,5}, {3}, {3,4}, {4,5}, {5,6} }

Tema Árboles generales. 9.2 Árboles binarios 9.3 Árboles de búsqueda

Ruta más Corta con una sóla Fuente de Inicio (Single-Source Shortest Paths) DR. JESÚS A. GONZÁLEZ BERNAL CIENCIAS COMPUTACIONALES INAOE

Separadores minimales de vértices de grafos dualmente cordales y caracterizaciones

Introducción a la teoría de grafos

Algoritmos: Algoritmos voraces

El Juego como Problema de Búsqueda

Algoritmos y estructuras de datos

MODELOS DE COMPUTACION I Preguntas Tipo Test. 1. El lema de bombeo puede usarse para demostrar que un lenguaje determinado es regular.

Capítulo 6. Relaciones. Continuar

Grupos libres. Presentaciones.

Estructuras de datos Árboles B

TEMA 2 FUNDAMENTOS Y APLICACIONES DE LA TEORIA DE GRAFOS. DIAGRAMAS EN ARBOL.

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

Tema 14 Grafos y su Implementación en Java. Parte II. Recorrido en Profundidad (DFS) de un Grafo. Recorrido de un Grafo: Ampliación de la clase Grafo

TEORÍA DE GRAFOS. OPTIMIZACIÓN EN REDES 1

1 Tema 1. Definiciones y conceptos básicos

Criterios de divisibilidad y Congruencias

Autovalores y autovectores Diagonalización y formas canónicas

TEORÍA DE GRAFOS Ingeniería de Sistemas

Índice Unidad 1: Lógica y teoría de conjuntos... 2

COMPLEMENTO DEL TEÓRICO

UNIDAD 9. DATOS COMPLEJOS PILAS

NIVEL 15: ESTRUCTURAS RECURSIVAS BINARIAS

Benemérita Universidad Autónoma de Puebla

(b) Cuál es la desventaja principal de una heurística con aprendizaje? es más informada que otra función heurística optimista h 2 *?

Convertir un AFND a un AFD

Apuntes de Matemática Discreta 14. Grafos

UTILIZAMOS LA TRIGONOMETRÍA.

Proyecto 2: recorridos sobre grafos y componentes conexas

LAS CIENCIAS DE LA PLANIFICACIÓN

Práctica N o 8 Desigualdades Válidas - Algoritmos de Planos de Corte - Algoritmos Branch & Cut

Introducción a la Teoría de Grafos

Búsqueda en e.e. --> reglas para elegir entre las ramas que con más probabilidad lleven a la solución.

TEMA 1: NÚMEROS NATURALES. SISTEMA DE NUMERACIÓN

3ra. Practica. Algoritmos de Búsqueda. Inteligencia Artificial Prácticas 2004/2005

ELO320 Estructuras de Datos y Algoritmos. Arboles Binarios. Tomás Arredondo Vidal

Máquinas Secuenciales, Autómatas y Lenguajes Formales. Tema 4: Autómatas finitos deterministas. Holger Billhardt holger.billhardt@urjc.

Definición 1 Un semigrupo es un conjunto E provisto de una operación binaria asociativa sobre E, se denota por (E, ).

Programación Lineal. Modelo de Redes. Alcance de las aplicaciones. Curso: Investigación de Operaciones Ing. Javier Villatoro

GRAFOS. Prof. Ing. M.Sc. Fulbia Torres

ALGORITMOS HEURÍSTICOS Y APROXIMADOS. Análisis y diseño de algoritmos II- 2009

Teoría de Redes o Grafos

Inducción Matemática Conjuntos Funciones. Matemática Discreta. Agustín G. Bonifacio UNSL. Repaso de Inducción, Conjuntos y Funciones

ALGEBRA y ALGEBRA LINEAL. Primer Semestre CAPITULO I LOGICA Y CONJUNTOS.

Terminaremos el capítulo con una breve referencia a la teoría de cardinales.

Tema 11.- Autovalores y Autovectores.

VI Colas de prioridad

Espacios completos. 8.1 Sucesiones de Cauchy

Teoría de Autómatas y Lenguajes Formales. Introducción a las Gramáticas. Gramáticas incontextuales

Transparencias de Matemática Discreta Doble Grado en Ingeniería en Informática y. Administración de Empresas Curso

Árboles abarcadores mínimos: algoritmo de Prim y algoritmo de Kruskal.

AMPLIACIÓN DE MATEMÁTICAS

Particiones binarias del espacio (BSP)

Autómatas Deterministas. Ivan Olmos Pineda

UNIVERSIDAD NACIONAL DE INGENIERÍA Sede UNI-NORTE

Tema 2: Teorema de estructura de los grupos abelianos finitamente generados.

Búsqueda con adversario

Tema 3: Espacios vectoriales

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.. Existe exactamente un camino simple entre todo par de nodos.. 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 : 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.. 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 árboles no orientados) (marcar nodo s) pred(s) := 0 next := 1 order(s) := next LIST := {s} mientras LIST hacer elegir un nodo i de LIST si existe un arco (i, j) tal que j / LIST entonces (marcar nodo j) pred(j) := i next := next + 1 order(j) := next LIST := LIST {j} else LIST := LIST \ {i} retornar order

Algoritmo Recorrer (para árboles no orientados) (marcar nodo s) pred(s) := 0 next := 1 order(s) := next LIST := {s} mientras LIST hacer elegir un nodo i de LIST si existe un arco (i, j) tal que j / LIST entonces (marcar nodo j) pred(j) := i next := next + 1 order(j) := next LIST := LIST {j} else LIST := LIST \ {i} retornar order

Árbol generador mínimo Definiciones: Dado un grafo 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 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.

Ejemplo de AGM A B C D 12 I 1 5 H G F 1 9 10 E

Ejemplo de AGM A B C D 12 I 1 5 H G F 1 9 10 E

Ejemplo de AGM A B C D I 9 E H 1 G F

Algoritmo de Prim Entrada: G = (V, X ) grafo conexo con una función l : X R. V T := {u} (u cualquier nodo de G) X T := i := 0 mientras i n 1 hacer elegir e = (u, v) X tal que l(e) sea mínima entre las aristas que tienen un extremo u V T y el otro v V \ V T X T := X T {e} V T := V T {v} i := i + 1 retornar T = (V T, X T )

Algoritmo de Prim Lema: Sea T = (V, X T ) un árbol generador de G = (V, X ). Si e X y e / X T y f X T una arista del ciclo de T + e. Entonces T = (V, X T {e} \ {f }) es árbol generador de G. Proposición: Sea G un grafo conexo. Sea T k = (V Tk, X Tk ) el árbol que el algoritmo de Prim determina en la iteración k, para 0 k n 1. T k es un subárbol de un árbol generador mínimo de G. Teorema: El algoritmo de Prim es correcto, es decir dado un grafo G conexo determina un árbol generador mínimo de G.

Algoritmo de Prim Lema: Sea T = (V, X T ) un árbol generador de G = (V, X ). Si e X y e / X T y f X T una arista del ciclo de T + e. Entonces T = (V, X T {e} \ {f }) es árbol generador de G. Proposición: Sea G un grafo conexo. Sea T k = (V Tk, X Tk ) el árbol que el algoritmo de Prim determina en la iteración k, para 0 k n 1. T k es un subárbol de un árbol generador mínimo de G. Teorema: El algoritmo de Prim es correcto, es decir dado un grafo G conexo determina un árbol generador mínimo de G. El algoritmo Prim es un algoritmo goloso.

Algoritmo de Kruskal Entrada: G = (V, X ) grafo conexo con una función l : X R. X T := i := 1 mientras i n 1 hacer elegir e X tal que l(e) sea mínima entre las aristas que no forman circuito con las aristas que ya están en X T X T := X T {e} i := i + 1 retornar T = (V, X T )

Ejemplo de AGM - Algoritmo de Prim Iteración k: Subgrafo de un AGM conexo con k aristas B C D 9 A 12 I 1 E 5 10 H 1 G F

Ejemplo de AGM - Algoritmo de Prim Iteración k: Subgrafo de un AGM conexo con k aristas B C D 9 A 12 I 1 E 5 10 H 1 G F

Ejemplo de AGM - Algoritmo de Prim Iteración k: Subgrafo de un AGM conexo con k aristas B C D 9 A 12 I 1 E 5 10 H 1 G F

Ejemplo de AGM - Algoritmo de Prim Iteración k: Subgrafo de un AGM conexo con k aristas B C D 9 A 12 I 1 E 5 10 H 1 G F

Ejemplo de AGM - Algoritmo de Prim Iteración k: Subgrafo de un AGM conexo con k aristas B C D 9 A 12 I 1 E 5 10 H 1 G F

Ejemplo de AGM - Algoritmo de Prim Iteración k: Subgrafo de un AGM conexo con k aristas B C D 9 A 12 I 1 E 5 10 H 1 G F

Ejemplo de AGM - Algoritmo de Prim Iteración k: Subgrafo de un AGM conexo con k aristas B C D 9 A 12 I 1 E 5 10 H 1 G F

Ejemplo de AGM - Algoritmo de Prim Iteración k: Subgrafo de un AGM conexo con k aristas B C D 9 A 12 I 1 E 5 10 H 1 G F

Ejemplo de AGM - Algoritmo de Prim Iteración k: Subgrafo de un AGM conexo con k aristas B C D 9 A 12 I 1 E 5 10 H 1 G F

Ejemplo de AGM - Algoritmo de Prim Iteración k: Subgrafo de un AGM conexo con k aristas B C D 9 A 12 I 1 E 5 10 H 1 G F

Ejemplo de AGM - Algoritmo de Kruskal Iteración k: Subgrafo de un AGM con k aristas sin circuitos B C D 9 A 12 I 1 E 5 10 H 1 G F

Ejemplo de AGM - Algoritmo de Kruskal Iteración k: Subgrafo de un AGM con k aristas sin circuitos B C D 9 A 12 I 1 E 5 10 H 1 G F

Ejemplo de AGM - Algoritmo de Kruskal Iteración k: Subgrafo de un AGM con k aristas sin circuitos B C D 9 A 12 I 1 E 5 10 H 1 G F

Ejemplo de AGM - Algoritmo de Kruskal Iteración k: Subgrafo de un AGM con k aristas sin circuitos B C D 9 A 12 I 1 E 5 10 H 1 G F

Ejemplo de AGM - Algoritmo de Kruskal Iteración k: Subgrafo de un AGM con k aristas sin circuitos B C D 9 A 12 I 1 E 5 10 H 1 G F

Ejemplo de AGM - Algoritmo de Kruskal Iteración k: Subgrafo de un AGM con k aristas sin circuitos B C D 9 A 12 I 1 E 5 10 H 1 G F

Ejemplo de AGM - Algoritmo de Kruskal Iteración k: Subgrafo de un AGM con k aristas sin circuitos B C D 9 A 12 I 1 E 5 10 H 1 G F

Ejemplo de AGM - Algoritmo de Kruskal Iteración k: Subgrafo de un AGM con k aristas sin circuitos B C D 9 A 12 I 1 E 5 10 H 1 G F

Ejemplo de AGM - Algoritmo de Kruskal Iteración k: Subgrafo de un AGM con k aristas sin circuitos B C D 9 A 12 I 1 E 5 10 H 1 G F

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 nodos y 2 circuitos?

Enumeración Cuántos grafos diferentes hay que tengan ciertas características? Cuántos grafos conexos con 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 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 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 (175) 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. 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.