TEMA 4 El tipo conjunto



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

Tablas Hash y árboles binarios

NIVEL 14: ESTRUCTURAS DE ACCESO DIRECTO

Programación TADs Colecciones Conjuntos, Diccionarios y Tablas

TEMA 2. ORGANIZACIONES DE FICHEROS Y ESTRUCTURAS DE ACCESO

Hashing (Funciones de Dispersión)

TEORÍA DE CONJUNTOS A ={ 1, 2, 3, 4, 5, 6 }

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

Contenedores asociativos en la STL de C++

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

Estructuras de Datos y Algoritmos Tema 3: Arrays y listas enlazadas

Algoritmos y Estructuras de Datos Curso 04/05. Ejercicios

Algoritmos y Estructuras de Datos Ingeniería en Informática

Un conjunto se considera como una colección de objetos, llamados miembros o elementos del conjunto. Existen dos formas de expresar un conjunto:

Conjuntos disjuntos (Relaciones de equivalencia)

PUNTOS Y VECTORES EN EL PLANO

Apuntes de Matemática Discreta 2. Operaciones con Conjuntos

CAPÍTULO 1 INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS

CONJUNTOS. Consideremos, por ejemplo, los siguientes conjuntos:

Estructura de datos y Algoritmos. Tema III Clasificación en memoria secundaria

TAD CONJUNTOS Y MULTICONJUNTOS

Teoría de Conjuntos. Conjunto es: colección de cosas, o una colección determinada de objetos.

Tema Contenido Contenidos Mínimos

Utiliza los números ordinales al resolver problemas planteados de manera oral.

Espacio de Funciones Medibles

Complejidad algorítmica. Algoritmos y Estructuras de Datos II (Programación I) Mgter. Vallejos, Oscar A.

Tablas Asociativas (Hash) Tablas: filas & columnas de información Especificación algebraica

El TAD tabla y las tablas dispersas (o tablas hash) Lección 19

Tablas de dispersión (hash tables)

4. Medidas de tendencia central

A partir de la definición obtenemos las siguientes propiedades para estas funciones:

5. RECURRENCIAS LINEALES

INGENIERIA DE SISTEMAS 1 ESTRUCTURAS DE DATOS (Listas simples) INTRODUCCIÓN A LAS ESTRUCTURAS DE DATOS

Esquema básico de una Tabla de Dispersión

Fundamentos de Informática

Alonso Ramirez Manzanares Computación y Algoritmos 03.05

Árboles balanceados (AVL) Tablas de dispersión (Hash) Colas de prioridad (Heap)

INSTITUTO TECNOLÓGICO DE APIZACO TEORÍA DE CONJUNTOS CONJUNTOS Y TÉCNICAS DE CONTEO

DISEÑO CURRICULAR ALGORITMOS, ESTRUCTURAS Y PROGRAMACIÓN I

Tema 3: Conjuntos y Funciones

Estructuras de datos: Conjuntos disjuntos

Teoría de conjuntos. Tema 1: Teoría de Conjuntos.

REGLAS DE CODD DEL MODELO RELACIONAL

CONVEXIDAD: CONCEPTOS BÁSICOS

Procedimiento para determinar las asíntotas verticales de una función

Computación Científica

Complementos de Matemáticas, ITT Telemática

Complejidad de Algoritmos

Tabla de Símbolos. Programación II Margarita Álvarez

Las listas son una sucesión de cero o más elementos. Esta es una definición muy simple y que no aclara demasiado en términos informáticos.

2. Probabilidad y. variable aleatoria. Curso Estadística Probabilidad. Probabilidad y variable aleatoria

Capítulo 3. Clasificación en Memoria Secundaria

Tabla de Símbolos. Programación II Margarita Álvarez

TEMA II TEORÍA INTUITIVA DE CONJUNTOS

2. ENTIDADES PRIMITIVAS PARA EL DESARROLLO DE ALGORITMOS

PROGRAMACIÓN ALGORITMOS y DIAGRAMAS

Topología de R n. Beatriz Porras

BASES DE DATOS TEMA 3 MODELO ENTIDAD - RELACIÓN

Expresiones Regulares y Derivadas Formales

Expresión, Operador, Operando, Asignación, Prioridad

Cardinalidad. Teorema 0.3 Todo conjunto infinito contiene un subconjunto infinito numerable.

Problemas de Recursividad

Conversión Analógica a Digital

Algoritmos: Algoritmos sobre secuencias y conjuntos de datos

Atributos Los atributos son las columnas de un relación y describen características particulares de ella.

GUIA PRACTICA PARA LA APLICACIÓN DE MS EXCEL TECNOLOGIA/ INFORMATICA

INTERFACES SET Y SORTEDSET DEL API DE JAVA. CLASES HASHSET Y TREESET. EJEMPLO. DIFERENCIAS ENTRE ELLAS. (CU00921C)

Se utilizarán las letras mayúsculas, tales como A, B y C para nombrar conjuntos. Por ejemplo: a i. o e

4. " $#%&' (#) para todo $#* (desigualdad triangular).

RESUMEN GEOMETRÍA SAINT MARY SCHOOL. PROF. JUAN K. BOLAÑOS M. Geometría Elemental

SISTEMAS OPERATIVOS SISTEMA DE ARCHIVOS

Explorando la ecuación de la recta pendiente intercepto

Definición(2) La base (r) de un sistema de numeración especifica el número de dígitos o cardinal* de dicho conjunto ordenado. Las bases más utilizadas

Introducción al análisis numérico

CAPITULO 7.SERIES DE FOURIER Sistemas de funciones ortogonales

CAMPOS ELÉCTRICOS Y MAGNÉTICOS EN LA MATERIA

Práctica 2 Métodos de búsqueda para funciones de una variable

Problemas de 4 o ESO. Isaac Musat Hervás

Teoría de Autómatas y Lenguajes Formales. Capítulo 1: Introducción. Teoría de Autómatas y Lenguajes formales es un repaso a la informática teórica.

Notación de Conjuntos

Tema 2. Sistemas de ecuaciones lineales

Tema 2. Conjuntos y Diccionarios.

Conceptos básicos de programación. Arquitectura de Computadoras. Conceptos básicos de programación

Matemáticas Febrero 2013 Modelo A

Ejercicios 3A. 2. Implemente un programa que, dados los tres vértices de un triángulo, calcule el área del mismo. Puede aplicar la siguiente fórmula:

Diseño de Bases de Datos (TEMAS 1 Y 2)

Una sucesión infinita es una función cuyo dominio es el conjunto de los enteros positivos. Podemos denotar una sucesión como una lista

El cuerpo de los números reales

Conocer la forma de analizar las Medidas de Tendencia Central de una distribución con OpenOffice Calc.

Tema 2. Funciones Lógicas. Algebra de Conmutación. Representación de circuitos digitales. Minimización de funciones lógicas.

Ejemplo Traza la gráfica de los puntos: ( 5, 4), (3, 2), ( 2, 0), ( 1, 3), (0, 4) y (5, 1) en el plano cartesiano.

Filtros digitales dominio del espacio dominio de la frecuencia

INDICE. Prólogo de la Segunda Edición

Transcripción:

TEMA El tipo conjunto PROGRAMACIÓN Y ESTRUCTURAS DE DATOS Tipo conjunto. Definiciones generales. Diccionario.. Tabla de dispersión.. Trie.. Árboles de búsqueda digitales. Cola de prioridad.. Montículo.. Cola de prioridad doble... Montículo doble.. Árbol izquierdista o leftist

. Tipo Conjunto DEFINICIONES Un conjunto es una colección de elementos, cada uno de los cuales puede ser un conjunto, o un elemento primitivo que recibe el nombre de átomo Todos los miembros del conjunto son distintos El orden de los elementos no es importante (distinto de las listas) Notación de Conjuntos Se representa encerrando sus miembros entre llaves {,,} Relación fundamental, la de pertenencia: {x / x Naturales}, {x / x < 8} Existe un conjunto especial sin elementos: A B si todo elemento de A también lo es de B Conjunto Universal: formado por todos los posibles elementos que puede contener. Tipo Conjunto SINTAXIS MODULO GENERICO ModuloConjunto MODULO Conjunto USA Boolean, Natural SINTAXIS Crear ( ) Conjunto Insertar( Conjunto, Ítem ) Conjunto Eliminar( Conjunto, Ítem ) Conjunto Pertenece( Conjunto, Ítem ) Boolean EsVacíoConjunto( Conjunto ) Boolean Cardinalidad( Conjunto ) Natural Unión( Conjunto, Conjunto ) Conjunto Intersección( Conjunto, Conjunto ) Conjunto Diferencia( Conjunto, Conjunto ) Conjunto VAR C, D: Conjunto; x, y: Ítem;

. Tipo Conjunto SEMÁNTICA (I) EsVacíoConjunto( Crear ) Cierto EsVacíoConjunto( Insertar( C, x ) ) Falso Insertar( Insertar( C, x ), y ) si ( x == y ) entonces Insertar( C, x ) //no se permiten elementos repetidos sino Insertar( Insertar( C, y ), x ) //da igual el orden de inserción de los elem. Eliminar( Crear, x ) Crear Eliminar( Insertar( C, x ), y ) si ( x == y ) entonces C // y si permitieran elementos repetidos? sino Insertar( Eliminar( C, y ), x ) Pertenece( Crear, x ) Falso Pertenece( Insertar( C, x ), y ) si ( x == y ) entonces Cierto sino Pertenece( C, y ) Cardinalidad( Crear ) 0 Cardinalidad(Insertar(C,x)) +Cardinalidad(C) Unión( Crear, C ) C Unión( Insertar( C,x ), D ) si ( Pertenece( D, x ) ) entonces Unión( C, D ) sino Insertar( Unión( C, D ), x ). Tipo Conjunto SEMÁNTICA (II) Diferencia( Crear, C ) Crear Diferencia( Insertar( C,x ), D ) si ( Pertenece( D, x ) ) entonces Diferencia( C, D ) sino Insertar( Diferencia( C, D ), x ) Intersección( Crear, D ) Crear Intersección( Insertar( C,x ), D ) si ( Pertenece( D, x ) ) entonces Insertar( Intersección( C, D ), x ) sino Intersección( C, D )

. Tipo Conjunto IMPLEMENTACIÓN Mediante un vector -Vector de bits/enteros (cada componente corresponde a un elemento del conjunto universal) 0 0 0 0 0 -Vector de elementos 9 0 Almacenar los elementos conforme se inserten (mediante listas, árboles,...): Espacio proporcional al conjunto representado 7. Tipo Conjunto EJERCICIO m=elem. conjto. n=elem. conjto. Univ. Búsqueda Rellenar la siguiente tabla de complejidades (peor caso): Vector de Bits Lista ordenada Lista desordenada Inserción Unión 8

. DICCIONARIO DEFINICIÓN Subtipo del CONJUNTO, con las operaciones: CREAR INSERTAR BORRAR BÚSQUEDA 9. DICCIONARIO IMPLEMENTACIÓN Implementaciones sencillas: Mediante listas o vectores Búsqueda, Inserción y Borrado: Listas: O (n) Vector Bits: O () Vector Elementos: O (n) Mediante TAD Tabla de Dispersión (HASHING) 0

.. TABLA DE DISPERSIÓN (HASHING) DEFINICIÓN HASHING: Utilizaremos la información del elemento a almacenar para buscar su posición dentro de la estructura Operaciones: Búsqueda. Inserción. Borrado. O() O() O().. TABLA DE DISPERSIÓN (HASHING) MÉTODO Dividir el conjunto en un número finito B de clases Se usa función de dispersión H, tal que H(x) será un valor entre 0 y B- Formas de dispersión: Abierta: No impone tamaño límite al conjunto Cerrada: usa un tamaño fijo de almacenamiento (limita el tamaño)

.. Tabla Hash. Dispersión Cerrada DEFINICIÓN Los elementos se almacenan en tabla de tamaño fijo (TABLA DE DISPERSIÓN) La tabla se divide en B clases, y cada una podrá almacenar S elementos La Función de dispersión se implementa mediante una función aritmética H(x)= x MOD B.. Tabla Hash. Dispersión Cerrada INSERCIÓN Caso COLISIÓN: x, x (SINÓNIMOS/ H(x) = H(x)) ESTRATEGIA DE REDISPERSION: Elegir sucesión de localidades alternas dentro de la tabla, hasta encontrar una vacía H(x), h(x), h(x), h(x),... Si ninguna está vacía: no es posible insertar

.. Tabla Hash. Dispersión Cerrada INSERCIÓN. EJEMPLO Ejemplo. Insertar en una tabla de dispersión cerrada de tamaño B=7, con función de dispersión H(x)= x MOD B, y con estrategia de redispersión la siguiente posición de la tabla, los siguientes elementos:,, 9,, 0,, 8, 0 0 9 0 9, un sólo intento 9 dos intentos un sólo intento 0 9 0 0 9 0 0 tres intentos un sólo intento 0 8 9 0 8 cinco intentos 0 8 9 0 tabla llena Nº TOTAL DE INTENTOS HASTA LA CLAVE 8:.. Tabla Hash. Dispersión Cerrada BÚSQUEDA. BORRADO BÚSQUEDA DE ELEMENTOS Buscar en sucesión de localidades alternas dentro de la tabla, hasta encontrar una vacía: H(x), h(x), h(x), h(x),... BORRADO DE ELEMENTOS Hay que distinguir durante la búsqueda: - Casillas vacías - Casillas suprimidas Durante la inserción las casillas suprimidas se tratarán como espacio disponible.

.. Tabla Hash. Dispersión Cerrada ANÁLISIS (I) ESTRATEGIA DE REDISPERSIÓN LINEAL ( siguiente posición ): - No eficiente. Larga secuencia de intentos h i (x) = ( H(x) + i ) MOD B / c= h i (x) = (h i- (x) + ) MOD B ESTRATEGIA DE REDISPERSIÓN ALEATORIA: h i (x) = ( H(x) + c i ) MOD B / c> h i (x) = (h i- (x) + c) MOD B Sigue produciendo AMONTONAMIENTO: siguiente intento sólo en función del anterior c y B no deben tener factores primos comunes mayores que E.R. CON ª FUNCION DE HASH: k (x) = (x MOD (B-)) + h i (x) = ( H(x) + k(x) i ) MOD B h i (x) = (h i- (x) + k(x)) MOD B B debe ser primo 7.. Tabla Hash. Dispersión Cerrada ANÁLISIS (II) LA MEJOR FUNCIÓN DE DISPERSIÓN: - Que sea fácil de calcular - Que minimice el nº de colisiones - Que distribuya los elementos de forma azarosa - Debe hacer uso de toda la información asociada a las etiquetas 8

.. Tabla Hash. Dispersión Cerrada ANÁLISIS (III) Estrategia de redispersión aleatoria c y B no deben tener factores primos comunes mayores que para que busque en todas las posiciones de la tabla Ejemplo c=; B= h i (x) = ( H(x) + c i ) MOD B = (h i- (x) + c) MOD B H(0)=0 MOD = h (0)=(+ ) MOD =(+) MOD = X X X h (0)=(+ ) MOD =(+) MOD =0 0 h (0)=(0+) MOD =; h (0)=(+) MOD = Ejemplo c=; B=9? c=; B=9? Estrategia de redispersión con ª función hash B debe ser primo para que busque en todas las posiciones de la tabla c=k(x) B- // k (x) = (x MOD (B-)) + h i (x) = ( H(x) + k(x) i ) MOD B = (h i- (x) + k(x)) MOD B B=7; k(x)= B=;k(x)= 0 9.. Tabla Hash. Dispersión Cerrada EJERCICIOS ) Insertar en una tabla de dispersión cerrada de tamaño B=7, con función de dispersión H(x)= x MOD B, y con estrategia de redispersión segunda función hash, los siguientes elementos:,, 9,, 0,, 8 0

.. Tabla Hash. Dispersión Abierta DEFINICIÓN - Elimina el problema del CLUSTERING SECUNDARIO (colisiones entre claves no sinónimas) - Las colisiones se resuelven utilizando una lista enlazada 0 9 0 8.. Tabla Hash FACTOR DE CARGA (I) α = n B n = nº elem. de la tabla. B = tamaño de la tabla HASH CERRADO: 0 α HASH ABIERTO: α 0 (No hay límite en el nº de elementos en cada casilla). Teorema: En Hash Abierto con factor de carga α: el nº esperado de pruebas en inserción o búsqueda sin éxito es +α, y el nº esperado de pruebas para borrado o búsqueda con éxito es +/ ( + α)

.. Tabla Hash FACTOR DE CARGA (II) Teorema: En Hash Cerrado con resolución lineal de colisiones, con factor de carga α: el nº esperado de pruebas en inserción o búsqueda sin éxito es + α, y el nº esperado de pruebas para borrado o búsqueda con éxito es + α.. Tabla Hash FACTOR DE CARGA (III) Teorema: En Hash Cerrado con resolución aleatoria de colisiones, con factor de carga α: el nº esperado de pruebas en inserción o búsqueda sin éxito es α, y el nº esperado de pruebas para borrado o búsqueda con éxito es α log( α)

.. Tabla Hash FACTOR DE CARGA (IV) E: Nº Esperado de Intentos. c.éx: con éxito. s.éx: sin éxito. H.C.L. H.C.Aleat. H.Abierto α E c.éx E s.éx. E c.éx E s.éx. E c.éx E s.éx. 0..0 0..7 0..0 0.7.0 8..9.0.8.0 0.9.0 0.. 0.0.9.0 0.9 0.0.. Tabla Hash COMPARACIÓN HASH ABIERTO Y CERRADO H.A. es más eficiente y con menor degradación (cuanto más lleno funciona mejor que el H.C.) H.A. requiere espacio para los elementos de la lista, por lo que H.C. es más eficiente espacialmente Reestructuración de las tablas de dispersión: n 0,9 B (H.C.) n B (H.A.) Nueva tabla con el doble de posiciones