Möglicherweise bevorzugen Sie Standortfamilien basierend auf der Hamming-Entfernung aufgrund ihres Reichtums, ihrer Flexibilität und ihrer Rechenleistung.
Notation und Definitionen
Denken Sie daran, dass in einem freien endlichdimensionalen Modul mit der Basis der Hamming-Abstand zwischen zwei Vektoren liegt und ist die Anzahl der Stellen wo .V(e1,e2,…,eJ) δHv=v1e1+⋯+vJeJw=w1e1+⋯+wJeJivi≠wi
Bei gegebenem Ursprung der Hamming-Abstand in Kugeln , , wobei . Wenn der Erdungsring hat Elemente hat - Elemente und hat - Elemente. (Dies folgt unmittelbar aus der Beobachtung, dass sich Elemente von an genau Stellen von unterscheiden - von denen esv0∈VVSi(v0)i=0,1,…,JSi(v0)={w∈V | δH(w,v0)=i}nVnJSi(v)(Ji)(n−1)iSi(v)vi(Ji)Möglichkeiten - und dass es unabhängig Werte für jeden Ort gibt.)n−1
Die affine Übersetzung in wirkt sich natürlich auf ihre Verteilungen aus, um Standortfamilien zu erhalten. Insbesondere wenn eine beliebige Verteilung auf (was wenig mehr als , für alle und ) und ist ein beliebiges Element von , dann ist auch eine Verteilung woVfVf:V→[0,1]f(v)≥0v∈V∑v∈Vf(v)=1wVf(w)
f(w)(v)=f(v−w)
für alle . Ein Ort Familien von Verteilungen invariant ist im Rahmen dieser Aktion: impliziert für alle .v∈V Ωf∈Ωf(v)∈Ωv∈V
Konstruktion
Dies ermöglicht es uns, potenziell interessante und nützliche Verteilungsfamilien zu definieren, indem wir ihre Formen an einem festen Vektor als und Übersetzen dieser "erzeugenden Verteilungen" unter der Wirkung von , um die vollständige Familie . Um die gewünschte Eigenschaft zu erreichen, dass an nahe gelegenen Punkten vergleichbare Werte haben sollte, benötigen Sie einfach diese Eigenschaft aller erzeugenden Verteilungen.v0=(0,0,…,0)VΩf
Um zu sehen, wie dies funktioniert, konstruieren wir die Standortfamilie aller Verteilungen, die mit zunehmender Entfernung abnehmen. Da nur Hamming-Entfernungen möglich sind, berücksichtigen Sie eine abnehmende Folge nicht negativer reeller Zahlen = . einstellenJ+1a0≠a0≥a1≥⋯≥aJ≥0
A=∑i=0J(n−1)i(Ji)ai
und definieren Sie die Funktion durchfa:V→[0,1]
fa(v)=aδH(0,v)A.
Dann wird , wie ist einfach zu überprüfen, ist eine Verteilung auf . Außerdem ist genau dann, wenn ein positives Vielfaches von (als Vektoren in ). Wenn wir möchten, können wir also auf standardisieren .faVfa=fa′a′aRJ+1aa0=1
Dementsprechend liefert diese Konstruktion eine explizite Parametrisierung aller derartigen ortsinvarianten Verteilungen, die mit der Hamming-Entfernung abnehmen: Jede solche Verteilung hat die Form für eine Sequenz und einige Vektor .f(v)aa=1≥a1≥a2≥⋯≥aJ≥0v∈V
Diese Parametrisierung kann eine bequeme Angabe von Prioritäten ermöglichen: Berücksichtigen Sie diese in einem Prior an der Position und einem Prior an der Form . (Natürlich könnte man eine größere Anzahl von Prioritäten in Betracht ziehen, bei denen Ort und Form nicht unabhängig sind, aber dies wäre ein komplizierteres Unterfangen.)va
Zufallswerte generieren
Eine Möglichkeit, aus zu probieren, besteht darin, es in eine Verteilung über das sphärische Strahl und eine andere Verteilung zu zerlegen, die von jeder Kugel abhängig ist:f(v)a
Zeichnen Sie einen Index aus der diskreten Verteilung auf die durch die Wahrscheinlichkeiten , wobei wie zuvor definiert ist .i{0,1,…,J}(Ji)(n−1)iai/AA
Der Index entspricht der Menge von Vektoren, die sich an genau Stellen von unterscheiden . Wählen Sie daher die Stellen aus den möglichen Teilmengen und geben Sie jede gleiche Wahrscheinlichkeit an. (Dies ist nur eine Auswahl von Indizes aus ohne Ersatz.) Lassen Sie diese Teilmenge von Stellen schreiben .ivii(Ji)iJ iI
Zeichnen Sie ein Element indem Sie unabhängig einen Wert einheitlich aus der Menge der Skalare für alle nicht gleich und ansonsten . Erstellen Sie entsprechend einen Vektor indem Sie gleichmäßig zufällig aus den Skalaren ungleich Null auswählen, wenn und andernfalls . Setze .wwjvjj∈Iwj=vjuujj∈Iuj=0w=v+u
Schritt 3 ist im Binärfall nicht erforderlich.
Beispiel
Hier ist eine R
Implementierung zur Veranschaulichung.
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
}
Als Beispiel für seine Verwendung:
test <- rHamming(10^4, 2^(11:1), origin=rep(1,10))
hist(apply(test, 2, function(x) sum(x != 0)))
Es dauerte Sekunden, um iid-Elemente aus der Verteilung zu zeichnen, wobei , (der binäre Fall), und nimmt exponentiell ab.0.2104f(v)aJ=10n=2v=(1,1,…,1)a=(211,210,…,21)
(Dieser Algorithmus erfordert nicht, dass abnimmt. Daher werden zufällige Variablen aus jeder Standortfamilie generiert , nicht nur aus den unimodalen.)a