我有一个有向无环图,其中每个节点都由一个状态表示
public class State{
List<State> ForwardStates;
List<State> backStates;
string stateName;
}
其中ForwardStates
是来自当前状态的通过前向链接的状态列表。并且backStates
是来自当前状态的反向链接的状态列表。
我有两个特殊状态
State initialState (name=initial)
State finalState (name=final)
我希望找到从初始状态开始到最终状态的所有路径,并填充
List<List<string>> paths
例如给出如下图
反向链接用棕色虚线箭头表示,前向链接用黑色具体箭头表示,可能的路径是 {{initial, b, a, final},{initial, c, final},{initial, b, initial,final }}
规则是从初始状态开始,必须经过1个或多个反向链接,才能经过前向链接,一旦切换到前向链接,就一直保持前向链接(即不能再使用后向链接) )。
这个问题是这个问题的延伸(收集 DAG 的所有路径)。