Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB...

113
Otras estructuras de datos Programaci´ on de Sistemas de Telecomunicaci´ on Inform´ atica II GSyC Universidad Rey Juan Carlos Diciembre 2019 GSyC - 2019 Otras estructuras de datos 1

Transcript of Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB...

Page 1: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Otras estructuras de datosProgramacion de Sistemas de Telecomunicacion

Informatica II

GSyC

Universidad Rey Juan Carlos

Diciembre 2019

GSyC - 2019 Otras estructuras de datos 1

Page 2: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

c©2016-2019 Grupo de Sistemas y Comunicaciones.Algunos derechos reservados.

Este trabajo se distribuye bajo la licenciaCreative Commons Attribution Share-Alike

disponible en http://creativecommons.org/licenses/by-sa/3.0/es

GSyC - 2019 Otras estructuras de datos 2

Page 3: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Contenidos

1 Arboles autoequilibrados

2 Pilas y Colas

3 Listas doblemente enlazadas, Listas enlazadas circulares

4 Tabla Hash

5 Biblioteca predefinida de contenedores de Ada 2005

6 Bibliografıa

GSyC - 2019 Otras estructuras de datos 3

Page 4: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Arboles autoequilibrados

Contenidos

1 Arboles autoequilibrados

2 Pilas y Colas

3 Listas doblemente enlazadas, Listas enlazadas circulares

4 Tabla Hash

5 Biblioteca predefinida de contenedores de Ada 2005

6 Bibliografıa

GSyC - 2019 Otras estructuras de datos 4

Page 5: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Arboles autoequilibrados

Rendimiento de la busqueda en un ABB (I)

El rendimiento de las busquedas (para insertar/extraer) en unarbol de busqueda binaria (ABB) depende de cuan equilibrada seasu estructuraY el equilibrio depende del orden de insercion de nuevos nodos ydel orden en el que se han ido produciendo las extracciones

Ejemplo:

Insertar("zappos.com" , "66.209.92.150");

Insertar("yelp.com" , "63.251.52.110");

Insertar("xing.com" , "213.238.60.19");

Insertar("wings.com" , "12.155.29.35 ");

Insertar("viacom.com" , "206.220.43.92");

Insertar("ucla.edu" , "169.232.55.22");

Insertar("nbc.com" , "66.77.124.26");

Insertar("google.com" , "66.249.92.104");

Insertar("facebook.com", "69.63.181.12");

Insertar("edi.com" , "192.86.2.98");

Insertar("cbs.com" , "198.99.118.37");

Insertar("bbva.es" , "195.76.187.83");

GSyC - 2019 Otras estructuras de datos 5

Page 6: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Arboles autoequilibrados

Rendimiento de la busqueda en un ABB (II)

Peor caso: arbol completamente desequilibrado

En el peor caso cada nodo tiene exactamente un enlace nonulo, salvo un unico nodo que tiene sus dos enlaces nulos(nodo hoja).

En este caso el arbol tiene la estructura de una lista enlazaday por tanto no se beneficia de la busqueda binaria.

Ocurre cuando p.ej. insertamos los nodos siguiendo el ordende la clave.

Tambien los borrados pueden ocasionar desequilibrios en elarbol.

GSyC - 2019 Otras estructuras de datos 6

Page 7: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Arboles autoequilibrados

Rendimiento de la busqueda en un ABB (III)

Mejor caso: arbol perfectamente equilibrado

Arbol perfectamente equilibrado de N nodos:

Todos los nodos hoja estan a la misma distancia de la raız:log2N. Hay log2N nodos entre el nodo raız y un nodo hojaTodo nodo del arbol, o tiene dos hijos no nulos, o sus dos hijosson nulos

El coste de una busqueda de un elemento no existente (paraextraer o insertar) es = log2N

Medimos el coste como el numero de nodos del arbol que hayque consultar

El coste de una busqueda de un elemento que esta en el arbol(para extraer o insertar) es ≤ log2N

GSyC - 2019 Otras estructuras de datos 7

Page 8: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Arboles autoequilibrados

Rendimiento de la busqueda en un ABB (IV)

Caso promedio:

Si se insertan/borran elementos en un ABB de maneraaleatoria de forma que el orden de insercion/borrado NO secorresponda con el orden de las claves, el arbol tiende apermanecer en equilibrio.

El coste de una insercion o una extraccion aleatorias en unABB en el que todas las inserciones y extracciones se hanrealizado de manera aleatoria es O(2log2N)

O(2log2N) = aproximadamente 2log2N para N grandes

GSyC - 2019 Otras estructuras de datos 8

Page 9: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Arboles autoequilibrados

Arboles binarios autoequilibrados

Los arboles binarios autoequilibrados son arboles de busquedabinaria que evitan el peor caso, manteniendo el arbol casiperfectamente equilibrado.

La insercion y el borrado en los arboles autoequilibrados serealiza de manera tal que no solo se mantenga el orden de lasclaves, sino tambien el equilibrio.

Lo hacen con independencia del orden de insercion/extraccion,garantizando un tiempo de busqueda logarıtmico.

Los arboles 2-3, los arboles rojo-negros y los arboles AVL sonejemplos de arboles que siguen algoritmos paraautoequilibrarse.

GSyC - 2019 Otras estructuras de datos 9

Page 10: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Contenidos

1 Arboles autoequilibrados

2 Pilas y Colas

3 Listas doblemente enlazadas, Listas enlazadas circulares

4 Tabla Hash

5 Biblioteca predefinida de contenedores de Ada 2005

6 Bibliografıa

GSyC - 2019 Otras estructuras de datos 10

Page 11: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Introduccion

La pila (stack) y la cola (queue) son estructuras de datos quesirven para almacenar colecciones de elementos

Los elementos NO tienen una clave, como sı ocurre en lastablas de sımbolos

En pilas y colas se pueden realizar dos operaciones basicas:

Insertar un elemento en la pila/colaExtraer un elemento de la pila/cola

Pila y cola se diferencian en como se elige el elemento aextraer.

Las Pilas son estructuras LIFO (Last-In First-Out)Las Colas son estructuras FIFO (Fast-In First-Out)

En las tablas de sımbolos se busca por clave el elemento ainsertar/extraer. En las pilas y colas NO. Siempre se sigue elorden establecido (LIFO o FIFO).

GSyC - 2019 Otras estructuras de datos 11

Page 12: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Pila (stack)

Una pila es una coleccion en la que se pueden insertar y extraerelementos.

2 operaciones basicas: Push, Pop

Push inserta un nuevo elemento en la pila

Pop extrae el ultimo elemento que se inserto en la pila

La extraccion sigue el orden LIFO (Last-In First-Out)

GSyC - 2019 Otras estructuras de datos 12

Page 13: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Casos de uso de las pilas

Cada vez que un usuario selecciona un enlace en una paginaWeb que esta mostrando el navegador, la pagina se inserta enuna pila de paginas Web visitadas.

Cada vez que pulsa el boton de volver atras en el navegadorWeb se extrae de la pila de paginas Web visitadas la ultimaque se inserto

Las llamadas a subprogramas tambien utilizan una pila:

para ir insertando la informacion local (parametros, variableslocales) cada vez que se produce una nueva llamada a unsubprogramapara extraer la informacion local a cada subprograma cada vezque retorna de una llamada

GSyC - 2019 Otras estructuras de datos 13

Page 14: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Implementacion de la pila

Implementacion con Array

Problema: el Array tiene un tamano maximo fijado deantemanoSolucion: cuando el Array se llena se copia a otro un poco masgrande.

Implementacion con Lista enlazadaDe manera muy similar a como implementamos la tabla desımbolos con una lista enlazada:

No hay clavePush ' Put de la tabla de sımbolos (insertando por elprincipio)Pop: devuelve First y actualiza First a First.Next.

GSyC - 2019 Otras estructuras de datos 14

Page 15: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

My_Stack

“facebook.com"

GSyC - 2019 Otras estructuras de datos 15

Page 16: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

My_Stack

“facebook.com"

Stacks.Push (My_Stack, ASU.To_Unbounded_String (“google.com")); 1

GSyC - 2019 Otras estructuras de datos 16

Page 17: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

My_Stack

“google.com"

“facebook.com"

Stacks.Push (My_Stack, ASU.To_Unbounded_String (“google.com")); 1

P_Aux

GSyC - 2019 Otras estructuras de datos 17

Page 18: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

My_Stack

“google.com"

“facebook.com"

Stacks.Push (My_Stack, ASU.To_Unbounded_String (“google.com")); 1

P_Aux

GSyC - 2019 Otras estructuras de datos 18

Page 19: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

My_Stack

“google.com"

“facebook.com"

P_Aux

Stacks.Push (My_Stack, ASU.To_Unbounded_String (“google.com")); 1

GSyC - 2019 Otras estructuras de datos 19

Page 20: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

My_Stack

“google.com"

“facebook.com"

Stacks.Push (My_Stack, ASU.To_Unbounded_String (“www.urjc.es"));2

GSyC - 2019 Otras estructuras de datos 20

Page 21: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

My_Stack

“www.urjc.es"

“google.com"

“facebook.com"

Stacks.Push (My_Stack, ASU.To_Unbounded_String (“www.urjc.es"));2

P_Aux

GSyC - 2019 Otras estructuras de datos 21

Page 22: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

My_Stack

“www.urjc.es"

“google.com"

“facebook.com"

Stacks.Push (My_Stack, ASU.To_Unbounded_String (“www.urjc.es"));2

P_Aux

GSyC - 2019 Otras estructuras de datos 22

Page 23: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

My_Stack

“www.urjc.es"

“google.com"

“facebook.com"

Stacks.Push (My_Stack, ASU.To_Unbounded_String (“www.urjc.es"));2

P_Aux

GSyC - 2019 Otras estructuras de datos 23

Page 24: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

My_Stack

“www.urjc.es"

“google.com"

“facebook.com"

URL := Stacks.Pop (My_Stack);3

URL

?

GSyC - 2019 Otras estructuras de datos 24

Page 25: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

My_Stack

“www.urjc.es"

“google.com"

“facebook.com"

URL := Stacks.Pop (My_Stack);3

“www.urjc.es"

URL

GSyC - 2019 Otras estructuras de datos 25

Page 26: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

My_Stack

“www.urjc.es"

“google.com"

“facebook.com"

URL := Stacks.Pop (My_Stack);3

URL

“www.urjc.es"

P_Aux

GSyC - 2019 Otras estructuras de datos 26

Page 27: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

My_Stack

“www.urjc.es"

“google.com"

“facebook.com"

URL := Stacks.Pop (My_Stack);3

URL

“www.urjc.es"

P_Aux

GSyC - 2019 Otras estructuras de datos 27

Page 28: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

My_Stack

“google.com"

“facebook.com"

URL := Stacks.Pop (My_Stack);3

URL

“www.urjc.es"

P_Aux

GSyC - 2019 Otras estructuras de datos 28

Page 29: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

My_Stack

“google.com"

“facebook.com"

URL

?

URL := Stacks.Pop (My_Stack);4

GSyC - 2019 Otras estructuras de datos 29

Page 30: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

My_Stack

“google.com"

“facebook.com"

URL := Stacks.Pop (My_Stack);4

URL

“google.com”

GSyC - 2019 Otras estructuras de datos 30

Page 31: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

My_Stack

“google.com"

“facebook.com"

URL := Stacks.Pop (My_Stack);4

URL

“google.com”P_Aux

GSyC - 2019 Otras estructuras de datos 31

Page 32: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

“google.com"

My_Stack

“facebook.com"

URL

“google.com”

URL := Stacks.Pop (My_Stack);4

P_Aux

GSyC - 2019 Otras estructuras de datos 32

Page 33: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

My_Stack

“facebook.com"

URL := Stacks.Pop (My_Stack);4

URL

“google.com”P_Aux

GSyC - 2019 Otras estructuras de datos 33

Page 34: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Cola (Queue)

Una cola es una coleccion en la que se pueden insertar y extraerelementos.

2 operaciones basicas: Enqueue, Dequeue

Enqueue inserta un nuevo elemento en la cola

Dequeue extrae el elemento mas antiguo de la cola

La extraccion sigue el orden FIFO (First-In First-Out)

GSyC - 2019 Otras estructuras de datos 34

Page 35: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Casos de uso de las colas

Para almacenar peticiones de uso de un servicio (uso de laimpresora, uso del disco, uso de la CPU).

Para transferir informacion asıncronamente entre dosentidades que no procesan informacion a la misma velocidad:cola de transmision de paquetes en la tarjeta Ethernet en laque la CPU va insertando tramas para que la tarjeta las envıecuando pueda.

Lista de reproduccion de una aplicacion multimedia: cola decanciones que queremos que se vayan reproduciendo.

GSyC - 2019 Otras estructuras de datos 35

Page 36: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Implementacion de la cola

Implementacion con Array

Problema: el Array tiene un tamano maximo fijado deantemano.Solucion: cuando el Array se llena se copia a otro un poco masgrande.

Implementacion con Lista enlazadaDe manera muy similar a como implementamos la tabla desımbolos con una lista enlazada:

No hay claveEnqueue: Anade el nuevo elemento al final y no al principio,manteniendo para ello un nuevo puntero Last, que esactualizado despues de enlazar el antiguo Last al nuevoelemento insertadoDequeue: Devuelve First y actualiza First a First.next

GSyC - 2019 Otras estructuras de datos 36

Page 37: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

“She loves you" My_Queue.P_FirstMy_Queue.P_Last

GSyC - 2019 Otras estructuras de datos 37

Page 38: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

Queues.Enqueue(My_Queue, ASU.To_Unbounded_String (“Ask me why"));1

“She loves you" My_Queue.P_FirstMy_Queue.P_Last

GSyC - 2019 Otras estructuras de datos 38

Page 39: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

“Ask me why”

Queues.Enqueue(My_Queue, ASU.To_Unbounded_String (“Ask me why"));1

“She loves you"

P_Aux

My_Queue.P_FirstMy_Queue.P_Last

GSyC - 2019 Otras estructuras de datos 39

Page 40: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

“Ask me why”

Queues.Enqueue(My_Queue, ASU.To_Unbounded_String (“Ask me why"));1

“She loves you"

P_Aux

My_Queue.P_FirstMy_Queue.P_Last

GSyC - 2019 Otras estructuras de datos 40

Page 41: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

“Ask me why”

Queues.Enqueue(My_Queue, ASU.To_Unbounded_String (“Ask me why"));1

“She loves you"

P_Aux

My_Queue.P_FirstMy_Queue.P_Last

GSyC - 2019 Otras estructuras de datos 41

Page 42: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

Queues.Enqueue(My_Queue, ASU.To_Unbounded_String (“Hold me tight"));2

“Ask me why”

“She loves you" My_Queue.P_FirstMy_Queue.P_Last

GSyC - 2019 Otras estructuras de datos 42

Page 43: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

Queues.Enqueue(My_Queue, ASU.To_Unbounded_String (“Hold me tight"));2

“Ask me why”

“She loves you"

“Hold me tight”

P_Aux

My_Queue.P_FirstMy_Queue.P_Last

GSyC - 2019 Otras estructuras de datos 43

Page 44: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

Queues.Enqueue(My_Queue, ASU.To_Unbounded_String (“Hold me tight"));2

“Ask me why”

“She loves you"

“Hold me tight”

P_Aux

My_Queue.P_FirstMy_Queue.P_Last

GSyC - 2019 Otras estructuras de datos 44

Page 45: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

Queues.Enqueue(My_Queue, ASU.To_Unbounded_String (“Hold me tight"));2

“Ask me why”

“She loves you"

“Hold me tight”

P_Aux

My_Queue.P_FirstMy_Queue.P_Last

GSyC - 2019 Otras estructuras de datos 45

Page 46: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

Next_Song := Queues.Dequeue (My_Queue);3

“Ask me why”

“She loves you"

“Hold me tight”

My_Queue.P_FirstMy_Queue.P_Last

Next_Song

?

GSyC - 2019 Otras estructuras de datos 46

Page 47: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

Next_Song := Queues.Dequeue (My_Queue);3

Next_Song

“She loves you”

“Ask me why”

“She loves you"

“Hold me tight”

My_Queue.P_FirstMy_Queue.P_Last

GSyC - 2019 Otras estructuras de datos 47

Page 48: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

Next_Song := Queues.Dequeue (My_Queue);3

“Ask me why”

“She loves you"

“Hold me tight”

My_Queue.P_FirstMy_Queue.P_Last

P_Aux

Next_Song

“She loves you”

GSyC - 2019 Otras estructuras de datos 48

Page 49: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

Next_Song := Queues.Dequeue (My_Queue);3

“Ask me why”

“She loves you"

“Hold me tight”

My_Queue.P_FirstMy_Queue.P_Last

P_Aux

Next_Song

“She loves you”

GSyC - 2019 Otras estructuras de datos 49

Page 50: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

Next_Song := Queues.Dequeue (My_Queue);3

“Ask me why”

“Hold me tight”

“She loves you" My_Queue.P_FirstMy_Queue.P_Last

P_Aux

Next_Song

“She loves you”

GSyC - 2019 Otras estructuras de datos 50

Page 51: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

Next_Song := Queues.Dequeue (My_Queue);3

“Ask me why”

“Hold me tight”

My_Queue.P_FirstMy_Queue.P_Last

P_Aux

Next_Song

“She loves you”

GSyC - 2019 Otras estructuras de datos 51

Page 52: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

Next_Song := Queues.Dequeue (My_Queue);4

“Ask me why”

“Hold me tight”

My_Queue.P_FirstMy_Queue.P_Last

Next_Song

?

GSyC - 2019 Otras estructuras de datos 52

Page 53: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

Next_Song := Queues.Dequeue (My_Queue);4

Next_Song

“Ask me why"

“Ask me why”

“Hold me tight”

My_Queue.P_FirstMy_Queue.P_Last

GSyC - 2019 Otras estructuras de datos 53

Page 54: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

Next_Song := Queues.Dequeue (My_Queue);4

“Ask me why”

“Hold me tight”

My_Queue.P_FirstMy_Queue.P_Last

P_Aux

Next_Song

“Ask me why"

GSyC - 2019 Otras estructuras de datos 54

Page 55: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

Next_Song := Queues.Dequeue (My_Queue);4

“Ask me why”

“Hold me tight”

My_Queue.P_FirstMy_Queue.P_Last

P_Aux

Next_Song

“Ask me why"

GSyC - 2019 Otras estructuras de datos 55

Page 56: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

Next_Song := Queues.Dequeue (My_Queue);4

“Hold me tight”

My_Queue.P_FirstMy_Queue.P_Last

P_Aux

“Ask me why" Next_Song

“Ask me why"

GSyC - 2019 Otras estructuras de datos 56

Page 57: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Pilas y Colas

Ejemplo

Next_Song := Queues.Dequeue (My_Queue);4

“Hold me tight”

My_Queue.P_FirstMy_Queue.P_Last

P_Aux

Next_Song

“Ask me why"

GSyC - 2019 Otras estructuras de datos 57

Page 58: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Listas doblemente enlazadas, Listas enlazadas circulares

Contenidos

1 Arboles autoequilibrados

2 Pilas y Colas

3 Listas doblemente enlazadas, Listas enlazadas circulares

4 Tabla Hash

5 Biblioteca predefinida de contenedores de Ada 2005

6 Bibliografıa

GSyC - 2019 Otras estructuras de datos 58

Page 59: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Listas doblemente enlazadas, Listas enlazadas circulares

Introduccion

Las listas doblemente enlazadas y las listas enlazadas circulares sonimplementaciones alternativas de las listas enlazadas.

Al igual que las listas enlazadas, se utilizan en la implementacionde otras estructuras de datos como tablas de sımbolos, pilas, colas,tablas hash.

GSyC - 2019 Otras estructuras de datos 59

Page 60: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Listas doblemente enlazadas, Listas enlazadas circulares

Listas doblemente enlazadas

Una lista doblemente enlazada es una lista enlazada en la quecada nodo tiene, ademas de un enlace al nodo siguiente(Next), un enlace al nodo anterior que le precede en la lista:Prev.

Puede facilitar la implementacion de las operaciones de tablasde sımbolos, pilas, colas o tablas hash.

Por ejemplo: para borrar un elemento no necesitamosmantener el puntero al que le precede.

GSyC - 2019 Otras estructuras de datos 60

Page 61: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Listas doblemente enlazadas, Listas enlazadas circulares

Ejemplo

P_First“www.urjc.es"

“google.com"

“facebook.com"

NextPrev

GSyC - 2019 Otras estructuras de datos 61

Page 62: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Listas doblemente enlazadas, Listas enlazadas circulares

Listas enlazadas circulares

En una lista enlazada circular: Last.Next = First

En una lista doblemente enlazada circular: Last.Next = First yFirst.Prev = Last

Permiten recorrer todos los elementos de la lista empezandoen cualquiera de los elementos

GSyC - 2019 Otras estructuras de datos 62

Page 63: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Listas doblemente enlazadas, Listas enlazadas circulares

Ejemplo de lista enlazada circular

“www.urjc.es"

“google.com"

“facebook.com"

My_Queue.P_FirstMy_Queue.P_Last

GSyC - 2019 Otras estructuras de datos 63

Page 64: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Contenidos

1 Arboles autoequilibrados

2 Pilas y Colas

3 Listas doblemente enlazadas, Listas enlazadas circulares

4 Tabla Hash

5 Biblioteca predefinida de contenedores de Ada 2005

6 Bibliografıa

GSyC - 2019 Otras estructuras de datos 64

Page 65: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Tablas hash

Una tabla de sımbolos en la que las claves sean numerosenteros es facilmente implementable con un array:

Se inserta en el ındice del array que indica la claveSe extrae del ındice del array que indica la clave

El acceso es inmediato tanto para extracciones como parainserciones. La propia clave indica la posicion donde hay que ira buscar el elemento.

La tabla hash es una generalizacion de esta implementacionmediante un Array para claves mas complejas: medianteoperaciones aritmeticas realizadas sobre la clave se obtiene unındice del array.

GSyC - 2019 Otras estructuras de datos 65

Page 66: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Tablas hash

En una tabla hash se necesita un mecanismo para convertir clavesen ındices del Array (la funcion hash) y un mecanismo para evitarcolisiones cuando la funcion hash genera el mismo ındice paraclaves distintas:

Funcion hash: convierte cualquier clave (strings, clavescompuestas,...) en un ındice del Array.

La funcion hash deberıa ser poco costosa computacionalmentey distribuir uniformemente las claves entre los ındices del Array.

Resolucion de colisiones:

Si la cantidad disponible de ındices en el Array es menor que elnumero de claves distintas, puede haber colisiones: ¡la funcionhash devuelve el mismo ındice para dos claves distintas!

GSyC - 2019 Otras estructuras de datos 66

Page 67: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Funciones hash: ejemplos

Claves que son numeros:Funcion hash: resto de dividir la clave entre el tamano delArray

Escoger un numero primo como tamano del Array puedeayudar en la dispersion.

Claves que son Strings:

Funcion hash: se obtiene un numero a partir de larepresentacion binaria de cada caracter del String. Por ejemplo,podemos sumar el codigo ASCII de cada caracter.A continuacion se obtiene el resto de dividir ese numero entreel tamano del Array.

Claves que son numeros reales:

Funcion hash: se puede utilizar la representacion binaria delnumero obtenida concatenando la mantisa con el exponente.

Claves que son de otros tipos: tenemos que disenar nuestrapropia funcion de hash.

GSyC - 2019 Otras estructuras de datos 67

Page 68: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Resolucion de colisiones mediante encadenamiento

Resolucion de colisiones mediante encadenamiento

En cada posicion del Array se almacenan en una lista enlazadalas parejas (clave, valor) de las colisiones

Para encontrar un elemento:1 Se aplica la funcion hash a la clave.2 Se busca linealmente en la lista enlazada de la posicion del

Array correspondiente al ındice devuelto por la funcion hash

GSyC - 2019 Otras estructuras de datos 68

Page 69: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Ejemplo

0

1

2

3

4

25

32 27

‘F’

‘Z’ ‘W’

Key Value NextArray 0 = 25 mod 5

2 = 32 mod 5 2 = 27 mod 5

Índice = Key mod Array’Size

GSyC - 2019 Otras estructuras de datos 69

Page 70: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Resolucion de colisiones mediante direccionamiento abierto

Resolucion de colisiones mediante direccionamiento abierto

Si se quiere almacenar un maximo de N elementos, se utilizauna tabla de M > N posiciones que almacena parejas (clave,valor)

Para encontrar un elemento:1 Se aplica la funcion hash a la clave2 Si en la posicion devuelta esta la clave: un Get devuelve el

valor y un Put actualiza el valor3 Si en la posicion devuelta no hay almacenado ningun elemento,

no esta la clave: Get no obtiene el valor, Put puede insertar ahıel valor

4 Si en la posicion devuelta hay almacenado un elemento conuna clave distinta, se va probando con la siguiente posicion enel Array hasta encontrar el elemento o encontrar un hueco

GSyC - 2019 Otras estructuras de datos 70

Page 71: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Borrado para direccionamiento abierto (alternativa I)

Cuando borramos no podemos dejar un hueco, pues podrıa haberdespues elementos que no estan en donde les corresponde, y queno se podrıan encontrar al dejar un hueco por delante de ellosHay que recorrer todos los elementos que hay detras del borrado yantes del siguiente hueco, y comprobar si se pueden mover alhueco

GSyC - 2019 Otras estructuras de datos 71

Page 72: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Borrado para direccionamiento abierto (alternativa II)

Cuando borramos lo hacemos perezosamenteSe deja una marca que indica que en esa posicion hubo unelementoSi hay demasiadas marcas de borrado se pueden recalcular lasposiciones de todos los elementos, para eliminar las marcas deborrado perezoso.

GSyC - 2019 Otras estructuras de datos 72

Page 73: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Borrado para direccionamiento abierto (alternativa III)

Cuando borramos lo hacemos perezosamenteSe deja una marca que indica que en esa posicion hubo unelementoCuando se esta buscando un elemento y se consulta una posicionen la que hay una marca de borrado, se considera igual que sihubiera un elemento distinto del que se esta buscando: se siguebuscando en el siguiente

Tras multiples inserciones y borrados, las marcas de borrado quevan quedando hacen que cada vez haya elementos mas lejos dedonde les corresponde por su tabla hashPor ello, cuando se busca un elemento, si se encuentra, se borra dedonde esta (dejando la marca de borrado) y se mueve a la primeraposicion con una marca de borrado que se ha consultado mientrasque se buscaba el elemento

Cuando se esta insertando un elemento: primero se busca (marcade borrado se considera igual que si hubiera un elemento distintodel que se busca), y si no se encuentra, se puede insertar en laprimera posicion con marca de borrado consultada mientras sebuscaba.

GSyC - 2019 Otras estructuras de datos 73

Page 74: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Ejemplo

Key Value

25

32

‘F’

‘Z’

0

1

2

3

4

Array

5

6

7

M=8, N=5

Put (30, ‘K’)

49 ‘H’

GSyC - 2019 Otras estructuras de datos 74

Page 75: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Ejemplo

Key Value

25

32

‘F’

‘Z’

0

1

2

3

4

Array

5

6

7

M=8, N=5

30 mod 5 = 0

Put (30, ‘K’)

30 /= 25

49 ‘H’

GSyC - 2019 Otras estructuras de datos 75

Page 76: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Ejemplo

Key Value

25

32

‘F’

‘Z’

0

1

2

3

4

Array

5

6

7

M=8, N=5

30 ‘K’

30 mod 5 = 0

Put (30, ‘K’)

49 ‘H’

GSyC - 2019 Otras estructuras de datos 76

Page 77: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Ejemplo

Key Value

25

32

‘F’

‘Z’

0

1

2

3

4

Array

5

6

7

M=8, N=5

30 ‘K’

Put (15, ‘A’)

49 ‘H’

GSyC - 2019 Otras estructuras de datos 77

Page 78: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Ejemplo

Key Value

25

32

‘F’

‘Z’

0

1

2

3

4

Array

5

6

7

M=8, N=5

30 ‘K’

Put (15, ‘A’)

15 mod 5 = 0

15 /= 25

49 ‘H’

GSyC - 2019 Otras estructuras de datos 78

Page 79: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Ejemplo

Key Value

25

32

‘F’

‘Z’

0

1

2

3

4

Array

5

6

7

M=8, N=5

30 ‘K’

Put (15, ‘A’)

15 mod 5 = 0

15 /= 30

49 ‘H’

GSyC - 2019 Otras estructuras de datos 79

Page 80: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Ejemplo

Key Value

25

32

‘F’

‘Z’

0

1

2

3

4

Array

5

6

7

M=8, N=5

30 ‘K’

Put (15, ‘A’)

15 mod 5 = 0

15 /= 32

49 ‘H’

GSyC - 2019 Otras estructuras de datos 80

Page 81: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Ejemplo

Key Value

25

32

‘F’

‘Z’

0

1

2

3

4

Array

5

6

7

M=8, N=5

30 ‘K’

Put (15, ‘A’)

15 mod 5 = 0

15 ‘A’

49 ‘H’

GSyC - 2019 Otras estructuras de datos 81

Page 82: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Ejemplo

Key Value

25

32

‘F’

‘Z’

0

1

2

3

4

Array

5

6

7

M=8, N=5

30 ‘K’

Get (26, Value, Success)

15 ‘A’

Value

?

Success

?49 ‘H’

GSyC - 2019 Otras estructuras de datos 82

Page 83: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Ejemplo

Key Value

25

32

‘F’

‘Z’

0

1

2

3

4

Array

5

6

7

M=8, N=5

30 ‘K’

Get (26, Value, Success)

15 ‘A’

26 mod 5 = 1

26 /= 30

Value

?

Success

?49 ‘H’

GSyC - 2019 Otras estructuras de datos 83

Page 84: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Ejemplo

Key Value

25

32

‘F’

‘Z’

0

1

2

3

4

Array

5

6

7

M=8, N=5

30 ‘K’

Get (26, Value, Success)

15 ‘A’

26 mod 5 = 1

26 /= 32

Value

?

Success

?49 ‘H’

GSyC - 2019 Otras estructuras de datos 84

Page 85: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Ejemplo

Key Value

25

32

‘F’

‘Z’

0

1

2

3

4

Array

5

6

7

M=8, N=5

30 ‘K’

Get (26, Value, Success)

15 ‘A’

26 mod 5 = 1

26 /= 15

Value

?

Success

?49 ‘H’

GSyC - 2019 Otras estructuras de datos 85

Page 86: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Ejemplo

Key Value

25

32

‘F’

‘Z’

0

1

2

3

4

Array

5

6

7

M=8, N=5

30 ‘K’

Get (26, Value, Success)

15 ‘A’

26 mod 5 = 1

26 /= 49

Value

?

Success

?49 ‘H’

GSyC - 2019 Otras estructuras de datos 86

Page 87: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Ejemplo

Key Value

25

32

‘F’

‘Z’

0

1

2

3

4

Array

5

6

7

M=8, N=5

30 ‘K’

Get (26, Value, Success)

15 ‘A’

26 mod 5 = 1

X Value

?

Success

False49 ‘H’

GSyC - 2019 Otras estructuras de datos 87

Page 88: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Ejemplo

Key Value

25

32

‘F’

‘Z’

0

1

2

3

4

Array

5

6

7

M=8, N=5

30 ‘K’

Delete (32)

15 ‘A’

49 ‘H’

GSyC - 2019 Otras estructuras de datos 88

Page 89: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Ejemplo

Key Value

25

32

‘F’

‘Z’

0

1

2

3

4

Array

5

6

7

M=8, N=5

30 ‘K’

Delete (32)

15 ‘A’

32 mod 5 = 2

49 ‘H’

GSyC - 2019 Otras estructuras de datos 89

Page 90: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Ejemplo

Key Value

25 ‘F’0

1

2

3

4

Array

5

6

7

M=8, N=5

30 ‘K’

Delete (32)

15 ‘A’

32 mod 5 = 2

¡No podemos dejar un hueco en la posición 2, pues el 15 nunca lo encontraríamos!

49 ‘H’

GSyC - 2019 Otras estructuras de datos 90

Page 91: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Ejemplo

Key Value

25 ‘F’0

1

2

3

4

Array

5

6

7

M=8, N=5

30 ‘K’

Delete (32)

15 ‘A’

32 mod 5 = 2

Alternativa I: Ahora habría que comprobar si hay que mover los elementos que hay después del primer hueco (15 y 49): habría que mover el 15 a la posición 2, y dejar el hueco en la posición 3, pues el 49 está donde le corresponde.49 ‘H’

GSyC - 2019 Otras estructuras de datos 91

Page 92: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Ejemplo

Key Value

25 ‘F’0

1

2

3

4

Array

5

6

7

M=8, N=5

30 ‘K’

Delete (32)

15 ‘A’

32 mod 5 = 2

---- ----Alternativa II: borrado perezoso, dejando una marca de borrado (----)

49 ‘H’

GSyC - 2019 Otras estructuras de datos 92

Page 93: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Ejemplo

Key Value

25 ‘F’0

1

2

3

4

Array

5

6

7

M=8, N=5

30 ‘K’

Delete (32)

15 ‘A’

32 mod 5 = 2

---- ----Alternativa III: borrado perezoso, dejando una marca de borrado (----), pero ir moviendo a la marca de borrado elementos cuando se ejecuten Get y Put

49 ‘H’

GSyC - 2019 Otras estructuras de datos 93

Page 94: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Ejemplo

Key Value

25 ‘F’0

1

2

3

4

Array

5

6

7

M=8, N=5

30 ‘K’

15 ‘A’

---- ----

Get (15, Value, Success)

Value

?

Success

?49 ‘H’

GSyC - 2019 Otras estructuras de datos 94

Page 95: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Ejemplo

Key Value

25 ‘F’0

1

2

3

4

Array

5

6

7

M=8, N=5

30 ‘K’

15 ‘A’

---- ----

Get (15, Value, Success)

Value

?

Success

?

15 mod 5 = 0

15 /= 25

49 ‘H’

GSyC - 2019 Otras estructuras de datos 95

Page 96: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Ejemplo

Key Value

25 ‘F’0

1

2

3

4

Array

5

6

7

M=8, N=5

30 ‘K’

15 ‘A’

---- ----

Get (15, Value, Success)

Value

?

Success

?

15 mod 5 = 0

15 /= 30

49 ‘H’

GSyC - 2019 Otras estructuras de datos 96

Page 97: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Ejemplo

Key Value

25 ‘F’0

1

2

3

4

Array

5

6

7

M=8, N=5

30 ‘K’

15 ‘A’

---- ----

Get (15, Value, Success)

Value

?

Success

?

15 mod 5 = 0

15 /= ----

¡Cuando estamos buscando, lamarca dejada por undelete perezoso no se considera como un hueco, por lo que seguimos buscando!

49 ‘H’

GSyC - 2019 Otras estructuras de datos 97

Page 98: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Ejemplo

Key Value

25 ‘F’0

1

2

3

4

Array

5

6

7

M=8, N=5

30 ‘K’

15 ‘A’

---- ----

Get (15, Value, Success)

Value

15

Success

True

15 mod 5 = 0

15 = 15

49 ‘H’

GSyC - 2019 Otras estructuras de datos 98

Page 99: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Ejemplo

Key Value

25 ‘F’0

1

2

3

4

Array

5

6

7

M=8, N=5

30 ‘K’

15 ‘A’

---- ----

Get (15, Value, Success)

Value

15

Success

True

15 mod 5 = 0

Tras encontrar un elemento lo recolocamos en la primera marca de borrado que hemos encontrado durante la búsqueda

49 ‘H’

GSyC - 2019 Otras estructuras de datos 99

Page 100: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Ejemplo

Key Value

25 ‘F’0

1

2

3

4

Array

5

6

7

M=8, N=5

30 ‘K’

15 ‘A’

---- ----

Get (15, Value, Success)

Value

15

Success

True

15 mod 5 = 0

Tras encontrar un elemento lo recolocamos en la primera marca de borrado que hemos encontrado durante la búsqueda

49 ‘H’

GSyC - 2019 Otras estructuras de datos 100

Page 101: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Ejemplo

Key Value

25 ‘F’0

1

2

3

4

Array

5

6

7

M=8, N=5

30 ‘K’

15 ‘A’

---- ----

Get (15, Value, Success)

Value

15

Success

True

15 mod 5 = 0

49 ‘H’

GSyC - 2019 Otras estructuras de datos 101

Page 102: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Ejemplo

Key Value

25 ‘F’0

1

2

3

4

Array

5

6

7

M=8, N=5

30 ‘K’

15 ‘A’

---- ----

Put (11, ‘S’)

49 ‘H’

GSyC - 2019 Otras estructuras de datos 102

Page 103: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Ejemplo

Key Value

25 ‘F’0

1

2

3

4

Array

5

6

7

M=8, N=5

30 ‘K’

15 ‘A’

---- ----

Put (11, ‘S’)

11 mod 5 = 1

11 /= 30

49 ‘H’

GSyC - 2019 Otras estructuras de datos 103

Page 104: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Ejemplo

Key Value

25 ‘F’0

1

2

3

4

Array

5

6

7

M=8, N=5

30 ‘K’

15 ‘A’

---- ----

Put (11, ‘S’)

11 mod 5 = 1

11 /= 15

49 ‘H’

GSyC - 2019 Otras estructuras de datos 104

Page 105: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Ejemplo

Key Value

25 ‘F’0

1

2

3

4

Array

5

6

7

M=8, N=5

30 ‘K’

15 ‘A’

---- ----

Put (11, ‘S’)

11 mod 5 = 1

11 /= ----

49 ‘H’

Para insertar hay que

buscar primero, por

lo que la marca

dejada por un delete

se considera como

ocupada, y seguimos

buscando …

GSyC - 2019 Otras estructuras de datos 105

Page 106: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Ejemplo

Key Value

25 ‘F’0

1

2

3

4

Array

5

6

7

M=8, N=5

30 ‘K’

15 ‘A’

---- ----

Put (11, ‘S’)

11 mod 5 = 1

11 /= 4949 ‘H’

GSyC - 2019 Otras estructuras de datos 106

Page 107: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Ejemplo

Key Value

25 ‘F’0

1

2

3

4

Array

5

6

7

M=8, N=5

30 ‘K’

15 ‘A’

---- ----

Put (11, ‘S’)

11 mod 5 = 1

X

49 ‘H’

No está, por lo que lo insertamos.Podríamos insertarlo en la posición 5 pero …

GSyC - 2019 Otras estructuras de datos 107

Page 108: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Ejemplo

Key Value

25 ‘F’0

1

2

3

4

Array

5

6

7

M=8, N=5

30 ‘K’

15 ‘A’

---- ----

Put (11, ‘S’)

11 mod 5 = 1

podemos insertaren la primera marca de borrado que hemos encontrado durante la búsqueda

49 ‘H’

No está, por lo que lo insertamos.Podríamos insertarlo en la posición 5 pero …

GSyC - 2019 Otras estructuras de datos 108

Page 109: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Tabla Hash

Ejemplo

Key Value

25 ‘F’0

1

2

3

4

Array

5

6

7

M=8, N=5

30 ‘K’

15 ‘A’

11 ‘S’

Put (11, ‘S’)

11 mod 5 = 1

49 ‘H’

podemos insertaren la primera marca de borrado que hemos encontrado durante la búsqueda

No está, por lo que lo insertamos.Podríamos insertarlo en la posición 5 pero …

GSyC - 2019 Otras estructuras de datos 109

Page 110: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Biblioteca predefinida de contenedores de Ada 2005

Contenidos

1 Arboles autoequilibrados

2 Pilas y Colas

3 Listas doblemente enlazadas, Listas enlazadas circulares

4 Tabla Hash

5 Biblioteca predefinida de contenedores de Ada 2005

6 Bibliografıa

GSyC - 2019 Otras estructuras de datos 110

Page 111: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Biblioteca predefinida de contenedores de Ada 2005

Ada.Containers

Biblioteca predefinida de contenedores de Ada 2005

En Ada 2005 se introdujo en la biblioteca predefinida del lenguaje(Ada.Containers), que proporciona implementaciones de:

Listas doblemente enlazadas

Arrays con busqueda binaria

Tablas de sımbolos (Maps en Ada.Containers)

Conjuntos (colecciones de elementos no repetidos noordenados)

Algoritmos de busqueda

GNAT implementa algunas de estas estructuras de datos usandoarboles binarios autobalanceados de tipo rojo-negro.

En otros lenguajes de programacion como Java, C++, Smalltalk,...existen bibliotecas de contenedores similares.

GSyC - 2019 Otras estructuras de datos 111

Page 112: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Bibliografıa

Contenidos

1 Arboles autoequilibrados

2 Pilas y Colas

3 Listas doblemente enlazadas, Listas enlazadas circulares

4 Tabla Hash

5 Biblioteca predefinida de contenedores de Ada 2005

6 Bibliografıa

GSyC - 2019 Otras estructuras de datos 112

Page 113: Programaci on de Sistemas de Telecomunicaci on Inform ... · Rendimiento de la busqueda en un ABB (II) Peor caso: arbol completamente desequilibrado En el peor caso cada nodo tiene

Bibliografıa

Software Construction and Data Structures With Ada 95.Michael B. Feldman. Addison Wesley 1996.

Programming in Ada 2005. John Barnes. Addison Wesley2006.

Algorithms. 4th edition. Robert Sedgewick, Kevin Wayne.Addison Wesley 2011.

http://www.cs.princeton.edu/algs4

GSyC - 2019 Otras estructuras de datos 113