Tema 7. Tablas de Dispersión

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

Download "Tema 7. Tablas de Dispersión"

Transcripción

1 Tema 7. Tablas de Dispersión 1. Introducción 2. Funciones de dispersión 3. Resolución de colisiones Exploración lineal Exploración cuadrática Encadenamiento 4. Análisis de costes 5. Implementaciones en Java EDA. Curso 2002/2003. Tema 7. N.Prieto p.1/58

2 Objetivos Motivar computacionalmente el estudio de las tablas Hash como estructura de almacenamiento por nombre, por ejemplo para su uso como tabla de símbolos de un compilador Estudio de la utilidad de una elección lógica de una función de dispersión para lograr una ocupación equilibrada de la tabla Estudio de las soluciones ante la colisión en la aplicación de la función de dispersión Exploración lineal Exploración cuadrática Encadenamiento Implementaciones y algoritmos sobre tablas Hash EDA. Curso 2002/2003. Tema 7. N.Prieto p.2/58

3 Bibliografía M.A. Weiss. Estructuras de Datos en Java. Ed. Addison Wesley, Capítulo 6, apartado 7 y capítulo 19. T.H. Cormen, C.E. Leiserson, R.L.Rivest. Introduction to Algorithms. MIT Press, Capítulo 12 R. Wiener, L.J. Pinson. Fundamental of OOP and Data Structures in Java. Cambridge University Press, Capítulo 16. EDA. Curso 2002/2003. Tema 7. N.Prieto p.3/58

4 Para qué se usa una Tabla Hash? Una tabla hash es una estructura de datos para representar conjuntos Permite representar diccionarios proporcionando costes medios constantes para las operaciones Las operaciones basadas en ordenación de elementos (buscarmin o listado en orden) no pueden implementarse de forma tan eficiente como en los ABB EDA. Curso 2002/2003. Tema 7. N.Prieto p.4/58

5 Qué es una tabla hash? Una tabla hash viene definida por un vector para almacenar los datos una función de dispersión Un método de resolución de colisiones El paquete estandar java.util proporciona la clase Hashtable, que es una implementación robusta y eficiente de las tablas de dispersión. EDA. Curso 2002/2003. Tema 7. N.Prieto p.5/58

6 La función de dispersión Una función hash convierte un elemento en un entero adecuado para indexar el vector de cubetas, h : U 0..B 1 La función hash debe distribuir los elementos uniformemente por toda la tabla La función hash debe de poder ser calculada de forma eficiente La función hash no es inyectiva, por lo que se producen colisiones EDA. Curso 2002/2003. Tema 7. N.Prieto p.6/58

7 Resolución de colisiones Exploración lineal Exploración cuadrática Encadenamiento separado EDA. Curso 2002/2003. Tema 7. N.Prieto p.7/58

8 Medida de la eficiencia de una tabla hash Factor de carga: relación entre el número de elementos almacenados y el tamaño de la tabla, f = N/B Número de pruebas: número de comparaciones necesario para determinar la presencia de un elemento en una tabla Número medio de pruebas: Valores más pequeños indican mayor eficiencia de la tabla EDA. Curso 2002/2003. Tema 7. N.Prieto p.8/58

9 Definición de la función de dispersión Sobre los números naturales Método de la División: h(k)= k mod B B es el tamaño de la tabla B debe ser un número primo no cercano a una potencia de 2 Método de la Multiplicación: h(k)= B(kA mod 1) 0<A<1 se suele tomar B como una potencia de 2 Sobre las cadenas de caracteres EDA. Curso 2002/2003. Tema 7. N.Prieto p.9/58

10 Funciones hash sobre cadenas Definición 1: hashmala int hash (String clave) { int valorhash=0; for (int i=0;i<clave.length;i++) valorhash+=clave.charat(i); return (valorhash%b); Problemas: No distribuye bien las claves si el tamaño de la tabla es grande Ejemplo: B=10007 y clave.length<8; 0<=hash(clave)<=1016 hash(abc)=hash(bca) EDA. Curso 2002/2003. Tema 7. N.Prieto p.10/58

11 Funciones hash (2) Definición 2: int hash (String clave) { int valorhash=clave.charat(0); for (int i=1;i<clave.length;i++) valorhash=(valorhash*256+clave.charat(i)) % B; return (valorhash); Problemas: Cálculo más costoso debido al cálculo de la operación mdulo dentro del bucle EDA. Curso 2002/2003. Tema 7. N.Prieto p.11/58

12 Funciones hash (3) Definición 3 int hash (String clave) { int valorhash=clave.charat(0); for (int i=1;i<clave.length;i++) valorhash=(valorhash*256+clave.charat(i)); return (valorhash%b); Problemas: Desbordamiento EDA. Curso 2002/2003. Tema 7. N.Prieto p.12/58

13 Funciones hash (4) Definición 4: static public int hashweiss(string clave, int tamanyotabla){ int valorhash = 0; for (int i= 0; i < clave.length() ; i++) valorhash = 37 * valorhash + clave.charat(i); valorhash %= tamanyotabla; if (valorhash < 0) valorhash += tamanyotabla; return valorhash; EDA. Curso 2002/2003. Tema 7. N.Prieto p.13/58

14 Funciones hash (5) Definición 5: Otros valores de la base int hash (String clave) { int valorhash=0; for (int i=0;i<clave.length;i++) valorhash=valorhash*4+clave.charat(i); return (valorhash % B); int hash (String clave) { int valorhash=0; for (int i=0;i<clave.length;i++) valorhash=valorhash*37+clave.charat(i); valorhash%=b; if (valorhash<0) valorhash+=b; return (valorhash); EDA. Curso 2002/2003. Tema 7. N.Prieto p.14/58

15 Comparación entre funciones hash (1) public class CollisionExperiment { private final int NUMBER_WORDS = ; String [] table; public void computecollisions () { int hashindex = 0; try {System.out.print ("Size\ Collisions"); for (int size=number_words;size<=10*number_words;size+=number_w table = new String[size]; BufferedReader diskinput=new BufferedReader (new InputStream new FileInputStream (new File("distinct. int collisions = 0; String line = diskinput.readline(); while (line!= null && line.length() > 0) { hashindex = Math.abs(line.hashCode()) % size; if (table[hashindex]= null) table[hashindex]=line; else collisions++; line = diskinput.readline(); System.out.println (size+"\t"+collisions); catch (Exception ex) {System.out.println(ex); EDA. Curso 2002/2003. Tema 7. N.Prieto p.15/58

16 Comparación entre funciones hash (2)... static public void main (String[] args) { CollisionExperiment app=new CollisionExperiment(); app.computecollisions(); EDA. Curso 2002/2003. Tema 7. N.Prieto p.16/58

17 Comparación entre funciones hash (3) EDA. Curso 2002/2003. Tema 7. N.Prieto p.17/58

18 Comparación entre funciones hash (4) EDA. Curso 2002/2003. Tema 7. N.Prieto p.18/58

19 Funciones Hash (distinct.txt pal.) hashcode hashmala hashweiss hash4 hash27 Numero de colisiones e e+06 Tamaˆ o de la tabla Comparación entre funciones hash (5) EDA. Curso 2002/2003. Tema 7. N.Prieto p.19/58

20 Comparación entre funciones hash (6) Size hashcode hashmala hashweiss hash4 hash EDA. Curso 2002/2003. Tema 7. N.Prieto p.20/58

21 La clase Hashtable de java.util Métodos constructores: public Hashtable() // construye una tabla hash vacia con una capacidad inicial 11 // y factor de carga de 0.75 public Hashtable(int initialcapacity) // construye una tabla hash vacia con la capacidad especificada // en el parámetro y factor de carga de 0.75 public Hashtable(int initialcapacity, float loadfactor) // construye una tabla hash vacia con la capacidad y factor de // carga especificados en los parámetros EDA. Curso 2002/2003. Tema 7. N.Prieto p.21/58

22 La clase Hashtable Métodos modificadores: public Object put(object key, Object value) // Añade el valor a la tabla con clave key public Object remove(object key) // elimina la clave y su correspondiente valor de la tabla // Si el n o de elementos almacenados excede B*factorCarga, // el tamaño de la tabla se incrementa dinámicamente en B // para asegurar que el factor de carga no se incrementa EDA. Curso 2002/2003. Tema 7. N.Prieto p.22/58

23 La clase Hashtable Métodos consultores: public boolean containskey(object key) // Comprueba si es una clave en esta tabla public boolean containsvalue(object value) // comprueba si el objeto está en la tabla public Object get(object key) // devuelve el valor asociado a la clave en la tabla public int size() // devuelve el número de entradas en la tabla EDA. Curso 2002/2003. Tema 7. N.Prieto p.23/58

24 Evaluación Diseño del experimento para evaluar la rapidez de acceso a la información utilizando una tabla hash: Usaremos un objeto de la clase Hashtable, que usa la función de dispersión hashcode de la clase String Almacenaremos en la tabla las palabras distintas Calcularemos el tiempo medio de acceso para buscar todas estas claves en la tabla EDA. Curso 2002/2003. Tema 7. N.Prieto p.24/58

25 Programa en Java (1) public void performtest() throws Exception { // para medir el tiempo long elapsedtime = 0L;long starttime, endtime; // formato DecimalFormat df = new DecimalFormat("0.##"); hash = new Hashtable(250000); // para lectura BufferedReader diskinput;string line; diskinput=new BufferedReader (new InputStreamReader ( new FileInputStream(new File ("distinct.txt")))); // Cada línea del fichero se inserta en la tabla line = diskinput.readline(); while (line!= null) { hash.put(line, line); line = diskinput.readline(); System.out.println ("Talla de la tabla hash= "+hash.size()); EDA. Curso 2002/2003. Tema 7. N.Prieto p.25/58

26 Programa en Java (2)... System.out.println ("Buscando las palabras sobre la tabla"); elapsedtime = 0; diskinput = new BufferedReader (new InputStreamReader ( new FileInputStream(new File ("distinct.txt")))); line = diskinput.readline(); while (line!= null) { starttime = System.currentTimeMillis(); if (hash.containskey(line)) count++; endtime = System.currentTimeMillis(); elapsedtime += endtime - starttime; line = diskinput.readline(); System.out.println ("Palabras revisadas por segundo="+ (int)(count*1000.0/elapsedtime) +" palabras/seg."); EDA. Curso 2002/2003. Tema 7. N.Prieto p.26/58

27 Resultados: Talla de la tabla hash= Buscando las palabras sobre la tabla Palabras revisadas por segundo= palabras/ EDA. Curso 2002/2003. Tema 7. N.Prieto p.27/58

28 Resolución de colisiones Sobre la tabla Exploración Lineal Exploración cuadrática Fuera de la tabla: listas de colisiones EDA. Curso 2002/2003. Tema 7. N.Prieto p.28/58

29 Exploración Lineal Incluye la búsqueda secuencial hasta encontrar una posición vacia si la posición inicial dada por la función hash está ocupada por otra palabra. Búsqueda circular. Para factores de carga altos las secuencias de encadenamiento son muy altas y el tiempo medio de acceso puede ser muy elevado. Ejemplo C={89,18,49,58,9, h(x)=x % B, B=10 EDA. Curso 2002/2003. Tema 7. N.Prieto p.29/58

30 Algoritmo de inserción 1. Calcular el valor del índice hash para la palabra a insertar 2. Si la posición en el vector está vacia, insertar la nueva palabra en esta posición 3. Si la posición en el vector está ocupada con una palabra diferente, incrementar secuencialmente el índice hasta encontrar la palabra o una posición vacia 4. Si la búsqueda efectuada en el paso anterior no tiene éxito, insertar la palabra en la posición vacia encontrada. EDA. Curso 2002/2003. Tema 7. N.Prieto p.30/58

31 Evaluación de la inserción El número de pruebas asociada con la inserción de una palabra utilizando este método es igual al número de posiciones del vector consultadas. Para factores de carga altos se forman cadenas de colisiones muy grandes y el número de pruebas necesarias para buscar una palabra incrementa significativamente EDA. Curso 2002/2003. Tema 7. N.Prieto p.31/58

32 Algoritmo de búsqueda 1. Calcular el valor del índice hash para la palabra a insertar 2. Si la posición en el vector está vacia, la palabra no está 3. Si la posición en el vector está ocupada con una palabra diferente, incrementar secuencialmente el índice hasta encontrar la palabra o una posición vacia 4. Si la búsqueda efectuada en el paso anterior termina porque se encuentra una posición vacia, la palabra no está EDA. Curso 2002/2003. Tema 7. N.Prieto p.32/58

33 Algoritmo de borrado Eliminación perezosa 1. Calcular el valor del índice hash para la palabra a insertar 2. Si la posición en el vector contiene la palabra a borrar se marca. 3. Si la posición en el vector está ocupada con una palabra diferente, incrementar secuencialmente el índice hasta encontrar la palabra o una posición vacia 4. Si la búsqueda efectuada en el paso anterior termina porque se encuentra la palabra, se marca como borrada EDA. Curso 2002/2003. Tema 7. N.Prieto p.33/58

34 Efecto del factor de carga public class LinearChainingApp { // Atributos int probes; boolean [] words = new boolean [1000]; // Holds virtual words Random rnd = new Random(); int count; public void generatetable (double loadfactor) { for (int i=0;i<1000;i++) words[i]=false; //vaciar tabla count = (int)(1000*loadfactor); probes = 0; for (int i=0;i<count;i++) { int hashindex=rnd.nextint(1000); while (words[hashindex]==true) { hashindex++;probes++; if (hashindex==1000) hashindex=0; words[hashindex]=true; probes++; EDA. Curso 2002/2003. Tema 7. N.Prieto p.34/58

35 Efecto del factor de carga static public void main (String[] args) { DecimalFormat df = new DecimalFormat("#.00"); LinearChainingApp app = new LinearChainingApp(); System.out.println("Factor de carga\tnumero medio de pruebas"); for (double lf = 0.1; lf <= 0.9; lf += 0.1) { app.generatetable(lf); System.out.println(df.format(lf)+"\t\t"+ df.format((double)app.probes/app.count)); for (double lf = 0.91; lf < 1.0; lf += 0.01) { app.generatetable(lf); System.out.println(df.format(lf)+"\t\t"+ df.format((double)app.probes/app.count)); EDA. Curso 2002/2003. Tema 7. N.Prieto p.35/58

36 Resultados Factor de carga Número medio de pruebas EDA. Curso 2002/2003. Tema 7. N.Prieto p.36/58

37 EDA. Curso 2002/2003. Tema 7. N.Prieto p.37/58 16 Evaluaciˆon de la exploracion lineal "reslinearch" u 1: Numero Medio de Pruebas Factor de Carga

38 Conclusiones Hasta factores de carga del orden del 70 % el comportamiento de la tabla es muy bueno (sobre 2 comparaciones) Para factores de carga del 80 % y superiores el comportamiento de la tabla se degrada rápidamente Un ABB balanceado con 1000 nodos requiere un número medio de comparaciones de 9, comparable a una tabla hash con factor de carga del 0.95 Una tabla hash con factor de carga del orden de 0.6 tiene un comportamiento que es cuatro veces más rápido que un ABB balanceado EDA. Curso 2002/2003. Tema 7. N.Prieto p.38/58

39 Exploración Cuadrática Su nombre se debe al uso de la función F (i) = i 2 en la eliminación de los conflictos Búsqueda circular: H, H + 1 2, H + 2 2, H + 3 2,..., H + i 2 Ejemplo C={89,18,49,58,9, h(x)=x % B, B=10 Los puntos siguientes de prueba distan de la posición original un número cuadrático de posiciones EDA. Curso 2002/2003. Tema 7. N.Prieto p.39/58

40 Implementación de la EC El tamaño de la tabla debe de ser un número primo y el factor de carga no debe de ser superior al 0.5 (Teorema 19.4) para asegurar que siempre insertaremos el nuevo elemento y para asegurar que ninguna celda será consultada dos veces durante un acceso Cálculo eficiente de las sucesivas posiciones de prueba (Teorema 19.5) H i = H i 1 + 2i 1(modB) (1) Expansión dinámica de la tabla para mantener el factor de carga: rehashing EDA. Curso 2002/2003. Tema 7. N.Prieto p.40/58

41 1000 EDA. Curso 2002/2003. Tema 7. N.Prieto p.41/58 Lineal Cuadratica Logaritmo del Numero medio de pruebas factor de carga Exploracion lineal vs cuadratica (Random) Lineal Cuadratica 30 Numero medio de pruebas factor de carga

42 Resultados de EL vs EC Sobre enteros y con función de hash la identidad # Factor de carga NMP-EL NMP-EC EDA. Curso 2002/2003. Tema 7. N.Prieto p.42/58

43 Resultados de EL vs EC Sobre Strings con la función hashcode # Factor de carga NMP-EL NMP-EC EDA. Curso 2002/2003. Tema 7. N.Prieto p.43/58

44 Efectos del rehasing 1000 Ahorro de memoria con Hashing Enlazado Expl. Lineal Expl. Cuadr Expl. Enlazada Expl. Lineal rehash Expl. Cuadr rehash Log. del numero medio de pruebas EDA. Curso 2002/2003. Tema 7. N.Prieto p.44/58

45 Hashing Enlazado Método alternativo de resolución de colisiones Definidos una función de dispersión y un cierto tamaño B para la tabla... Cada grupo de colisiones se almacenan en una lista explícita El número medio de pruebas en este tipo de tablas será del orden de la longitud media de las listas Para obtener NMP del orden de 2, es necesario que las listas tengan en promedio 2 elementos la elección de una buena función de dispersión es un aspecto crítico Un tamaño apropiado para la tabla es un número primo próximo a N/2 ó N/3 EDA. Curso 2002/2003. Tema 7. N.Prieto p.45/58

46 Hashing Enlazado 1000 Expl. Lineal vs Cuadratica vs Enlazada Expl. Lineal Expl. Cuadratica Expl. Enlazada Log. numero medio de pruebas EDA. Curso 2002/2003. Tema 7. N.Prieto p.46/58

47 Hashing Enlazado Eficiencia del Hashing Enlazado vs capacidad de la tabla FC=100% FC=63% FC=50% Numero medio de intentos EDA. Curso 2002/2003. Tema 7. N.Prieto p.47/58

48 Implementacion en Java EDA. Curso 2002/2003. Tema 7. N.Prieto p.48/58

49 La clase ExploracionTablaHash public abstract class ExploracionTablaHash { //Atributos protected EntradaHash tabla[]; // tabla es un array de EntradaHash private static final int CAPACIDAD_POR_DEFECTO = 11; // capacidad ini protected int tamanyoactual; // cuántos, de capacidad elementos, tie public ExploracionTablaHash(){... public final void vaciar(){... public boolean esvacia(){... public int tamanyo() {... public final static int hash(string clave){... protected abstract int buscarpos(hashable x); public final Hashable buscar(hashable x) throws ElementoNoEncontrado{... public final void eliminar (Hashable x) throws ElementoNoEncontrado{... public final void insertar (Hashable x){... EDA. Curso 2002/2003. Tema 7. N.Prieto p.49/58

50 La clase EntradaHash public class EntradaHash { private Hashable elemento; private boolean activo; // Elemento del Diccionario en la Tabla H // Estado del Elemento en la TH para elim public EntradaHash(Hashable elemento) { this.elemento = elemento; activo = true; // this (elelemento, true); public EntradaHash(Hashable elemento, boolean suestado){ this.elemento = elemento; activo = suestado; public Hashable elelemento(){ return this.elemento; public boolean estaactivo(){return this.activo; public void elemento(hashable esteelemento){this.elemento=esteelemento public void activo(boolean esteestado){this.activo = esteestado; EDA. Curso 2002/2003. Tema 7. N.Prieto p.50/58

51 La interfaz Hashable public interface Hashable{ // Devuelve el entero que codifica la clave del elemento sobre el que // se aplica. El valor de dicho entero está en el intervalo [0..capac int hash(); EDA. Curso 2002/2003. Tema 7. N.Prieto p.51/58

52 La constructora y vaciar public ExploracionTablaHash(){ tabla = new EntradaHash[CAPACIDAD_POR_DEFECTO]; //una vez asignada memoria a tabla, la inicializamos: todas sus compon // a null y tamanyoactual == 0 vaciar(); public final void vaciar(){ this.tamanyoactual = 0; for (int i = 0; i < tabla.length; i++) tabla[i] = null ; EDA. Curso 2002/2003. Tema 7. N.Prieto p.52/58

53 El método abstracto buscarpos // Al buscar/insertar/eliminar un elemento Hashable x, se aplica siempre // la función de localización hash que se acaba de definir. Ahora bien, p // resolver los conflictos que ésta pudiera ocasionar, el diseñador elige // un método de resolución, de exploración, que determina en QUÉ posición // la TablaHash se va a buscar/insertar/eliminar el elemento x. // Por tanto, el método que utiliza buscar/insertar/eliminar para buscar // efectiva de x en la tabla DEBE DEFINIRSE como ABSTRACTO en Exploración // e implementarse en una clase que la extienda, TablaExploracionX protected abstract int buscarpos(hashable x); EDA. Curso 2002/2003. Tema 7. N.Prieto p.53/58

54 El método buscar public final Hashable buscar(hashable x) throws ElementoNoEncontrado{ int posactual=buscarpos(x); if (tabla[posactual]==null tabla[posactual].estaactivo()==false) throw new ElementoNoEncontrado("buscar de Exploración Tabla Hash") return tabla[posactual].elelemento(); EDA. Curso 2002/2003. Tema 7. N.Prieto p.54/58

55 El método eliminar public final void eliminar (Hashable x) throws ElementoNoEncontrado{ int posactual=buscarpos(x); if (tabla[posactual]==null tabla[posactual].estaactivo()==false ) throw new ElementoNoEncontrado("eliminar de Exploración Tabla Hash" // OJO: eliminación perezosa tabla[posactual].activo(false); EDA. Curso 2002/2003. Tema 7. N.Prieto p.55/58

56 El método insertar public final void insertar (Hashable x){ int posactual = buscarpos(x); //Si la Entrada ya existe, se sobre-escribe. No se lanza Excepción algu this.tabla[posactual] = new EntradaHash(x,true); this.tamanyoactual++; // Si el factor de ocupación es >= 50%: REHASHING if (tamanyoactual >= tabla.length / 2){ EntradaHash tablaantigua [] = tabla; // Crear la nueva tabla con el doble de capacidad int nuevacapacidad = siguienteprimo( 2*tablaAntigua.length); this.tabla = new EntradaHash[nuevaCapacidad]; this.tamanyoactual = 0; //se redispersan sobre la tabla nueva todas las entradas activas for (int i=0; i<tablaantigua.length; i++) if (tablaantigua[i]!=null && tablaantigua[i].estaactivo()) insertar(tablaantigua[i].elelemento()); EDA. Curso 2002/2003. Tema 7. N.Prieto p.56/58

57 clase ExploracionTablaCuadratic //Implementación de la técnica de resolución de conflictos Exploración Cu public class ExploracionTablaCuadratica extends ExploracionTablaHash { protected final int buscarpos(hashable x){ int colision = 0; // Aplicación de la función hash definida para x, que en realidad // invoca a la de ExploracionTablaHash, que es la de Weiss int posactual = x.hash()%this.tabla.length; if (posactual < 0) posactual += this.tabla.length; // Búsqueda del lugar de inserción, que NO será posactual // si se produce una colisión. Estrategia de Exploración Cuadrática while ( tabla[posactual]!= null &&!tabla[posactual].elelemento().eq posactual += 2 * ++ colision - 1 ; if (posactual>=tabla.length ) posactual-=tabla.length; return posactual; EDA. Curso 2002/2003. Tema 7. N.Prieto p.57/58

58 La clase ExploracionTablaLineal //Implementación de la técnica de resolución de conflictos Exploración Li public class ExploracionTablaLineal extends ExploracionTablaHash { protected final int buscarpos(hashable x){ int colision = 0; // Aplicación de la función hash definida para x, que en realidad // invoca a la de ExploracionTablaHash, que es la de Weiss int posactual = x.hash() % this.tabla.length; if (posactual < 0) posactual += this.tabla.length; // Búsqueda del lugar de inserción, que NO será posactual // si se produce una colisión. Estrategia de Exploración Lineal while ( tabla[posactual]!= null &&!tabla[posactual].elelemento().eq posactual++; colision++; if ( posactual >= tabla.length ) posactual =0; return posactual; EDA. Curso 2002/2003. Tema 7. N.Prieto p.58/58

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

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

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

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

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

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

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

PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación: Examen de Java Nombre: DNI: Titulación: 1. Cómo podemos compilar desde la línea de comandos la clase Java A que utiliza una librería empaquetada bd.jar? 2. Indica si es correcto el siguiente código. Justifica

Más detalles

HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA

HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA Estructura de la Información en Programación I.T.I.G., Matemáticas. Curso 2008/2009 Nombre:... Fecha: / 01 / 2009 HOJA DE EJERCICIOS 5 PROGRAMACIÓN CON EXCEPCIONES EN JAVA Esta hoja de ejercicios nos servirá

Más detalles

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

Agradecimientos. Nota de los autores. 1 Problemas, algoritmos y programas 1 Prologo Agradecimientos Nota de los autores Índice general I III V VII 1 Problemas, algoritmos y programas 1 1.1 Programas y la actividad de la programación.................... 4 1.2 Lenguajes y modelos

Más detalles

Hashing (Funciones de Dispersión)

Hashing (Funciones de Dispersión) Hashing características Hashing (Funciones de Dispersión) Mauricio Solar Lorna Figueroa No necesita almacenamiento adicional (índice). Facilita la inserción y eliminación rápida de registros. Encuentra

Más detalles

Tema 4- Representación Enlazada

Tema 4- Representación Enlazada Tema 4- Representación Enlazada Tema 4: Representación Enlazada Índice general: 1. Representación Enlazada: Variables referencia Java como enlaces. 2. Listas Enlazadas Genéricas. Operaciones y costes.

Más detalles

Tema 13 - Implementación de un Diccionario según una Tabla de Dispersión

Tema 13 - Implementación de un Diccionario según una Tabla de Dispersión Tema 13 - Implementación de un Diccionario según una Tabla de Dispersión Germán Moltó Escuela Técnica Superior de Ingeniería Informática Universidad Politécnica de Valencia 1 Tema 13 - Implementación de

Más detalles

1. Algunas clases del paquete java.util

1. Algunas clases del paquete java.util Objetivos Modelización de un problema mediante clases. Utilización de la composición. Creación de objetos y envío de mensajes. Clases de java.util Índice 1. Algunas clases del paquete java.util 1 1.1.

Más detalles

Tema 13 - Implementación de un Diccionario según una Tabla de Dispersión. Objetivos. Bibliografía

Tema 13 - Implementación de un Diccionario según una Tabla de Dispersión. Objetivos. Bibliografía Tema 13 - Implementación de un Diccionario según una Tabla de Dispersión Tema 13 - Implementación de un Diccionario según una Tabla de Dispersión Germán Moltó Escuela Técnica Superior de Ingeniería Informática

Más detalles

Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º. Nombre-Apellidos:

Titulación: Ingeniero Técnico en Informática de Gestión Curso: 2º. Nombre-Apellidos: Nombre-Apellidos: Nota: 1. Ejercicio (1 punto) Responder a las siguientes preguntas de tipo test, seleccionando sólo una de las respuestas. Se evaluarán sólo las respuestas contestadas con el siguiente

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

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

PROGRAMACIÓN ORIENTADA A OBJETOS 1/7/2009. Examen de Java. Nombre: DNI: Titulación: Examen de Java Nombre: DNI: Titulación: 1. Sea una aplicación Java donde todas las clases están compiladas y empaquetas en un solo fichero JAR (programa.jar). Qué sería necesario para conseguir ejecutar

Más detalles

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

Estructura de Datos. Árboles Binarios de Búsqueda ABB. Primer Semestre, 2010 Estructura de Datos Árboles Binarios de Búsqueda ABB Prof.: Mauricio Solar Prof.: Lorna Figueroa Primer Semestre, 20 1 Arboles de Búsqueda Binaria El árbol binario de búsqueda (ABB) toma su nombre del

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

Estructuras de Datos Clase 6 Listas e Iteradores (primera parte)

Estructuras de Datos Clase 6 Listas e Iteradores (primera parte) Estructuras de Datos Clase 6 Listas e Iteradores (primera 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

Esquema básico de una Tabla de Dispersión

Esquema básico de una Tabla de Dispersión 3 Tablas de Dispersión Estructura de datos para gestionar colecciones de elementos donde la búsqueda de un elemento puede hacerse en O(1) en un alto porcentaje de casos - mejora el tiempo de búsqueda en

Más detalles

Estructuras de datos: Tablas de dispersión

Estructuras de datos: Tablas de dispersión Estructuras de datos: Dep. de Computación - Fac. de Informática Universidad de A Coruña Santiago Jorge sjorge@udc.es Referencias bibliográficas M. A. Weiss. Dispersión. En Estructuras de datos y algoritmos,

Más detalles

Construcciones del Lenguaje Java

Construcciones del Lenguaje Java Construcciones del Lenguaje Java Autor: Juan Alberto López Cavallotti Versión de Java: 5 / 6 Comentarios Comentario de Línea Comentario Multilínea //Esto es un comentario. /* Esto comenta varias lineas.

Más detalles

Estructura de datos y Programación

Estructura de datos y Programación Estructura de datos y Programación Tema: Conceptos Básicos- Estructuras de control - Arreglos Ing. Analia Méndez Ing. Raquel Zarco Año: 2012 ELEMENTOS DE UN PROGRAMA EN JAVA El programa Java consta de

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

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta Centro Asociado Palma de Mallorca Antonio Rivero Cuesta La Sintaxis de Java I... 5 Tipos de datos... 6 Tipos de datos simples... 7 Operadores... 11 Operadores Aritméticos... 12 Operadores relacionales...

Más detalles

HERENCIA (2ª parte) En Java todas las clases derivan de otra, aunque no se diga explícitamente.

HERENCIA (2ª parte) En Java todas las clases derivan de otra, aunque no se diga explícitamente. HERENCIA (2ª parte) Lenguajes de Programación - Orientación a Objetos: Herencia 2ª parte 1 Object En Java todas las clases derivan de otra, aunque no se diga explícitamente. Object: Es el nombre de la

Más detalles

Interfaces. Amparo López Gaona. Septiembre de Amparo López Gaona () Interfaces Septiembre de / 1

Interfaces. Amparo López Gaona. Septiembre de Amparo López Gaona () Interfaces Septiembre de / 1 Interfaces Amparo López Gaona Septiembre de 2008 Amparo López Gaona () Interfaces Septiembre de 2008 1 / 1 Interfaces Las interfaces Java permiten al diseñador de clases establecer su forma definiendo

Más detalles

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

Introducción a Java 10/02/2011. Tokens. Juan Manuel Fernández Peña Curso Rev Tokens. Tokens Introducción a Java Juan Manuel Fernández Peña Curso 2005. Rev 2011 Comentarios: //comentario /* comentario fin de comentario */ /** comentario para javadoc fin */ Palabras reservadas: (como ejemplo) abstract,

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

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

Estructuras de Datos Clase 14 Árboles binarios de búsqueda Estructuras de Datos Clase 14 Árboles binarios de búsqueda 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,

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

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

Tablas de dispersión (hash tables)

Tablas de dispersión (hash tables) Tablas de dispersión (hash tables) La dispersión es una técnica empleada para realizar inserciones, eliminaciones y búsquedas en un tiempo promedio constante. La estructura de datos ideal para la tabla

Más detalles

Tema 9- La Tabla de Dispersión (Hash)

Tema 9- La Tabla de Dispersión (Hash) Tema - La Tabla de Dispersión (Hash) Duración: semanas aprox Índice general: Implementación de las operaciones de un Diccionario en tiempo constante: ideas básicas Función de dispersión (hashing): características

Más detalles

Examen Teórico Convocatoria de Junio de 2012

Examen Teórico Convocatoria de Junio de 2012 Examen Teórico Convocatoria de Junio de 2012 Nombre: DNI: Titulación: 1. Sobre el control de errores en Java: a) El siguiente método contiene un error de compilación debido al uso de excepciones. Explica

Más detalles

Introducción a Java LSUB. 30 de enero de 2013 GSYC

Introducción a Java LSUB. 30 de enero de 2013 GSYC Introducción a Java LSUB GSYC 30 de enero de 2013 (cc) 2013 Laboratorio de Sistemas, Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento - NoComercial

Más detalles

PROGRAMACIÓN EN JAVA. { una línea para definir, crear o ejecutar ; }

PROGRAMACIÓN EN JAVA. { una línea para definir, crear o ejecutar ; } PROGRAMACIÓN EN JAVA { una línea para definir, crear o ejecutar ; } JFC Y API SPECIFICATIONS OBJECT INTERFACE ABSTRACT IMPLEMENTS EXTENDS NEW EXTENDS (Hasta que una clase derivada deje de ser ABSTRACT)

Más detalles

Introducción a Java. Fernando Cerezal López. 24 Noviembre 2005

Introducción a Java. Fernando Cerezal López. 24 Noviembre 2005 24 Noviembre 2005 disponibles de acceso public private protected de tipo static abstract final modificadores más avanzados que no vamos a ver... Clase Sintaxis modificadores class nombreclase{} Tipos primitivos

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

8. Colecciones e iteradores

8. Colecciones e iteradores 8. Colecciones e iteradores - interfaz Collection - clases ArrayList, LinkedList, HashSet, TreeSet - interfaz Map - clases TreeMap, HashMap - Iteratores: interfaz Iterator El lenguaje de programación Java

Más detalles

Diseño de tipos Igualdad, representación, código, copia y relación de orden

Diseño de tipos Igualdad, representación, código, copia y relación de orden Práctica 4 Diseño de tipos Igualdad, representación, código, copia y relación de orden Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.1 Índice Gestión de excepciones

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

INDICE Prologo 1 Recorrido rápido de java 2 Clases y objetos 3 Extensión de clases

INDICE Prologo 1 Recorrido rápido de java 2 Clases y objetos 3 Extensión de clases INDICE Prologo XIII 1 Recorrido rápido de java 1.1. Para empezar 1 1.2. Variables 2 1.3. Comentarios en el condigo 1.4. Constantes con nombre 5 1.4.1. Caracteres Unicode 6 1.5. Flujo de control 7 1.6.

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

Solución al Examen de Fundamentos de Computadores y Lenguajes

Solución al Examen de Fundamentos de Computadores y Lenguajes Solución al Examen de Fundamentos de Computadores y Lenguajes Cuestiones (5 cuestiones, 5 puntos en total) Examen Final. Septiembre 2006 1) Se dispone de la siguiente clase enumerada. Escribir un método,

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

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

Qué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +.

Qué es Java? Un lenguaje de programación Un entorno de desarrollo Un entorno de aplicación Un entorno de despliegue Es similar en sintaxis de C + +. APUNTES DE JAVA Agenda Bienvenida Conociendo Java La Maquina Virtual Descargar e instalar el compilador El entorno de trabajo El paradigma de la programación orientada a objetos Qué es Java? Un lenguaje

Más detalles

Tema 05: Tablas hash. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom

Tema 05: Tablas hash. M. en C. Edgardo Adrián Franco Martínez edgardoadrianfrancom Tema 05: Tablas hash M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com edfrancom@ipn.mx @edfrancom edgardoadrianfrancom Estructuras de datos (Prof. Edgardo A. Franco) 1 Contenido Función

Más detalles

Tipos abstractos de datos (TAD)

Tipos abstractos de datos (TAD) Capítulo 2 Tipos abstractos de datos (TAD) Objetivo: Introducir al alumno las estructuras de datos mediante el concepto de tipo abstracto de datos. En este capítulo se presenta una primera implementación

Más detalles

Versión Iterativa de recuperar en un. Ejercicios Tema 11. Implementa una versión del método recuperar iterativa con la siguiente especificación:

Versión Iterativa de recuperar en un. Ejercicios Tema 11. Implementa una versión del método recuperar iterativa con la siguiente especificación: Versión Iterativa de recuperar en un ABB Ejercicios Tema 11 Ejercicios Adaptados de Apuntes y Exámenes de EDA Germán Moltó Martínez gmolto@dsic.upv.es Estructuras de Datos y Algoritmos Escuela Técnica

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

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

ADSW Tema 2 Diccionarios

ADSW Tema 2 Diccionarios ADSW Tema 2 Diccionarios José A. Mañas 10.3.2013 Contenido 1 interface Diccionario... 2 2 Implementaciones... 2 2.1 con arrays... 2 2.2 con arrays ordenados... 3 2.3 árbol binario de búsqueda... 5 2.4

Más detalles

Computación Geométrica Colecciones en Java

Computación Geométrica Colecciones en Java Computación Geométrica Colecciones en Java Colecciones en Java Copyright 2010-2011 Universidad de Alicante 1 La interfaz Iterator La interfaz java.util.iterator se usa para recorrer las colecciones posicionales

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

Soluciones al Examen de Fundamentos de Computadores y Lenguajes

Soluciones al Examen de Fundamentos de Computadores y Lenguajes Soluciones al Examen de Fundamentos de Computadores y Lenguajes Cuestiones (5 cuestiones, 5 puntos en total) Examen Parcial. Junio 2005 1) Escribir una clase con un atributo privado que sea un array de

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

Implementar rehashing en TablaHash. Soluciones Ejercicios Tema 13. Implementar toarray en TablaHash. Radares de Tráfico (I)

Implementar rehashing en TablaHash. Soluciones Ejercicios Tema 13. Implementar toarray en TablaHash. Radares de Tráfico (I) Implementar rehashing en TablaHash 1 Soluciones Ejercicios Tema 13 Germán Moltó gmolto@dsic.upv.es Estructuras de Datos y Algoritmos Escuela Técnica Superior de Ingeniería Informática Universidad Politécnica

Más detalles

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs. Variables Una variable no es más que un nombre simbólico que identifica una dirección de memoria: Suma el contenido de la posición 3001 y la 3002 y lo almacenas en la posición 3003 vs. total = cantidad1

Más detalles

JAVA 1. Introducción

JAVA 1. Introducción Diseño de Interfaces de Usuario JAVA. Introducción. Características Portabilidad Interpretado (bytecodes) Uso de Máquina Virtual Java (JVM) Orientado a Objetos Jerarquía de clases Extensible (packages)

Más detalles

Comenzamos. Curso : Estructuras de datos Docente: Ing. Héctor Fiestas Bancayán 1

Comenzamos. Curso : Estructuras de datos Docente: Ing. Héctor Fiestas Bancayán 1 Bienvenido a nuestra octava sesión, donde veremos cómo se eliminar nodos en las listas enlazadas y cómo son los programas de implementación correspondientes en Java. Comenzamos. Curso : Estructuras de

Más detalles

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java

Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java Identificadores, palabras reservadas, tipos de datos, operadores aritméticos y el sistema estándar de salida en Java Identificadores Las variables se utilizan en programación para almacenar temporalmente

Más detalles

Unidad II Tema 3: Tratamiento de arreglos y cadenas en Java

Unidad II Tema 3: Tratamiento de arreglos y cadenas en Java Unidad II Tema 3: Tratamiento de arreglos y cadenas en Java Profesor: Jorge Escalona / Tobías Bolívar Email: escaljorge@gmail.com / tobiasbolivar@gmail.com Web: http://estructuradatos.tripod.com 1 Qué

Más detalles

Introducción a Java (II) Dr. (c) Noé Alejandro Castro Sánchez

Introducción a Java (II) Dr. (c) Noé Alejandro Castro Sánchez Introducción a Java (II) Dr. (c) Noé Alejandro Castro Sánchez Sintaxis de Java Sintaxis Define las reglas que determinar el uso de palabras clave, operadores y variables para construir y evaluar expresiones.

Más detalles

Esta aplicación se compone de 3 programas o clases, según el siguiente esquema: SueldoMedio.java. Sueldo.java

Esta aplicación se compone de 3 programas o clases, según el siguiente esquema: SueldoMedio.java. Sueldo.java PROGRAMACIÓN I FECHA: 10-septiembre-2002 Programa de ficheros de E/S (lau puntu) Realizar una aplicación en Java para calcular el sueldo medio mensual de los empleados en activo en una empresa de Vitoria,

Más detalles

Análisis y Diseño de Algoritmos Tablas de Hash

Análisis y Diseño de Algoritmos Tablas de Hash Análisis y Diseño de Algoritmos Tablas de Hash Guillermo Morales-Luna Arturo Díaz Pérez CONTENIDO 1. Dispersión 2. Funciones de dispersión (a) Método de división (b) Método de multiplicación 3. Direccionamiento

Más detalles

Lista Simple con Puntero al Principio y Puntero al Final

Lista Simple con Puntero al Principio y Puntero al Final Unidad 3 Estructuras de Datos Avanzadas Introducción Hasta el momento se estudiaron las siguientes estructuras estáticas y dinámicas básicas para representar diferentes colecciones de elementos: Arreglo

Más detalles

FUNDAMENTOS DE INFORMÁTICA

FUNDAMENTOS DE INFORMÁTICA ÁREA DE LENGUAJES Y SISTEMAS INFORMÁTICOS DEPARTAMENTO DE INFORMÁTICA E INGENIERÍA DE SISTEMAS ESCUELA DE INGENIERÍA Y ARQUITECTURA FUNDAMENTOS DE INFORMÁTICA 1ª CONVOCATORIA (16-junio-2011) Ejercicio

Más detalles

Procesadores de lenguaje Tema 6 La tabla de símbolos

Procesadores de lenguaje Tema 6 La tabla de símbolos Procesadores de lenguaje Tema 6 La tabla de símbolos Departamento de Ciencias de la Computación Universidad de Alcalá Resumen La tabla de símbolos. Requerimientos de información. Diseño de la tabla de

Más detalles

Solucion al Examen de Fundamentos de Computadores y Lenguajes

Solucion al Examen de Fundamentos de Computadores y Lenguajes Solucion al Examen de Fundamentos de Computadores y Lenguajes Cuestiones (5 cuestiones, 5 puntos en total) Examen Parcial. Junio 2006 1) Escribir una clase que permita almacenar una lista de jugadores

Más detalles

Ejercicio 1 (proyecto prlistas, paquete listas)

Ejercicio 1 (proyecto prlistas, paquete listas) PRÁCTICA 3 Curso 2004-05 En esta práctica construiremos y usaremos dos paquetes: el primero, listas, que implementa listas genéricas y el segundo, colas, que implementa colas y colas de prioridades genéricas.

Más detalles

Bibliografía (Java) Java: Introducción a Java

Bibliografía (Java) Java: Introducción a Java 1 2 De a Contenido Introducción a Variables, tipos de datos y operadores Sentencias de control Subprogramas Tablas y matrices Excepciones Paquetes 3 4 Bibliografía () : Introducción a L. Lemay, C. Perkins.

Más detalles

Soluciones al Examen de Fundamentos de Computadores y Lenguajes

Soluciones al Examen de Fundamentos de Computadores y Lenguajes Soluciones al Examen de Fundamentos de Computadores y Lenguajes Cuestiones (5 cuestiones, 5 puntos en total) Examen Parcial. Junio 2004 1) Se desea crear una clase para hacer cálculos sobre el movimiento

Más detalles

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas

Unidad II. Fundamentos de programación en Java. Ing. José Luis Llamas Cárdenas Unidad II Fundamentos de programación en Java Ing. José Luis Llamas Cárdenas En java para poder escribir se emplea el objeto System.out, t pero para leer del teclado es necesario emplear System.in Et Este

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

Estructuras de control selectivas

Estructuras de control selectivas Práctica 3 Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 2.0.2 Concepto de sentencia y estructura de control El cuerpo de los métodos

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

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta Centro Asociado Palma de Mallorca Introducción Práctica de Programación Java Antonio Rivero Cuesta Sesión X Colecciones... 6 Interfaz List... 15 ArrayList... 17 Recorrido Colecciones... 22 Iteradores en

Más detalles

Ingeniera de Sistemas: Luz Esperanza Espitia Tutora de Estructura de datos.

Ingeniera de Sistemas: Luz Esperanza Espitia Tutora de Estructura de datos. Ingeniera de Sistemas: Luz Esperanza Espitia Tutora de Estructura de datos. Con relación a la Estructura LISTA Indicar objetos reales que se puedan modelar con dicha estructura. Listas de Ordenes de visitas

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

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

Práctica #5: Uso de control de flujo, Excepciones y Lectura Estándar

Práctica #5: Uso de control de flujo, Excepciones y Lectura Estándar Práctica #5: Uso de control de flujo, Excepciones y Lectura Estándar Introducción El alumno creará cuatro programas en java que manejen control de flujo mediante las sentencias de bucle while y do/while,

Más detalles

PROGRAMACION I Archivos directos

PROGRAMACION I Archivos directos PROGRAMACION I Archivos directos Un archivo relativo (directo) consiste en una colección de registros de longitud fija almacenados uno al lado del otro en un dispositivo de almacenamiento de acceso directo.

Más detalles

LISTAS CIRCULARES. // Métodos private CElemento() {} // constructor. ultimo

LISTAS CIRCULARES. // Métodos private CElemento() {} // constructor. ultimo LISTAS CIRCULARES Una lista circular es una lista lineal en la que el último elemento apunta al primero. Entonces es posible acceder a cualquier elemento de la lista desde cualquier punto dado. Las operaciones

Más detalles

Archivos Indice. Indexación y. Asociación. Conceptos Básicos Indices Ordenados Arboles. Asociación. Docente: Albert A.

Archivos Indice. Indexación y. Asociación. Conceptos Básicos Indices Ordenados Arboles. Asociación. Docente: Albert A. Docente: Albert A. Osiris Sofía 1º Cuatrimestre 2002 Conceptos Básicos Indices Ordenados Arboles Asociación Indexación y Asociación Archivos Indice 1 2 3 1 Archivos Indice Ordenados Asociativos Primario

Más detalles

2ª Parte: Problemas (5 puntos sobre 10)

2ª Parte: Problemas (5 puntos sobre 10) NOMBRE: APELLIDOS: NIA: GRUPO: 2ª Parte: Problemas (5 puntos sobre 10) Duración: 1 hora 45 minutos Puntuación máxima: 5 puntos Fecha: 17 de Junio de 2013 PROBLEMA 1 (3 puntos) El sistema de gestión de

Más detalles

Programación Tema 9: Bibliotecas y Colecciones. Programación DIT-UPM

Programación Tema 9: Bibliotecas y Colecciones. Programación DIT-UPM Programación Tema 9: Bibliotecas y Colecciones 1 Contenidos l Bibliotecas l Concepto de colección l Definición y uso de lista (List, ArrayList) l Recorridos sobre colecciones l Conjunto (Set, HashSet)

Más detalles

Pilas Motivación

Pilas Motivación Capítulo 4 Pilas Las pilas son estructuras muy sencillas y poderosas, también conocidas como LIFO (last in, first out) por la forma en que se trabaja con ellas. Ejemplo de ellas son las pilas de charolas

Más detalles

Examen Teórico. Convocatoria de Julio de 2015

Examen Teórico. Convocatoria de Julio de 2015 Examen Teórico Convocatoria de Julio de 2015 Nombre: DNI: Grupo: 1. Sobre la ejecución de aplicaciones Java desde la línea de comandos: a) Explica el significado y uso del parámetro cp. b) Indica si la

Más detalles

PROGRAMACION ORIENTADA A OBJETOS Ingenieria Informática Final Febrero 2006/07

PROGRAMACION ORIENTADA A OBJETOS Ingenieria Informática Final Febrero 2006/07 PROGRAMACION ORIENTADA A OBJETOS Ingenieria Informática Final Febrero 2006/07 Ejercicio 1. Un indice de referencias cruzadas de las palabras que aparecen en un texto es una tabla por palabras y, por cada

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

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

Examen de Prácticas de Programación Ingeniería Informática

Examen de Prácticas de Programación Ingeniería Informática Examen de Prácticas de Programación Ingeniería Informática Junio 2007 1) (2 puntos) Escribir en Java la implementación de los métodos public void escribematrizenfichero(double[][] m, String nomfich)...

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

Tablas de Dispersión

Tablas de Dispersión Tablas de Dispersión Representación de datos especialmente diseñada para que las operaciones de acceso, inserción y borra por valor o campo clave sean eficientes (tiempo promedio constante, indepiente

Más detalles

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas

Carlos Montenegro. Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 2 - Introducción al lenguaje Java, identificadores y comentarios. Carlos Montenegro Programación Orientada a Objetos Proyecto Curricular de Ingeniería de Sistemas 1. Introducción: Java tiene como todos

Más detalles

Alonso Ramirez Manzanares Computación y Algoritmos 03.05

Alonso Ramirez Manzanares Computación y Algoritmos 03.05 Tablas de hash (2) mat-151 Alonso Ramirez Manzanares Computación y Algoritmos 03.05 Tablas de hash: resolviendo colisiones por encadenamiento cuando el número de elementos en total es proporcional al número

Más detalles