我试图模拟一个随机遍历有向networkx图。伪代码如下
Create graph G with nodes holding the value true or false.
// true -> visited, false -> not visited
pick random node N from G
save N.successors as templist
while true
nooptions = false
pick random node N from templist
while N from templist has been visited
remove N from templist
pick random node N from templist
if templist is empty
nooptions = true
break
if nooptions = true
break
save N.successors as templist
有没有一种更有效的方法来标记一条路径,而不是 创建临时列表并删除标记为已访问的元素?在
编辑
该算法的目标是在图中随机选取一个节点。随机选取该节点的后续节点/子节点。如果是未访问的,去那里并标记为已访问。重复此操作,直到没有继承者/子级或没有未访问的继承者/子级
根据图形的大小,可以使用内置的
all_pairs_shortest_path
函数。你的功能基本上是:似乎没有一种方法可以生成从
source
开始的随机路径,但是python代码是可以访问的,我认为添加这个特性将是很简单的。在另外两种可能更快,但稍微复杂一点/手动,那就是使用
bfs_successors
,它执行广度优先搜索,并且应该只在列表中包含一次任何目标节点。对格式不是百分之百肯定,所以可能不方便。在您还可以生成
^{pr2}$bfs_tree
,这将生成一个子图,该子图对它可以到达的所有节点都没有循环。那可能更简单,也可能更短?在相关问题 更多 >
编程相关推荐