Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Curso 2011-12
10 Sep. 2011
1. SECUENCIAS
9 Feb. 2011
Un TAD define las operaciones fundamentales, la relacin entre los elementos (ninguna, precedencia, jerarqua, vecindad) y una serie de restricciones (elementos repetidos si/no, existencia o no de operaciones de igualdad y comparacin entre ellos). Una representacin define el cmo se almacenan los elementos en memoria y puede establecer una relacin de precedencia o jerarqua entre ellos (que puede no coincidir con la del TAD) y aadir restricciones a las impuestas por el TAD. La representacin condiciona los algoritmos disponibles para realizar las operaciones del TAD y por tanto la eficiencia de las operaciones.
11 Feb. 2011
Secuencias
La categora de representaciones basadas en secuencias definen una relacin de precedencia entre los elementos. Pueden usarse para representar TADs que no impogan esa relacin: Se puede representar un conjunto, por ejemplo, mediante una secuencia. Existen tres clasificaciones, ortogonales entre s:
Secuencias ordenadas (orden interno) o no ordenadas (orden externo). Si no se dice nada se supone no ordenada. Secuencias contiguas o enlazadas. Secuencias lineales o circulares. Si no se dice nada se supone que son lineales.
Los arrays de bits son un caso especial til para los TADs conjuntos y mapas (si se dan ciertas condiciones).
Csar Vaca Rodrguez, Dpto. de Informtica, UVa 4
11 Feb. 2011
Se corresponden con el concepto de array de la mayora de lenguajes de programacin. Aunque existen algunos lenguajes en los que no son la estructura de datos fundamental (Javascript Mapas, Haskell Lista enlazada) Su ventaja es que el acceso indexado es O(1). La desventaja es que las modificaciones (insercin, borrado, ) requieren desplazar elementos (peor caso O(n))
Las representaciones enlazadas almacenan los elementos en cualquier posicin de memoria. A cada elemento se le aade informacin extra para indicar la secuencia.
Desventaja: El acceso indexado es O(n) en peor caso. Ventaja: Las modificaciones, si se est situado en el punto adecuado, no requieren desplazar elementos: Su orden es O(1)
Csar Vaca Rodrguez, Dpto. de Informtica, UVa 5
11 Feb. 2011
2. REPRESENTACIONES CONTIGUAS
9 Feb. 2011
Contigua lineal
n-1
m-1
Consiste en un array de capacidad m que almacena n elementos (n m) en sus primeras posiciones. El acceso basado en ndice es O(1) El acceso basado en valor (bsqueda) es O(n) en el peor caso: Algoritmo de bsqueda secuencial. Se supone que el array se puede ampliar: Si se inserta un elemento en un array lleno (n = m) se duplica su capacidad:
En general eso implica crear un nuevo array de capacidad 2n y copiar los datos del array antiguo en el nuevo. Supone un coste O(n) Pero garantiza que las siguientes n-1 inserciones tienen espacio.
11 Feb. 2011
La insercin de un elemento para que se situe en el ndice i supone desplazar hacia delante los siguientes elementos:
x
0 i n-1 m-1 0 i i+1 n m-1
La insercin al final es O(1) en tiempo amortizado (mejor caso). La insercin al principio es O(n) (peor caso). El caso promedio es O(n) k [n1..i]:v[k+1] v[k] v[i] x n n+1
8
11 Feb. 2011
El borrado del elemento situado en el ndice i supone desplazar hacia atrs los siguientes elementos:
0 i n-1 m-1 0 i n-2 m-1
El borrado del ltimo es O(1) (mejor caso). La borrado del primero es O(n) (peor caso). El caso promedio es O(n) k [i+1..n1]:v[k1] v[k] n n1
11 Feb. 2011
Una representacin contigua lineal es adecuada para representar una pila, eligiendo como cabeza (extremo por el que se realizan las operaciones de insercin y borrado) el ltimo elemento. Todas las operaciones seran O(1) en tiempo amortizado. El problema consiste en que al representar una cola o bien la insercin o bien el borrado deben hacerse sobre el primer elemento (y tendran un coste O(n)). La representacin circular consigue que las operaciones de insercin o borrado sobre ambos extremos (primer y ltimo elemento) tengan coste O(1). Para ello se elimina la restriccin de que los elementos se encuentren situados al principio del array (aunque siguen estando contiguos, sin huecos entre ellos)
Csar Vaca Rodrguez, Dpto. de Informtica, UVa 10
11 Feb. 2011
Se aaden dos variables, ini y fin, que marcan la zona del vector ocupada por los elementos. Se supone que los extremos del array estan unidos: Tras la posicin m-1 se encuentra la posicin 0, y la posicin anterior a la 0 es la m-1. Puede darse que ini > fin Todos los incrementos o decrementos de ndices se realizan mdulo m.
0 ini fin m-1 0 fin ini m-1
ini
fin
0 m-1
0 m-1
ini 11
Incremento del ndice k: (k+1) mod m Decremento del ndice k: (k+m-1) mod m (se suma m para trabajar siempre con valores positivos) Nmero de elementos: (fin-ini+m+1) mod m Se debe evitar que ini = fin (existe ambiguedad en este caso)
El acceso por ndice a los elementos se realiza contando a partir de la posicin dada por ini: v[(ini+i) mod m] Insercin al principio: ini (ini+m-1) mod m; v[ini] x Insercin al final: fin (fin+1) mod m; v[fin] x Borrado del primero: ini (ini+1) mod m Borrado del ltimo: fin (fin+m-1) mod m
Csar Vaca Rodrguez, Dpto. de Informtica, UVa 12
11 Feb. 2011
11 Feb. 2011
14
Contigua ordenada
n-1
m-1
En una representacin contigua ordenada los elementos se disponen en orden interno (de menor a mayor o de mayor a menor, segn convenga). La operacin de acceso al i-simo menor es O(1). La operacin de bsqueda puede usar el algoritmo de bsqueda binaria, y es de orden O(log n) Las operaciones de insercin y borrado son O(n) en el peor caso porque tienen que desplazar elementos.
El borrado del mximo es O(1) si el orden es de menor a mayor. El borrado del mnimo es O(1) si el orden es de mayor a menor. La operacin de insercin debe buscar el punto de insercin, y desplazar los elementos: O(n log n) + O(n)
11 Feb. 2011
3. REPRESENTACIONES ENLAZADAS
9 Feb. 2011
16
Representacin Enlazada
En las representaciones enlazadas los elementos se almacenan en nodos, que aaden al menos un campo para indicar donde se encuentra el elemento siguiente. La posicin de los nodos en memoria es irrelevante: No tienen porqu ser contiguos y pueden existir huecos entre ellos. La secuencia se establece por la informacin extra que incorpora el nodo.
Nodo Elemento Referencia a nodo siguiente Referencia a nodo anterior (doble)
11 Feb. 2011
17
Variantes
Simple, lineal
Ini
Doble, lineal
Ini
Simple, circular
Fin
Doble, circular
Fin
11 Feb. 2011
18
Eficiencia
Simple, lineal: Acceso, borrado e insercin del primer elemento son operaciones O(1). Sobre el ltimo elemento son O(n) Doble, lineal: Las inserciones y borrados basados en iterador son ms sencillas de codificar. Simple, circular: Acceso e insercin son O(1) sobre ambos extremos. El borrado del primero es O(1), y el del ltimo O(n). Doble, circular: Acceso, borrado e insercin por ambos extremos son operaciones O(1) Las operaciones basadas en ndice requieren pasar por todos los elementos anteriores, y son O(n) en el peor caso. El algoritmo de bsqueda binaria es O(n), desplazamiento para encontrar el punto medio. debido al
11 Feb. 2011
Concatenacin
LisA
LisB
LisA
LisB
11 Feb. 2011
20
4. ARRAYS DE BITS
9 Feb. 2011
21
Arrays de bits
Si los elementos que se van a almacenar son enumerables (se pueden poner en correspondencia con un rango de los nmeros naturales) es entonces posible usar los elementos como ndices de un array. Se obtiene una representacin dada por un array, con una celda por cada posible valor del elemento, que almacena:
Un valor booleano (bit) indicando si el elemento pertenece o no a la estructura (caso de conjuntos) Un enlace al valor asociado (o nulo si no existe) en el caso de un mapa o diccionario.
El espacio ocupado (y las operaciones de recorrido) es proporcional al nmero de posibles valores de los elementos (m) y no al del nmero de elementos almacenados (n).
Csar Vaca Rodrguez, Dpto. de Informtica, UVa 22
11 Feb. 2011
5. ANLIS DE EFICIENCIA
9 Feb. 2011
23
Pertenencia (conjunto) Acceso por clave (mapa) Borrado (por valor/clave) Borrado (por iterador) Insercin (por valor) Unin (ambos tamao n) Espacio
Acceso por ndice Acceso por iterador Borrado por ndice Borrado por iterador Insercin por ndice Insercin por iterador de lista Bsqueda Concatenacin
11 Feb. 2011
= = = = = = = O(1)
25
Acceso primero Acceso ltimo Borrado primero Borrado ltimo Insercin al principio Insercin al final
11 Feb. 2011
26
Acceso mnimo Acceso i-simo menor Borrado mnimo Borrado i-simo menor Borrado por iterador Insercin por valor Bsqueda Fusin
11 Feb. 2011
Notas:
a) b) Se supone ordenada de mayor a menor Se almacena referencia al mnimo, adaptada en la insercin y el borrado. Tiempo promedio, algoritmo basado en particin El coste de mantener un iterador ordenado lo hace inviable
c)
27
Acceso por clave Acceso clave i-sima menor Acceso por iterador Borrado por clave Borrado clave i-sima menor Borrado por iterador Insercin por valor
11 Feb. 2011
28