Я пытаюсь эмулировать случайное блуждание/цепь Маркова, используя R. Как видите, я настроил матрицу перехода, а затем пытаюсь запустить на ней случайный блуждающий модуль. Дело здесь в том, что когда случайный ходок встречает поглощающее состояние (например, 2 и 5), он не останавливается, а продолжает бежать.
Я использую неправильные функции для чего-то подобного или проблема где-то еще? На самом деле я хочу распечатать все вершины, которые посетил пешеход.
library(igraph)
# Produce a transition matrix.
tm <- read.table(row.names=1, header=FALSE, text="
1 0.2 0.3 0.1 0.2 0.1 0.1
6 0.3 0.2 0.4 0.1 0 0
3 0 0.2 0.4 0.1 0.2 0.1
4 0.2 0.1 0.2 0.3 0.1 0.1
5 0 0 0 0 1 0
2 0 0 0 0 0 1")
tm<-as.matrix(tm)
row.names(tm) <- c(1,6,3,4,5,2)
colnames(tm) <- c(1,6,3,4,5,2)
g1 <- graph.adjacency(tm, mode="undirected", weighted=TRUE)
random_walk( graph = g1, start = '4', steps = 100, stuck = "error" )
Пример вывода:
[1] 4 5 3 4 4 4 3 3 2 2 4 4 2 2 3 4 4 5 5 3 5 5 3 6 3 3 3 4 4 4 6 4 4 4 4 2 2 4 3 6 3 2 2 2 4 1
[47] 4 3 4 1 1 4 2 3 6 6 6 6 4 3 6 6 6 3 5 5 3 5 5 5 3 1 1 3 2 4 4 2 1 1 1 2 3 1 2 1 1 2 2 1 5 3
[93] 5 4 4 2 4 3 4 4
И, как видите, это не останавливается ни на 2, ни на 5.