Ви можете віддати перевагу сімей місцеположень на основі відстані Хеммінга через їх багатство, гнучкість та обчислюваність.
Позначення та визначення
Нагадаємо , що у вільному скінченномірному модулі з базисом , то відстані Хеммінга між двома векторами і є кількість місць де .V(е1,е2, … ,еJ) δНv =v1е1+ ⋯ +vJеJw =ш1е1+ ⋯ +шJеJivi≠шi
З огляду на будь-яке походження , розділення відстані Хеммінга на сфери , , де . Коли в заземленому кільці є елементів, має елементів, а має елементи. (Це негайно випливає із спостереження, що елементи відрізняються від в саме місцях, з яких єv0∈ VVSi(v0)i = 0 , 1 , … , JSi(v0) = { w ∈ V | δН( ш ,v0) = i }нVнJSi( v )(Ji)( n - 1 )iSi( v )vi(Ji)можливості - і що для кожного місця є незалежно вибір значень.)n - 1
Африканський переклад у діє, природно, на його розповсюдження, щоб дати родинам розташування. Зокрема, коли - будь-який розподіл на (що означає трохи більше , для всіх і ) і - будь-який елемент , тоді також є розподілом деVfVf: V→ [ 0 , 1 ]f( v ) ≥ 0v ∈V∑v ∈Vf( v ) = 1шVf( w )
f( w )( v ) =f( v - w )
для всіх . Розташування сім'ї розподілів інваріантна щодо цієї дії: означає для всіх .v ∈V Ωf∈ Ωf( v )∈ Ωv ∈V
Будівництво
Це дозволяє нам визначити потенційно цікаві та корисні сім’ї дистрибутивів, вказавши їх форми в одному фіксованому векторі , який для зручності я вважаю , і переклад цих "генеруючих розподілів" під дією щоб отримати повне сімейство . Щоб досягти бажаної властивості, щоб має мати порівнянні значення в сусідніх точках, просто вимагайте цього властивості всіх генеруючих розподілів.v0 =(0,0,…,0)VΩf
Щоб побачити, як це працює, давайте побудуємо сімейство локацій усіх розподілів, які зменшуються зі збільшенням відстані. Оскільки можливі лише відстані Hamming, розглянемо будь-яку зменшувану послідовність негативних дійсних чисел = . ВстановитиJ+ 1а0 ≠а0≥а1≥ ⋯ ≥аJ≥ 0
А =∑i = 0J( n - 1)i(Ji)аi
і визначте функцію byfа: V→ [ 0 , 1 ]
fа( v ) =аδН(0,v)A.
Тоді, як нескладно перевірити, є розподілом на . Крім того, тоді і лише тоді, коли є додатним кратним (як вектори в ). Таким чином, якщо нам подобається, ми можемо стандартизувати до .faVfa=fa′a′aRJ+1aa0=1
Відповідно, ця конструкція дає явну параметризацію всіх таких розподільних інваріантних розподілів, які зменшуються з відстані Хеммінга: будь-який такий розподіл має форму для деякої послідовності і деякий вектор .f(v)aa=1≥a1≥a2≥⋯≥aJ≥0v∈V
Ця параметризація може забезпечити зручну специфікацію пріорів: розподіліть їх на пріоритетне місце розташування та пріоритетне на форму . (Звичайно, можна розглянути більший набір пріорів, де розташування та форма не залежать, але це було б складнішим завданням.)va
Генерація випадкових значень
Один із способів вибірки з полягає в етапах шляхом розподілу факторів на розподіл по сферичному радіату та інший умовний розподіл на кожну сферу:f(v)a
Накресліть індекс з дискретного розподілу на заданому ймовірностями , де визначено як раніше .i{0,1,…,J}(Ji)(n−1)iai/AA
Індекс відповідає набору векторів, що різняться від в саме місцях. Таким чином, вибрати ті розміщую з можливі підмножини, даючи кожну рівну ймовірність. (Це тільки зразок Нижні індекси з без заміни.) Нехай це підмножина місце записується .ivii(Ji)iJ iI
Намалюйте елемент , незалежно вибравши значення рівномірно з набору скалярів, не рівних для всіх інакше встановіть . Еквівалентно створіть вектор , вибравши рівномірно з ненульових значень, коли інакше встановивши . Встановіть .wwjvjj∈Iwj=vjuujj∈Iuj=0w=v+u
Крок 3 є непотрібним у двійковому випадку.
Приклад
Ось R
реалізація для ілюстрації.
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
}
Як приклад його використання:
test <- rHamming(10^4, 2^(11:1), origin=rep(1,10))
hist(apply(test, 2, function(x) sum(x != 0)))
На це знадобилося секунди, щоб отримати елементів iid з розподілу де , (двійковий випадок), і експоненціально зменшується.0.2104f(v)aJ=10n=2v=(1,1,…,1)a=(211,210,…,21)
(Цей алгоритм не вимагає, щоб зменшувався; таким чином, він буде генерувати випадкові величини з будь-якого сімейства місцеположень, а не лише з одномодальних.)a