您可能更喜欢基于汉明距离的位置族,因为它们的丰富性,灵活性和可计算性。
符号和定义
回想一下,在具有基的自由有限维模块,两个向量之间的汉明距离和为多少地方这里。VV(Ë1个,Ë2,…,ËĴ)(Ë1个,Ë2,… ,ËĴ) δHδHv=v1个Ë1个+⋯+vĴËĴv =v1个Ë1个+ ⋯ +vĴËĴw=w1个Ë1个+⋯+wĴËĴw =w1个Ë1个+ ⋯ +wĴËĴ一世一世v一世≠w一世v一世≠w一世
给定任何原点,汉明距离将划分为球面,,其中。当接地环具有元素时,具有元素,而具有元素。(这是从观察到元素与恰好在第地方不同之后得出的-其中有v0∈Vv0∈ VVV小号一世(v0)小号一世(v0)一世=0,1个,…,Ĵ我= 0 ,1 ,... ,Ĵ小号一世(v0)={w∈V | δH(w,v0)=一世}小号一世(v0)= { 瓦特 ∈ V | δH(w,v0)= i }ññVVñĴñĴ小号一世(v)小号一世(v)(Ji)(n−1)i(Ji)(n−1)iSi(v)Si(v)vvii(Ji)(Ji)可能性- 每个地方都有个值的选择。)n−1n−1
仿射翻译自然会根据其分布来分配位置族。具体地,当是在任何分配(这意味着很少超过,所有,和)和是任意元素,则也是分布哪里VVffVVf:V→[0,1]f:V→[0,1]f(v)≥0f(v)≥0v∈Vv∈V∑v∈Vf(v)=1∑v∈Vf(v)=1wwVVf(w)f(w)
f(w)(v)=f(v−w)
f(w)(v)=f(v−w)
对于所有。一个地点家庭分布是这样的作用下不变:意味着所有。v∈Vv∈V ΩΩf∈Ωf∈Ωf(v)∈Ωf(v)∈Ωv∈Vv∈V
施工
这使我们能够通过在一个固定向量指定其形状来定义潜在有趣且有用的分布族,为方便起见,我将其设为,并在的作用下转换这些“生成分布” 以获得完整族。为了获得在附近点应具有可比值的所需属性,只需要求所有生成分布的属性即可。vv0=(0,0,…,0)0=(0,0,…,0)VVΩΩff
为了了解其工作原理,让我们构造所有分布的位置族,这些分布随距离的增加而减小。因为只有汉明距离是可能的,所以请考虑非负实数 =任何递减序列。组J+1J+1aa0≠a0≥a1≥⋯≥aJ≥00≠a0≥a1≥⋯≥aJ≥0
A=J∑i=0(n−1)i(Ji)ai
A=∑i=0J(n−1)i(Ji)ai
和定义该函数通过fa:V→[0,1]fa:V→[0,1]
fa(v)=aδH(0,v)A.
fa(v)=aδH(0,v)A.
然后,可以直接检查的是,是上的分布。此外,当且仅当为的正数倍时,(作为向量))。因此,如果愿意,我们可以将标准化为。fafaVVfa=fa′fa=fa′a′a′aaRJ+1RJ+1aaa0=1a0=1
因此,此构造为所有随汉明距离减小的位置不变分布提供了明确的参数化:对于某些序列任何此类分布的形式均为和某些向量。f(v)af(v)aa=1≥a1≥a2≥⋯≥aJ≥0a=1≥a1≥a2≥⋯≥aJ≥0v∈Vv∈V
该参数化可以方便地指定先验:将它们分解为位置的先验和形状的先验。(当然,可以考虑一组更大的先验条件,这些先验条件是位置和形状而不是独立的,但这将是一项更为复杂的工作。)vvaa
产生随机值
从进行采样的一种方法 是分阶段进行,将其分解为球面半径上的分布,并将每个球面上的条件作为另一分布:f(v)af(v)a
从概率给出的上的离散分布绘制索引,其中的定义如前。ii{0,1,…,J}{0,1,…,J}(Ji)(n−1)iai/A(Ji)(n−1)iai/AAA
索引对应于向量集,恰好在地方与不同。因此,从可能的子集中选择放置的位置,并赋予每个相等的概率。(这仅仅是一个样品的下标出来无需更换。)我们的这个子集的地方写。iivviiii(Ji)(Ji)iiJJ iiII
通过为所有独立地从不等于的标量统一选择一个值来绘制元素,否则设置。等效地,当时,从非零标量中均匀随机选择,否则设置,从而创建向量。设置。wwwjwjvjvjj∈Ij∈Iwj=vjwj=vjuuujujj∈Ij∈Iuj=0uj=0w=v+uw=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.20.2104104f(v)af(v)aJ=10J=10n=2n=2v=(1,1,…,1)v=(1,1,…,1)a=(211,210,…,21)a=(211,210,…,21)
(此算法不需要递减;因此,它将从任何位置族生成随机变量,而不仅仅是单峰。)aa