python 存储数据到有向无环图寻找路径_有向无环图中的所有唯一路径,按随机顺序,通过Python生成器?...

我有一个Directed Acyclic Graph(DAG),它由层组成,后面两层完全是二分的(很像神经网络),如下所示:

d83bf2b11eda63a6cb86ba0b3cf63ebb.png

我希望以一种迭代的方式将DAG中的所有路径流化,通过一些生成器,以随机顺序。因为,输出必须不按顺序,教科书中的DFS方法是不可能的。内存是一个问题,所以我不想存储以前生成的任何路径,除了DAG之外,它可以被修改,但是需要修改。在

例如,上述DAG的期望输出为:(1, 4, 6, 8)

(3, 4, 5, 8)

(2, 4, 7, 8)

(3, 4, 6, 8)

(1, 4, 5, 8)

(3, 4, 7, 8)

(1, 4, 7, 8)

(2, 4, 6, 8)

(2, 4, 5, 8)

而不是由DFS生成的以下内容:

^{pr2}$

谢谢你的帮助。在

更新:

我有以下代码graph = {

1: set([4]),

2: set([4]),

3: set([4]),

4: set([5, 6, 7]),

5: set([8]),

6: set([8]),

7: set([8])

}

def dfs_paths(graph, start, goal):

stack = [(start, [start])]

while stack:

(vertex, path) = stack.pop()

for next in graph[vertex] - set(path):

if next == goal:

yield path + [next]

else:

stack.append((next, path + [next]))

def run_paths():

for start in [1, 2, 3]:

for path in dfs_paths(graph, start, 8):

print path

找到所有的路径然后随机流式传输对我来说不起作用,因为我不想存储我将要生成的任何路径。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值