Tema 10- Grafos. Objetivos:

Documentos relacionados
OBJETIVOS ÍNDICE BIBLIOGRAFÍA

Tema 14 Grafos y su Implementación en Java. Parte I. Objetivos. Bibliografía

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

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

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.

Grafos. Amalia Duch Brown Octubre de 2007

Tema 8- Implementación de Pila, Cola y. Tema 8- Implementación de Pila, Cola y Lista con Punto de Interés. Representación Eficaz de una EDA

Examen escrito de Programación 1

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

Este material es de uso exclusivo para clase de algoritmos y estructura de datos, la información de este documento fue tomada textualmente de varios

Centro Asociado Palma de Mallorca. Tutor: Antonio Rivero Cuesta

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

Tema 6- Estructuras de Datos: Jerarquía de. Tema 6- Estructuras de Datos: Jerarquía de una EDA

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

1. Árbol Binario de Búsqueda: Las clases Java NodoABB y ABB. 1. Definición y representación en Java 2. Operaciones y su coste estimado

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

Grafos. 19 de diciembre de 2013

EDA. Tema 8 Colas de Prioridad: Heaps

El TAD Grafo. El TAD Grafo

TEMA 5 El tipo grafo. Tipo grafo

Tema 1: Introducción a la Teoría de Grafos

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

Tema: Algoritmos para la ruta más corta en un Grafo.

Tema: Algoritmos para la ruta más corta en un Grafo.

Grafos. Algoritmos y Estructuras de Datos III

Los grafos son estructuras de datos Representan relaciones entre objetos. Son aplicables en. Relaciones arbitrarias, es decir No jerárquicas.

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

Grafos. CCIR / Depto Matemáticas CB102

PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación:

2007 Carmen Moreno Valencia

Tema 5 Árboles y Grafos.

Estructuras de Datos y Algoritmos. Programa de la asignatura

Capítulo 3: Grafos Clase 1: Grafos: Modelos, tipos, representación e isomorfismo

Tema 12- Implementación de Cola de Prioridad y Ordenación Rápida según un Montículo Binario

Estructuras de Datos y Algoritmos. Curso 2004/05 Tema 6. Árboles y Árboles Binarios

Tema 11. Estructura de datos Grafo

Tema 7- Modelo y Aplicación de Pila, Cola y. Tema 7- Modelo y Aplicación de. Lista Con Punto de Interés

Algoritmos y Estructuras de Datos Iteradores. Guillermo Román Díez

Un árbol binario T se define como un conjunto finito de elementos, llamados nodos, de forma que:

Grafos: Fundamentos Representaciones, etc. Jose Aguilar

Tema: Grafos en C#. Objetivos Específicos. Materiales y Equipo. Introducción Teórica. Programación IV. Guía 7

El TAD Grafo. Objetivos. Contenidos

Teoría de grafos y optimización en redes

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

Grafos Los siete puentes de Königsberg: Teoría de Grafos

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

Examen escrito de Programación 1

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

Análisis de Algoritmos Teoría de grafos

Taller de grafs: rutes, mapes i xarxes socials

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

Examen Teórico Convocatoria de Junio de 2012

Álgebra y Matemática Discreta

Práctica 5. Fecha límite de entrega: viernes, 14 de diciembre

ALGORITMOS Y ESTRUCTURAS DE DATOS

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

A5 Introducción a la optimización en redes

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} }

Programación de sistemas

UNIVERSIDAD TECNOLÓGICA DEL CHOCÓ Diego Luís Córdoba FACULTAD DE INGENIERÍA PROGRAMA DE INGENIERÍA EN TELECOMUNICACIONES E INFORMÁTICA

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

Estructuras de Datos Clase 14 Árboles binarios de búsqueda

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

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

Construcciones del Lenguaje Java

TAD CONJUNTOS Y MULTICONJUNTOS

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

INTERFACE ITERATOR DEL API JAVA. MÉTODO REMOVE PARA BORRAR OBJETOS EN COLECCIONES. EJERCICIOS Y EJEMPLO RESUELTO. (CU00919C)

Capítulo 7. Grafos. Continuar

Francis Guthrie Planteo el problema de los cuatro colores, después de colorear el mapa de Inglaterra 9/15/2015 3

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

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

Estructura de Datos. Árboles Binarios de Búsqueda ABB. Primer Semestre, 2010

TEORIA DE GRAFOS. Estructuras Discretas Ing. Jenny Paredes Aguilar

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

DEFINICIONES BÁSICAS DE LAS ESTRUCTURAS DE DATOS

Los elementos de V son los vértices (o nodos) de G y los elementos de A son las aristas (o arcos) de G.

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

1. GRAFOS : CONCEPTOS BASICOS

Recorridos de grafos

Indice. 1. Tipos de grafos. 2. Conceptos Básicos 3. Representación de grafos 4. Subgrafos. Grafos complementarios

3.3. Pilas 3.3. PILAS 3

Grafos (principiantes) - Parte I

HERRAMIENTA DE DEMOSTRACIÓN Y AUTOAPRENDIZAJE PARA ESTRUCTURAS DE DATOS

Definiciones y ejemplos.

Ciclos y grafos acíclicos

Unidad Nº V Listas Enlazadas

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1

1. Conceptos básicos sobre el problema en cuestión y cuestiones afines. 2. Formulación de los correspondientes algoritmos y su pseudocódigo.

Universidad Tecnológica Nacional Facultad Regional Buenos Aires. Gestión de Datos. Teoría de Grafos

Arboles Binarios de Búsqueda en C++

Ejercicio 1 (proyecto prlistas, paquete listas)

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

ARBOLES ARBOLES COMPUTACIONALES MATEMATICAS DISCRETAS II

CLAVE EXAMEN: a cd. c u r s o r = c u r s o r. g e t S i g u i e n t e ( ) ; p o s i c i o n ++;

Algoritmos y Estructuras de Datos. Guillermo Román Díez

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

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

Teoría de Grafos Introducción Grafos isomorfos

Introducción a Java 10/02/2011. Tokens. Juan Manuel Fernández Peña Curso Rev Tokens. Tokens

Transcripción:

Tema - Grafos Duración: 2 semanas aprox. Índice general:. Relaciones entre los Datos de una Colección 2. Conceptos básicos sobre Grafos. Representación de un Grafo: Matriz y Listas de Adyacencia. Implementación de un Grafo en Java: las clases Arista, Vertice y Grafo 5. Recorrido de un Grafo: ampliación de la clase Grafo 6. Caminos Mínimos en un Grafo sin y con Pesos (Dijkstra): la clase Java CaminosDelGrafo Objetivos: Estudio de la Representación de una Relación Binaria entre los Datos de una Colección mediante la estructura Grafo y algunas de sus aplicaciones más significativas. Ello permitirá recapitular y ampliar conceptos y estructuras que se han estudiado a lo largo del curso, como: la ventaja de re-utilizar el Software que presenta la POO, al estudiar las posibles Representaciones de un Grafo (Modelos Diccionario y Lista Con Punto de Interés ) y la implementación de las operaciones de Recorrido y cálculo de caminos mínimos sobre él (Modelos Cola y Cola de Prioridad) las características de las Representaciones Lineal, Jerárquica y No Lineal de los Datos de una Colección para, respectivamente, su Acceso Secuencial, su Recorrido en Profundidad y Anchura y la Búsqueda Dinámica Implementación en Java de un Grafo, que supondrá el diseño de las clases Arista, Vertice, Grafo y CaminosDelGrafo (ubicadas en el paquete grafos de estructurasdedatos)

Bibliografía básica: Weiss, M.A. Estructuras de datos en Java. Adisson-Wesley, 2. Capítulo, para conceptos sobre Grafos y Grafos Dirigidos Capítulo 22, apartado 22.2. para el algoritmo de Dijkstra con Montículos de Emparejamiento Aho A.V., Hopcroft J.E., Ullman J.E. Estructuras de datos y Algoritmos. Addison-Wesley, 988. Capítulo 6 para conceptos sobre Grafos y Grafos Dirigidos Relaciones entre los Datos de la Colección 5 ) Representación Lineal 2) Representación Jerárquica Sea un Colección cuyos Datos son: ciudades aeropuertos computadores de una red puntos del plano de una ciudad carreteras vuelos enlaces calles Queremos modelar rutas entre ciudades rutas aéreas envío de correo electrónico recorridos turísticos 2

Relaciones entre los Datos de la Colección 5 Relación Binaria entre los Datos de la Colección ) Grafo cuyos Vértices se Relacionan vía Aristas Una Relación R sobre un Conjunto S se define como un Conjunto de Pares (a, b): a, b S si (a, b) R se escribe a R b y denota que a está Relacionado con b indica si cada Par de Datos del Conjunto están o no Relacionados 5 Conceptos básicos sobre Grafos Grafos Dirigidos y no Dirigidos Grafos Etiquetados Relaciones de Incidencia y Adyacencia Caminos 6

Conceptos básicos sobre Grafos: Grafos Dirigidos (Digrafos) Un Grafo Dirigido (gd) es un Par G = (V,E) V es un conjunto finito de Vértices (o Nodos o Puntos) E es un conjunto de Aristas (o Arcos) dirigidas Arista: Par ordenado de Vértices (u,v): u v 2 7 Conceptos básicos sobre Grafos: Grafos no Dirigidos (Grafos) Un Grafo no Dirigido (gnd) es un Par G = (V,E) V es un conjunto finito de Vértices E es un conjunto de Aristas no Dirigidas Arista: Par no ordenado de Vértices (u,v) = (v,u), u v : u v 2 8

Conceptos básicos sobre Grafos: Grafos Etiquetados Un Grafo Etiquetado es un grafo G = (V,E) sobre el que se define una función f: E A, dónde A es un conjunto cuyas componentes se llaman Etiquetas NOTA: la función de etiquetado se puede definir también sobre V, el conjunto de Vértices Un Grafo Ponderado es un Grafo Etiquetado (sus Aristas) con números Reales (A R) Ejemplos: discútase la necesidad de etiquetar/ponderar los Grafos asociados a las aplicaciones reseñadas en el primer punto del tema 9 Conceptos básicos sobre Grafos: Relaciones de Incidencia Sea G = (V,E) un Grafo Dirigido. Si (u,v) E, decimos que Incide desde u (sale de..) e Incide en v (llega a..) 2 Sea G = (V,E) un Grafo no Dirigido. Si (u,v) E, decimos que Incide sobre u y v 2 5

Conceptos básicos sobre Grafos: Relaciones de Adyacencia Sea G = (V,E) un Grafo. Si (u,v) E, decimos que el Vértice v es Adyacente al Vértice u 2 En un Grafo no Dirigido la relación es simétrica 2 Conceptos básicos sobre Grafos: Grado de un Vértice El Grado de un Vértice en un Grafo no Dirigido es el número de Aristas que Inciden sobre él ( Vértices Adyacentes ) 2 El Grado de un Vértice en un Grafo Dirigido es la suma de: el número de Aristas que salen de él (Grado de Salida) el número de Aristas que entran en él (Grado de Entrada) 2 2 6

Conceptos básicos sobre Grafos: Grado de un Grafo El Grado de un Grafo es el de su Vértice de máximo Grado 2 Conceptos básicos sobre Grafos: Caminos Un Camino de longitud k desde u a u en un grafo G=(V,E) es una secuencia de Vértices v,v,..,v k tal que: v o = u y v k = u i :..k : (v i-,v i ) E la longitud k del Camino es el número de Aristas la longitud del Camino con Pesos es la suma de los Pesos de las Aristas que forman el Camino Si hay un Camino P desde u hasta u, decimos que u es alcanzable desde u vía P 2 7

Conceptos básicos sobre Grafos: Caminos Simples y Ciclos Un Camino es Simple si todos sus Vértices son distintos En un Grafo Dirigido un Camino v,v,..,v k forma un Ciclo si: v o =v k el Camino contiene al menos una Arista El Ciclo es Simple si todos sus Vértices son distintos Un Bucle es un Camino de longitud Un Grafo Dirigido es Acíclico si no contiene Ciclos (GDA) 2 5 Conceptos básicos sobre Grafos: Caminos Simples y Ciclos En un Grafo no Dirigido un Camino v,v,..,v k forma un Ciclo si: v o =v k si todos los v i son distintos Un Grafo no Dirigido es Acíclico si no contiene Ciclos 2 6 8

Ejemplo: sea G = (V,E) un Grafo Dirigido con Pesos V={v,v, v 2, v, v, v 5, v 6, E={ (v,v, 2), (v,v, ), (v,v, ), (v,v, ), (v,v, 2), (v,v 6, ), (v,v 5, 8), (v,v 2, 2), (v 2,v, ), (v 2,v 5, 5), (v,v 6, 6), (v 6,v 5, ) Se pide:.- V y E 2.- Vértices adyacentes a cada v i.- Grado de cada v i y del Grafo.- Caminos desde v al resto de Vértices, su longitud con y sin Pesos 5.- Vértices alcanzables desde v 6.- Caminos mínimos desde v al resto de Vértices 7.- Tiene ciclos? Representación de un Grafo: Matriz de Adyacencia Un Grafo G=(V,E) se representa con una Matriz de V x V boolean: si (u,v) E, G[u,v] = true; sino G[u,v] = false Memoria: O( V 2 ) Tiempo de acceso: O() 2 5 2 5 2 5 false true false false false false false true false true true false false false false false false false true false false false false false false true false false true false true false false false false false 8 9

Representación de un Grafo: Matriz de Adyacencia Un Grafo G=(V,E) se representa con una Matriz de V x V boolean: si (u,v) E, G[u,v] = true, sino G[u,v] = false 2 5 2 5 2 5 false true false false true false true false false false true false false false false flase false true false false false false false false true true false false false false false false true false false false 9 Representaciones de un Grafo: Listas de Adyacencia Un Grafo G=(V,E) se representa con un array de V Listas de Vértices: G[v], v V, es una Lista de los Vértices Adyacentes a v Memoria: O( V + E ) Tiempo de acceso: O(Grado de G) X 2 X 5 2 X X X 5 2 X 2

Ejemplo propuesto: representar los siguientes Grafos 2 Implementación de un Grafo en Java: la clase GrafoV GrafoV representa un Grafo de Vértices sin Etiquetar, i.e. de tipo int de Aristas sin Pesos, i.e. Pares de int mediante Listas de Adyacencia (array de V Listas de Vértices) X 2 X 5 2 X X X 5 2 X 22

Implementación de un Grafo en Java: la clase GrafoV package grafos; import modelos.*; import lineales.*; public class GrafoV { /** Representa un Grafo Básico mediante Listas de Adyacencia * i.e. como un array de V Listas Con PI de Integer */ protected ListaConPI elarray[]; public GrafoV(int numvertices){... public void insertararista(int origen, int destino){... public String tostring(){... 2 package grafos; import modelos.*; import lineales.*; public class GrafoV { protected ListaConPI elarray[]; public GrafoV(int numvertices){ La clase GrafoV elarray = new ListaConPI[numVertices]; for ( int i=; i numvertices; i++ ) elarray[i] = new LEIListaConPI(); public void insertararista(int origen, int destino){ elarray[origen].inicio(); elarray[origen].insertar(new Integer(destino)); public String tostring() { String res = ; for ( int i = ; i < elarray.length; i++ ) if ( elarray[i].esvacia() ) res += Vértice +i+ sin Adyacentes ; else res += Vértice +i+ con Adyacentes +elarray[i].tostring(); return res; 2

Ejemplo propuesto: escríbase un programa cuya salida sea la que se muestra a continuación y dibújese el Grafo leído. Indique el número de Vértices del Grafo: 6 Grafo inicializado: Vértice sin Adyacentes Vértice sin Adyacentes Vértice 2 sin Adyacentes Vértice sin Adyacentes Vértice sin Adyacentes Vértice 5 sin Adyacentes Introduzca Arista (Par de Vértices separados por blancos): 2 2 5 5 2 Grafo construido: Vértice con Adyacentes Vértice con Adyacentes Vértice 2 con Adyacentes 5 Vértice sin Adyacentes Vértice con Adyacentes Vértice 5 con Adyacentes 2 5 Implementación de un Grafo Ponderado en Java: la clase GrafoV GrafoV representa un Grafo de Vértices sin Etiquetar, i.e. de tipo int de Aristas con Pesos, Tripletes de int (origen, destino, coste) mediante Listas de Adyacencia (array de V Listas de Vértices) 7 2 2 8 7 5 7 2 X (,) X (,2) (,8) (,7) (,7) X (,) X (,7) X 5 (2,7) X 26

La clase Java Arista package grafos; class Arista { int destino; int coste; Arista(int d, int c){ destino = d; coste = c; public String tostring(){ return destino + ( + coste+ ) ; 27 La clase GrafoV package grafos; import modelos.*; import lineales.*; public class GrafoV { protected ListaConPI elarray[]; public GrafoV(int numvertices){... public void insertararista(int origen, int destino, int coste){ elarray[origen].inicio(); elarray[origen].insertar(new Arista(destino, coste)); public String tostring(){... 28

Implementación de un Grafo Ponderado con Vértices Etiquetados en Java: la clase Grafo Grafo representa un Grafo de Vértices con Etiquetas, i.e. Pares (etiqueta, nº vértice) de Aristas con Pesos, i.e. Tripletes de int mediante Listas de Adyacencia ( array de V Vértices) 7 v 8 v 2 v v 7 v2 v5 7 2 (v, ) (v, ) (v2,x) (v, ) (v, ) (,) X (,2) (,8) (,7) (,7) X (,) X (,7) X 5 (v5, ) (2,7) X 29 La clase Java Vertice package grafos; import modelos.*; import lineales.*; class Vertice { String nombre; int codigo; ListaConPI listaady; Vertice(String n){ this(n, -); Vertice(String n, int c){ nombre = n; codigo = c; listaady = new LEIListaConPI(); Cómoobtener codigo de un Vértice a partir de su nombre? Al insertar un Vértice en un Grafo se actualiza un Diccionario de Vértices con una nueva Entrada tal que su clave == nombre y su codigo == ordeninsercionvertice 5

Ejemplo: inserción de una Arista, Par de Vértices, en Grafo Diccionario de Vértice s D C Vértice : D,? buscar(d) Grafo (vacío) V =...... Ejemplo: inserción de una Arista, Par de Vértices, en Grafo Diccionario de Vértice s D C Vértice : D,? buscar(d) ElementoNoEncontrado Grafo (vacío) V =...... 2 6

Ejemplo: inserción de una Arista, Par de Vértices, en Grafo Diccionario de Vértice s D C Vértice : D, insertar((d, )) Grafo V = D, D...... Ejemplo: inserción de una Arista, Par de Vértices, en Grafo Diccionario de Vértice s D C Vértice 2: C,? buscar(c) ElementoNoEncontrado Grafo V = D, D...... 7

Ejemplo: inserción de una Arista, Par de Vértices, en Grafo Diccionario de Vértice s D C Vértice 2: C, insertar((c, )) C, Grafo V = 2 D C D,...... 5 Ejemplo: inserción de una Arista, Par de Vértices, en Grafo Diccionario de Vértice s D B 2 Vértice : D,? buscar(d) ElementoDuplicado Grafo V = 2 D C C, D,...... 6 8

La clase Grafo package grafos; import modelos.*; import excepciones.*; import lineales.*; import nolineales.*; public class Grafo { protected Vertice elarray[]; public Grafo(int numvertices){... public void insertararista(string no, String nd, int coste){... public String tostring(){... protected Diccionario dicvertices; protected int ordeninsercionvertice; public int insertarvertice(string no){... 7 public Grafo(int numvertices){ La clase Grafo public String tostring() { public void insertararista(string no, String nd, int coste){ 9

La clase Grafo public int insertarvertice(string nombrevertice) { int res = -; Vertice v = new Vertice(nombreVertice); try { res = ((Vertice)dicVertices.buscar(v)).codigo; catch(elementonoencontrado e){ res = v.codigo = ordeninsercionvertice; try { dicvertices.insertar(v); catch(elementoduplicado ed){; elarray[res] = v; ordeninsercionvertice++; return res; 9 Ejemplo propuesto: definir el método tostring en Grafo de forma que se muestren siempre los Vértices mediante sus etiquetas, y no con la representación numérica interna 2

Ejemplo propuesto: definir los siguientes métodos de la clase Grafo Método constructor para crear un Grafo a partir de la información de Aristas/Vértices leída desde un fichero Método para consultar el número total de Aristas de un Grafo Método para consultar el Grado de un Vértice dado de un Grafo (Grado de Salida si el Grafo es Dirigido) Método para consultar el Grado de un Grafo (Grado de Salida si el Grafo es Dirigido) Método para consultar si un Grafo está Vacío Método para consultar si una Arista dada pertenece a un Grafo Ejemplos resueltos: los que aparecen en los exámenes disponibles en la MicroWeb de la asignatura 2