Saltar al contenido principal

Parametrizando la solución

Consideremos que, o bien para ahorrar espacio o bien para mejorar el tiempo, decidimos que el arreglo no se duplicará necesariamente, sino que expandirá su tamaño a αn\alpha n para alguna constante α>1\alpha>1, de modo que a lo sumo usaremos αn\alpha n celdas de memoria al haber leído nn elementos. Nos preguntamos cuál es el costo amortizado.

--> imagen

La forma más fácil de analizar el costo de inserción con este parámetro es modificar la función potencial, que seguirá siendo de la forma ϕ=anbs\phi=an-bs para constantes adecuadas aa y bb. Para la inserción elemental tenemos entonces ci=1c_i=1 y Δϕi=a\Delta\phi_i=a, dando un costo amortizado de ci^=1+a\hat{c_i} = 1+a. Para la expansión de tamaño s=ns=n a tamaño s=αns = \alpha n tenemos ci=nc_i = n y Δϕi=b(α1)n\Delta\phi_i = -b(\alpha-1)n, lo cual nos da ci^=(1b(α1))n\hat{c_i} = (1-b(\alpha-1))n. Para que esto sea independiente de nn (es decir, cero como antes) debemos tener b=1α1b = \frac{1}{\alpha-1}.

Por otro lado, para que ϕnϕ0\phi_n \ge \phi_0 podemos pedir que anbs0an-bs \ge 0 (si bien basta anbsban-bs \ge -b). Como sαns \le \alpha n, basta que abα0a - b\alpha \ge 0, lo cual significa que podemos elegir a=αα1a = \frac{\alpha}{\alpha-1}. El costo amortizado, dominado por el de la inserción elemental, es entonces 1+αα1=2α1α11+\frac{\alpha}{\alpha-1} = \frac{2\alpha-1}{\alpha-1}. Nuestro primer análisis correspondía entonces al caso particular α=2\alpha=2, mientras que ahora podemos ahorrar espacio (aumentando el costo por operación) o reducir el costo por operación (aumentando el espacio). En todo caso, el costo por operación sigue siendo constante si el espacio extra es proporcional a nn.