Tema 5 Tipos Abstractos de Datos Lineales...Tema 5 Tipos Abstractos de Datos Lineales Pablo...

Preview:

Citation preview

Tema 5Tipos Abstractos de Datos Lineales

Pablo Sanchez

Dpto. Matematicas, Estadıstica y ComputacionUniversidad de Cantabria

Santander (Cantabria, Espana)p.sanchez@unican.es

Pablo Sanchez (MATESCO) TADs lineales 1 / 78

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Recommended