78
Tema 5 Tipos Abstractos de Datos Lineales Pablo S´ anchez Dpto. Matem´ aticas, Estad´ ıstica y Computaci´ on Universidad de Cantabria Santander (Cantabria, Espa˜ na) [email protected] Pablo S´ anchez (MATESCO) TADs lineales 1 / 78

Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

  • Upload
    others

  • View
    14

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Tema 5Tipos Abstractos de Datos Lineales

Pablo Sanchez

Dpto. Matematicas, Estadıstica y ComputacionUniversidad de Cantabria

Santander (Cantabria, Espana)[email protected]

Pablo Sanchez (MATESCO) TADs lineales 1 / 78

Page 2: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Introduccion Objetivos

Objetivos

Objetivos

1 Conocer los tipos abstractos de datos lineales mas populares.

2 Saber usar los tipos abstractos de datos lineales mas populares.

3 Saber escoger, adoptando las tecnicas mas adecuadas de acuerdo acriterios de eficiencia temporal y espacial, la implementacion masadecuada para un TAD lineal.

4 Ser capaz de usar las bibliotecas de TADs lineales proporcionadas porlos lenguajes de programacion actuales.

Pablo Sanchez (MATESCO) TADs lineales 2 / 78

Page 3: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Introduccion Bibliografıa Basica

Bibliografıa Basica

Lewis, J. and Chase, J. (2006).Estructuras de Datos con Java : Diseno de Estructuras y Algoritmos.Peason Education, 2 edition.

Meyer, B. (2000).Construccion de Software Orientada a Objetos.Prentice Hall.

Ricardo Pena (2005).Diseno de Programas: Formalismo y Abstraccion.Pearson Educacion, 3 edition.

Sahni, S. (2000).Data Structures, Algorithms, And Applications In Java.McGraw-Hill.

Pablo Sanchez (MATESCO) TADs lineales 3 / 78

Page 4: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Introduccion Indice

Indice

1 Introduccion.

2 Seleccion de las Tecnicas de Implementacion.

3 Colecciones.

4 Vectores y Matrices.

5 Estructuras con Acceso Destacado.

6 Estructuras con Orden Natural/Prioridad.

7 Tablas, Mapas, Aplicaciones o Diccionarios.

8 Sumario.

Pablo Sanchez (MATESCO) TADs lineales 4 / 78

Page 5: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Introduccion Concepto de Tipo Abstracto de Datos lineal

Concepto de Tipo Abstracto de Datos Lineal

Concepto de Tipo Abstracto de Datos lineal

Un tipo abstracto de datos lineal es un tipo abstracto de datos que sepuede representar como una secuencia de elementos{a1, . . . , ai , . . . , aj , . . . , an}, donde un conjunto finito (y corto), deelementos son elementos destacados y la unica relacion entre doselementos ai e aj , si la hubiere, es la de ser el antecesor de o el sucesor de.

Pablo Sanchez (MATESCO) TADs lineales 5 / 78

Page 6: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Introduccion Tipos Abstractos de Datos mas Populares

Tipos Abstractos de Datos Lineales mas Populares

1 Bolsas (Multiconjuntos)

2 Conjuntos

3 Secuencias (Listas)

4 Secuencias con Prioridad.

5 Conjuntos Ordenados (Secuencias sin repeticion).

6 Conjuntos Ordenados con Prioridad.

7 Vectores y Matrices.

8 Pilas.

9 Colas.

10 Colas con Prioridad.

11 Tablas, Mapas, Aplicaciones o Diccionarios.

Pablo Sanchez (MATESCO) TADs lineales 6 / 78

Page 7: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Seleccion de las Tecnicas de Implementacion

Indice

1 Introduccion.

2 Seleccion de las Tecnicas de Implementacion.

3 Colecciones.

4 Vectores y Matrices.

5 Estructuras con Acceso Destacado.

6 Estructuras con Orden Natural/Prioridad.

7 Tablas, Mapas, Aplicaciones o Diccionarios.

8 Sumario.

Pablo Sanchez (MATESCO) TADs lineales 7 / 78

Page 8: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Seleccion de las Tecnicas de Implementacion Estructuras Estaticas

Estructuras con Memoria Estatica

7ultimo

0 1 2 3 4 5 6 7 8 ... N

~ ~ ~ ~ ~ ~

Ventajas

1 Eficientes al estar todos los elementos contiguos en memoria.

2 Facil acceso posicional.

Inconvenientes

1 Tamano del vector puede estar determinado en tiempo de compilacion.

2 Si se puede cambiar de tamano, el redimensionamiento suele ser costoso.

3 Desperdicia memoria para estructuras poco llenas.

4 Desplazar subvectores dentro del vector es costoso.

Pablo Sanchez (MATESCO) TADs lineales 8 / 78

Page 9: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Seleccion de las Tecnicas de Implementacion Estructuras Dinamicas Simples

Estructuras con Memoria Dinamica

ultimo primero

Ventajas

1 Estructuras no acotadas de facil crecimiento.

2 Solo se consume la memoria que realmente se usa.

3 Desplazar subestructuras es O(1).

Inconvenientes

1 Menos eficientes al estar los elementos dispersos en memoria.

2 Acceso posicional mas complejo.

3 Puede que tengamos que gestionar la liberacion de memoria.

Pablo Sanchez (MATESCO) TADs lineales 9 / 78

Page 10: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Seleccion de las Tecnicas de Implementacion Estructuras con Dispersion

Tablas de Dispersion

fhash(d2)

d2

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

= 3

Estructura Acceso Aleatorio

Ventajas

1 Tiempos de busqueda de elementos de O(≈ 1) .

Inconvenientes

1 Desperdiciar algo de memoria.

2 Ordenar los elementos es algo mas complejo y costoso (O(n log n)).

3 Necesita de una buena funcion de dispersion.

4 Es una estructura acotada de costosos redimensionamientos.

5 Acceso posicional complejo de mantener.

Pablo Sanchez (MATESCO) TADs lineales 10 / 78

Page 11: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Seleccion de las Tecnicas de Implementacion Arboles Autobalanceados

Arboles Autobalanceados

0 120 140

10 65 75 110

60 80

70

Ventajas

1 Tiempos de busqueda de elementos de O(log(n)) .

2 Se pueden ordenar los elementos en O(n).

3 Estructura no acotada, puede crecer facilmente en tamano.

4 No desperdicia memoria.

Inconvenientes

1 Los elementos han de ser comparables por igualdad y orden.

Pablo Sanchez (MATESCO) TADs lineales 11 / 78

Page 12: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Seleccion de las Tecnicas de Implementacion Arboles Autobalanceados

Arboles AVL vs Arboles Rojinegros

AVL Rojinegro

Altura O(1,44 log(n)) O(2 log(n))

Busqueda O(1,44 log(n)) O(2 log(n))

Insercion O(2,88 log(n)) O(2 log(n))

Eliminacion O(2,88 log(n)) O(2 log(n))

Pablo Sanchez (MATESCO) TADs lineales 12 / 78

Page 13: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Colecciones de Elementos

Indice

1 Introduccion.

2 Seleccion de las Tecnicas de Implementacion.

3 Colecciones.

4 Vectores y Matrices.

5 Estructuras con Acceso Destacado.

6 Estructuras con Orden Natural/Prioridad.

7 Tablas, Mapas, Aplicaciones o Diccionarios.

8 Sumario.

Pablo Sanchez (MATESCO) TADs lineales 13 / 78

Page 14: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Colecciones de Elementos Clasificacion

Clasificacion de Colecciones

Repetidos No Repetidos

Pos. Relevante Secuencia Conjunto Ordenado

Pos. No Relevante Bolsa Conjunto

¡OJO! Ordenado aquı simplemente significa que el orden en el queaparecen los elementos en la secuencia importan (en ingles, ordered).

Cuando los elementos esten dispuestos en la coleccion de acuerdo aalguna relacion de orden especial (e.g. lexicografico) diremos queestan dispuestos u ordenados por prioridad (en ingles, sorted) o conorden natural.

Pablo Sanchez (MATESCO) TADs lineales 14 / 78

Page 15: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Colecciones de Elementos Bolsas

Bolsas

Bolsas (Multiconjuntos)

Colecciones de elementos potencialmente repetidos donde el orden deinsercion (o posicion) de los elementos en la estructura no es relevante.

Operaciones

1 emptyBag : -> Bag

2 add : Bag E -> Bag

3 size : Bag -> Natural

4 contains/exists : Bag E -> Booleano

5 remove : Bag E -> Bag

6 removeOne: Bag E -> Bag

7 isEmpty : Bag -> Booleano

8 number : Bag E -> Natural

Pablo Sanchez (MATESCO) TADs lineales 15 / 78

Page 16: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Colecciones de Elementos Bolsas

Uso de Bolsas

Bolsasclass [ ]

+nombre : String+director : String

CDInventario

{nonunique}

+cds

0..*

InstanciaBolsasclass [ ]

director = "Zhang Yimou"

nombre = "El Camino a Casa"

cd1 : CD

director = "Zhang Yimou"

nombre = "El Camino a Casa"

cd2 : CD

: Inventario

Pablo Sanchez (MATESCO) TADs lineales 16 / 78

Page 17: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Colecciones de Elementos Bolsas

Implementacion de Bolsas

1 Vector (array) con acceso directo al ultimo.

2 Lista enlazada con insercion en la cabeza.

3 Puedo usar un contador para mantener el tamano calculado.

4 Se pueden hacer implementaciones muy eficientes con tablas dedispersion o arboles autobalanceados.

Pablo Sanchez (MATESCO) TADs lineales 17 / 78

Page 18: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Colecciones de Elementos Bolsas

Comparacion de Implementaciones

Vector Lista Enlazada Dispersion Arbol balanceado

emptyBag O(1) O(1) O(N) O(1)

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

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

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

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

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

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

N es el tama~no de la tabla de dispersion

n es el numero de elementos en la bolsa

Pablo Sanchez (MATESCO) TADs lineales 18 / 78

Page 19: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Colecciones de Elementos Conjuntos

Conjuntos

Conjuntos

Colecciones de elementos no repetidos donde el orden de insercion (oposicion) de los elementos en la estructura no es relevante.

Operaciones

1 emptySet : -> Set

2 add : Set E -> Set

3 size : Set -> Natural

4 contains/exists : Set E -> Booleano

5 remove : Set E -> Set

6 isEmpty : Set -> Booleano

7 union, intersection, diff : Set Set -> Set

8 subset, equal : Set Set -> Boolean

Pablo Sanchez (MATESCO) TADs lineales 19 / 78

Page 20: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Colecciones de Elementos Conjuntos

Uso de Conjuntos

Conjuntosclass [ ]

+nombre : String+creditos : Integer

Asignatura

+nombre : String

Alumno

+nombre : String+centro : String

Titulacionasignaturas

1..*

+alumnos

1..*

Pablo Sanchez (MATESCO) TADs lineales 20 / 78

Page 21: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Colecciones de Elementos Conjuntos

Implementacion de Conjunto

1 Vector (array) con acceso directo al ultimo.

2 Lista enlazada con insercion en la cabeza o al final.

3 Puedo usar un contador para mantener el tamano calculado.

4 Antes de anadir tengo que comprobar si pertenece.

5 Se pueden hacer implementaciones muy eficientes con tablas dedispersion o arboles binarios de busqueda autobalanceados.

Pablo Sanchez (MATESCO) TADs lineales 21 / 78

Page 22: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Colecciones de Elementos Conjuntos

Comparacion de Implementaciones

Vector Lista Enlazada Dispersion Arbol balanceado

emptySet O(1) O(1) O(N) O(1)

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

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

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

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

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

union O(n2) O(n2) O(n) O(n log(n))

intersection O(n2) O(n2) O(n) O(n log(n))

diff O(n2) O(n2) O(n) O(n log(n))

subset O(n2) O(n2) O(n) O(n log(n))

equal O(n2) O(n2) O(n) O(n log(n))

N es el tama~no de la tabla de dispersion

n es el tama~no del conjunto

Pablo Sanchez (MATESCO) TADs lineales 22 / 78

Page 23: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Colecciones de Elementos Secuencias

Secuencias/Listas

Secuencias/Listas

Colecciones de elementos potencialmente repetidos donde el orden deinsercion (o posicion) de los elementos en la estructura es relevante.

Pablo Sanchez (MATESCO) TADs lineales 23 / 78

Page 24: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Colecciones de Elementos Secuencias

Operaciones sobre Secuencias

1 emptyList : -> Seq

2 addTail, addHead : Seq E -> Seq

3 add : Seq E Natural -> Seq

4 getTail, getHead : Seq -> E

5 get : Seq Natural -> E

6 removeAll, removeFirst, removeLast : Seq E -> Seq

7 remove : Seq Natural -> Seq

8 replace : Seq Natural E -> Seq

9 contains : Seq E -> Booleano

10 find[Last, First]Index : Seq E -> Entero

11 size : Seq -> Natural

12 number : Seq E -> Natural

13 isEmpty : Seq -> Booleano

14 concat : Seq Seq -> Seq

15 equal, subseq : Seq Seq -> Boolean

Pablo Sanchez (MATESCO) TADs lineales 24 / 78

Page 25: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Colecciones de Elementos Secuencias

Uso de Secuencias

Secuenciaclass [ ]

Almacen

+titulo : String+autor : String

Libro

+id : String

Estanteria

{ordered,nonunique}

+libros

0..*

+estantes

{ordered} 1..*

Pablo Sanchez (MATESCO) TADs lineales 25 / 78

Page 26: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Colecciones de Elementos Secuencias

Implementacion de Secuencias

1 Vector (array) con acceso directo al ultimo elemento.

2 Lista enlazada con puntero a la cabeza y al final.

3 Puedo usar un contador para mantener el tamano siempre calculado.

Pablo Sanchez (MATESCO) TADs lineales 26 / 78

Page 27: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Colecciones de Elementos Secuencias

Comparacion de Implementaciones

Vector Lista Enlazada

emptyList O(1) O(1)

addHead O(n) O(1)

addTail O(1) O(1)

add O(1) O(1)

getTail, getHead O(1) O(1)

get O(1) O(n)

remove[All, First, Last] O(n) O(n)

remove O(n) O(n)

contains O(n) O(n)

find[Last, First]Index O(n) O(n)

size O(1) O(1)

number O(n) O(n)

isEmpty O(1) O(1)

concat O(n) O(1)

equal O(n) O(n)

n es el tama~no de la secuencia

Pablo Sanchez (MATESCO) TADs lineales 27 / 78

Page 28: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Colecciones de Elementos Secuencias Sin Repeticiones

Secuencias sin Repeticiones

Secuencias sin Repeticiones

Colecciones de elementos no repetidos donde el orden de insercion (oposicion) de los elementos en la estructura es relevante.

Pablo Sanchez (MATESCO) TADs lineales 28 / 78

Page 29: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Colecciones de Elementos Secuencias Sin Repeticiones

Operaciones sobre Secuencias sin Repeticiones

1 emptyOrderSet : -> OrderSet

2 addTail, addHead : OrderSet E -> OrderSet

3 add : OrderSet E Natural -> OrderSet

4 getTail, getHead : OrderSet -> E

5 get : OrderSet Natural -> E

6 remove : OrderSet E -> OrderSet

7 removeAt : OrderSet Natural -> OrderSet

8 replace : OrderSet Natural E -> OrderSet

9 contains : OrderSet E -> Booleano

10 findIndex : OrderSet E -> Entero

11 size : OrderSet -> Natural

12 isEmpty : OrderSet -> Booleano

13 concat : OrderSet OrderSet -> OrderSet

14 equal, subseq : OrderSet OrderSet -> Boolean

Pablo Sanchez (MATESCO) TADs lineales 29 / 78

Page 30: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Colecciones de Elementos Secuencias Sin Repeticiones

Uso de Secuencias sin Repeticiones

Secuenciaclass [ ]

Almacen

+titulo : String+autor : String

Libro

+id : String

Estanteria

{ordered,nonunique}

+libros

0..*

+estantes

{ordered} 1..*

Pablo Sanchez (MATESCO) TADs lineales 30 / 78

Page 31: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Colecciones de Elementos Secuencias Sin Repeticiones

Implementacion de Secuencias sin Repeticiones

1 Vector (array) con acceso directo al ultimo elemento.

2 Lista enlazada con puntero a la cabeza y al final.

3 Puedo usar un contador para mantener el tamano siempre calculado.

Pablo Sanchez (MATESCO) TADs lineales 31 / 78

Page 32: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Colecciones de Elementos Secuencias Sin Repeticiones

Comparacion de Implementaciones

Vector Lista Enlazada

emptyOrderSet O(1) O(1)

addTail, addHead O(n) O(n)

add O(n) O(n)

getTail, getHead O(1) O(1)

get O(1) O(n)

remove O(n) O(n)

removeAt O(n) O(n)

contains O(n) O(n)

findIndex O(n) O(n)

size O(1) O(1)

isEmpty O(1) O(1)

concat O(n2) O(n2)

equal O(n) O(n)

subseq O(n) O(n)

n es el tama~no del vector de la lista

Pablo Sanchez (MATESCO) TADs lineales 32 / 78

Page 33: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Vectores y Matrices

Indice

1 Introduccion.

2 Seleccion de las Tecnicas de Implementacion.

3 Colecciones.

4 Vectores y Matrices.

5 Estructuras con Acceso Destacado.

6 Estructuras con Orden Natural/Prioridad.

7 Tablas, Mapas, Aplicaciones o Diccionarios.

8 Sumario.

Pablo Sanchez (MATESCO) TADs lineales 33 / 78

Page 34: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Vectores y Matrices Vectores

Vectores

Vectores

Coleccion de elementos (potencialmente repetidos), usualmente deexactamente el mismo tipo, donde la posicion de cada elemento en laestructura es especialmente relevante; y donde el acceso tanto paraescritura como para lectura se hace a traves del ındice de la posicion dedicho elemento en la estructura.

1 newVector : Natural -> Vector(E)

2 set : Vector(E) Natural E -> Vector(E)

3 get : Vector(E) Natural -> E

4 equal : Vector(E) Vector(E) -> Boolean

5 size : Vector(E) -> Natural

6 isSet : Vector(E) Natural -> Boolean

7 resize : Vector(E) Natural -> Vector(E)

Pablo Sanchez (MATESCO) TADs lineales 34 / 78

Page 35: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Vectores y Matrices Matrices

Matrices

Matrices

Coleccion bidimensional de elementos (potencialmente repetidos),usualmente de exactamente el mismo tipo, donde la posicion de cadaelemento en la estructura es especialmente relevante; y donde el accesotanto para escritura como para lectura se hace a traves de las coordenadasde la posicion de dicho elemento en la estructura.

1 newMatrix : Natural Natural -> Matrix(E)

2 set : Matrix(E) Natural Natural E -> Matrix(E)

3 get : Matrix(E) Natural Natural -> E

4 equal : Matrix(E) Matrix(E) -> Boolean

5 rows, columns : Matrix(E) -> Natural

6 isSet : Matrix(E) Natural Natural -> Boolean

7 resize : Matrix(E) Natural Natural -> Matrix(E)

Pablo Sanchez (MATESCO) TADs lineales 35 / 78

Page 36: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Vectores y Matrices Matrices

Uso de Matrices y Vectores

Calculo Cientıfico en general.

Software de Simulacion.

Resolucion de problemas reducibles a grafos. (Ejemplo: Extraccion degrupos perceptuales en imagenes.)

Pablo Sanchez (MATESCO) TADs lineales 36 / 78

Page 37: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Vectores y Matrices Matrices

Implementacion de Matrices/Vectores

Matriz Dispersa

Una matriz M se dice que es dispersa cuando la mayorıa de sus elementos(≈ 80%) son ceros.

Vector/Matriz Denso

Una matriz M se dice que es densa cuando no es dispersa.

Pablo Sanchez (MATESCO) TADs lineales 37 / 78

Page 38: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Vectores y Matrices Matrices

Implementacion de Matrices/Vectores

Vector/Matriz Denso

Los vectores y matrices densos se implementan, salvo causa de fuerza mayor,usando los vectores (arrays) proporcionados por el lenguaje de programacion.

Vector/Matriz Disperso

Lista/Vector de listas enlazadas con los elementos no nulos de cada fila.

Tablas de dispersion usando las coordenadas de un elemento como llave.

Secuencia sin repeticiones ordenadas por filas y columnas de tuplas(fila, columna, valor).

Formato Yale

1 2 0 0

0 3 9 0

0 1 4 0

Elements = [1 2 3 9 1 4]

RowsBegin = [0 2 4 6]

Columns = [0 1 1 2 1 2]

Pablo Sanchez (MATESCO) TADs lineales 38 / 78

Page 39: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Estructuras con Acceso Destacado

Indice

1 Introduccion.

2 Seleccion de las Tecnicas de Implementacion.

3 Colecciones.

4 Vectores y Matrices.

5 Estructuras con Acceso Destacado.

6 Estructuras con Orden Natural/Prioridad.

7 Tablas, Mapas, Aplicaciones o Diccionarios.

8 Sumario.

Pablo Sanchez (MATESCO) TADs lineales 39 / 78

Page 40: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Estructuras con Acceso Destacado Tipo de Acceso

Clasificacion por Tipo de Acceso

LIFO (Last In First Out): El elemento que recuperamos es elultimo elemento que hemos introducido en la estructura.

FIFO (First In First Out): El elemento que recuperamos es elprimer elemento que hemos introducido en la estructura.

Pablo Sanchez (MATESCO) TADs lineales 40 / 78

Page 41: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Estructuras con Acceso Destacado Pilas

Pilas

Pilas

Coleccion de elementos (potencialmente repetidos) donde el orden deinsercion de los elementos es relevante y solo tenemos acceso al ultimoelemento anadido. Es una estructura de tipo LIFO (Last In, First Out),donde el unico elemento que podemos obtener es el ultimo elementoanadido.

X

Y

Z

WE

X

Y

Z

W

E

Pablo Sanchez (MATESCO) TADs lineales 41 / 78

Page 42: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Estructuras con Acceso Destacado Pilas

Operaciones sobre Pilas

1 emptyStack : -> Stack

2 push : Stack E -> Stack

3 parcial peek : Stack -> E

4 parcial pop : Stack -> Stack

5 isEmpty : Stack -> Boolean

6 size : Stack -> Natural

Pablo Sanchez (MATESCO) TADs lineales 42 / 78

Page 43: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Estructuras con Acceso Destacado Pilas

Uso de Pilas

1 Calculo de expresiones en notacion polaca inversa.

2 Calculo de expresiones en lenguajes de programacion.

3 Simulacion de programas recursivos sobre programas iterativos

4 Ej: Determinacion de palındromos.

Pablo Sanchez (MATESCO) TADs lineales 43 / 78

Page 44: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Estructuras con Acceso Destacado Pilas

Implementacion de Pilas

1 Vector (array) con acceso directo al ultimo elemento.

2 Lista enlazada con puntero a la cabeza.

3 Puedo usar un contador para mantener el tamano siempre calculado.

Pablo Sanchez (MATESCO) TADs lineales 44 / 78

Page 45: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Estructuras con Acceso Destacado Pilas

Comparacion de Implementaciones

Vector Lista Enlazada

emptyStack O(1) O(1)

push, pop O(1) O(1)

peek O(1) O(1)

isEmpty O(1) O(1)

size O(1) O(1)

Pablo Sanchez (MATESCO) TADs lineales 45 / 78

Page 46: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Estructuras con Acceso Destacado Colas

Colas

Colas

Coleccion de elementos (potencialmente repetidos) donde el orden deinsercion de los elementos es relevante y solo tenemos acceso al elementomas antiguo anadido. Es una estructura de tipo FIFO (First In, First Out),donde el unico elemento que podemos obtener es el elemento mas antiguoanadido.

Z XYW

Z YW X

XZ YW

Pablo Sanchez (MATESCO) TADs lineales 46 / 78

Page 47: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Estructuras con Acceso Destacado Colas

Operaciones sobre Colas

1 emptyQueue : -> Queue

2 add : Queue E -> Queue

3 peek : Queue -> E

4 remove : Queue -> Queue

5 isEmpty : Queue -> Boolean

6 size : Queue -> Natural

Pablo Sanchez (MATESCO) TADs lineales 47 / 78

Page 48: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Estructuras con Acceso Destacado Colas

Uso de Colas

1 Sistemas Operativos (planificadores de procesos, colas de eventos).

2 Software de Telematica (colas de paquetes).

3 Streaming (vıdeo por internet, TDT).

4 Programas de Simulacion de Procesos.

5 Interfaces Graficas (colas de eventos).

Pablo Sanchez (MATESCO) TADs lineales 48 / 78

Page 49: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Estructuras con Acceso Destacado Colas

Implementacion de Colas

1 Lista enlazada con puntero al primero y al ultimo.

2 Vector (array) circular con indicadores de primero y ultimo.

3 Puedo usar un contador para mantener el tamano siempre calculado.

W X YZ A B C

12

3

primero

ultimo

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14

Pablo Sanchez (MATESCO) TADs lineales 49 / 78

Page 50: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Estructuras con Acceso Destacado Colas

Comparacion de Implementaciones

Vector Lista Enlazada

emptyQueue O(1) O(1)

add O(1) O(1)

peek O(1) O(1)

remove O(1) O(1)

isEmpty O(1) O(1)

size O(1) O(1)

Pablo Sanchez (MATESCO) TADs lineales 50 / 78

Page 51: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Estructuras con Orden Natural

Indice

1 Introduccion.

2 Seleccion de las Tecnicas de Implementacion.

3 Colecciones.

4 Vectores y Matrices.

5 Estructuras con Acceso Destacado.

6 Estructuras con Orden Natural/Prioridad.

7 Tablas, Mapas, Aplicaciones o Diccionarios.

8 Sumario.

Pablo Sanchez (MATESCO) TADs lineales 51 / 78

Page 52: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Estructuras con Orden Natural Relaciones de Orden

Nociones sobre Relaciones de Orden

Relacion de Orden Estricto

Dada una relacion binaria R sobre un conjunto S , dicha relacion es deorden estricto si es:

1 Irreflexiva: ∀x ∈ S , (x , x) /∈ R

2 Transitiva: (x , y) ∈ R ∧ (y , z) ∈ R ⇒ (x , z) ∈ R

Relacion de Orden Total No Estricto

Dada una relacion binaria R sobre un conjunto S , dicha relacion es deorden total estricto si es una relacion de orden parcial estricto y es ademastotal, es decir ∀x , y ∈ Sx 6= y ∈ R(x , y) /∈ R ⇒ (y , x) ∈ R

Pablo Sanchez (MATESCO) TADs lineales 52 / 78

Page 53: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Estructuras con Orden Natural Relaciones de Orden

Nociones sobre Relaciones de Orden

Relacion de Orden Parcial No Estricto

Dada una relacion binaria R sobre un conjunto S , dicha relacion es deorden no estricto si es:

1 Reflexiva: ∀x ∈ S , (x , x) ∈ R

2 Transitiva: (x , y) ∈ R ∧ (y , z) ∈ R ⇒ (x , z) ∈ R

3 Antisimetrica: (x , y) ∈ R ∧ (y , x) ∈ R ⇒ x = y

Relacion de Orden Total No Estricto

Dada una relacion binaria R sobre un conjunto S , dicha relacion es deorden total (no estricto) si es una relacion de orden parcial (no estricto) yes ademas total, es decir ∀x , y ∈ S , (x , y) /∈ R ⇒ (y , x) ∈ R

Pablo Sanchez (MATESCO) TADs lineales 53 / 78

Page 54: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Estructuras con Orden Natural Relaciones de Orden

TADs Lineales con Orden Natural

TADs Lineales con Orden Natural

Un tipo de datos abstracto lineal T = {a1, . . . , ai , . . . , aj , . . . , an} se diceque esta ordenado topologicamente con respecto a una relacion de ordentotal R , si, dadas dos funciones suc : T → T , que devuelve el sucesor decada elemento en T menos del ultimo, y last : T → Boolean, que indica siun elemento del TAD es el ultimo, se cumple que∀x ∈ T , ultimo(x) 6= TRUE ; (x , suc(x)) ∈ R

Pablo Sanchez (MATESCO) TADs lineales 54 / 78

Page 55: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Estructuras con Orden Natural Secuencias con Orden Natural

Secuencias/Listas con Orden Natural

Secuencia/Lista con Orden Natural

Coleccion de elementos potencialmente repetidos donde la posicion de loselementos en la estructura es relevante, y donde la coleccion esta ordenadacon respecto a alguna relacion de orden total.

Pablo Sanchez (MATESCO) TADs lineales 55 / 78

Page 56: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Estructuras con Orden Natural Secuencias con Orden Natural

Operaciones sobre Secuencias con Orden Natural

1 emptySortedSeq : -> SortedSeq

2 add : SortedSeq E -> SortedSeq

3 getTail, getHead : SortedSeq -> E

4 get : SortedSeq Natural -> E

5 remove[All, One] : SortedSeq E -> SortedSeq

6 remove : SortedSeq Natural -> SortedSeq

7 contains : SortedSeq E -> Boolean

8 find[First, Last]Index : SortedSeq E -> Integer

9 size : SortedSeq -> Natural

10 number : SortedSeq E -> Natural

11 isEmpty : SortedSeq -> Boolean

12 mix : SortedSeq SortedSeq -> SortedSeq

13 subseq, equal : SortedSeq SortedSeq -> Boolean

14 min, max : SortedSeq -> Element

Pablo Sanchez (MATESCO) TADs lineales 56 / 78

Page 57: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Estructuras con Orden Natural Secuencias con Orden Natural

Uso de Secuencias Ordenadas

SecuenciaOrdenadaclass [ ]

+id : String

Estanteria

+titulo : String+autor : String

LibroAlmacen

Ordenado por autor

{ordered,nonunique}

+libros

0..*

+estantes

{ordered} 1..*

Pablo Sanchez (MATESCO) TADs lineales 57 / 78

Page 58: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Estructuras con Orden Natural Secuencias con Orden Natural

Implementacion de Secuencias Ordenadas

1 Vector (array) con acceso directo al ultimo elemento.

2 Lista enlazada con puntero a la cabeza y al final.

3 Puedo usar un contador para mantener el tamano siempre calculado.

4 En todos los casos mantengo la estructura siempre ordenada (siinteresa).

Pablo Sanchez (MATESCO) TADs lineales 58 / 78

Page 59: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Estructuras con Orden Natural Busqueda Binaria en TADs Lineales

Busqueda Binaria sobre TADs Acceso Aleatorio

// Pre: inicio <= fin) => (0 <= inicio, fin < size(t))

FUNCION contains(t : ITAD_AA(E), e : E,

inicio : NATURAL, fin : NATURAL) : BOOLEAN

result : BOOLEAN; medio : NATURAL;

result := FALSE;

SI (inicio <= fin) ENTONCES

medio := (inicio + fin) div 2;

SI (equal(get(t,medio),e)) ENTONCES

result := TRUE;

SINO

result := contains(t,e,inicio,medio-1) OR

contains(t,e,medio+1,fin);

FINSI

FINSI

DEVOLVER result;

FINFUNCION

Pablo Sanchez (MATESCO) TADs lineales 59 / 78

Page 60: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Estructuras con Orden Natural Busqueda Binaria en TADs Lineales

Busqueda Binaria sobre TADs Acceso Aleatorio yOrdenados

// Pre: inicio <= fin) => (0 <= inicio, fin < size(t))

FUNCION contains(t : ISortedTAD_AA(E), e : E,

inicio : NATURAL, fin : NATURAL) : BOOLEAN

result : BOOLEAN; medio : NATURAL;

result := FALSE;

SI (inicio <= fin) ENTONCES

medio := (min + max) div 2;

SI (equal(get(t,medio),e)) ENTONCES

result := TRUE;

SINOSI (lessThan(get(t,medio),e)) ENTONCES

result := contains(t,e,medio+1,fin)

SINO

result := contains(t,e,inicio,medio-1)

FINSI

FINSI

DEVOLVER result;

FINFUNCION

Pablo Sanchez (MATESCO) TADs lineales 60 / 78

Page 61: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Estructuras con Orden Natural Complejidad Operaciones Secuencias Ordenadas

Comparacion de Implementaciones

Vector Lista Enlazada Arbol Balanceado

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

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

getTail, getHead O(1) O(1) O(log(n))

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

removeAll O(n) O(n) O(m log(n))

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

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

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

find[Last, First]Index O(max(m, log(n))) O(n) O(n)

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

number O(max(m, log(n))) O(n) O(n)

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

mix O(n2) O(n) O(n log(n))

equal, subseq O(n) O(n) O(n)

min, max O(1) O(1) O(log(n))

n es el tama~no de la secuencia, m es el numero de copias de un elemento

Pablo Sanchez (MATESCO) TADs lineales 61 / 78

Page 62: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Estructuras con Orden Natural Secuencias Sin Repeticiones y con Orden Natural

Secuencias Ordenadas sin Repeticiones

Secuencia Ordenadas sin Repeticiones

Coleccion de elementos no repetidos donde el orden de insercion (oposicion) de los elementos en la estructura es relevante, y donde lacoleccion esta ordenada con respecto a alguna relacion de orden total.

Pablo Sanchez (MATESCO) TADs lineales 62 / 78

Page 63: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Estructuras con Orden Natural Secuencias Sin Repeticiones y con Orden Natural

Operaciones sobre Secuencias Ordenadas sin Repeticiones

1 emptySortedOrSet : -> SortedOrSet

2 add : SortedOrSet E -> SortedOrSet

3 get[Tail, Head] : SortedOrSet -> E

4 get : SortedOrSet Natural -> E

5 remove : SortedOrSet E -> SortedOrSet

6 removeAt : SortedOrSet Natural -> SortedOrSet

7 contains : SortedOrSet E -> Boolean

8 findIndex : SortedOrSet E -> Integer

9 size : SortedOrSet -> Natural

10 isEmpty : SortedOrSet -> Booleano

11 mix : SortedOrSet SortedOrSet -> SortedOrSet

12 equal, subseq : SortedOrSet SortedOrSet -> Boolean

13 min, max : SortedSeq -> Element

Pablo Sanchez (MATESCO) TADs lineales 63 / 78

Page 64: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Estructuras con Orden Natural Secuencias Sin Repeticiones y con Orden Natural

Uso de Secuencias Ordenadas sin Repeticiones

SecuenciaOrdenadaclass [ ]

+id : String

Estanteria

+titulo : String+autor : String

LibroAlmacen

Ordenado por id

{ordered,nonunique}

+libros

0..*

+estantes

{ordered} 1..*

Pablo Sanchez (MATESCO) TADs lineales 64 / 78

Page 65: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Estructuras con Orden Natural Secuencias Sin Repeticiones y con Orden Natural

Implementacion de Secuencias Ordenadas sin Repeticiones

1 Vector (array) con acceso directo al ultimo elemento.

2 Lista enlazada con puntero a la cabeza y al final.

3 Puedo usar un contador para mantener el tamano siempre calculado.

4 En todos los casos mantengo la estructura siempre ordenada (siinteresa).

Pablo Sanchez (MATESCO) TADs lineales 65 / 78

Page 66: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Estructuras con Orden Natural Secuencias Sin Repeticiones y con Orden Natural

Comparacion de Implementaciones

Vector Lista Enlazada Arbol Balanceado

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

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

getTail, getHead O(1) O(1) O(log(n))

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

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

removeAt O(n) O(n) O(n)

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

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

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

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

mix O(n2) O(n) O(n log(n))

equal, subseq O(n) O(n) O(n)

min, max O(1) O(1) O(log(n))

n es el tama~no del vector de la lista

Pablo Sanchez (MATESCO) TADs lineales 66 / 78

Page 67: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Estructuras con Orden Natural Colas con Prioridad

Colas con Prioridad

Colas con Prioridad

Coleccion de elementos (potencialmente repetidos) donde el orden deinsercion de los elementos es relevante y solo tenemos acceso al elementomas antiguo y de mas alta prioridad anadido. Es una estructura de tipoFIFO con Prioridad (First In, First Out), donde el unico elemento quepodemos obtener es el elemento de mas alta prioridad mas antiguoanadido.

Z XYW Z XY W

Z XY W

Pablo Sanchez (MATESCO) TADs lineales 67 / 78

Page 68: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Estructuras con Orden Natural Colas con Prioridad

Operaciones sobre Colas con Prioridad

1 emptyQueue : -> Queue

2 add : Queue E -> Queue

3 peek : Queue -> E

4 remove : Queue -> Queue

5 isEmpty : Queue -> Boolean

6 size : Queue -> Natural

Pablo Sanchez (MATESCO) TADs lineales 68 / 78

Page 69: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Estructuras con Orden Natural Colas con Prioridad

Uso de Colas con Prioridad

1 Sistemas Operativos (planificadores de procesos, colas de eventos).

2 Software de Telematica (colas de paquetes).

3 Programas de Simulacion de Procesos.

Pablo Sanchez (MATESCO) TADs lineales 69 / 78

Page 70: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Estructuras con Orden Natural Colas con Prioridad

Implementacion de Colas con Prioridad

1 Lista enlazada con puntero al primero y al ultimo.

2 Vector (array) circular con indicadores de primero y ultimo.

3 Montıculos (Heaps) (no preserva FIFO entre elementos de igualprioridad).

4 Puedo usar un contador para mantener el tamano siempre calculado.

5 En todos los casos mantengo la estructura siempre ordenada (siinteresa).

Pablo Sanchez (MATESCO) TADs lineales 70 / 78

Page 71: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Estructuras con Orden Natural Colas con Prioridad

Comparacion de Implementaciones

Vector Lista Enlazada Montıculo

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

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

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

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

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

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

Pablo Sanchez (MATESCO) TADs lineales 71 / 78

Page 72: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Tablas

Indice

1 Introduccion.

2 Seleccion de las Tecnicas de Implementacion.

3 Colecciones.

4 Vectores y Matrices.

5 Estructuras con Acceso Destacado.

6 Estructuras con Orden Natural/Prioridad.

7 Tablas, Mapas, Aplicaciones o Diccionarios.

8 Sumario.

Pablo Sanchez (MATESCO) TADs lineales 72 / 78

Page 73: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Tablas Definicion

Tablas

Tablas (Aplicaciones, Diccionarios, Mapas)

Colecciones de elementos identificables por una clave, que debe ser unicapara cada elemento de la coleccion, y donde el acceso, tanto para lecturacomo para escritura, se hace a traves de dicha clave.

Operaciones

1 emptyTable : -> Table(K,E)

2 set : Table(K,E) Key E -> Table(K,E)

3 get : Table(K,E) Key -> E

4 remove : Table(K,E) Key -> Table(K,E)

5 contains : Table(K,E) Key -> Boolean

6 size : Table(K,E) -> Natural

7 isEmpty : Table(K,E) -> Boolean

Pablo Sanchez (MATESCO) TADs lineales 73 / 78

Page 74: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Tablas Aplicaciones

Uso de Tablas

class Mapas[ ]

+nombre : String+apellidos : String

AlumnoClase

numMatricula : String [0..*]+alumno

1

1 Algoritmos de compresion (ej. LZW).

2 Tablas de Bases de Datos.

Pablo Sanchez (MATESCO) TADs lineales 74 / 78

Page 75: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Tablas Implementacion

Implementacion de Tablas

1 Vector (array) con acceso directo al ultimo.

2 Lista enlazada con insercion en la cabeza (o al final).

3 Tablas de dispersion usando como valor de dispersion la clave.

4 Arboles binarios de busqueda balanceados, ordenado por clave.

5 Puedo usar un contador para mantener el tamano calculado.

Pablo Sanchez (MATESCO) TADs lineales 75 / 78

Page 76: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Tablas Implementacion

Comparacion de Implementaciones

Dispersion Vector Lista Enlazada Arbol Balanceado

emptyTable O(M) O(1) O(1) O(1)

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

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

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

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

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

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

M es el tama~no de la tabla de dispersion

n es el tama~no de la bolsa

Pablo Sanchez (MATESCO) TADs lineales 76 / 78

Page 77: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Sumario

Indice

1 Introduccion.

2 Seleccion de las Tecnicas de Implementacion.

3 Colecciones.

4 Vectores y Matrices.

5 Estructuras con Acceso Destacado.

6 Estructuras con Orden Natural/Prioridad.

7 Tablas, Mapas, Aplicaciones o Diccionarios.

8 Sumario.

Pablo Sanchez (MATESCO) TADs lineales 77 / 78

Page 78: Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo Sa´nchez Dpto. Matematicas, Estad´ıstica y Computacio´n Universidad de Cantabria Santander

Sumario

¿Que tengo que saber de todo esto?

1 Saber y entender como funcionan los diferentes TADs lineales.

2 Se capaz de escoger la implementacion mas adecuada para un TAD.

3 Ser capaz de implementar los diferentes TADs lineales.

4 Ser capaz de usar TADs lineales para disenar y construir aplicaciones.

5 Ser capaz de estimar la complejidad de las operaciones de un TADlineal, conocida su implementacion.

Pablo Sanchez (MATESCO) TADs lineales 78 / 78