各ノードが状態で表される有向非巡回グラフがあります
public class State{
List<State> ForwardStates;
List<State> backStates;
string stateName;
}
ここForwardStates
で、現在の状態からの前方リンクによる状態のリストです。現在のbackStates
状態からの逆方向リンクによる状態のリストです。
私は2つの特別な状態を持っています
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 のすべてのパスを収集する) の拡張です。