3.
,
1
, j i > j , 0 j, 1 j 1 i. , , j
, hamming j , .
, j, 1 0.
, j. , j, .
j w, hamming d, nchoosek(w,d). , 2 M 2 w.
, n_j M x M, .
n_j = zeros(M);
for w=2:20
for d=2:w
n_j(w,d) = nchoosek(w,d);
end
end
, j .
, A, . nchoosek
n_i = zeros(M,1);
for w=2:M
n_i(w) = nchoosek(M,w);
end
ij, j .
sum(n_i .* sum(n_j,2))
M = 20, 3.4753 e09. , . - 2 ^ 20 x 2 ^ 20, .
, . 2^d -2 , hamming , , , j.
n_j, , .
n_r = 2.^(1:M) - 2;
sum(sum((n_i*n_r).*n_j))
M = 20 1,0925 e12. , B 3.4753 e09 1.0925 e12, , .
2
, ij. , , i, j.
, A, , de2bi bi2de i A_row_i
A_row_i = de2bi(2^M - i, M)
i = 2^M - bi2de(A_row_i)
, i , , j .
w = sum(A_row_i);
j_s = n_j(w,:);
j_s M, , j .
, flips sum(j_s) x w 1 A_row_i A_row_j
flips=[];
for d=2:M
c = nchoosek(1:w,d);
out = ones(j_s(d),w);
out(sub2ind([j_s(d),w],(1:j_s(d))'*ones(1,d),c))=0;
flips = [flips;out];
end
, flips w, i, M-2 . .
, 1, A_row_i j
A_row_j = repmat(A_row_i,[sum(j_s),1]);
A_row_j(A_row_j==1) = flips;
j = 2^M - bi2de(A_row_j);
j j i.
1 2 ^ B, , M = 20, .
3
j, k . hamming d A_row_i A_row_j , flips, A_row_k k
- , A_row_i A_row_j , bitxor
A_row_i = de2bi(2^M - i, M);
A_row_j = de2bi(2^M - j, M);
d = pdist([A_row_i ; A_row_j],'cityblock');
flips = de2bi(1:2^d-2);
A_row_k = repmat(A_row_i,[n_r(d),1]);
flipable = repmat(bitxor(A_row_i,A_row_j),[n_r(d),1]);
A_row_k(flipable==1) = flips;
k = 2^M - bi2de(A_row_k);
B , j i, .
, , M = 20 .