Основное
library(igraph)
##
## Attaching package: 'igraph'
##
## The following objects are masked from 'package:stats':
##
## decompose, spectrum
##
## The following object is masked from 'package:base':
##
## union
# enter
gr <- matrix(0, ncol = 6, nrow = 6)
gr[1,6] <- gr[6,1] <- 1
gr[1,4] <- gr[4,1] <- 1
gr[4,3] <- gr[3,4] <- 1
gr[4,5] <- gr[5,4] <- 1
gr[2,3] <- gr[3,2] <- 1
gr[5,4] <- gr[4,5] <- 1
gr[5,2] <- gr[2,5] <- 1
g <- igraph::graph.adjacency(adjmatrix=gr,
weighted=NULL,
mode = "undirected")
plot(g)

# levels
main <- 1
n <- nrow(gr)
# 1st level
lvl <- gr[main,]
lvl[lvl == 0] <- -1
lvl[main] <- 0
# other
for(l in 2:(n - 1)){
for(i in which(lvl == (l - 1))){
s <- which(gr[i,] == 1)
s <- s[s %in% which(lvl == -1)]
lvl[s] <- l
}
}
Как задать случайный граф
# random
gr <- matrix(data=sample(c(0,1),
size=100*100,
replace=T,
prob=c(0.8,0.2)),
ncol = 100, nrow = 100)
diag(gr) <- 0
# Сделать симметричным