Функция random_walk из iGraph в R не останавливается на поглощающих состояниях

Я пытаюсь эмулировать случайное блуждание/цепь Маркова, используя 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.


person J. Doe    schedule 07.02.2018    source источник


Ответы (1)


Если вы думаете, что эти состояния являются поглощающими, то вы интерпретируете свой граф смежности как направленный, а не как ненаправленный. Используйте 1_. Затем, когда вы построите график, вы увидите, что петли лучше указывают, куда вы можете двигаться (обратите внимание, что больше нет линий, ведущих «из» узла 2).

введите здесь описание изображения

person MrFlick    schedule 07.02.2018
comment
Спасибо за помощь. На самом деле это изменяет поведение random_walk, но если вы скажете ему пройти 100 шагов, а на 4-м будет поглощающее состояние, он не остановится на этом, а продолжит с тем же числом, пока не достигнет 100. Может быть, мне нужно построить функция удаления лишних поглощающих состояний. - person J. Doe; 07.02.2018