Puede favorecer a las familias de ubicación en función de la distancia de Hamming , debido a su riqueza, flexibilidad y capacidad de cálculo.
Notación y definiciones
Recuerde que en un módulo dimensión finita libre con base , la distancia de Hamming entre dos vectores y es El número de lugares donde .V(e1,e2,…,eJ) δHv=v1e1+⋯+vJeJw=w1e1+⋯+wJeJivi≠wi
Dado cualquier origen , la distancia de Hamming divide en esferas , , donde . Cuando el anillo de tierra tiene elementos, tiene elementos y tiene elementos. (Esto se deduce inmediatamente de observar que los elementos de difieren de en exactamente lugares, de los cuales hayv0∈VVSi(v0)i=0,1,…,JSi(v0)={w∈V | δH(w,v0)=i}nVnJSi(v)(Ji)(n−1)iSi(v)vi(Ji)posibilidades, y que hay, independientemente, opciones de valores para cada lugar).n−1
La traducción afina en actúa naturalmente en sus distribuciones para dar familias de ubicaciones. Específicamente, cuando es cualquier distribución en (lo que significa poco más que , para todos y ) y es cualquier elemento de , entonces también es una distribución dóndeVfVf:V→[0,1]f(v)≥0v∈V∑v∈Vf(v)=1wVf(w)
f(w)(v)=f(v−w)
para todos . Un familias de de la distribución es invariante bajo esta acción: implica para todos .v∈V Ωf∈Ωf(v)∈Ωv∈V
Construcción
Esto nos permite definir familias de distribuciones potencialmente interesantes y útiles especificando sus formas en un vector fijo , que por conveniencia tomaré como , y traduciendo estas "distribuciones generadoras" bajo la acción de para obtener la familia completa . Para lograr la propiedad deseada de que debería tener valores comparables en puntos cercanos, simplemente requiere esa propiedad de todas las distribuciones generadoras.v0=(0,0,…,0)VΩf
Para ver cómo funciona esto, construyamos la familia de ubicaciones de todas las distribuciones que disminuyen con el aumento de la distancia. Como solo son posibles las distancias de Hamming , considere cualquier secuencia decreciente de números reales no negativos = . ConjuntoJ+1a0≠a0≥a1≥⋯≥aJ≥0
A=∑i=0J(n−1)i(Ji)ai
y defina la función porfa:V→[0,1]
fa(v)=aδH(0,v)A.
Entonces, como es fácil de comprobar, es una distribución en . Además, si y solo si es un múltiplo positivo de (como vectores en ). Por lo tanto, si lo deseamos, podemos estandarizar a .faVfa=fa′a′aRJ+1aa0=1
Por consiguiente, esta construcción proporciona una parametrización explícita de todas esas distribuciones invariantes de ubicación que disminuyen con la distancia de Hamming: cualquier distribución de este tipo tiene la forma para alguna secuencia y algunos vector .f(v)aa=1≥a1≥a2≥⋯≥aJ≥0v∈V
Esta parametrización puede permitir una conveniente especificación de los anteriores: factorizarlos en un prior en la ubicación y un prior en la forma . (Por supuesto, uno podría considerar un conjunto mayor de antecedentes donde la ubicación y la forma no son independientes, pero esta sería una tarea más complicada).va
Generando valores aleatorios
Una forma de muestras de es por etapas factorizándolas en una distribución sobre el radiofrecuencia esférica y otra distribución condicional en cada esfera:f(v)a
Dibuje un índice de la distribución discreta en dada por las probabilidades , donde se define como antes .i{0,1,…,J}(Ji)(n−1)iai/AA
El índice corresponde al conjunto de vectores que difieren de en exactamente lugares. Por lo tanto, seleccione los que coloque fuera de los posibles subconjuntos , dando a cada uno la misma probabilidad. (Esto es sólo una muestra de subíndices de y sin reemplazo.) Que este subconjunto de lugares escribirse .ivii(Ji)iJ iI
Dibuje un elemento seleccionando independientemente un valor uniformemente del conjunto de escalares que no sea igual a para todos y establezca . De manera equivalente, cree un vector seleccionando uniformemente al azar de los escalares distintos de cero cuando y estableciendo . Establezca .wwjvjj∈Iwj=vjuujj∈Iuj=0w=v+u
El paso 3 es innecesario en el caso binario.
Ejemplo
Aquí hay una R
implementación para ilustrar.
rHamming <- function(N=1, a=c(1,1,1), n=2, origin) {
# Draw N random values from the distribution f_a^v where the ground ring
# is {0,1,...,n-1} mod n and the vector space has dimension j = length(a)-1.
j <- length(a) - 1
if(missing(origin)) origin <- rep(0, j)
# Draw radii `i` from the marginal distribution of the spherical radii.
f <- sapply(0:j, function(i) (n-1)^i * choose(j,i) * a[i+1])
i <- sample(0:j, N, replace=TRUE, prob=f)
# Helper function: select nonzero elements of 1:(n-1) in exactly i places.
h <- function(i) {
x <- c(sample(1:(n-1), i, replace=TRUE), rep(0, j-i))
sample(x, j, replace=FALSE)
}
# Draw elements from the conditional distribution over the spheres
# and translate them by the origin.
(sapply(i, h) + origin) %% n
}
Como ejemplo de su uso:
test <- rHamming(10^4, 2^(11:1), origin=rep(1,10))
hist(apply(test, 2, function(x) sum(x != 0)))
Esto tomó segundos para dibujar elementos iid de la distribución donde , (el caso binario), y está disminuyendo exponencialmente.0.2104f(v)aJ=10n=2v=(1,1,…,1)a=(211,210,…,21)
(Este algoritmo no requiere que esté disminuyendo; por lo tanto, generará variaciones aleatorias de cualquier familia de ubicaciones, no solo las unimodales).a