gpt4 book ai didi

R 中 iGraph 的 random_walk 函数不会停止在吸收状态

转载 作者:行者123 更新时间:2023-12-02 04:31:11 24 4
gpt4 key购买 nike

我正在尝试使用 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 点停止。

最佳答案

如果您认为这些状态是吸收性的,那么您就是在按有向而非无向解释邻接图。使用 mode="directed"。然后,当您绘制图表时,您会看到循环更好地指示您可以移动的位置(请注意不再有任何线从节点 2“引出”)。

enter image description here

关于R 中 iGraph 的 random_walk 函数不会停止在吸收状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48671757/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com