- こちらから その2
- 平面格子で斜めへ行くとき半分にする、という。
- って何だろう
- 格子の移動では、格子距離(ハミング距離(こちら))として、1が直の隣、2が斜めの隣
- ユークリッド距離では、それが平方根になって
- 格子距離を2進む確率は半分ということか
- ユークリッド距離を進むということは、の二乗分の1ということか
- 角度を持ち込んだ幾何で考える
- 直の隣に1、斜めの隣に半分で移動するということは、4つの直の隣(1x4)と4つの斜め隣(1/2*4)の総和が、移動のすべてなので、4+2=6が全体。
- したがって、ある一つの直のとなりへの移動は、1/6、ある一つの斜めの隣への移動は1/12。
- 角度にすると、と (60度と30度)。
- 2次元面にごとに直線を引いて区切る。その上で、直の隣への移動は、その方向の線(x軸かy軸)とそれを挟んだ2本の直線の間への移動があったときに、その移動は、「直の隣への移動」とみなし、4つの象限のそれぞれについて、斜め2本の直線にはさまれたの確度への移動は「ナナメの隣への移動」とみなすこととする。そうすると、直と斜めとの比率が1対半分になる。
- 今、平面に任意の方向を定める。その隣り合った2方向の角の2等分線を引く。角の2等分線を境に、「近い方の直線」を採用するというルールで「全方向への移動」を与えた方向への移動に集約させるということが、格子での移動に相当するということか。次元を上げても(計算が大変かもしれないけれど)、同じこと。これは、単位球面のボロノイ図(こちらも)のようなもの?
r<-0.01
n<-3
N<-1000
X<-100
Xs<-matrix(X/2,N,n)
Xs2<-Xs
Niter<-100
for(i in 1:Niter){
m<-sample(-n:n,N,pr=c(rep(r/(2*n),n),1-r,rep(r/(2*n),n)),replace=TRUE)
v<-matrix(0,N,n)
v2<-matrix(rnorm(N*n),N,n)
v2<-v2/sqrt(apply(v2^2,1,sum))
v2<-v2*sample(0:1,N,replace=TRUE,pr=c(1-r,r))
for(j in 1:N){
v[j,m[j]]<-1
}
Xs<-Xs+v
Xs2<-Xs2+v2
}
EuclidL<-sqrt(apply((Xs-rep(X/2,n))^2,1,sum))
EuclidL2<-sqrt(apply((Xs2-rep(X/2,n))^2,1,sum))
Hamming<-apply(abs(Xs-rep(X/2,n)),1,sum)
par(mfcol=c(1,3))
hist(EuclidL)
hist(EuclidL2)
hist(Hamming)
par(mfcol=c(1,1))
mean(EuclidL)
mean(EuclidL2)