R/random_walk.R
random_walk_rank.Rd
A random walk is a traversal of the graph starting from a node and going a
number of steps by picking an edge at random (potentially weighted).
random_walk()
can be called both when nodes and edges are active and will
adapt to return a value fitting to the currently active part. As the
walk order cannot be directly encoded in the graph the return value is a list
giving a vector of positions along the walk of each node or edge.
random_walk_rank(n, root = NULL, mode = "out", weights = NULL)
The number of steps to perform. If the walk gets stuck before reaching this number the walk is terminated
The node to start the walk at. If NULL
a random node will be
used
How edges are followed in the search if the graph is directed.
"out"
only follows outbound edges, "in"
only follows inbound edges, and
"all"
or "total"
follows all edges. This is ignored for undirected
graphs.
The weights to use for edges when selecting the next step of the walk. Currently only used when edges are active
A list with an integer vector for each node or edge (depending on what is active) each element encode the time the node/edge is encountered along the walk
graph <- create_notable("zachary")
# Random walk returning node order
graph |>
mutate(walk_rank = random_walk_rank(200))
#> # A tbl_graph: 34 nodes and 78 edges
#> #
#> # An undirected simple graph with 1 component
#> #
#> # Node Data: 34 × 1 (active)
#> walk_rank
#> <list>
#> 1 <int [26]>
#> 2 <int [9]>
#> 3 <int [15]>
#> 4 <int [7]>
#> 5 <int [3]>
#> 6 <int [8]>
#> 7 <int [5]>
#> 8 <int [3]>
#> 9 <int [6]>
#> 10 <int [4]>
#> # ℹ 24 more rows
#> #
#> # Edge Data: 78 × 2
#> from to
#> <int> <int>
#> 1 1 2
#> 2 1 3
#> 3 1 4
#> # ℹ 75 more rows
# Rank edges instead
graph |>
activate(edges) |>
mutate(walk_rank = random_walk_rank(200))
#> # A tbl_graph: 34 nodes and 78 edges
#> #
#> # An undirected simple graph with 1 component
#> #
#> # Edge Data: 78 × 3 (active)
#> from to walk_rank
#> <int> <int> <list>
#> 1 1 2 <int [1]>
#> 2 1 3 <int [0]>
#> 3 1 4 <int [2]>
#> 4 1 5 <int [0]>
#> 5 1 6 <int [0]>
#> 6 1 7 <int [3]>
#> 7 1 8 <int [6]>
#> 8 1 9 <int [1]>
#> 9 1 11 <int [1]>
#> 10 1 12 <int [2]>
#> # ℹ 68 more rows
#> #
#> # Node Data: 34 × 0