Potresti favorire le famiglie di località in base alla distanza di Hamming , a causa della loro ricchezza, flessibilità e trattabilità computazionale.
Notazione e definizioni
Ricordiamo che in un modulo libero di dimensioni finite con base , la distanza di Hamming tra due vettori e è il numero di posti cui .( e 1 , e 2 , … , e J ) δ H v = v 1 e 1 + ⋯ + v J e J w = w 1 e 1 + ⋯ + w J e J i v i ≠ w iV(e1,e2,…,eJ) δHv=v1e1+⋯+vJeJw = w1e1+ ⋯ + settJeJiovio≠ wio
Data l'origine , la distanza di Hamming suddivide nelle sfere , , dove . Quando l'anello di terra ha elementi, ha elementi e ha elementi. (Ciò segue immediatamente dall'osservazione che gli elementi di differiscono da in esattamente punti - di cui ci sonoV S i ( v 0 )i=0,1,…,J S i ( v 0 )={ w ∈V | δ H ( w , v 0 )=i}nV n J S i ( v ) ( Jv0∈ VVSio( v0)i = 0 , 1 , … , JSio( v0) = { w ∈ V | δ H(w,v0)=i}nVnJSi(v)Si(v)vi ( J(Ji)(n−1)iSi(v)vi n-1(Ji)possibilità - e che ci siano, indipendentemente, scelte di valori per ogni luogo.)n−1
La traduzione affine in agisce naturalmente sulle sue distribuzioni per dare alle famiglie della posizione. In particolare, quando è una distribuzione su (che significa poco più di , per tutti e ) e è qualsiasi elemento di , quindi è anche una distribuzione dovef V f : V → [ 0 , 1 ] f ( v ) ≥ 0 v ∈ V ∑ v ∈ V f ( v ) = 1 w V f ( w )VfVf:V→[0,1]f(v)≥0v∈V∑v∈Vf(v)=1wVf(w)
f(w)(v)=f(v−w)
per tutti . Una famiglia posizione di distribuzioni è invariante per questa azione: implica per tutti .Ω f ∈ Ω f ( v ) ∈ Ω v ∈ Vv∈V Ωf∈Ωf(v)∈Ωv∈V
Costruzione
Questo ci consente di definire famiglie di distribuzioni potenzialmente interessanti e utili specificando le loro forme in un vettore fisso , che per comodità prenderò per essere e traducendo queste "generazioni di distribuzioni" sotto l'azione di per ottenere l'intera famiglia . Per ottenere la proprietà desiderata che dovrebbe avere valori comparabili in punti vicini, è sufficiente richiedere quella proprietà di tutte le distribuzioni generatrici.0 = ( 0 , 0 , … , 0 ) V Ω fv0=(0,0,…,0)VΩf
Per vedere come funziona, costruiamo la famiglia di posizioni di tutte le distribuzioni che diminuiscono con l'aumentare della distanza. Poiché sono possibili solo le distanze di Hamming , considerare qualsiasi sequenza decrescente di numeri reali non negativi = . Impostatoa 0 ≠ a 0 ≥ a 1 ≥ ⋯ ≥ a J ≥ 0J+1a0≠a0≥a1≥⋯≥aJ≥0
A=∑i=0J(n−1)i(Ji)ai
e definire la funzione dafa:V→[0,1]
fa(v)=aδH(0,v)A.
Poi, come è facile da controllare, è una distribuzione su . Inoltre, if e only if è un multiplo positivo di (come vettori in ). Pertanto, se ci piace, possiamo standardizzare in . V f a = f a ′ a ′ a R J + 1 a a 0 = 1faVfa=fa′a′aRJ+1aa0=1
Di conseguenza, questa costruzione fornisce una parametrizzazione esplicita di tutte queste distribuzioni invarianti di posizione che stanno diminuendo con la distanza di Hamming: tale distribuzione è nella forma per qualche sequenza e alcuni vettoriale . a = 1 ≥ a 1 ≥ a 2 ≥ ⋯ ≥ a J ≥ 0 v ∈ Vf(v)aa=1≥a1≥a2≥⋯≥aJ≥0v∈V
Questa parametrizzazione può consentire una specifica specifica dei priori: fattorizzarli in un precedente nella posizione e in un precedente nella forma . (Naturalmente si potrebbe considerare un gruppo più ampio di priori in cui posizione e forma e non indipendenti, ma sarebbe un'impresa più complicata.)ava
Generazione di valori casuali
Un modo per campionare da è per fasi fattorizzandolo in una distribuzione sul raggio sferico e un'altra distribuzione condizionata a ciascuna sfera:f(v)a
Traccia un indice dalla distribuzione discreta su dato dalle probabilità , dove è definito come prima .{ 0 , 1 , ... , J } ( Ji{0,1,…,J}A(Ji)(n−1)iai/AA
L'indice corrisponde all'insieme di vettori che differisce da in esattamente posti. Quindi, selezionare quelli luoghi fuori dal possibili sottoinsiemi, dando ad ogni probabilità uguali. (Questo è solo un esempio indici di senza sostituzione.) Sia questo sottogruppo posti essere scritto .v i i ( Jivii iJiI(Ji)iJ iI
Disegna un elemento selezionando in modo indipendente un valore uniformemente dall'insieme di scalari non uguale a per tutti e altrimenti imposta . Equivalentemente, crea un vettore selezionando uniformemente a caso dagli scalari diversi da zero quando e impostando altrimenti . Impostare .w j v jwwjvjw j = v j u u j j ∈ I u j = 0 w = v + uj∈Iwj=vjuujj∈Iuj=0w=v+u
Il passaggio 3 non è necessario nel caso binario.
Esempio
Ecco R
un'implementazione per illustrare.
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
}
Come esempio del suo utilizzo:
test <- rHamming(10^4, 2^(11:1), origin=rep(1,10))
hist(apply(test, 2, function(x) sum(x != 0)))
Ci sono voluti secondi per disegnare elementi iid dalla distribuzione dove , (il caso binario), e sta diminuendo esponenzialmente.10 4 f0.2104 J=10n=2v=(1,1,…,1)a=(211,210,…,21)f(v)aJ=10n=2v=(1,1,…,1)a=(211,210,…,21)
(Questo algoritmo non richiede che stia diminuendo; quindi, genererà variate casuali da qualsiasi famiglia di località, non solo da quelle unimodali.)a