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

Tamaño: px
Comenzar la demostración a partir de la página:

Download "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"

Transcripción

1 La clase Grafo public class Grafo { Tema 9: GRAFOS Segunda Parte Estructuras de Datos y Algoritmos Curso 00/03 private static final int TAMANYO_INICIAL=0; private Vertice tabla []; private int numvertices; private TablaHash diccio; public Grafo() {... public insarista (String orig,string dest,int cost) {... public String tostring() {... La clase Vertice Algoritmos de recorrido de grafos public class Vertice { String nombre; //el nombre del vértice Lista ady; // la lista de vértices adyacentes (aristas) public Vertice(String v) { nombre=v; Lista: ady=new Lista(); public void insertar(object x); // public la posición String del punto de tostring() interés continua { apuntando al mismo elemento public return void borrar() ady.tostring(); throws DesbordamientoInferior; // borra el elemento que ocupa la posición del punto de interés (queda marcando al siguiente) public Object recupera(); public boolean esvacia(); public void inicio(); public void fin(); public void siguiente() throws PosicionIncorrecta; public boolean esfin(); public String tostring(); DFS: recorrido en profundidad (Depth First Search), generalización del recorrido en preorden de un árbol. BFS: recorrido en anchura (Breath First Search), generalización del recorrido por niveles de un árbol. 3

2 Recorrido en profundidad (DFS) Algoritmo de Recorrido en profundidad Explora sistemáticamente las aristas del grafo de forma que primero se visitan los vértices adyacentes a los visitados más recientemente. Así se va profundizando en el grafo. Algoritmo de recorrido en profundidad: Contador (ordenrecorrido) Vector de naturales (R) para marcar los vértices ya visitados (R[v]>0) y almacenar el orden de recorrido. R[v]: orden en el que se visita el vértice v. Recorrido en Profundidad ordenrecorrido=0; vv: R[v]=0; vv: Si (R[v]==0) entonces DFS(v) R mantiene el orden de recorrido finrp Método privado recursivo DFS(v) ordenrecorrido++; R[v]=ordenRecorrido; wadyacentes(v): Si (R[w]==0) entonces DFS(w) Ejemplo: Recorrido DFS Recorrido en profundidad en Java Nodos R v/w /,3,, /,, / / / /3, / /, R int R[]; int OrdenRecorrido; public void RecorridoEnProfundidad () { R=new int[numvertices]; OrdenRecorrido=; for (int i=0;i<numvertices;i++) R[i]=0; for (int i=0; i<numvertices; i++) if (R[i]==0) DFS(i); private void DFS (int i) { R[i]=OrdenRecorrido++; Lista b=tabla[i].ady; b.inicio(); while (!b.esfin()) { Arista w=(arista) b.recupera(); if (R[w.dest]==0) DFS(w.dest); b.siguiente(); 7 8

3 Ejercicio: Recorrido en anchura (BFS) Hacer una traza del recorrido en profundidad sobre el grafo siguiente: V = { V0, V,V,V3,V,V,V E = { (VO,V), (V0,V3), (V,V3), (V,V), (V,V0), (V,V), (V3,V), (V3,V), (V3,V), (V,V), (V,V) Explora sistemáticamente las aristas del grafo de forma que primero se visitan los vértices más cercanos al que estamos explorando. Algoritmo de recorrido en anchura: Contador (OrdenRecorrido) Vector de naturales (R) para marcar los vértices ya visitados (R[v]>0) y almacenar el orden de recorrido. Cola (Q) para gestionar los vértices no visitados public interface cola { void insertar (Object x); Object quitarprimero () throws DesbordamientoInferior; Object primero () throws DesbordamientoInferior; boolean esvacia(); void vaciar(); 9 0 Algoritmo de Recorrido en anchura Ejemplo: Recorrido BFS Recorrido en Amplitud OrdenRecorrido=0; vv: R[v]=0; Q=new ColaEnlazada(); vv: Si (R[v]==0) entonces BFS(v) R mantiene el orden de recorrido Método privado para el recorrido en Amplitud BFS(v) OrdenRecorrido++; R[v]=OrdenRecorrido; Q.insertar(v); mientras (!Q.esVacia()) { u=q.quitarprimero(); wadyacentes(u): Si R[w]==0 { OrdenRecorrido++; R[w]=OrdenRecorrido; Q.insertar(w) Nodos R Q v u w <> <> <> <,3> <,3,> <,3,,> <3,,> <,> <,,> <,,,8> <,,8> <,8> <8> <8,7> <7> <> <9> <> R

4 Recorrido en anchura en java public void RecorridoEnAmplitud() { R=new int[numvertices];ordenrecorrido=;q=new colavec(); for (int i=0; i<numvertices; i++) R[i]=0; for (int i=0; i<numvertices; i++) if (R[i]==0) BFS(i); private void BFS (int v) { R[v]=OrdenRecorrido++; q.insertar(new Integer(v)); while (!q.esvacia()) { Integer u= (Integer) q.quitarprimero(); Lista b=tabla[u.intvalue()].ady; b.primero(); while (!b.esfin()) { Arista w=(arista) b.recupera(); if (R[w.dest]==0) { R[w.dest]=OrdenRecorrido++; q.insertar(new Integer(w.dest)); b.siguiente(); Ejercicio: Hacer una traza del recorrido en amplitud sobre el grafo siguiente: V = { V0, V,V,V3,V,V,V E = { (VO,V), (V0,V3), (V,V3), (V,V), (V,V0), (V,V), (V3,V), (V3,V), (V3,V), (V,V), (V,V) 3 Ordenación topológica en GDA Algoritmo de Ordenación Topológica Aplicaciones: Representación de las fases de un proyecto en un GDA Evaluación de atributos en la fase de análisis semántico de un compilador Algoritmo para el recorrido según la OT Utilizar el recorrido en profundidad para ordenar los vértices según un orden (parcial) tal que u,vv, si (u,v)e, u v. Basta ir anotando en una pila global (P) los vértices completamente explorados por DFS. OTP ordenrecorrido=0; vv: R[v]=0; p= new pilavec(); vv: Si (R[v]==0) entonces DFST(v) ; Método privado recursivo DFST(v) ordenrecorrido++; R[v]=ordenRecorrido; wadyacentes(v): Si (R[w]==0) entonces DFST(w); p.apilar(v);

5 Ejemplo: Ordenación topológica Ejercicio Nodos R P v/w <> /,3,, <> <> 3/,, <> / <> 7/ <7,> <,7,> 8/ <8,,7,> <3,8,,7,> /3, <,3,8,,7,> / <,,3,8,,7,> <,,,3,8,,7,> 9/, <9,,,,3,8,,7,> Implementación del algoritmo de Ordenación topológica en Java Grafo ordenado topológicamente 7 8 BÚSQUEDA DE CAMINOS MÍNIMOS EN GRAFOS Problema del camino mínimo sin pesos La longitud del camino sin pesos mide el número de aristas Encontrar el camino más corto (medido por el número de aristas) desde un cierto vértice O a cualquier otro vértice Problema del camino mínimo con pesos positivos (algoritmo de Dijkstra) La longitud del camino con pesos es la suma de los costes de las aristas del camino Las aristas tienen costes no negativos Se trata de encontrar el camino más corto (medido con su coste total) desde el vértice origen al resto de vértices El problema anterior es un particular de éste, en el que las aristas tiene coste Problema: dado el siguiente grafo, encontrar el camino más corto (medido por el número de aristas) desde su Vértice a cualquier otro vértice v 0 v v v Problema 0 : encontrar el Camino más corto desde a Solución 0 : //la no //lahay distancia longitud mínima 0 de de es a es 0 distanciamin[vorigen] = 0; 0; 9 0

6 Problema: dado el siguiente grafo, encontrar el camino más corto (medido por el número de aristas) desde su Vértice a cualquier otro vértice v 0 v distanciam[vorigen] = 0; 0; distanciamin[primervadyacente(vorigen)] = ; ; distanciamin[últimovadyacente(vorigen)] = ; ; v 0 distanciam[vorigen] = 0; distanciam[vorigen] = 0; v v v v v Problema : encontrar el Camino más corto desde a sus Vértices más cercanos Solución : los // // la la Vértices distancia más mínima cercanos de de son 0 sus /v adyacentes, es a v 0 /v es distanciamin[primervadyacente(vorigen)] están a Arista de longitud (mínima) = ; ; distanciamin[últimovadyacente(vorigen)] = ; ; Problema : encontrar el Camino más corto desde a los Vértices más cercanos a los Vértices adyacentes a Solución // : los Vértices más cercanos son sus adyacentes // distancia mínima de de v 0 - es (v no 0 a - es (v no tiene) están a Aristas de longitud (mínima) distanciamin[primervadyacente(primervadyacente(vorigen)] = ; ; Cómo distanciamin[segundovadyacente(primervadyacente(vorigen)] = ; ; Usar recordar una distanciamin[últimovadyacente(primervadyacente(vorigen)] = ; ; dónde Cola distanciamin[primervadyacente(últimovadyacente(vorigen)] = ; ; distanciamin[segundovadyacente(últimovadyacente(vorigen)] = ; ; seguir? distanciamin[últimovadyacente(últimovadyacente(vorigen)] = ; distanciamin[últimovadyacente(últimovadyacente(vorigen)] = ; Problema: dado un grafo, encontrar el camino más corto (medido por el número de aristas) desde un Vértice dado, origen, a cualquier otro vértice Reformulación de Problema: Recorrido en Anchura o Breath First Search (BFS) desde el origen, en la que el vector R pasa a ser distanciamin: distanciamin[i] representa la distancia mínima de origen al Vértice i si distanciamin[i] ==, el Vértice i NO se ha visitado aún por lo que la distancia mínima de origen al Vértice i es la máxima posible distanciamin[origen] == 0 si distanciamin[i] > 0, el Vértice i SÍ se ha visitado, desde un cierto vanterior/ distanciamin[i]=distanciamin[vanterior] + Resolución del problema de caminos mínimos sin pesos CaminoMinimoSinPeso(origen) vv: distanciamin[v]= ; q.insertar(origen); while (!q.esvacia()) { v=q.quitarprimero() ; wadyacentes(v): Coste del algoritmo: O( E ) Lineal con el tamaño del grafo (número de arcos) if (distanciamin[w] == ) { distanciamin[w] = distanciamin[v] + ; q.insertar(w); 3

7 Problema: dado el siguiente grafo, encontrar el camino más corto (medido por el número de aristas) desde su Vértice a cualquier otro vértice v 0 v v v Comprobar == inf evita que distanciamin[3] pase a valer 3 distanciamin[] = distanciamin[3] + Vertice s DistanciaMin 0 3 q = q = 0 q = q = 0, q =, q=,, q=, q = 3, public void CaminoMinimoSinPeso(int origen){ distanciamin = new int[numvertices]; for (int i=0 ; i<=numvertices ; i++) distanciamin[i]=infinito ; q=new ColaVec(); distanciamin[origen]=0 ; q.insertar(new Integer(origen)); try { while (!q.esvacia()) { int v=((integer)q.quitarprimero()).intvalue() ; Lista b=tabla[v].ady; b.inicio(); while (!b.esfin()) { Arista a = (Arista) b.recupera(); int w = a.dest(); if (distanciamin[w] == INFINITO ) { distanciamin[w] = distanciamin[v] + ; q.insertar(new Integer(w)); b.siguiente(); catch (DesbordamientoInferior e) {// No puede ocurrir Encontrar no solo el coste sino también el camino Mostrar por pantalla el camino Usar un vector para guardar el camino: P[i] es el vértice anterior a i en el camino mínimo CaminoMinimoSinPeso(origen) vv: distanciamin[v]= ; vv: P[v]=- ; q.insertar(origen); while (!q.esvacia()) { v=q.quitarprimero() ; wadyacentes(v): void imprimircamino(int destino) { if (P[destino]!=-) { imprimircamino(p[destino]); System.out.println(tabla[destino].nombre); if (distanciamin[w] == ) { P[w]=v; distanciamin[w] = distanciamin[v] + ; q.insertar(w); 7 8

8 Resolución del problema de caminos mínimos con pesos Algoritmo de Dijkstra Algoritmo de Dijkstra Cambio en el ajuste del vector de distancias El valor distanciamin[v] sólo se modificaba una vez Ahora el algoritmo debe decidir si para llegar a un cierto vértice w es mejor pasar por v o no: distanciamin[w]=min(distanciamin[w], distanciamin[v]+coste(v,w)) Cambio en la selección del vértice a tratar Seleccionar el vértice más próximo ahora no es el tratado más recientemente sino el de menor coste La estrategia NO es usar una cola (First-In First-Out) El primero visitado no es el más próximo necesariamente En general utilizaremos un conjunto C para guardar los vértices no tratados: al principio son todos y en cada iteración se elimina uno, aquel que tiene el valor de distanciamin menor. 9 Dijkstra (origen) Coste del algoritmo: O( V ) vv: distanciamin[v]= ; Mejora: Usar una Cola de Prioridad C={V; //todos los vértices por tratar para representar C while ( C!=) { v=el elemento de C con menor valor de distanciamin; Eliminar v de C; wadyacentes(v): if (distanciamin[w]>distanciamin[v]+coste(v,w)) { distanciamin[w] = distanciamin[v] + coste(v,w) ; 30 Dijkstra (origen) Complejidad temporal (n= V ) Matriz de adyacencias y C una lista vv: distanciamin[v]= ; (n) C={V; //todos los vértices por tratar while ( C!=) { n- iteraciones v=el elemento de C con menor valor de distanciamin; Eliminar v de C; n n( n ) wadyacentes(v): T ( n) k( n i) k ( n ) i if (distanciamin[w]>distanciamin[v]+coste(v,w)) { distanciamin[w] = distanciamin[v] + coste(v,w) ; En la iteración i: C Seleccionar Eliminar Bucle n-i (n-i) (n-i) (n-i) 3 Dijkstra (origen) Complejidad temporal (n= V ) Listas de adyacencias y C un minheap vv: distanciamin[v]= ; (n) C={V; //todos los vértices por tratar while ( C!=) { n- iteraciones v=el elemento de C con menor valor de distanciamin; Eliminar v de C; n wadyacentes(v): T ( n) gradog log( n i) ( E log n) i if (distanciamin[w]>distanciamin[v]+coste(v,w)) { distanciamin[w] = distanciamin[v] + coste(v,w) ; En la iteración i: C Seleccionar y Eliminar Bucle n-i (log n-i) (gradog log (n-i)) 3

9 Implementación del algoritmo de Dijkstra La clase ElementoHeap Opción : Estructurar D como un minheap Implementar C como un vector de bits Utilizar un vector para marcar la posición de cada vértice en el heap Opción : Usar una cola de prioridad implementada como un minheap en la que cada elemento es un par (vértice, DistanciaMin[vértice]) Usar un vector para marcar los vértices ya visitados (desencolados). De esta forma se trata las posibles repeticiones de vértices en la cola de prioridad Seguro que el vértice se trata con el menor valor de DistanciaMin Ya no se vuelve a tratar porque se marca 33 public class ElementoHeap implements Comparable{ int dest; // vértice w int coste; // DistanciaMin[w] static ElementoHeap infneg=new ElementoHeap(); ElementoHeap() {this(0); ElementoHeap (int d) { this(d,0); ElementoHeap (int d, int c) { dest=d; coste=c; public boolean menorque (Comparable otro) { return (coste< ((ElementoHeap)otro).coste); public int compareto (Object otro) { return coste < ( (ElementoHeap)otro).coste? - : coste > ( (ElementoHeap)otro).coste? : 0; 3 Implementación del algoritmo de Dijkstra Ejercicios: public void dijkstra(int origen){ distanciamin = new int[numvertices]; for (int i=0 ; i<=numvertices ; i++) distanciamin[i] = INFINITO ; qprioridad = new MonticuloBinario(newnew ElementoHeap()); distanciamin[vorigen] = 0; qprioridad.insertar(new ElementoHeap(origen, 0)); try { while (!q.esvacia()) { ElementoHeap par = ((ElementoHeap)q.eliminarMin()); v = par.dest(); if (desencolados[v] == 0) { desencolados[v] = ; Lista b= tabla[v].ady(); b.inicio(); while (!b.esfin()) { Arista a = (Arista) b.recupera(); int w = a.dest; int costevw = a.coste(); if ( distanciamin[w] > distanciamin[v] + costevw) { distanciamin[w] = distanciamin[v] + costevw ; qprioridad.insertar(new ElementoQ(w, distanciamin[w] )); b.siguiente(); catch (DesbordamientoInferior e) {// No puede ocurrir.- Hacer una traza del algoritmo de Dijkstra sobre este grafo, tomando como vértice origen v 0 0 v 8 v v.- Implementar en Java las operaciones sobre grafos, incluyendo recorridos y obtención de caminos siguiendo los algoritmos vistos en clase 3.- Implementar en Java las operaciones sobre grafos, incluyendo recorridos y obtención de caminos bajo el supuesto de que los grafos con los que vamos a trabajar sean densos 3 3

OBJETIVOS ÍNDICE. Tema 9: GRAFOS Estructuras de Datos y Algoritmos Curso 2004/05

OBJETIVOS ÍNDICE. Tema 9: GRAFOS Estructuras de Datos y Algoritmos Curso 2004/05 Tema 9: GRAFOS Estructuras de Datos y Algoritmos Curso 200/05 OBJETIVOS Definiciones formales de grafo y conceptos relacionados Estructuras de datos para representar grafos Algoritmos para resolver diferentes

Más detalles

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

1. Caminos Mínimos en un Grafo sin Pesos 2. Caminos Mínmos en un Grafo ponderado. 1. Algoritmo de Dijkstra Tema - Soluciones Greedy para Problemas de Optimización sobre un Grafo Tema - Soluciones Greedy para Problemas de Optimización sobre un Grafo Germán Moltó Escuela Técnica Superior de Ingeniería Informática

Más detalles

OBJETIVOS ÍNDICE BIBLIOGRAFÍA

OBJETIVOS ÍNDICE BIBLIOGRAFÍA OBJETIVOS Tema 9: GRAFOS Primera Parte Estructuras de Datos y Algoritmos Curso 2002/03 Definiciones formales de grafo y conceptos relacionados Estructuras de datos para representar grafos Algoritmos para

Más detalles

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

Propiedades. Ejercicios Tema 14. Representación de Grafo. Grado de Grafo (Matriz de Adyacencia) Propiedades Ejercicios Tema Ejercicios Adaptados de Apuntes y Exámenes de EDA Germán Moltó gmolto@dsic.upv.es Estructuras de Datos y Algoritmos Escuela Técnica Superior de Ingeniería Informática Universidad

Más detalles

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

Propiedades (1/2) Soluciones Ejercicios Tema 14. Representación de Grafo (I) Propiedades (2/2) Grado del grafo: 6 V = 7 E = 12 Soluciones Ejercicios Tema Ejercicios Adaptados de Apuntes y Exámenes de EDA Germán Moltó gmolto@dsic.upv.es Estructuras de Datos y Algoritmos Escuela Técnica Superior de Ingeniería Informática Universidad

Más detalles

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

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 Tema Grafos y su Implementación en Java Tema Grafos y su Implementación en Java Parte II Germán Moltó Escuela Técnica Superior de Ingeniería Informática Universidad Politécnica de Valencia Índice general:.

Más detalles

Grafos. 19 de diciembre de 2013

Grafos. 19 de diciembre de 2013 Grafos 19 de diciembre de 2013 Grafo Un grafo es un conjunto, no vacío, de objetos llamados vértices (o nodos) y una selección de pares de vértices, llamados aristas (edges en inglés) que pueden ser orientados

Más detalles

Tema 10- Grafos. Objetivos:

Tema 10- Grafos. Objetivos: 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

Más detalles

EDA. Tema 8 Colas de Prioridad: Heaps

EDA. Tema 8 Colas de Prioridad: Heaps EDA. Tema 8 Colas de Prioridad: Heaps Natividad Prieto Sáez. DSIC EDA, T-8. Curso 02/03. N.Prieto p.1/55 Objetivos Estudio de las definiciones asociadas a las Colas de Prioridad: Especificación: operaciones

Más detalles

Estructuras de Datos y Algoritmos. Grafos

Estructuras de Datos y Algoritmos. Grafos Estructuras de Datos y Algoritmos Grafos Definiciones Grafo modelo para representar relaciones entre elementos de un conjunto. Grafo: (V,E), V es un conjunto de vértices o nodos, con una relación entre

Más detalles

Grafos. Amalia Duch Brown Octubre de 2007

Grafos. Amalia Duch Brown Octubre de 2007 Grafos Amalia Duch Brown Octubre de 2007 Índice 1. Definiciones Básicas Intuitivamente un grafo es un conjunto de vértices unidos por un conjunto de líneas o flechas dependiendo de si el grafo es dirigido

Más detalles

ESTRUCTURA DE DATOS Y ALGORITMOS Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota:

ESTRUCTURA DE DATOS Y ALGORITMOS Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota: Nombre y apellidos: Nota: NOTA FINAL: Nota Practica (1 punto) + Nota Examen (9 punto) Es indispensable aprobar el examen (4,5 puntos) para aprobar la asignatura (5 puntos) La práctica es opcional Duración:

Más detalles

Soluciones Ejercicios Tema 7. Cambio de Signo Pila (3/3) if (!p.esvacia()) { d i l cambiasignopila(p); this.apilar(new Integer(-dato));

Soluciones Ejercicios Tema 7. Cambio de Signo Pila (3/3) if (!p.esvacia()) { d i l cambiasignopila(p); this.apilar(new Integer(-dato)); Cambio de Signo Pila (1/3) Soluciones Ejercicios Tema 7 Germán Moltó Martínez gmolto@dsic.upv.es Estructuras de Datos y Algoritmos Escuela Técnica Superior de Ingeniería Informática Universidad Politécnica

Más detalles

Colas Implementación con gestión estática de memoria

Colas Implementación con gestión estática de memoria Colas Implementación con gestión estática de memoria Esquema general 0 1 2 3 n - 1... _primero = 0 _ultimo = 0 Esquema general * Añadir un elemento a la cola. 0 1 2 3 n - 1 'a'... 1) _vector[_ultimo] =

Más detalles

Grafos (principiantes) - Parte I

Grafos (principiantes) - Parte I Grafos (principiantes) - Parte I Juan Cruz Piñero Facultad de Informática Universidad Nacional del Comahue Training Camp 2017 Juan Cruz Piñero (FAI - UNCo) Grafos (Principiantes) Parte I TC 2017 1 / 39

Más detalles

NIVEL 17: ESTRUCTURAS NO LINEALES

NIVEL 17: ESTRUCTURAS NO LINEALES 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

Más detalles

ESTRUCTURA DE DATOS Y ALGORITMOS Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota:

ESTRUCTURA DE DATOS Y ALGORITMOS Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota: Nombre y apellidos: Nota: Escribe tu nombre y apellidos en esta hoja e inmediatamente en todas las suplementarias, incluso las de sucio. El no hacerlo puede suponer tu expulsión Puedes utilizar el lápiz

Más detalles

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

Algoritmos Elementales de Grafos. Agustín J. González ELO-320: Estructura de Datos Y Algoritmos 1er.Sem. 2002 Algoritmos Elementales de Grafos Agustín J. González ELO-0: Estructura de Datos Y Algoritmos er.sem. 00 Introducción Estudiaremos métodos para representar y explorar o recorrer grafos. Explorar un grafo

Más detalles

Soluciones Ejercicios Tema 8

Soluciones Ejercicios Tema 8 Traza Pila (1/2) Pila p = new ArrayPila(); Soluciones Ejercicios Tema 8 Germán Moltó Martínez gmolto@dsic.upv.es Estructuras de Datos y Algoritmos Escuela Técnica Superior de Ingeniería

Más detalles

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

Tema 7- Modelo y Aplicación de Pila, Cola y. Tema 7- Modelo y Aplicación de. Lista Con Punto de Interés Tema - Modelo y Aplicación de Pila, Cola y Lista con Punto de Interés Tema - Modelo y Aplicación de Pila, Cola y Lista con Punto de Interés Índice general:. Modelo y Aplicación de Lista con Punto de Interés

Más detalles

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

Tema 2: Grafos y Árboles. Algoritmos y Estructuras de Datos 3 Tema 2: Grafos y Árboles Algoritmos y Estructuras de Datos 3 1 ÍNDICE 2.1 Definiciones básicas: grafos y árboles 2.2 Representaciones de árboles y grafos 2.3 Algoritmos de recorrido de árboles binarios

Más detalles

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

Tema: Algoritmos para la ruta más corta en un Grafo. Programación IV. Guía 10 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación IV Tema: Algoritmos para la ruta más corta en un Grafo. Objetivos Específicos Definir el concepto de camino

Más detalles

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

Representación y manipulación de grafos: caminos, expansión, cortes y flujos Un grafo G es un par de conjuntos G =(V,E) Representación y manipulación de grafos: caminos, expansión, cortes y flujos V = un conjunto de n vértices u, v, w V E = un conjunto de m aristas V = n, E = m

Más detalles

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

Grafos. Leopoldo Taravilse. Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires. Training Camp 2012 Grafos Leopoldo Taravilse Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires Training Camp 2012 Leopoldo Taravilse (UBA) Grafos TC 2012 1 / 78 Contenidos 1 Definiciones básicas Algoritmos

Más detalles

Programación de sistemas Árboles

Programación de sistemas Árboles Programación de sistemas Árboles Departamento de Ingeniería Telemática 1 Contenidos Concepto de árbol Terminología Implementación Casos especiales Árboles binarios de búsqueda Montículos (heaps) 2 Concepto

Más detalles

Algoritmos y Estructuras de Datos: Ordenación y Colas con Prioridad. Guillermo Román Díez

Algoritmos y Estructuras de Datos: Ordenación y Colas con Prioridad. Guillermo Román Díez Algoritmos y Estructuras de Datos: Ordenación y Colas con Prioridad Guillermo Román Díez groman@fi.upm.es Universidad Politécnica de Madrid Curso 2015-2016 Guillermo Román, UPM AED: Introducción a la Recursión

Más detalles

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

Parte de Algoritmos de la asignatura de Programación Master de Bioinformática. Grafos Parte de Algoritmos de la asignatura de Programación Master de Bioinformática Grafos Web asignatura: http://dis.um.es/~domingo/algbio.html E-mail profesor: domingo@um.es Transparencias preparadas a partir

Más detalles

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

TEMA 3. Árboles. Objetivos. Contenidos. Bibliografía. Básica TEMA 3. Árboles Objetivos En este tema se estudia una de las estructuras de datos no lineal más importante en computación, el árbol. Comenzaremos introduciendo la terminología asociada a los árboles y

Más detalles

Centro Asociado Palma de Mallorca. Tutor: Antonio Rivero Cuesta

Centro Asociado Palma de Mallorca. Tutor: Antonio Rivero Cuesta Centro Asociado Palma de Mallorca Lógica y Estructuras Discretas Tutor: Antonio Rivero Cuesta Tema 5 Teoría de Grafos Conceptos Básicos Un grafo consta de: Grafo Un conjunto de nodos, Un conjunto de aristas

Más detalles

Estructuras de Datos y Algoritmos: Boletín de Problemas del segundo parcial

Estructuras de Datos y Algoritmos: Boletín de Problemas del segundo parcial Estructuras de Datos y Algoritmos: Boletín de Problemas del segundo parcial (Facultad de Informática) Curso 00 0 Estructuras de Datos y Algoritmos (FI-UPV) Curso 00 0 Árboles. Si la acción P fuera escribir

Más detalles

Tema 4y 5. Algoritmos voraces. Algoritmos sobre grafos

Tema 4y 5. Algoritmos voraces. Algoritmos sobre grafos Tema 4y 5. Algoritmos voraces. Algoritmos sobre grafos Objetivos: Estudio de la técnica de diseño de algoritmos voraces Estudio de algunos problemas clásicos: Indice: Mochila con fraccionamiento Algoritmos

Más detalles

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

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice

Más detalles

ESTRUCTURA DE DATOS Y ALGORITMOS Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota:

ESTRUCTURA DE DATOS Y ALGORITMOS Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota: Nombre y apellidos: Nota: Escribe tu nombre y apellidos en esta hoja e inmediatamente en todas las suplementarias, incluso las de sucio. El no hacerlo puede suponer tu expulsión Puedes utilizar el lápiz

Más detalles

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

Tema 14 Grafos y su Implementación en Java. Parte I. Objetivos. Bibliografía Tema Grafos y su Implementación en Java Tema Grafos y su Implementación en Java Parte I Germán Moltó Escuela Técnica Superior de Ingeniería Informática Universidad Politécnica de Valencia Índice general:.

Más detalles

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

TEMA 6 GRAFOS Fundamentos y terminología básica. Estructuras de datos Tema 6 Página 101 Estructuras de datos Tema 6 Página 101 GRAFOS TEMA 6 6.1. FUNDAMENTOS Y TERMINOLOGÍA BÁSICA...101 6.2. REPRESENTACIÓN DE GRAFOS...103 Representación mediante matrices: Matrices de adyacencia...103 Representación

Más detalles

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

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 11- Implementación de Cola de Prioridad y Diccionario Mediante un ABB Tema 11- Implementación de Cola de Prioridad y Diccionario Mediante un Árbol Binario de Búsqueda Germán Moltó Escuela Técnica

Más detalles

PROGRAMACIÓN GENÉRICA

PROGRAMACIÓN GENÉRICA PROGRAMACIÓN GENÉRICA Lenguajes de Programación - Orientación a Objetos: Progr. Genérica 1 Programación genérica Objetivo: escribir algoritmos genéricos, independientes de las clases concretas de los datos

Más detalles

Recorridos de grafos

Recorridos de grafos Recorridos de grafos Introducción 2 Recorrido en profundidad 3 Recorrido en anchura 9 Ordenación topológica 12 J. Campos - C.P.S. Esquemas algorítmicos - Grafos Pág. 1 Introducción Justificación de la

Más detalles

Tema 11. Estructura de datos Grafo

Tema 11. Estructura de datos Grafo Tema 11. Estructura de datos Grafo http://aulavirtual.uji.es José M. Badía, Begoña Martínez, Antonio Morales y José M. Sanchiz {badia, bmartine, morales}@icc.uji.es Estructuras de datos y de la información

Más detalles

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

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 Tema 8- Implementación de Pila, Cola y Lista con Punto de Interés Tema 8- Implementación de Pila, Cola y Lista con Punto de Interés Índice general: 1. Representación Eficaz de una EDA Lineal 2. Implementación

Más detalles

Algoritmos de búsqueda en grafos II

Algoritmos de búsqueda en grafos II II Dr. Eduardo A. RODRÍGUEZ TELLO CINVESTAV-Tamaulipas 12 de febrero de 2018 Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Búsqueda en grafos II 12 de febrero de 2018 1 / 26 1 Algoritmos de búsqueda en grafos Dr.

Más detalles

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

Algoritmos y Estructuras de Datos Iteradores. Guillermo Román Díez Algoritmos y Estructuras de Datos Iteradores Guillermo Román Díez groman@fi.upm.es Universidad Politécnica de Madrid Curso 2015-2016 Guillermo Román, UPM AED: Introducción 1/26 Iteradores Es muy común

Más detalles

TEMA 5 El tipo grafo. Tipo grafo

TEMA 5 El tipo grafo. Tipo grafo TEMA 5 El tipo grafo PROGRAMACIÓN Y ESTRUCTURAS DE DATOS Tipo grafo 1. Concepto de grafo y terminología 2. Especificación algebraica. Representación de grafos.1. Recorrido en profundidad o DFS.2. Recorrido

Más detalles

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

Tema: Grafos en C#. Objetivos Específicos. Materiales y Equipo. Introducción Teórica. Programación IV. Guía 7 Programación IV. Guía 7 1 Tema: Grafos en C#. Facultad: Ingeniería Escuela: Computación Asignatura: Programación IV Objetivos Específicos Definir el concepto de Grafo. A partir de una clase agregar la

Más detalles

Recorridos de Gráficas. comp-420

Recorridos de Gráficas. comp-420 Recorridos de Gráficas comp-420 Algoritmos de búsqueda en gráficas Una de las operaciones más frecuentes en una gráfica es la de visitar sus vértices uno por uno o en un orden deseado. Este procedimiento

Más detalles

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

Práctica 5. Fecha límite de entrega: viernes, 14 de diciembre Algoritmos http://www.lfcia.org/alg/ 2007-2008 Ingeniería Informática Ingeniería Técnica de Informática de Gestión Práctica 5 Fecha límite de entrega: viernes, 14 de diciembre Implementación de un Diccionario

Más detalles

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

ALGORITMOS DE BÚSQUEDA. Ing. Ronald A. Rentería Ayquipa ALGORITMOS DE BÚSQUEDA Algoritmos de Búsqueda Tipos Tipos de algoritmos de búsqueda ALGORITMOS DE BÚSQUEDA NO INFORMADA ALGORITMOS DE BÚSQUEDA HEURÍSTICA Búsqueda no informada Introducción Búsqueda no

Más detalles

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

Tema 6- Estructuras de Datos: Jerarquía de. Tema 6- Estructuras de Datos: Jerarquía de una EDA Tema 6- Estructuras de Datos: Jerarquía de una EDA Tema 6- Estructuras de Datos: Jerarquía de una EDA Índice general: 1. Definición y Uso de una EDA 2. Diseño de una EDA en Java 3. Organización de una

Más detalles

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

Examen de Estructuras de Datos y Algoritmos. (Modelo 1) Examen de Estructuras de Datos y Algoritmos (Modelo 1) 17 de junio de 2009 1. Qué rotación se necesita para transformar el árbol de la figura en un árbol AVL? a) Rotación simple izquierda-izquierda b)

Más detalles

Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota:

Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota: Nombre y apellidos: Nota: Escribe tu nombre y apellidos en esta hoja e inmediatamente en todas las suplementarias, incluso las de sucio. El no hacerlo puede suponer tu expulsión Puedes utilizar el lápiz

Más detalles

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

Examen de Estructuras de Datos y Algoritmos. (Modelo 2) Examen de Estructuras de Datos y Algoritmos (Modelo 2) 17 de junio de 2009 1. Se dispone de una tabla hash de tamaño 12 con direccionamiento abierto y sondeo cuadrático. Utilizando como función hash la

Más detalles

Programación de sistemas

Programación de sistemas Programación de sistemas Árboles Julio Villena Román MATERIALES CREADOS EN EL TRABAJO DE DIFERENTES AUTORES: Carlos Delgado Kloos, M.Carmen Fernández Panadero, Raquel M.Crespo García,

Más detalles

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

GRAFOS. Tomado de: Joyanes Aguilar Luis, Estructuras de datos en Java. CASOS GRAFOS Tomado de: Joyanes Aguilar Luis, Estructuras de datos en Java. CASOS 1.4 El recorrido del cartero Imaginemos un grafo que representa el mapa de las calles de un barrio. Una calle va de una esquina

Más detalles

Contenido. Contenido - IX. 1 Encapsulamiento a través de clases y objetos Introducción al lenguaje de programación Java...

Contenido. Contenido - IX. 1 Encapsulamiento a través de clases y objetos Introducción al lenguaje de programación Java... Contenido - IX Contenido 1 Encapsulamiento a través de clases y objetos... 1 1.1 Introducción... 2 1.2 Clases y objetos... 2 1.2.1 Las clases... 2 1.2.2 Miembros de la clase... 3 1.2.3 Interfaz y encapsulamiento...

Más detalles

Unidad 2: Problemas de camino mínimo

Unidad 2: Problemas de camino mínimo Representación Recorrido de grafos Camino mínimo Unidad 2: Problemas de camino mínimo Representación Matriz de adyacencia Matriz de incidencia Listas de vecinos Recorrido de grafos Estructuras de datos

Más detalles

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

Clase adicional 9. Listas enlazadas. Temas. Listas enlazadas Árboles Problemas de la clase adicional Ejercicios de diseño Clase adicional 9 Temas Listas enlazadas Árboles Problemas de la clase adicional Ejercicios de diseño Listas enlazadas Previamente en este curso, ya habrá trabajado con dos de las estructuras de datos

Más detalles

7.1 Modelo matemático y especificación

7.1 Modelo matemático y especificación Transparencias del libro Rodríguez Artalejo, M., González-Calero, P.A., Gómez Martín, M.A.: Estructuras de datos, un enfoque moderno. Editorial Complutense 2011. TEMA 7 GRAFOS Modelo matemático y especificación

Más detalles

Estructuras de Datos Clase 7 Listas e Iteradores (segunda parte)

Estructuras de Datos Clase 7 Listas e Iteradores (segunda parte) Estructuras de Datos Clase 7 Listas e Iteradores (segunda parte) Dr. Sergio A. Gómez http://cs.uns.edu.ar/~sag Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Bahía

Más detalles

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

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

Más detalles

Algorítmica y Complejidad. Tema 4 Algoritmos sobre grafos.

Algorítmica y Complejidad. Tema 4 Algoritmos sobre grafos. Algorítmica y Complejidad Tema. Algorítmos sobre grafos. Conceptos, Definiciones y Representación.. Conectividad y recorrido.. Árboles de expansión.. Caminos mínimos. Algorítmos sobre grafos. Conceptos,

Más detalles

Estructuras de Datos Clase 4 Pilas y colas

Estructuras de Datos Clase 4 Pilas y colas Estructuras de Datos Clase 4 Pilas y colas Dr. Sergio A. Gómez http://cs.uns.edu.ar/~sag Departamento de Ciencias e Ingeniería de la Computación Universidad Nacional del Sur Bahía Blanca, Argentina Tipo

Más detalles

Estructuras de datos Grafos

Estructuras de datos Grafos Estructuras de datos Grafos Dra. Elisa Schaeffer elisa.schaeffer@gmail.com PISIS / FIME / UANL Grafos p. 1 Matriz de adyacencia Un grafo G = (V,E) de n vértices etiquetados 1,2,3,...,n. Grafos p. 2 Matriz

Más detalles

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

Algoritmos y Estructuras de Datos Tema 2: Diseño de Algoritmos Algoritmos y Estructuras de Datos Tema 2: Diseño de Algoritmos 1! 1. Algoritmos recursivos " 1.1 Algoritmos recursivos. Recursión simple " 1.2 Algoritmos con vuelta atrás y ejemplos! 2. Complejidad de

Más detalles

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

Examen de Estructuras de Datos y Algoritmos (Ingeniería Informática) Examen de Estructuras de Datos y Algoritmos (Ingeniería Informática) Primera parte (50% nota del examen) Septiembre 2009 1) Se desea hacer un método con la cabecera que se muestra abajo que cree y retorne

Más detalles

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

Apuntes elaborados por: Aaron Asencio, Eduardo Quevedo, Raquel López Revisado por: Javier Miranda el??? Apuntes elaborados por: Aaron Asencio, duardo Quevedo, Raquel López Revisado por: Javier Miranda el??? Tema 9: rafos Los grafos no son más que la versión general de un árbol, es decir, cualquier nodo de

Más detalles

3.3. Pilas 3.3. PILAS 3

3.3. Pilas 3.3. PILAS 3 3.3. PILAS 3 3.3. Pilas Una Pila es una estructura de datos lineal que sólo permite insertar, eliminar y consultar elementos en uno de sus extremos, que denominamos cima. Es, por tanto, una estructura

Más detalles

Práctica 2. Búsqueda I

Práctica 2. Búsqueda I Práctica 2 Búsqueda I En esta práctica vamos a ver algunos algoritmos de búsqueda en grafos. Para ello vamos a utilizar una aplicación que nos permite programar diferentes problemas que pueden solucionarse

Más detalles

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

Algoritmos y Estructuras de Datos Tema 2: Diseño de Algoritmos Algoritmos y structuras de Datos Tema 2: Diseño de Algoritmos 1! 1. Algoritmos recursivos " 1.1 Algoritmos recursivos. Recursión simple " 1.2 Algoritmos con vuelta atrás y ejemplos! 2. omplejidad de los

Más detalles

Guía práctica de estudio 7

Guía práctica de estudio 7 Guía práctica de estudio 7 Algoritmos de Grafos. Parte 2. Elaborado por: Revisión: Ing. Laura Sandoval Montaño Facultad de Ingeniería U.N.A.M. Guía Práctica 7 Estructura de datos y Algoritmos II Algoritmos

Más detalles

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:

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: Búsqueda sin información Fernando Berzal, berzal@acm.org Búsqueda sin información Recorridos sobre grafos Búsqueda en anchura (BFS) Búsqueda en profundidad (DFS) Descenso iterativo (IDS) [ vuelta atrás

Más detalles

TIPOS ABSTRACTOS DE DATOS EN HASKELL

TIPOS ABSTRACTOS DE DATOS EN HASKELL TIPOS ABSTRACTOS DE DATOS EN HASKELL ÍNDICE GENERAL 1. Introducción a Haskell 2. Tipos abstractos de datos en Haskell 3. TAD Grafo 4. TAD Montículos 5. Bibliografía INTRODUCCIÓN A HASKELL 1. Introducción

Más detalles

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

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

Más detalles

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

Estructuras de Datos Orientadas a Objetos. Pseudocódigo y aplicaciones en C#.NET. Capítulo 9.- Grafos Capítulo 9.- Grafos Cuestionario 9.1 Se pueden representar los nodos de un grafo como un conjunto de elementos 9.2 Se pueden representar los arcos de un grafo como un conjunto de tuplas 9.3 Los grafos

Más detalles

El TAD Grafo. El TAD Grafo

El TAD Grafo. El TAD Grafo ! Esta representación resulta útil cuando el número de vértices se conoce previamente y permanecerá fijo durante la resolución del problema, pero resulta ineficiente si necesitamos añadir o eliminar vértices

Más detalles

ESTRUCTURA DE DATOS Y ALGORITMOS Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota:

ESTRUCTURA DE DATOS Y ALGORITMOS Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º Nombre y apellidos: Nota: Nombre y apellidos: Nota: 1. Ejercicio (3 puntos) a) Qué estructura de datos utilizarías para transformar la siguiente expresión a su equivalente expresión postfija? Argumenta tu decisión. Ej. entrada:

Más detalles

Clases abstractas e interfaces en Java

Clases abstractas e interfaces en Java Clases abstractas e interfaces en Java Clases abstractas public abstract class Figura { private String _nombre; public Figura (string nombre) { _nombre = nombre; final public boolean mayor_que (Figura

Más detalles

Francisco J. Hernández López

Francisco J. Hernández López Francisco J. Hernández López fcoj23@cimat.mx Estructura de datos no lineales donde cada componente o nodo puede tener uno o más predecesores (a diferencia de los árboles) y sucesores Un grafo esta formado

Más detalles

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. 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 Los grafos son estructuras que constan de vértices o nodos y de aristas o arcos que conectan los vértices entre sí. Un grafo G consiste en dos cosas: 1. Un conjunto V de elementos llamados nodos

Más detalles

Ejercicios Tema 7. que tenga los mismos datos que la Pila original pero. Diséñese un método que invierta recursivamente una Cola dada.

Ejercicios Tema 7. que tenga los mismos datos que la Pila original pero. Diséñese un método que invierta recursivamente una Cola dada. Ejercicios Tema 7 Ejercicios Adatados de Auntes y Exámenes de EDA Germán Moltó gmolto@dsic.uv.es Estructuras de Datos y Algoritmos Escuela Técnica Suerior de Ingeniería Informática Universidad Politécnica

Más detalles

Estructuras de Datos. 14 de junio de Apellidos

Estructuras de Datos. 14 de junio de Apellidos Ejercicio 1) (3 puntos). Dado el TAD Pila de Números Enteros con las siguientes operaciones: boolean pilavacia (); void apilar (int x); int desapilar () throws PilaVacia; SE PIDE: Codificar un método estático

Más detalles

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

Tema: Algoritmos para la ruta más corta en un Grafo. Programación IV. Guía No. 10 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación IV Tema: Algoritmos para la ruta más corta en un Grafo. Objetivos Específicos Definir el concepto de camino

Más detalles

El TAD Grafo. Objetivos. Contenidos

El TAD Grafo. Objetivos. Contenidos Objetivos q Estudiar la especificación del TAD Grafo q Presentar diferentes alternativas de implementación q Conocer los algoritmos más importantes de manipulación de grafos Contenidos 4.1 Conceptos 4.2

Más detalles

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

Estructura de Datos Página 1 de 13 ESTRUCTURA DE DATOS Estructura de Datos Página 1 de 13 ESTRUCTURA DE DATOS Contenido TEMA 4. Grafos 4.1. Grafos 4.1.1. Definición 4.1.2.Conceptos 4.2. Modelado de problemas típicos 4.3. Representación de un grafo a través

Más detalles

Grafos: algunas definiciones

Grafos: algunas definiciones Grafos: algunas definiciones Un grafo dirigido G es un par (V, E), donde V es un conjunto finito de nodos (o vértices) y E es una relación binaria sobre V. Un grafo no dirigido G es un par (V, E), donde

Más detalles

Algoritmos y Estructuras de Datos III

Algoritmos y Estructuras de Datos III Á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

Más detalles

Algoritmos de búsqueda en grafos I

Algoritmos de búsqueda en grafos I I Dr. Eduardo A. RODRÍGUEZ TELLO CINVESTAV-Tamaulipas 7 de febrero de 2018 Dr. Eduardo RODRÍGUEZ T. (CINVESTAV) Búsqueda en grafos I 7 de febrero de 2018 1 / 36 1 Representación computacional de grafos

Más detalles

Algoritmia: Búsquedas y Recursividad

Algoritmia: Búsquedas y Recursividad Algoritmia: Búsquedas y Recursividad Pablo San Segundo (C-206) pablo.sansegundo@upm.es Ejemplo Mapa de celdas 1 2 3 4 5 6 8 9 10 11 12 14 15 16 17 18 D 21 22 23 O GRADO DEL GRAFO? Escribir un algoritmo

Más detalles

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

Semana 4: Métodos de Búsqueda No informados. Prof. Oscar Benito Pacheco. Semana 4: Métodos de Búsqueda No informados Prof. Oscar Benito Pacheco. Estrategias de Búsqueda Búsqueda No Informada Búsqueda Informada (Ciega) (Heurística) 1. Búsqueda preferente por amplitud 2. Búsqueda

Más detalles

IMPLEMENTACIÓN DE PILAS CON LISTAS EN C++

IMPLEMENTACIÓN DE PILAS CON LISTAS EN C++ IMPLEMENTACIÓN DE PILAS CON LISTAS EN C++ Fichero nodo.h #ifndef NODO_H #define NODO_H const int cantidad_nodos = 10; class Nodo private: string dato; Nodo* siguiente; public: Nodo(); void setdato(string

Más detalles

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

Estructura de Datos. Temario Unidad VI. Árboles Árboles Binarios Estructura de Datos Árboles Árboles Binarios Temario Unidad VI 6.1 Definición y operaciones 6.2 Implementación 6.3 Recorrido en Árboles Binarios 6.4 Árboles AVL y su implementación 6.5 Árboles n-arios

Más detalles

Tema: Recorrido de Grafos. Ruta más corta

Tema: Recorrido de Grafos. Ruta más corta PED104. Guía N 12 Página 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación con Estructuras de Datos Tema: Recorrido de Grafos. Ruta más corta Competencia Desarrolla sistemas de información

Más detalles

Versión Iterativa de recuperar en un. Soluciones Ejercicios Tema 11. protected NodoABB<E> recuperarmax(nodoabb<e> n) { while (n.der!= null) n = n.

Versión Iterativa de recuperar en un. Soluciones Ejercicios Tema 11. protected NodoABB<E> recuperarmax(nodoabb<e> n) { while (n.der!= null) n = n. Versión Iterativa de recuperar en un ABB Soluciones Ejercicios Tema 11 Germán Moltó Martínez gmolto@dsic.upv.es Estructuras de Datos y Algoritmos Escuela Técnica Superior de Ingeniería Informática Universidad

Más detalles

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

INTERFACE ITERATOR DEL API JAVA. MÉTODO REMOVE PARA BORRAR OBJETOS EN COLECCIONES. EJERCICIOS Y EJEMPLO RESUELTO. (CU00919C) APRENDERAPROGRAMAR.COM INTERFACE ITERATOR DEL API JAVA. MÉTODO REMOVE PARA BORRAR OBJETOS EN COLECCIONES. EJERCICIOS Y EJEMPLO RESUELTO. (CU00919C) Sección: Cursos Categoría: Lenguaje de programación Java

Más detalles

Examen parcial Convocatoria de junio de 2005 FUNDAMENTOS DE LA PROGRAMACIÓN

Examen parcial Convocatoria de junio de 2005 FUNDAMENTOS DE LA PROGRAMACIÓN EJERCICIO 1 (1.5 puntos) Diseñe un conjunto de casos de prueba adecuado para comprobar el funcionamiento de un método encargado de calcular la duración de una llamada telefónica. Entradas Hora de inicio

Más detalles

Listas ordenadas Implementación

Listas ordenadas Implementación Listas ordenadas Implementación Esquema general _primero _resto 12 3 5-7 17 Esquema general _primero _resto 12 3 5-7 17 _primero _resto -7 3 5 12 17 public ListaOrdenada () { super(); public ListaOrdenada

Más detalles

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

Teoría de Grafos. Herramientas de programación para procesamiento de señales Teoría de Grafos Herramientas de programación para procesamiento de señales Indice Nociones básicas: Definiciones Ejemplos Propiedades Nociones avanzadas: Grafos planares Árboles Representación en computadora

Más detalles

Algoritmos y Estructuras de Datos III

Algoritmos y Estructuras de Datos III Á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

Más detalles

Conceptos básicos en la Teoría de Grafos

Conceptos básicos en la Teoría de Grafos Conceptos básicos en la Teoría de Grafos Cristina Jordán Lluch Instituto de Matemáticas Multidisciplinar Grupo de Modelización Físico-Matemática Conceptos básicos Subgrafos Caminos, cadenas y ciclos Represetación

Más detalles

Camino mínimo en grafos

Camino mínimo en grafos Camino mínimo en grafos Melanie Sclar Facultad de Ciencias Exactas y Naturales Universidad de Buenos Aires Nacional OIA 206 Melanie Sclar (UBA) Camino mínimo en grafos Nacional OIA 206 / Contenidos Camino

Más detalles