木のグラフを操作する(2)

  • 木を作ってから距離行列を作る
  • すべての辺の長さを1で考えれば、\frac{N(N-1)}{2}ペアの距離のうち、木の辺の数N-1のペアの距離が1
  • 残りの\frac{N(N-1)}{2}-(N-1)=\frac{(N-1)(N-2)}{2}のペアの長さを2,3,...で分配するわけだが、その分配の仕方は、木の構造(枝分かれの様子)と関係する情報になる
  • ペア間距離はigraphパッケージのshortest.paths()関数を使おう
library(igraph)

N<-5
M<-matrix(0,N,N)
for(i in 1:(N-2)){
	M[i,sample((i+1):N,1)]<-1
}
M[N-1,N]<-1
M

s<-sample(1:N)

M<-M[s,s]
M

M2<-(M+t(M))
M2[lower.tri(M2)]<-0
M2
g<-graph.adjacency(M)
is.connected(g,"strong")
plot(g)
sh.path<-shortest.paths(g)