table

Anuncio
Análisis Amortizado
sobre las Operaciones
de Tablas Dinámicas
(Sección 17.4 de Cormen, segunda edición)
Rafael Angarita
Contenido




Introducción
Expansión de Tablas
Expansión y Contracción de Tablas
Conclusión
Introducción


El análisis amortizado estudia el tiempo
requerido para ejecutar una secuencia de
operaciones sobre una estructura de
datos.
El análisis amortizado no involucra
probabilidades y garantiza el tiempo en el
peor caso de las n operaciones.
Introducción

Técnicas principales de Análisis Amortizado:


Método contable
Método del potencial
Introducción




No siempre podemos saber con anterioridad
cuantos objetos vamos a guardar en una tabla.
Estudiaremos el problema de expandir y contraer
tablas dinámicamente.
Mostraremos que el costo amortizado de insertar
y eliminar es O(1)
Veremos como garantizar que el espacio no
usado de una tabla nunca exceda una fracción
constante del espacio total.
Introducción


Asumiremos que las operaciones
soportadas son: TABLE-INSERT y
TABLE-DELETE.
Los detalles del método de estructuración
de datos usados para organizar la tabla no
son importantes.
Factor de Carga

Definimos el factor de carga α(T) de una tabla T no
vacía como el número de ítems guardados en la
tabla dividido entre el tamaño de la tabla.
α(T) = 3/4
•Una tabla vacía tiene tamaño 0 y factor de carga 1.
•El factor de carga está acotado inferiormente por
una constante.
Expansión de Tablas


Supongamos que el almacenamiento de una
tabla es asignado como un arreglo de casillas.
Una tabla está llena cuando todas sus casillas
han sido usadas o, equivalentemente, cuando
su factor de carga es 1.
Expansión de Tablas

Cuando un ítem es insertado en una tabla
llena, podemos expandir la tabla
almacenando una nueva tabla con más
casillas que la anterior.
Expansión de Tablas


Una heurística común es asignar una
nueva tabla que tiene el doble de casillas
que la tabla anterior. Si se realizan sólo
inserciones, el factor de carga de una
tabla es siempre al menos 1/2.
La cantidad de espacio desaprovechado
nunca excede la mitad del espacio total en
la tabla.
1.
Secuencia de
inserciones en
una tabla T
2.
3.
4.
5.
6.
Algoritmo TABLE-INSERT




T: objeto representando la tabla
table[T]: puntero al bloque de
almacenamiento representando la tabla
num[T]: número de ítems en la tabla
size[T]: número de casillas de la tabla
Algoritmo TABLE-INSERT
Expansión de Tablas



Tenemos dos procedimientos de inserción:
TABLE-INSERT y la inserción elemental.
Una inserción elemental tiene costo 1.
Asumimos que el tiempo de ejecución de
TABLE-INSERT es linear, tal que el costo de
asignar una tabla inicial es constante y el costo
de asignar y liberar almacenamiento es
dominado por el costo de transferir ítems.
Expansión de Tablas




n Operaciones TABLE-INSERT, cual es el costo ci
de la i-ésima operación?
Si la tabla está vacía, ci = 1.
Si la tabla está llena, ci = i : costo 1 de la inserción
elemental más el costo de los i-1 ítems que deben
ser copiados.
Si n operaciones son realizadas, el peor caso es
O(n), lo que nos lleva a una cota superior de O(n2)
para el tiempo total de n operaciones.
Expansión de Tablas

i=5
• Copiar elementos del 1 al 4 e insertar el 5to
Expansión de Tablas



La cota superior O(n2) no es ajustada, porque la
expansión no sucede con frecuencia en n
TABLE-INSERT.
La i-ésima operación causa una expansión
cuando i-1 es potencia exacta de 2.
El costo de la i-ésima operación es:
Expansión de Tablas

Entonces, el costo total de n operaciones
TABLE-INSERT es:
Ya que hay a lo sumo n operaciones que cuestan 1 y el
costo de las operaciones restantes forman una serie
geométrica. El costo total es 3n, por lo tanto el costo
amortizado de una operación individual es 3.
Método de Contabilidad

Cada objeto debe pagar por 3 inserciones
elementales:



Insertarse a sí mismo.
Moverse a sí mismo cuando la tabla se
expanda.
Mover otro ítem que ya ha sido movido una
vez cuando la tabla es expandida.
Método de Contabilidad






Supongamos que el tamaño de la tabla es m
inmediatamente después de una expansión.
Número de ítems m/2.
Cobramos 3 Bs. por cada inserción.
1 Bs. para la inserción que ocurre
inmediatamente.
1 Bs. de crédito para el ítem insertado.
1 Bs. de crédito para alguno de los m/2 ya en la
tabla.
Método de Contabilidad


Llenar la tabla requiere m/2 -1 inserciones
adicionales.
Para el momento que la tabla tiene m
ítems, cada ítem tiene un Bs. para pagar
por su reinserción durante la expansión.
Método de Contabilidad
Crédito:0
Crédito:8
Cuando se realice la próxima expansión, tenemos
crédito suficiente para pagar por la reinserción de
todos los ítems de la tabla.
Método del Potencial

Definimos una función potencial Φ que es 0
inmediatamente después de una expansión.
Φ(T)= 2× num[T] - size[T]
• Después de una expansión:
num[T]= size[T]/2 y Φ(T)=0.
• Antes de una expansión:
num[T]= size[T] y Φ(T)= num[T].
Método del Potencial

Si TABLE-INSERT no causa una
expansión (sizei = sizei-1):
Método del Potencial

Si TABLE-INSERT causa una expansión:
sizei = 2×sizei-1
sizei-1 = numi-1 = numi-1
sizei = 2× numi-1:
Expansión y Contracción de
Tablas

Una estrategia es duplicar el tamaño de la
tabla cuando un ítem es insertado en una
tabla llena y dividir el tamaño de la tabla por
la mitad cuando una eliminación haría que la
tabla esté llena menos de la mitad.
Expansión y Contracción de
Tablas



Realizamos n operaciones sobre una tabla T,
siendo n potencia exacta de 2.
Las primeras n/2 operaciones son inserciones,
con un costo total de Φ(n).
Para las n/2 operaciones restantes, realizaremos
la siguiente secuencia:

Siendo n =8, después de realizar las primeras n/2
operaciones tenemos la tabla:
• Siguiendo la secuencia: I,D,D,I,I,D,D,…,
I:
D,D:
I,I:
Expansión y Contracción de
Tablas


El costo de cada expansión y contracción es
Θ(n), y hay Θ(n) de ellas. Entonces, el costo total
de n operaciones es Θ(n2) y el costo amortizado
de una operación es Θ(n).
Después de una expansión, no realizamos
suficientes eliminaciones para pagar por una
contracción. De la misma manera, después de
una contracción, no realizamos suficientes
inserciones para pagar por una expansión.
Estrategia mejorada





Duplicamos el tamaño de la tabla cuando un
ítem es insertado en una tabla llena.
Dividimos el tamaño de la tabla por la mitad
cuando la eliminación de un ítem haga que la
tabla quede llena menos de 1/4.
El nuevo límite inferior del factor de carga está
acotado por la constante 1/4.
Después de una expansión, el factor de carga de
la tabla es 1/2.
Una expansión sólo ocurre cuando el factor de
carga sería mayor que 1.
Método del Potencial


Analizaremos el costo de una secuencia
de n operaciones TABLE-INSERT y
TABLE-DELETE.
Definimos una función potencial Φ que es
0 inmediatamente después de una
expansión o contracción y se construye a
medida que el factor de carga incrementa
a 1 o disminuye a 1/4.
Método del Potencial


Factor de carga de una tabla no vacía T :
α(T) = num[T]/ size[T].
Ya que para una tabla vacía,
num[T] = size[T] = 0 y α[T]=1, siempre
tenemos que num[T]= α(T) × size[T]
Análisis







ci el costo actual de la i-ésima operación.
costo amortizado con respecto a Φ.
numi el número de ítems guardados en la tabla
después de la i-ésima operación.
sizei el tamaño de la tabla después de la i-ésima
operación.
αi el factor de carga de la tabla después de la
i-ésima operación.
Φi el potencial después de la i-ésima operación.
Inicialmente num0 = size0 =0, α0 =1 y Φ0 =0.
Si la i-ésima operación es
TABLE-INSERT



Si αi-1 ≥ 1/2, si la tabla se expande o no, el
costo amortizado será a lo más 3.
Si αi-1 < 1/2, la tabla no se puede expandir a
causa de una operación, ya que una
expansión ocurre sólo cuando αi-1 =1.
Si αi < 1/2 también, el costo amortizado de
la i-ésima operación es:
Por lo tanto, el costo amortizado de TABLE-INSERT
es a lo sumo 3.
Si la i-ésima operación es
TABLE-DELETE


numi = numi-1-1.
Si αi-1 < 1/2, debemos considerar si la
operación causa una contracción. Si no la
causa, entonces sizei = sizei-1 y el costo
amortizado de la operación es:

Si αi-1 < 1/2 y la i-ésima operación causa
una contracción, entonces el costo actual
de la operación es
ci = numi + 1, ya que eliminamos un ítem y
movemos numi ítems. Tenemos
sizei/2 = sizei-1/4 = numi-1 = numi+1, y el
costo amortizado de la operación es:
Tarea

Análisis cuando la i-ésima operación es
TABLE-DELETE y αi-1 ≥ 1/2.
Conclusión

En resumen, debido a que el costo
amortizado de cada operación está
limitado superiormente por una constante,
el tiempo real de una secuencia de n
operaciones en una tabla dinámica es
O(n).
Fin de la Presentación
Descargar