【发布时间】:2012-02-17 20:49:15
【问题描述】:
以下问题有名称吗?是否有解决它的算法? : 给定一个图,无论有向还是无向,找到满足给定规范的所有路径
- 精确节点列表,或
- '*?'仅表示“任何节点或根本没有节点”,或
- '*{n}' 表示'任意 n 个连续连接的节点'
例如
A -> B -> *? -> D which results in ABXD and ABYD and ABD etc.
或
A -> *{1} -> D -> *? -> E which results in ABXDZE and ABYDZE and ABDZE etc. etc.
谢谢
附言 有谁知道在 R 或 perl 或 C 中执行此操作的图形库?
【问题讨论】:
-
这就是我能找到的全部内容:vldb.org/conf/1989/P185.PDF
-
路径必须是简单路径吗?或者他们可以有周期吗?
-
有循环意味着无限的解决方案。
-
感谢@Diego 的链接。他们被允许有循环,但如果你到达最后的跳数!=隐含的那么它不是有效的路径。如果规范在包含固定开始和结束的部分之间分解,问题会简化,例如A -> *{1} -> D 和 D -> *? -> E. 并且可以解决。我现在最大的问题是将我的轨迹记录在这样一种数据结构中,这种数据结构很容易从失败的尝试中回溯。顺便说一句,我决定使用 Boost 的 Graph。一棵树是回溯的理想选择,但不幸的是在 boost 中没有这样的东西。
标签: algorithm graph path wildcard