我正在尝试模拟一个通过有向网络图的随机遍历。伪代码如下:
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
除了创建临时列表并在元素被标记为已访问后删除它们之外,还有更有效的将路径标记为已经访问的方法吗?
编辑
该算法的目标是随机选择图中的一个节点。选择该节点的一个随机后继/子节点。如果该节点未被访问,则前往该节点并将其标记为已访问。重复此步骤,直到没有后继/子节点或没有未访问的后继/子节点。