Use this if you are using igraph from R
random_walk
performs a random walk on the graph and returns the
vertices that the random walk passed through. random_edge_walk
is the same but returns the edges that that random walk passed through.
random_walk( graph, start, steps, mode = c("out", "in", "all", "total"), stuck = c("return", "error") ) random_edge_walk( graph, start, steps, weights = NULL, mode = c("out", "in", "all", "total"), stuck = c("return", "error") )
graph |
The input graph, might be undirected or directed. |
start |
The start vertex. |
steps |
The number of steps to make. |
mode |
How to follow directed edges. |
stuck |
What to do if the random walk gets stuck. |
weights |
The edge weights. Larger edge weights increase the
probability that an edge is selected by the random walker. In other
words, larger edge weights correspond to stronger connections. The
‘weight’ edge attribute is used if present. Supply
‘ |
Do a random walk. From the given start vertex, take the given number of
steps, choosing an edge from the actual vertex uniformly randomly. Edge
directions are observed in directed graphs (see the mode
argument
as well). Multiple and loop edges are also observed.
For random_walk
, a vertex sequence containing the vertices
along the walk. For random_edge_walk
, an edge sequence containing
the edges along the walk.
## Stationary distribution of a Markov chain g <- make_ring(10, directed = TRUE) %u% make_star(11, center = 11) + edge(11, 1) ec <- eigen_centrality(g, directed = TRUE)$vector pg <- page_rank(g, damping = 0.999)$vector w <- random_walk(g, start = 1, steps = 10000) ## These are similar, but not exactly the same cor(table(w), ec) ## But these are (almost) the same cor(table(w), pg)