Está en la página 1de 28

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

Departamento de Informtica Universidad de Valladolid

Curso 2011-12

Grado en Ingeniera Informtica Grado en Ingeniera Informtica de Sistemas

10 Sep. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

1. SECUENCIAS

9 Feb. 2011

Csar Vaca Rodrguez, Dpto.Informtica, UVa

TADs versus Representacin

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

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

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

Contiguo versus enlazado

Las representaciones contiguas almacenan los elementos en posiciones consecutivas de memoria.

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

Csar Vaca Rodrguez, Dpto.Informtica, UVa

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

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

Contigua lineal (II)

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

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

Contigua lineal (III)

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

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

Contigua circular (I)

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

Contigua circular (II)

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

fin 11 Feb. 2011 Csar Vaca Rodrguez, Dpto. de Informtica, UVa

ini 11

Contigua circular (III)

Las operaciones de ndice deben usar aritmtica modular:


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

Contigua circular - Insercin


{Insertarxenposicinisima(0based) Sesuponequenoesnecesarioampliarelvector} p (ini+i)mod m{Posicinisimaenelvector } k fin {Semuevenhaciadelanteloselementos[p..fin] } mientras k p v[(k+1)mod m] v[k];{v[k+1] v[k] } k (k+m1)mod m;{k k1 } {Insertarelelemento} v[p] x {Incrementarelndicealltimo} fin (fin+1)mod m
11 Feb. 2011 Csar Vaca Rodrguez, Dpto. de Informtica, UVa 13

Contigua circular - Borrado


{Borrarelementoenposicinisima(0based)} p (ini+i)mod m{Posicinisimaenelvector } k (p+1)mod m {Semuevenhaciaatrasloselementos[p+1..fin] } mientras k fin v[(k+m1) mod m] v[k];{v[k1] v[k] } k (k+1)mod m;{k k+1 } {Decrementarelndicealltimo} fin (fin+m1)mod m

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

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)

No existen ventajas en representarla de forma circular


Csar Vaca Rodrguez, Dpto. de Informtica, UVa 15

11 Feb. 2011

3. REPRESENTACIONES ENLAZADAS

9 Feb. 2011

Csar Vaca Rodrguez, Dpto.Informtica, UVa

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

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

17

Variantes

Simple, lineal
Ini

Doble, lineal
Ini

Simple, circular

Fin

Doble, circular

Fin

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

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

La ordenacin por fusin es O(n log n) y O(log n) en espacio.


Csar Vaca Rodrguez, Dpto. de Informtica, UVa 19

11 Feb. 2011

Concatenacin

Permitiendo destruccin de 1 lista: O(1)

LisA

LisB

LisA

LisB

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

20

4. ARRAYS DE BITS

9 Feb. 2011

Csar Vaca Rodrguez, Dpto.Informtica, UVa

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

Csar Vaca Rodrguez, Dpto.Informtica, UVa

23

Eficiencia TADs Conjunto/Mapa


Array de bits Contigua (repetidos) Contigua ordenada Enlazada ordenada Enlazada (no rept.)

Pertenencia (conjunto) Acceso por clave (mapa) Borrado (por valor/clave) Borrado (por iterador) Insercin (por valor) Unin (ambos tamao n) Espacio

O(n) O(n) O(n) O(1)* O(n) O(n)

O(log n) O(n) O(n) O(n) O(n) O(n)

O(n) O(n) O(1) O(1) O(n2) O(n)

O(n) O(n) O(1) O(n) O(n) O(n)

O(1) O(1) O(1) O(1) O(m) O(m)


24

* Tiempo amortizado (incremento tamao array)


11 Feb. 2011 Csar Vaca Rodrguez, Dpto. de Informtica, UVa

Eficiencia TAD Lista


Enlazada circular Contigua Enlazada lineal

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) O(1) O(n) O(n) O(n) O(n) O(n) O(n)

O(n) O(1) O(n) O(1) O(n) O(1) O(n) O(n)

= = = = = = = O(1)
25

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

Eficiencia TAD Pila/Cola/Bicola


Contigua circular Enlazada doble circular Enlazada simple circular Contigua lineal Enlazada simple lineal

Acceso primero Acceso ltimo Borrado primero Borrado ltimo Insercin al principio Insercin al final

O(1) O(1) O(n) O(1) O(n) O(1)*

O(1) O(1) O(1) O(1) O(1)* O(1)*

O(1) O(n) O(1) O(n) O(1) O(n)

O(1) O(1) O(1) O(n) O(1) O(1)

O(1) O(1) O(1) O(1) O(1) O(1)

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

26

Eficiencia TAD Lista Ordenada y Cola de Prioridad


Contigua ordenada Enlazada ordenada Contigua

Acceso mnimo Acceso i-simo menor Borrado mnimo Borrado i-simo menor Borrado por iterador Insercin por valor Bsqueda Fusin
11 Feb. 2011

O(1) O(1) O(1)a O(n) O(n) O(n)* O(log n) O(n)

O(1) O(n) O(1) O(n) O(1) O(n) O(n) O(n)

O(1)b O(n)c O(n)b

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)

O(n)c ---d O(1)b O(n) O(n)


d)

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

27

Eficiencia TAD Diccionario


Contigua ordenada Enlazada ordenada

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

O(log n) O(1) O(1) O(n) O(n) O(n) O(n)

O(n) O(n) O(1) O(n) O(n) O(1) O(n)

11 Feb. 2011

Csar Vaca Rodrguez, Dpto. de Informtica, UVa

28

También podría gustarte

  • Lectura-InEI y La Comisión Nacional de Investigación y Desarrollo Aeroespacial
    Lectura-InEI y La Comisión Nacional de Investigación y Desarrollo Aeroespacial
    Documento1 página
    Lectura-InEI y La Comisión Nacional de Investigación y Desarrollo Aeroespacial
    Jose Luis
    Aún no hay calificaciones
  • Bienes 01
    Bienes 01
    Documento1 página
    Bienes 01
    Jose Luis
    Aún no hay calificaciones
  • Ejemplo Tiempos12
    Ejemplo Tiempos12
    Documento3 páginas
    Ejemplo Tiempos12
    Jose Luis
    Aún no hay calificaciones
  • Ejemplo 1
    Ejemplo 1
    Documento26 páginas
    Ejemplo 1
    Jose Luis
    Aún no hay calificaciones
  • Ejemplo Tiempos14
    Ejemplo Tiempos14
    Documento3 páginas
    Ejemplo Tiempos14
    Jose Luis
    Aún no hay calificaciones
  • Ejemplo Tiempos15
    Ejemplo Tiempos15
    Documento3 páginas
    Ejemplo Tiempos15
    Jose Luis
    Aún no hay calificaciones
  • Ejer 01 PP
    Ejer 01 PP
    Documento1 página
    Ejer 01 PP
    Jose Luis
    Aún no hay calificaciones
  • Ejemplo Tiempos16
    Ejemplo Tiempos16
    Documento3 páginas
    Ejemplo Tiempos16
    Jose Luis
    Aún no hay calificaciones
  • Ejemplo Tiempos13
    Ejemplo Tiempos13
    Documento3 páginas
    Ejemplo Tiempos13
    Jose Luis
    Aún no hay calificaciones
  • Ejemplo Tiempos8
    Ejemplo Tiempos8
    Documento3 páginas
    Ejemplo Tiempos8
    Jose Luis
    Aún no hay calificaciones
  • Ejemplo Tiempos10
    Ejemplo Tiempos10
    Documento3 páginas
    Ejemplo Tiempos10
    Jose Luis
    Aún no hay calificaciones
  • Ejemplo Tiempos3
    Ejemplo Tiempos3
    Documento3 páginas
    Ejemplo Tiempos3
    Jose Luis
    Aún no hay calificaciones
  • Ejemplo Tiempos11
    Ejemplo Tiempos11
    Documento3 páginas
    Ejemplo Tiempos11
    Jose Luis
    Aún no hay calificaciones
  • Ejemplo Tiempos9
    Ejemplo Tiempos9
    Documento3 páginas
    Ejemplo Tiempos9
    Jose Luis
    Aún no hay calificaciones
  • Ejemplo Tiempos6
    Ejemplo Tiempos6
    Documento3 páginas
    Ejemplo Tiempos6
    Jose Luis
    Aún no hay calificaciones
  • Ejemplo Tiempos7
    Ejemplo Tiempos7
    Documento3 páginas
    Ejemplo Tiempos7
    Jose Luis
    Aún no hay calificaciones
  • Caso 001 2017
    Caso 001 2017
    Documento1 página
    Caso 001 2017
    Jose Luis
    Aún no hay calificaciones
  • Enunciados 01
    Enunciados 01
    Documento1 página
    Enunciados 01
    Jose Luis
    Aún no hay calificaciones
  • Enunciados 01
    Enunciados 01
    Documento1 página
    Enunciados 01
    Jose Luis
    Aún no hay calificaciones
  • Ejemplo Tiempos1
    Ejemplo Tiempos1
    Documento3 páginas
    Ejemplo Tiempos1
    Jose Luis
    Aún no hay calificaciones
  • Ejemplo Tiempos4
    Ejemplo Tiempos4
    Documento3 páginas
    Ejemplo Tiempos4
    Jose Luis
    Aún no hay calificaciones
  • Enunciados 01
    Enunciados 01
    Documento1 página
    Enunciados 01
    Jose Luis
    Aún no hay calificaciones
  • Ejemplo Tiempos
    Ejemplo Tiempos
    Documento3 páginas
    Ejemplo Tiempos
    Jose Luis
    Aún no hay calificaciones
  • Enunciados 01
    Enunciados 01
    Documento1 página
    Enunciados 01
    Jose Luis
    Aún no hay calificaciones
  • Enunciados 01
    Enunciados 01
    Documento1 página
    Enunciados 01
    Jose Luis
    Aún no hay calificaciones
  • Enunciados 01
    Enunciados 01
    Documento1 página
    Enunciados 01
    Jose Luis
    Aún no hay calificaciones
  • Enunciados 01
    Enunciados 01
    Documento1 página
    Enunciados 01
    Jose Luis
    Aún no hay calificaciones
  • Enunciados 01
    Enunciados 01
    Documento1 página
    Enunciados 01
    Jose Luis
    Aún no hay calificaciones
  • Enunciados 01
    Enunciados 01
    Documento1 página
    Enunciados 01
    Jose Luis
    Aún no hay calificaciones
  • Enunciados 01
    Enunciados 01
    Documento1 página
    Enunciados 01
    Jose Luis
    Aún no hay calificaciones