Bạn có thể ưu tiên các gia đình địa điểm dựa trên khoảng cách Hamming , do sự phong phú, linh hoạt và khả năng tính toán của họ.
Ký hiệu và định nghĩa
Hãy nhớ lại rằng trong một mô-đun chiều hữu hạn miễn phí có cơ sở , khoảng cách Hamming giữa hai vectơ và là số lượng địa điểm trong đó .V(e1,e2,…,eJ) δHv=v1e1+⋯+vJeJw=w1e1+⋯+wJeJivi≠wi
Với bất kỳ nguồn gốc , phân vùng khoảng cách Hamming thành các hình cầu , , trong đó . Khi vòng tiếp đất có phần tử, có phần tử và phần tử có phần tử. (Điều này diễn ra ngay sau khi quan sát rằng các phần tử của khác với ở chính xác vị trí của - trong đó cóv0∈VVSi(v0)i=0,1,…,JSi(v0)={w∈V | δH(w,v0)=i}nVnJSi(v)(Ji)(n−1)iSi(v)vi(Ji)các khả năng - và có, độc lập, lựa chọn các giá trị cho mỗi nơi.)n−1
Bản dịch affine trong hoạt động tự nhiên trên các bản phân phối của nó để cung cấp cho các gia đình vị trí. Cụ thể, khi là bất kỳ phân phối nào trên (có nghĩa là ít hơn , cho tất cả và ) và là bất kỳ phần tử nào của , sau đó cũng là một bản phân phối Ở đâuVfVf:V→[0,1]f(v)≥0v∈V∑v∈Vf(v)=1wVf(w)
f(w)(v)=f(v−w)
cho tất cả . Một gia đình vị trí bản phân phối là bất biến theo hành động này: ngụ ý cho tất cả .v∈V Ωf∈Ωf(v)∈Ωv∈V
Xây dựng
Điều này cho phép chúng tôi xác định các họ phân phối có khả năng thú vị và hữu ích bằng cách chỉ định hình dạng của chúng tại một vectơ cố định , để thuận tiện tôi sẽ sử dụng là và dịch các "phân phối tạo" này dưới tác động của để có được toàn bộ gia đình . Để đạt được thuộc tính mong muốn mà cần có các giá trị tương đương tại các điểm lân cận, chỉ cần yêu cầu thuộc tính đó của tất cả các phân phối tạo.v0=(0,0,…,0)VΩf
Để xem cách thức hoạt động, hãy xây dựng họ vị trí của tất cả các bản phân phối giảm dần theo khoảng cách. Vì chỉ có khoảng cách Hamming là có thể, hãy xem xét bất kỳ chuỗi giảm nào của các số thực không âm = . BộJ+1a0≠a0≥a1≥⋯≥aJ≥0
A=∑i=0J(n−1)i(Ji)ai
và xác định hàm bằngfa:V→[0,1]
fa(v)=aδH(0,v)A.
Sau đó, như là đơn giản để kiểm tra, là một phân phối trên . Hơn nữa, khi và chỉ khi là bội số dương của (dưới dạng vectơ trong ). Do đó, nếu chúng tôi thích, chúng tôi có thể tiêu chuẩn hóa thành .faVfa=fa′a′aRJ+1aa0=1
Theo đó, cấu trúc này cung cấp một tham số rõ ràng cho tất cả các phân phối bất biến vị trí như vậy đang giảm dần theo khoảng cách Hamming: mọi phân phối như vậy đều ở dạng cho một số chuỗi và một số vector .f(v)aa=1≥a1≥a2≥⋯≥aJ≥0v∈V
Việc tham số hóa này có thể cho phép đặc tả thuận tiện của các linh mục: đưa chúng vào vị trí ưu tiên trên vị trí và ưu tiên hình dạng . (Tất nhiên người ta có thể xem xét một tập hợp lớn hơn của các linh mục nơi vị trí và hình dạng và không độc lập, nhưng đây sẽ là một công việc phức tạp hơn.)va
Tạo giá trị ngẫu nhiên
Một cách để lấy mẫu từ là bằng các giai đoạn bằng cách đưa nó vào một phân phối trên radi hình cầu và một phân phối có điều kiện khác trên mỗi hình cầu:f(v)a
Vẽ một chỉ mục từ phân phối rời rạc trên được đưa ra bởi xác suất , trong đó được xác định như trước .i{0,1,…,J}(Ji)(n−1)iai/AA
Chỉ số tương ứng với tập các vectơ khác với ở chính xác . Do đó, chọn những vị trí trong số các tập con có thể có , cho mỗi xác suất bằng nhau. (Đây chỉ là một ví dụ của Subscript ra khỏi mà không cần thay thế.) Chúng ta hãy tập hợp con này của nơi được viết .ivii(Ji)iJ iI
Vẽ một phần tử bằng cách chọn độc lập một giá trị từ tập vô hướng không bằng cho tất cả và nếu không thì đặt . Tương tự, tạo một vectơ bằng cách chọn một cách ngẫu nhiên từ các vô hướng khác không khi và nếu không thì đặt . Đặt .wwjvjj∈Iwj=vjuujj∈Iuj=0w=v+u
Bước 3 là không cần thiết trong trường hợp nhị phân.
Thí dụ
Đây là một R
thực hiện để minh họa.
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
}
Như một ví dụ về việc sử dụng nó:
test <- rHamming(10^4, 2^(11:1), origin=rep(1,10))
hist(apply(test, 2, function(x) sum(x != 0)))
Việc này mất giây để rút ra phần tử iid từ phân phối trong đó , (trường hợp nhị phân), và đang giảm theo cấp số nhân.0.2104f(v)aJ=10n=2v=(1,1,…,1)a=(211,210,…,21)
(Thuật toán này không yêu cầu giảm; do đó, nó sẽ tạo ra các biến thiên ngẫu nhiên từ bất kỳ họ vị trí nào , không chỉ các biến thể không chính thống.)a