Tipos de Datos abstractos

Slides:



Advertisements
Presentaciones similares
PROBLEMA DEL TRANSPORTE
Advertisements

Arreglos Unidimensionales y Bidimensionales ESTRUCTURAS DE DATOS I
2.1.1 Definición. Un arreglo puede definirse como un grupo o una colección finita, homogénea y ordenada de elementos. Los arreglos pueden ser de los siguientes.
TGR Sistemas Operativos 14/10/2013
La mediana La mediana es el valor tal que el 50 % de las observaciones son menores y 50 % de ellas son mayores a dicho valor. En otra palabras, la mediana.
DETERMINANTES.
Los intercambios energéticos en las reacciones químicas.
IND560 Presentación del producto Memoria, tablas, SmartTrac.
IBD Clase 7.
Abstracción de Datos Arrays.
Ejemplo A continuación aparecen las tasas de retorno de dos fondos de inversión durante los últimos 10 años. 1. ¿Cuál es más riesgoso? 2. ¿En cuál invertiría.
CLASE 3 SOFTWARE DEL MICROPROCESADOR
Unidad de competencia II Estadística descriptiva:
Unidad de competencia II Estadística descriptiva:
DESCRIPCION DE SISTEMAS
Organización de la Memoria.
Universidad Domingo Savio
Método para resolver colisiones
Estructuras de Datos (ARRAYS)
Programación I Teoría III
Las estructuras de arreglos fueron usadas en las primeras computadoras digitales, cuando la programación se hacía todavía en lenguaje máquina, para tablas.
MAT1041, MAT1046 y MAT1047 Prof. Ileana Vallejo
La minimización de los costes
Curso de Programación 1 Plan 97
PROGRAMACION DE ESTRUCTURAS DE DATOS
CONTABILIDAD PARA LA TOMA DE DESICIONES Carlos Bellido Torres
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Algoritmos Aleatorizados
DETERMINANTES DE UNA MATRIZ
Arreglos Ing. Nahiby Castillo.
VECTORES.
Implementación de Listas
TEMA: SISTEMA DE ARCHIVOS
La transformada de Laplace
Robiro A. Asuaje L.23/08/20141 Organización de la Memoria SISTEMAS OPERATIVOS. Universidad Centro-Occidental “ Lisandro Alvarado ” Decanato de Ciencias.
Estructuras de datos M.I.A Daniel Alejandro García López.
Introducción al lenguaje R Sesión 2: Objetos en R
UPC MATRICES MA49 (EPE) Universidad Peruana de Ciencias Aplicadas
Herramientas para el acceso directo a memoria en C++
¿Qué es un PUNTERO?: Un puntero es un objeto que apunta a otro objeto. Es decir, una variable cuyo valor es la dirección de memoria de otra variable. No.

Teoría de Sistemas Operativos

Algoritmos de ordenación
Direccionamiento de la red: IPv4
Unidad 1 Definiciones Básicas
TIPOS Y ESTRUCTURAS BÁSICAS DE DATOS
ESTRUCTURAS DE DATOS I Conocer, comprender y analizar algunos de los principales tipos de estructuras de datos.
Índice. Revisando conceptos acerca de la memoria.
Clase 10: Estructuras de datos y arreglos.
Elaborado por: Guillermo Baquerizo I Término
Aplicación de estructuras de datos
Capítulo 7 Gestión de memoria.
Arreglos Programación I MC Beatriz Beltrán Martínez.

PILAS Una pila es una estructura de datos o lista de elementos, a la cual se le puede insertar o eliminar su contenido sólo por uno de sus extremos, llamado.
Listas Ligadas Simples. Definíción I  Es, en sencillas palabras. un grupo de datos organizados secuencialmente, pero a diferencia de los arreglos, la.

Tipos de Datos abstractos
Vectores y Matrices.
Estructura de datos I CIS - UABJB.
Computación I. CI-2125 Tema VII
PROGRAMACION DE Pilas o Stacks

PILAS Una pila es una estructura de datos o lista de elementos, a la cual se le puede insertar o eliminar su contenido sólo por uno de sus extremos, llamado.
PUNTEROS. Los punteros son de amplia utilización en programación y muchos lenguajes permiten la manipulación directa o indirecta de los mismos. Su razón.
Tipos de Datos abstractos
Tipos de Datos abstractos
Tipos de Datos abstractos
Tipos de Datos abstractos
Transcripción de la presentación:

Tipos de Datos abstractos Estructuras de Datos MC Beatriz Beltrán Martínez

Características Los programas actúan sobre la información. La cual se dispondrá de una manera particular, organizada en forma que se faciliten las operaciones que conforman el algoritmo. El término Estructura de Datos refiere a dos partes de la Organización de la Información. MC Beatriz Beltrán Martínez FCC - BUAP Primavera 2014

Características Organización Lógica: Involucra todo aquello que tenga que ver con las partes de cada elemento, tipo de los elementos, referencia a alguno o algunos elementos, cantidad de los elementos que contiene la estructura, relaciones entre los elementos, etc. Organización Física: Se refiere a todo aquello que tenga que ver con la ubicación de la información en la memoria y la forma de almacenarla de acuerdo a sus dominios. MC Beatriz Beltrán Martínez FCC - BUAP Primavera 2014

Características Estructura de datos Se caracteriza por sus dos tipos de organización Las operaciones que se pueden realizar sobre los elementos Eliminar Añadir Buscar MC Beatriz Beltrán Martínez FCC - BUAP Primavera 2014

Plantea un concepto más amplio de lo que es el tipo Características Vínculo Algoritmo ED Plantea un concepto más amplio de lo que es el tipo MC Beatriz Beltrán Martínez FCC - BUAP Primavera 2014

Ejemplo Organización Lógica: Arreglo de un índice; Inicio: 1, Fin: 50; Tipo de elementos: Entero;   Organización Física: Almacenamiento: Secuencial Dirección Inicial: dir(A) Tamaño del elemento: 2 bytes; Número de elementos: 50; MC Beatriz Beltrán Martínez FCC - BUAP Primavera 2014

Considerar La eliminación de un elemento se puede pensar en dos formas: Por desplazamiento. Por marca. Podemos observar en los anteriores algoritmos que el segundo es más rápido, mientras que el primero se limita a ocupar el espacio mínimo. Cantidad de memoria que consume la estructura contra tiempo de realización de una operación. MC Beatriz Beltrán Martínez FCC - BUAP Primavera 2014

Tipos de ED y sus dominios A partir de las diferentes formas que existen para organizar la información tenemos que en cuanto a la Organización Lógica los diversos lenguajes de programación proporcionan los elementos básicos de información y constructores para definir ED. Se tienen tipos básicos, pero también se tienen constructores para formar diferentes estructuras. MC Beatriz Beltrán Martínez FCC - BUAP Primavera 2014

Tipos de ED y sus dominios El REGISTRO proporciona heterogeneidad en este producto cartesiano; por ejemplo: Sea x un REGISTRO con los campos y de tipo ENTERO z de tipo REAL tiene como dominio Dom (x) = Z X R, cuyos elementos son de la forma (a, b) aZ y bR. MC Beatriz Beltrán Martínez FCC - BUAP Primavera 2014

Tipos de ED y sus dominios En general, tenemos que por ejemplo: Sea k un REGISTRO con los campos l de tipo booleano m de tipo x Dom(k) = B X Dom(x) Para poder generalizar esto último, se deben considerar los elementos de referencia, para ello consideremos que en el siguiente ejemplo el operador ^ define tales elementos. MC Beatriz Beltrán Martínez FCC - BUAP Primavera 2014

Tipos de ED y sus dominios Sea p un REGISTRO con los campos xc, yc de tipo Real Sea l-p un REGISTRO con los campos punto de tipo p sp de tipo ^l-p Dom (l-p) define un dominio recursivo: Dom (l-p) = Dom (p) x dom (^l-p) Los elementos de Dom (^l-p) son de la forma Dom(^l-p) = {nil} U [Dom (l-p)]. MC Beatriz Beltrán Martínez FCC - BUAP Primavera 2014

Organización física la organización física tiene que ver con el “lugar” y la “forma” dentro de la memoria donde se almacena la información. Tanto el “lugar” como la “forma” son representados por el “espacio” el cual puede ser “fijo” o “variable”. De lo anterior, se tiene que las E.D. se clasifican en: Estáticas (Espacio Fijo) Dinámicas (Espacio Variante) MC Beatriz Beltrán Martínez FCC - BUAP Primavera 2014

Memoria Dinámica y Estática Catálogo de algunas estructuras de datos conocidas, dinámicas: Lista simple ligada Árboles Lista doblemente ligada Estáticas: Arreglos Pila Cola MC Beatriz Beltrán Martínez FCC - BUAP Primavera 2014

Arreglos Organización Lógica: Dimensiones. Límite inferior y superior de cada dimensión. Tipo de elementos.  Organización Física: Dirección inicial (de un intervalo de memoria) Tamaño de los elementos. Orden de las dimensiones. Desplazamientos . MC Beatriz Beltrán Martínez FCC - BUAP Primavera 2014

Arreglos Las operaciones con los arreglos son: Recuperación de uno de sus elementos. Actualización de un elemento. Ambas operaciones se realizan en función de los índices que señalan la ubicación del elemento. MC Beatriz Beltrán Martínez FCC - BUAP Primavera 2014

Arreglos Sea A un ARREGLO [1..20] con elementos de tipo Carácter. Reserva un intervalo de memoria de 20 lugares consecutivos a partir de una dirección que denotaremos por DirA. A[1] A[2] A[3] A[20] DirA DirA+1 DirA+2 DirA+19 Intervalo de memoria: [DirA, DirA+19] MC Beatriz Beltrán Martínez FCC - BUAP Primavera 2014

Polinomio de Direccionamiento Suponiendo que el direccionamiento sea a nivel de bytes. Las operaciones se reducen al cálculo del Polinomio de Direccionamiento (Pd). El Pd obtiene la dirección absoluta de un elemento del arreglo dados sus índices.  MC Beatriz Beltrán Martínez FCC - BUAP Primavera 2014

Polinomio de Direccionamiento Por ejemplo: Si nos referimos a A[7] Pd (A[7]) = DirA + 6 Pd (A[x]) = DirA + x-1. En general se tiene que si B es un ARREGLO [1..5] con elementos de tipo T Pd (B[x]) = DirB + (x-1) lt; con lt igual a la longitud en bytes asignada al tipo T. MC Beatriz Beltrán Martínez FCC - BUAP Primavera 2014

Polinomio de Direccionamiento Para almacenar los elementos de una matriz en la memoria que es lineal, podemos hacerlo por columnas o por renglones. Matriz de 3X4 11 12 13 14 21 22 23 24 31 32 33 34 MC Beatriz Beltrán Martínez FCC - BUAP Primavera 2014

Polinomio de Direccionamiento Por columnas: Dirección Elemento 100=dir 11 101=dir+1 21 1ª. Columna 102=dir+2 31 103=dir+3 12 104=dir+4 22 2ª. Columna 105=dir+5 32 106=dir+6 13 107=dir+7 23 3ª. Columna 108=dir+8 33 109=dir+9 14 110=dir+10 24 4ª. Columna 111=dir+11 34 MC Beatriz Beltrán Martínez FCC - BUAP Primavera 2014

Polinomio de Direccionamiento Para la dirección del elemento C[i][ j] y el almacenamiento por columnas, el PD es: pd(C[i][ j])=dirC+[n*(j-1)+(i-1)]*T Si el almacenamiento se hubiese realizado por renglones, entonces el PD quedaría como: pd(C[i,j])=dirC+[m*(i-1)+(j-1)]*T MC Beatriz Beltrán Martínez FCC - BUAP Primavera 2014

Polinomio de Direccionamiento El caso más general, que es la declaración: Tipo E [inf1,sup1] [inf2,sup2] …, [infn,supn]; donde infi, supi es el límite inferior y límite superior de la i-ésima dimensión respectivamente.  Sea ri el rango de la i-ésima dimensión definido como: ri = supi-infi+1, y T el tamaño en bytes de Tipo. MC Beatriz Beltrán Martínez FCC - BUAP Primavera 2014

Polinomio de Direccionamiento Entonces el PD es: pd(E[k1,k2,…,kn]) = dirE + [r1 * r2 * r3 * … * rn-1 * (kn-infn) + r1* r2* r3 * … * rn-2 * (kn-1-infn-1) + … + r1 * (k2-inf2) + (k1-inf1)] * T Para referenciar un elemento que se encuentra en una estructura utilizaremos la dirección inicial del registro y los tamaños en bytes de cada uno de los campos del registro de acuerdo a su tipo. MC Beatriz Beltrán Martínez FCC - BUAP Primavera 2014

Polinomio de Direccionamiento Entonces la fórmula quedaría de la siguiente manera: Sea estructura R { x1 : T1; x2 : T2; … xn : Tn; } y sea dirR la dirección inicial de R. MC Beatriz Beltrán Martínez FCC - BUAP Primavera 2014

Multipila En este caso se administran varias pilas. La estructura de pila común hereda características del almacenamiento estático y por este motivo tendremos: límite inferior (LI) límite superior (LS) posición del siguiente lugar libre (T) MC Beatriz Beltrán Martínez FCC - BUAP Primavera 2014

Multipila Las operaciones más comunes que se consideran para su manejo son: inserción de un elemento eliminación (extracción) de un elemento verificación de pila vacía o llena. En particular se acostumbra anunciar saturación cuando la estructura no admite más elementos. MC Beatriz Beltrán Martínez FCC - BUAP Primavera 2014

Multipila Considérese: tal que: LI : arreglo [1..n+1] de enteros; T : arreglo [1..n] de enteros; M : arreglo [1..MAX] de un Tipo; tal que: LI[k] representa el límite inferior de la k-ésima pila. T[k] representa la posición del siguiente lugar libre de la k-ésima pila. LI[n+1] es el límite superior de la n-ésima pila. MC Beatriz Beltrán Martínez FCC - BUAP Primavera 2014

Multipila Al inicio todas las pilas están vacías, entonces el arreglo de límites inferiores y el de topes coinciden, excepto el último elemento del arreglo de límites inferiores. Por ejemplo, suponga que se quieren manejar 4 pilas con capacidad para 4 elementos cada una. n=4 y MAX=16. Al inicio el contenido de los arreglos LI y T quedaría de la siguiente manera: MC Beatriz Beltrán Martínez FCC - BUAP Primavera 2014

Multipila LI[1]=1 T[1]=1 LI[2]=5 T[2]=5 LI[3]=9 T[3]=9 LI[4]=13 T[4]=13 LI[5]=17 Al realizar la operación de inserción en alguna de las pilas, se necesita: El número de la pila y El dato a insertar. MC Beatriz Beltrán Martínez FCC - BUAP Primavera 2014

Multipila Para insertar se deben realizar las siguientes operaciones: M[T[1]]=dato; // insertar dato inc(T[1],1); // incrementar el tope de la pila número 1 Si deseamos insertar los datos -4 y -8 en la pila número 3, entonces debemos incrementar en uno el tope de la pila 3 por cada inserción. MC Beatriz Beltrán Martínez FCC - BUAP Primavera 2014

Multipila Pila 1 Pila 2 Pila 3 Pila 4 M LI[1]=1 LI[2] LI[3]=9 LI[4] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 T[1]=2 T[2]=5 T[3]=11 T[4]=13 LI[5]=17 -4 -8 Cuando se pretende almacenar en la k-ésima pila y se tiene que T[k]=LI[k+1], es decir, el tope de la k-ésima pila coincide con el límite inferior de la siguiente pila (k+1-ésima pila), tenemos una saturación local. MC Beatriz Beltrán Martínez FCC - BUAP Primavera 2014

Multipila Por ejemplo, suponga que la pila 3 está saturada. En este caso se pueden llevar a cabo los siguientes pasos: Buscar j tal que: LI[j+1] - T[j] >0 y |k-j| sea mínimo. sino existe j entonces tenemos una saturación total. si existe entonces pasar al siguiente paso. Pila 2 Pila 3 Pila 4 M LI[3]=9 LI[4] 6 7 8 9 10 11 12 13 14 15 16 T[3]=13 T[4]=13 -4 -8 . MC Beatriz Beltrán Martínez FCC - BUAP Primavera 2014

Multipila Mover una posición los elementos de las pilas k+1 hasta j hacia arriba cuando j > k o bien, desde los elementos k hasta j+1 hacia abajo cuando j < k. Insertar el elemento. Actualizar LI y T j = Pila 1 Pila 2 k = Pila 3 Pila 4 M LI[1]=1 LI[2] LI[3]=9 LI[4] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 T[1]=2 T[3]=13 -4 -8 j =Pila 4 17 Caso: j>k Movimiento hacia arriba una posición Caso: j<k Movimiento hacia abajo una posición MC Beatriz Beltrán Martínez FCC - BUAP Primavera 2014

Multipila Cabe mencionar que la pila j (pila seleccionada) es aquella pila que tiene al menos un lugar vacío (LI[j+1]-T[j] > 0 o bien LI[j+1] <>T[j] ) y además es aquella pila que se encuentra más cerca de la pila saturada (|k-j| sea mínimo), entonces |k-j| nos da la distancia entre k y j. Al darse estos movimientos de los elementos de las pilas, estamos modificando tanto los LI de las pilas como sus topes, por lo tanto se deben actualizar. MC Beatriz Beltrán Martínez FCC - BUAP Primavera 2014

Multipila Cuando los movimientos sea hacia arriba se incrementan los LI y los topes de las pilas que se mueven, y cuando los movimientos son hacia abajo se decrementan. En el caso de la eliminación, ésta operación se realiza de la misma manera que para una pila normal, con la diferencia de que necesitamos un parámetro para esta operación: el número de la pila de donde queremos eliminar. MC Beatriz Beltrán Martínez FCC - BUAP Primavera 2014