NIVEL 17: ESTRUCTURAS NO LINEALES

Documentos relacionados
NIVEL 17: ESTRUCTURAS NO LINEALES

Grafos. Amalia Duch Brown Octubre de 2007

Estructura de Datos. Temario Unidad VI. Árboles Árboles Binarios

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

Examen de Estructuras de Datos y Algoritmos (Ingeniería Informática)

Hamilton, Euler y Dijkstra

Algoritmos de búsqueda en grafos I

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

Centro Asociado Palma de Mallorca. Tutor: Antonio Rivero Cuesta

Tema: Recorrido de Grafos

TEMA 5 El tipo grafo. Tipo grafo

Propiedades. Ejercicios Tema 14. Representación de Grafo. Grado de Grafo (Matriz de Adyacencia)

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

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

Trayectorias y circuitos Eulerianos y Hamiltonianos,

Matemáticas Discretas

Estructuras de Datos Orientadas a Objetos. Pseudocódigo y aplicaciones en C#.NET. Capítulo 9.- Grafos

Estructuras de datos y algoritmos

Estructuras de Datos y Algoritmos

Propiedades (1/2) Soluciones Ejercicios Tema 14. Representación de Grafo (I) Propiedades (2/2) Grado del grafo: 6 V = 7 E = 12

GRAFOS. Tomado de: Joyanes Aguilar Luis, Estructuras de datos en Java. CASOS

Se puede dibujar la siguiente figura, empezando y terminando en el mismo punto, sin levantar e lápiz del papel?

Recorridos de grafos

Recorridos de Gráficas. comp-420

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

Matemáticas Discretas

Se puede dibujar la siguiente figura, empezando y terminando en el mismo punto, sin levantar e lápiz del papel?

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

Francisco J. Hernández López

La clase Grafo. 4 Algoritmos de recorrido de grafos. La clase Vertice. Tema 9: GRAFOS Segunda Parte Estructuras de Datos y Algoritmos Curso 2002/03

Definición de árbol. Árboles

Algebra Matricial y Teoría de Grafos

Una clave Definición informal La clave debe contener una secuencia de una o más letras seguidas por uno o más dígitos

Semana 4: Métodos de Búsqueda No informados. Prof. Oscar Benito Pacheco.

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

Teoría de redes y optimización en redes

CLAVE V

Árboles y esquemas algorítmicos. Tema III

Estructura de Datos. Grafos. Primer Semestre, Grafos. Grafos

Apellidos:... Nombre:...

Tema 11. Estructura de datos Grafo

TIPOS ABSTRACTOS DE DATOS EN HASKELL

Contenido PARTE II: ESTRUCTURAS DE DATOS AVANZADAS

Grafos. 19 de diciembre de 2013

Tema 5 Árboles y Grafos.

Tema 5: Grafos. CIS - UABJB - Estructura de Datos II Ing. Freddy Melgar Algarañaz 1

Grafos. CCIR / Depto Matemáticas CB102

Geometría Computacional. Dr. Antonio Marín Hernández

Apuntes elaborados por: Aaron Asencio, Eduardo Quevedo, Raquel López Revisado por: Javier Miranda el???

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.

Algoritmos voraces (greedy)

Programación Estructuras Arborescentes

Ejercicios Propuestos de Métodos de Búsqueda

Búsqueda en espacio de estados

1. Cuál es el número total máximo de nodos que tiene un árbol binario de N niveles? a. N 2-1 b. 2 N+1-1 c. 2 N d. 2 N+1 i.

Análisis y Diseño de Algoritmos. Teoría de Gráficas

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

1. Leer el primer número y almacenarlo en la raíz del árbol. 2. Repetir hasta encontrar un duplicado o el árbol esté vacío.

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

Búsqueda en espacio de estados

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

Grafos: algunas definiciones

Capítulo 8. Árboles. Continuar

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

Tema 21: Algoritmos de exploración de grafos

Programación II Tema 5. Árboles binarios

Pilas Motivación

Estructuras de Datos

Estructura de Datos. Unidad V Estructuras no lineales estáticas y dinámicas. (Árboles y grafos)

Algoritmos y Estructuras de Datos: Introducción a la Recursión de Programas. Guillermo Román Díez

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

Estructura de datos y de la información Boletín de problemas - Tema 10

Clase adicional 9. Listas enlazadas. Temas. Listas enlazadas Árboles Problemas de la clase adicional Ejercicios de diseño

Algoritmos y Estructuras de Datos Tema 2: Diseño de Algoritmos

Inteligencia Artificial I

Estructuras de Datos ARBOLES Y GRAFOS

PROGRAMA EDUCATIVO INFORMATICA ADMINISTRATIVA

Estructuras de Datos y Algoritmos

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

Tema 10- Grafos. Objetivos:

Algoritmos y Estructuras de Datos III

Complejidad computacional (Análisis de Algoritmos)

Solución práctico 6 Tipos Abstractos de Datos Lista, Pila y Cola

Instituto de Computación. Facultad de Ingeniería. Universidad de la República Examen de Programación 2 03 de Agosto de 2006 Generalidades:

Programación II Árboles binarios de búsqueda (ABB)

Capítulo 5 Introducción a la teoría de grafos

Algoritmos: Exploración de grafos

TEMA 3. Árboles. Objetivos. Contenidos. Bibliografía. Básica

Programación de sistemas Árboles

TEORIA DE GRAFOS. Estructuras Discretas Ing. Jenny Paredes Aguilar

Algoritmos y Estructuras de Datos Tema 2: Diseño de Algoritmos

INDICE INTRODUCCION1 DESARROLLO2 GRAFOS (CONCEPTO).2 ARISTAS...2 VERTICES2 CAMINOS.3 CLASIFICACION DE GRAFOS...3 GRAFOS EULERIANOS.

Teoría de Grafos I. 2. Describa tres situaciones prácticas en las cuales un grafo pueda ser útil.

Definiciones y ejemplos.

Arboles Binarios de Búsqueda en C++

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

ALGORITMOS DE BÚSQUEDA. Ing. Ronald A. Rentería Ayquipa

ARBOLES BINARIOS ORDENADOS. REPRESENTACIÓN Y OPERACIONES

Descubrir los árboles como paradigma de los tipos Recursivos de Datos

Clase 1: Gráficas. Malors Espinosa Lara. 6 de Febrero de 2010

Transcripción:

1 NIVEL 17: ESTRUCTURAS NO LINEALES Recorridos y Algorítmica de Grafos

2 Agenda Recorridos de grafos Recorridos Planos Recorridos en profundidad Recorridos por niveles Recorridos Heurísticos Algorítmica de grafos Camino Hamilton Camino Euler

3 Recorrido de grafos Cómo pasar exactamente una vez por cada uno de los vértices de la estructura? Los grafos se pueden recorrer de diferentes formas con el fin de determinar alguna característica o encontrar alguna información especial.

4 Recorrido de grafos Tipos de recorrido: Plano En profundidad Por niveles En ambas direcciones

5 Recorrido de grafos Recorrido plano Recorrido en profundidad Recorrido por niveles Recorrido en ambas direcciones

6 Agenda Recorridos de grafos Recorridos Planos Recorridos en profundidad Recorridos por niveles Recorridos Heurísticos Algorítmica de grafos Camino Hamilton Camino Euler

7 Recorrido plano El más sencillo Barrido secuencial de los elementos del conjunto V. Permite localizar todos los vértices que cumplan con alguna propiedad, sin tener en cuenta la topología (ignora los arcos).

8 Recorrido plano Cómo se hace en Cupi2Collections? 1. Pedir los elementos (valores) a la tabla de hashing (es una Collection). 2. Recorrerla.

9 Recorrido plano 1. Pedir los elementos (valores) a la tabla de hashing (es una Collection).

10 Recorrido plano 2. Recorrerla.

11 Recorrido plano Ejercicio Retornar todos los sumideros de un grafo dirigido, usando un recorrido plano.

12 Agenda Recorridos de grafos Recorridos Planos Recorridos en profundidad Recorridos por niveles Recorridos Heurísticos Algorítmica de grafos Camino Hamilton Camino Euler

13 Recorrido en profundidad Equivalente a un recorrido en preorden de un árbol n-ario: Primero el vértice Después sus sucesores Verificando en TODO momento que el algoritmo no se quede en ciclos +

14 Recorrido en profundidad Consta de dos rutinas: 1. Rutina 1: Hace un recorrido en profundidad a partir de un vértice dado, marcando los puntos por los cuales va pasando. 2. Rutina 2: Busca vértices sin marcar y lanza la rutina 1. Termina cuando TODOS los vértices hayan sido visitados.

15 Recorrido en profundidad 1 7 5 2 6 3 4 1 Se visita el vértice 1, se marca, se localizan sus sucesores y se hace una llamada recursiva sobre cada uno de ellos, verificando que no estén marcados 1 5 2 6 3 4 1, 7 Se hace el recorrido en profundidad partiendo del vértice 7 (el único sucesor de 1). 7

16 Recorrido en profundidad 1 7 5 2 6 3 4 1, 7, 5 Se hace el recorrido en profundidad a partir del vértice 5. Al terminar TODO este recorrido, se debe comenzar el mismo proceso a partir del vértice 6. Pendiente recorrido desde: 6 1 5 2 3 1, 7, 5, 2 Se repite recursivamente el proceso para los vértices 2 y 6 (sucesores de 5). 7 6 4 Pendiente recorrido desde: 6,6

17 Recorrido en profundidad 1 7 5 2 6 3 4 1, 7, 5, 2, 3 Se recorre en profundidad el grafo a partir del vértice 3 (sucesor de 2). Pendiente recorrido desde: 6,6 1 5 2 3 1, 7, 5, 2, 3, 6 Se repite recursivamente el proceso para los vértices 4 y 6 (sucesores de 3). 7 6 4 Pendiente recorrido desde: 6,6,4

18 Recorrido en profundidad 1 7 5 2 6 3 4 1, 7, 5, 2, 3, 6, 4 Puesto que el vértice 4 no tiene sucesores, se hace un recorrido en profundidad desde el elemento 6 (el último que quedó pendiente en el proceso) Pendiente recorrido desde: 6,6

19 Recorrido en profundidad Se puede observar que el orden de visita de los elementos depende de: El vértice inicial escogido. El orden en el cual se retornen los sucesores de un vértice.

20 Recorrido en profundidad Ejercicio: Dibujar la secuencia de recorrido en profundidad en el siguiente caso: Arrancando en el vértice 3 1 2 3 5 7 6 4

21 Recorrido en profundidad Ejercicio: Escribir el método Iterador<Vertice<K, V, A>> darrecorridoprofundidad( ) que retorna un iterador con los vértices visitados por profundidad. En qué clase(s) va este método?

22 Recorrido en profundidad Clase Grafo Se crea el iterador donde se va a hacer la acumulación de parámetros (recorrido)

23 Recorrido en profundidad Clase Grafo Rutina 2: Busca vértices sin marcar y lanza la rutina 1. Termina cuando TODOS los vértices hayan sido visitados.

24 Recorrido en profundidad Clase Grafo Retorna el iterador lleno.

25 Recorrido en profundidad Clase Vertice El vértice se añade al iterador.

26 Recorrido en profundidad Clase Vertice El vértice se marca

27 Recorrido en profundidad Clase Vertice Recorre todos sus sucesores

28 Recorrido en profundidad Clase Vertice Si el sucesor NO está marcado, lanza recursivamente el recorrido en profundidad a partir del sucesor

29 Agenda Recorridos de grafos Recorridos Planos Recorridos en profundidad Recorridos por niveles Recorridos Heurísticos Algorítmica de grafos Camino Hamilton Camino Euler

30 Recorrido por niveles Similar al proceso correspondiente en un árbol n-ario. Consta de dos rutinas: 1.Rutina 1: Hace un recorrido por niveles a partir de un vértice dado, marcando los puntos por los cuales va pasando. 2.Rutina 2: Busca vértices sin marcar y lanza la rutina 1. Termina cuando TODOS los vértices hayan sido visitados.

31 Recorrido por niveles La lista de elementos para ser recorridos se denomina frente de exploración.

32 1 7 Recorrido por niveles 2 3 5 6 4 Se visita el vértice 1, se marca, se localizan sus sucesores y se incluyen al final del frente de exploración. Recorrido: 1 Frente de Exploración: 7 1 5 2 3 Se toma el primer elemento del frente de exploración (7) y se procesa como en el paso anterior. 7 6 4 Recorrido: 1, 7 Frente de Exploración: 5, 6

33 1 Recorrido por niveles 2 3 5 Recorrido: 1, 7, 5 Frente de Exploración: 6, 2, 6 6 4 7 1 5 2 3 Recorrido: 1, 7, 5, 6 Frente de Exploración: 2, 6, 4 6 4 7

34 1 Recorrido por niveles 2 3 5 Recorrido: 1, 7, 5, 6, 2 Frente de Exploración: 6, 4, 3 6 4 7 1 5 2 3 Recorrido: 1, 7, 5, 6, 2, 4 Frente de Exploración: 3 6 4 7

35 1 Recorrido por niveles 2 3 5 Recorrido: 1, 7, 5, 6, 2 Frente de Exploración: 6, 4, 3 6 4 7 1 5 2 3 Recorrido: 1, 7, 5, 6, 2, 4 Frente de Exploración: 3 6 4 7

36 1 Recorrido por niveles 2 3 5 Recorrido: 1, 7, 5, 6, 2, 3 Frente de Exploración: 7 6 4

37 Recorrido por niveles Ejercicio: Escribir el método Iterador<Vertice<K, V, A>> darrecorridoniveles( ) que retorna un iterador con los vértices visitados por niveles. En qué clase(s) va este método?

38 Recorrido por niveles Clase Vertice Se crea el iterador a retornar con los vértices recorridos por niveles

39 Recorrido por niveles Clase Vertice Se crea una cola para guardar el frente de exploración

40 Recorrido por niveles Clase Vertice Se recorren todos los vértices del grafo

41 Recorrido por niveles Clase Vertice Se verifica que el vértice no esté marcado, es decir que no ha sido visitado

42 Recorrido por niveles Clase Vertice Se inserta el vértice en el frente de exploración

43 Recorrido por niveles Clase Vertice Para cada vértice del frente de exploración

44 Recorrido por niveles Clase Vertice Se toma el vértice

45 Recorrido por niveles Clase Vertice Si no ha sido marcado

46 Recorrido por niveles Clase Vertice Se marca

47 Recorrido por niveles Clase Vertice Se añade al iterador

48 Recorrido por niveles Clase Vertice Cada uno de sus sucesores

49 Recorrido por niveles Clase Vertice Se añade al frente de exploración si no ha sido previamente marcado

50 Recorrido por niveles Clase Vertice Se retorna el iterador

51 Agenda Recorridos de grafos Recorridos Planos Recorridos en profundidad Recorridos por niveles Recorridos Heurísticos Algorítmica de grafos Camino Hamilton Camino Euler

52 Recorridos heurísticos Son informados: Tienen en cuenta alguna característica del mundo en el cual ocurre el problema. El proceso de avance es más inteligente. Dan al algoritmo de búsqueda del camino, una medida de qué tan cerca se encuentra de una solución: En la exploración, dan prioridad a los vértices que tengan más posibilidades de llevar a la respuesta. Se usan como técnicas de inteligencia artificial en juegos, robótica,

53 Recorridos heurísticos El frente de búsqueda se encuentra ordenado de acuerdo con una función h(v): Un vértice tiene un menor valor a medida que se encuentra más cerca de la respuesta. h(v) es una heurística y depende del problema mismo sobre el cual se está trabajando.

54 Ejemplo...... 2 8 3 2 8 3 2 8 3 Recorrido heurístico... 1 6 4 7 5... 1 6 4 7 5 2 8 3 1 4 7 6 5...... 1 6 4 7 5 2 8 2 8 3 2 8 3 1 6 3 1 6 1 6... 7 5 4 7 5 4 7 5 4...... 1 2 3 4 5 6 7 8...

55 Agenda Recorridos de grafos Recorridos Planos Recorridos en profundidad Recorridos por niveles Recorridos Heurísticos Algorítmica de grafos compleja Camino Hamilton Camino Euler

56 Camino Hamilton El camino Hamilton pasa una vez por TODOS los vértices /** * Indica si en el grafo hay camino hamiltoniano * @return true si hay camino hamiltoniano o false en caso contrario */ public boolean haycaminohamilton( ) { } // Recorre todos los vértices del grafo buscando un camino de Hamilton for( Vertice<K, V, A> vertice : vertices.values( ) ) { // Borra todas las marcas presentes en el grafo reiniciarmarcas( ); if( vertice.haycaminohamilton( 0, darorden( ) ) ) return true; } return false;

57 Camino Hamilton /** * Indica si hay un camino de Hamilton que pasa por el vértice actual, * teniendo en cuenta que en dicho camino ya se ha pasado por un cierto * número de vértice (longactual) y que debe pasar por todos lo vértices * del grafo (ordengrafo) * @param longactual Longitud actual del camino * @param ordengrafo Orden del grafo * @return True si existe, False si no */ public boolean haycaminohamilton( int longactual, int ordengrafo ) { longactual++; if( longactual == ordengrafo ) return true; else { marcar( ); for( Arco<K, V, A> arco : darsucesores( ) ) { Vertice<K, V, A> vert = arco.darverticedestino( ); if(!vert.marcado( ) && vert.haycaminohamilton( longactual, ordengrafo ) ) { return true; } } } return false; }

58 Agenda Recorridos de grafos Recorridos Planos Recorridos en profundidad Recorridos por niveles Recorridos Heurísticos Matrices de adyacencias Algorítmica de grafos Camino Hamilton Camino Euler Árboles de recubrimiento

59 Camino Euler El camino Euler pasa una vez por TODOS los arcos