斜め

  • こちらから その2
  • 平面格子で斜めへ行くとき半分にする、という。
  • \frac{1}{2って何だろう
  • 格子の移動では、格子距離(ハミング距離(こちら))として、1が直の隣、2が斜めの隣
  • ユークリッド距離では、それが平方根になって1,\sqrt{2}
  • 格子距離を2進む確率は半分ということか
  • ユークリッド距離を\sqrt{2}進むということは、\sqrt{2}の二乗分の1ということか
  • 角度を持ち込んだ幾何で考える
  • 直の隣に1、斜めの隣に半分で移動するということは、4つの直の隣(1x4)と4つの斜め隣(1/2*4)の総和が、移動のすべてなので、4+2=6が全体。
  • したがって、ある一つの直のとなりへの移動は、1/6、ある一つの斜めの隣への移動は1/12。
  • 角度にすると、\frac{\pi}{6}\frac{\pi}{12} (60度と30度)。
  • 2次元面に\frac{\pi}{12}ごとに直線を引いて区切る。その上で、直の隣への移動は、その方向の線(x軸かy軸)とそれを挟んだ2本の直線の間への移動があったときに、その移動は、「直の隣への移動」とみなし、4つの象限のそれぞれについて、斜め2本の直線にはさまれた\frac{\pi}{12}の確度への移動は「ナナメの隣への移動」とみなすこととする。そうすると、直と斜めとの比率が1対半分になる。
  • 今、平面に任意の方向を定める。その隣り合った2方向の角の2等分線を引く。角の2等分線を境に、「近い方の直線」を採用するというルールで「全方向への移動」を与えた方向への移動に集約させるということが、格子での移動に相当するということか。次元を上げても(計算が大変かもしれないけれど)、同じこと。これは、単位球面のボロノイ図(こちらも)のようなもの?
r<-0.01

n<-3

N<-1000
X<-100
#A<-array(0,rep(X,n))
#A[length(A)/2]<-N
#which(A!=0,arr.ind=TRUE)


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)