这个问题已经被问到了,但是我想要一些关于它的新意见(以及我得到的一个想法)。
我有一个非循环图(通过使用NetworkX),我需要通过图中的路径迭代(出于各种原因)。
我现在正在做的是为每个nx.all_simple_paths(G, u, v)
和u
迭代v
,但如果我的文档正确,则此功能可能会有复杂性到O(n!),这不是......很棒。
所以我的想法是,因为我确切地知道我在图表上做了什么样的操作,以便动态地获得新的路径#34;我在脚本开头创建了所有路径的列表,然后每次进行修改(只能添加弧或删除一个)时,我在路径列表中搜索哪些路径受删除影响一个弧(并删除它们)以及通过添加新弧可以创建哪些路径(如果我有一个新的弧u -> v
,我查找以u
结尾的所有路径将它们连接到从v
开始的所有路径,因此每个操作的复杂性都是多项式的。
现在,我想知道我的想法是否适用于我的问题,如果你有更好的想法可以更简单地做到这一点。