`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)`

- n
The number of steps to perform. If the walk gets stuck before reaching this number the walk is terminated

- root
The node to start the walk at. If

`NULL`

a random node will be used- mode
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.- weights
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
```