Rでグラフ理論 Rで数学の色々をいじってみる

# グラフを扱うパッケージをインストールして読み込む
install.packages("igraph")
library(igraph)
# グラフは頂点と辺からできる
# 辺を2列の行列で指定する
edge.list<-matrix(c(0,1,0,2,0,3,2,3,3,4),byrow=TRUE,ncol=2)
edge.list
# 辺のリストを渡してグラフを作る
g<-graph.edgelist(el=edge.list,directed=FALSE)
# 頂点を円周上に均等に配置して描く
plot(g,layout=layout.circle)
# 次数(各頂点が連結している辺の数)
degree(g)
# グラフは頂点-頂点間を結ぶ辺の有り無しを行列にして表すこともできる
get.adjacency(g)
# エッジのリストを確認する
get.edgelist(g)
# 頂点同士の隣接関係を確認する
get.adjlist(g)
# 辺同士の隣接関係を確認する
get.adjedgelist(g)
# 頂点間の最短距離
shortest.paths(g)
# 頂点数と辺数を見る
vcount(g)
ecount(g)
> edge.list<-matrix(c(0,1,0,2,0,3,2,3,3,4),byrow=TRUE,ncol=2)
> edge.list
     [,1] [,2]
[1,]    0    1
[2,]    0    2
[3,]    0    3
[4,]    2    3
[5,]    3    4
> g<-graph.edgelist(el=edge.list,directed=FALSE)
> g
Vertices: 5 
Edges: 5 
Directed: FALSE 
Edges:
          
[0] 0 -- 1
[1] 0 -- 2
[2] 0 -- 3
[3] 2 -- 3
[4] 3 -- 4
> plot(g,layout=layout.circle)
> degree(g)
[1] 3 1 2 3 1
> get.adjacency(g)
     [,1] [,2] [,3] [,4] [,5]
[1,]    0    1    1    1    0
[2,]    1    0    0    0    0
[3,]    1    0    0    1    0
[4,]    1    0    1    0    1
[5,]    0    0    0    1    0
> get.edgelist(g)
     [,1] [,2]
[1,]    0    1
[2,]    0    2
[3,]    0    3
[4,]    2    3
[5,]    3    4
> get.adjlist(g)
[[1]]
[1] 1 2 3

[[2]]
[1] 0

[[3]]
[1] 0 3

[[4]]
[1] 0 2 4

[[5]]
[1] 3

> get.adjedgelist(g)
[[1]]
[1] 0 1 2

[[2]]
[1] 0

[[3]]
[1] 1 3

[[4]]
[1] 2 3 4

[[5]]
[1] 4

> shortest.paths(g)
     [,1] [,2] [,3] [,4] [,5]
[1,]    0    1    1    1    2
[2,]    1    0    2    2    3
[3,]    1    2    0    1    2
[4,]    1    2    1    0    1
[5,]    2    3    2    1    0
> vcount(g)
[1] 5
> ecount(g)
[1] 5
>