Sei sulla pagina 1di 3

Mapeo multidimensional.

Frmula de mapeo para n dimensiones.

DB + lp [=1 (=+1 )]
DB = Direccin base.
lp = Longitud de palabra.
n = Nmero de dimensiones.
i, j = Subndices de las dimensiones.
Aj = Tamao de las dimensiones.
ai = Celda que estoy buscando.

Para que esta frmula funcione, es indispensable que la memoria sea


continua.

La direccin de base est fuera de la sumatoria porque esta slo debe ser
sumada una vez, es decir, no es un factor en cada sumando.
Por qu se toma una direccin base? Porque la direccin base es la primer
direccin de nuestro arreglo, entonces sabemos que las direcciones partirn
de ah.

La longitud de palabra estar dada por el tipo de dato, pero es importante


recalcar que la longitud de palabra slo debe ser tomada en cuenta para
clculos humanos ya que en cdigo no se aumenta celda por celda, se
aumenta celdas dependiendo del dato.

El nmero de dimensiones es necesario como parmetro ya que como es


una frmula para un nmero indeterminado de dimensiones se necesita
saber con cuantas se quiere trabajar.

En el mundo que nosotros conocemos, de 3 dimensiones, es fcil darle un


nombre a cada dimensin (Nmero de plano, nmero de rengln y nmero
de columna), pero cuando te enfrentas a un nmero mayor de dimensiones
no es prctico referirse a estas de esa forma, es por eso que en la frmula se
presenta Aj, as sin importar cuntas dimensiones sean se pueden
representar aumentando el subndice. Esta variable representa el tamao o
valor de la dimensin total, es decir, el nmero de celdas en cada
dimensin. Por ejemplo, un cubo de rubik, el cual tiene un tamao de: 3*3*3.
Analizando este cubo, sabemos que son 3 dimensiones, entonces n = 3,
representndolo en Aj, quedara as: //Para la primera dimensin, el
subndice j tomara el valor de 1 y as sucesivamente tanto como en
dimensin como en subndice. A1 = 3, A2 = 3, A3 = 3.

De Aj surge el ai, que suponiendo un mismo subndice hacen referencia a la


misma dimensin, con la diferencia que ai representa las coordenadas de
la celda que estoy buscando, es decir, usando el mismo ejemplo podramos
buscar la celda en las coordenadas: a1 = 2, a2 = 3, a3 = 1.
Ejemplo:

En un espacio de dimensiones, con valores de: A1 = 5, A2 = 3, A3 = 2 y


queriendo buscar la celda (4, 2, 1). Con una direccin contigua empezando
desde 1000, con tipo de dato entero de 2 bytes.
Empezaremos con la frmula general y despus sustituyendo los valores.
*Para i = 1 DB + (a1)
j=i+1=2 DB + (a1)(A2)
//Aumenta j
j=3 DB + (a1)(A2*A3*lp)
//Aumenta i
i=2 DB + (a1*A2*A3*lp) + (a2)
j=i+1=3 DB + (a1*A2*A3*lp) + (a2)(A3*lp)
//Aumenta i
i=3 DB + (a1*A2*A3*lp) + (a2*A3*lp) + (a3*lp)
Entonces quedara:
Loc[Arr(a1, a2, a3)] = DB + (a1*A2*A3*lp) + (a2*A3*lp) + (a3*lp)
Sustituyendo:

Loc[Arr(4, 2, 1)] = 1000 + (4*2*3*2) + (2*2*2) + (1*2) = 1058

Potrebbero piacerti anche