【发布时间】:2013-01-31 17:41:45
【问题描述】:
我有一个有向无环图,其中每个节点都由一个状态表示
public class State{
List<State> ForwardStates;
string stateName;
}
其中ForwardStates 是当前状态下一个状态的列表。
我有两种特殊状态
State initialState (name=initial)
State finalState (name=final)
我希望找到从初始状态到最终状态的所有路径,并填充
List<List<string>> paths
例如给出如下图
paths 应该包含值
{{"initial","a","final"},{"initial","b","final"}}
我应该如何在没有递归的情况下在 C# 中轻松实现这一点(因为图可能很大)?
【问题讨论】:
-
任何算法课程都会教你搜索算法
-
如果图真的很大,可能的路径数量可能会呈指数增长,并且路径字符串可能甚至无法放入磁盘,更不用说内存
-
查看此链接以获得处理图的算法的良好描述。为 DAG 跳过大约一半。 (algs4.cs.princeton.edu/42directed)
-
也许你可以调整 Dijkstra 算法来完成