私は「ノード」のネットワークを持っており、各ノードは「結果」を生成します。各ノードと結果には一意の名前/IDがあります。結果は、各ノードの入力と出力の両方として使用されます。ノードのすべての入力結果が利用可能になったら、それを実行できます。ノードが出力の実行を終了すると、出力結果が利用可能になります。
したがって、たとえば:
input node output
A x
x B y,z
x,z C q
上記のネットワークで。ノードAには入力がなく、最初に実行できます。次に、結果xが使用可能になったときにBを実行できます。AとBの両方が実行されると、AとBの結果に依存するため、Cを実行できます。結果は、この場合のyのように、どのノードへの入力としても使用されない最終結果になることもあります。
ネットワークははるかに複雑になる可能性があります。各ノードは多数の結果を生成でき、多数の入力依存関係を持つことができます。
結果を選択して、「q」と言って、そこに到達するためにどのノードを実行する必要があるかを把握できるようにしたいと思います。ノードのより大きなネットワークで複数の結果を得るためにこれを実行したいと思います。
これは一般的なアルゴリズムだと思いますが、この分野での経験はありません。依存関係によって円が作成される可能性があるため、ツリーのように階層的ではありません。私が読んだことから、それは一種の森のグラフに違いないと思います。
いずれにせよ、それはトラバース可能でなければなりません。最初に実行できるノードは常に少なくとも1つあり、他のすべてのノードは、2つのノードが互いに終了するのを待っているデッドロックを作成せずに、ある順序で追跡できる必要があります。
このネットワーク/そのノードをコードで説明する一般的な方法は何ですか?また、そのようなネットワークの正式な名前は何ですか?