1

たとえば、A+B=C C+D=E E+F=G のように、各ノードに変更が加えられると、関連するノードが再計算されます。下の画像は、私がやろうとしていることの単純な例です。

詳細説明 各オブジェクトの構造は同一です。入力は価格であり、価格が変化するたびに下流の価格にカスケード効果があります。上記の例では、A+B=C は 5+6=11 になります。等

変更は常に (おそらく毎秒) 行われます。各値が変更されると、通知を受ける必要があります (イベントが発生します)。

4

2 に答える 2

1

グラフが変化せず、値のみが変化する限り、グラフのトポロジカル ソートを実行できます。次に、変更された値から開始してトポロジカル ソート順でグラフをたどります。変更がグラフのまばらな部分になる場合は、各ノードにトポロジカル ソート順のインデックスを割り当て、プライオリティ キューを使用して次に実行するノードを決定します。

于 2010-10-21T16:16:15.913 に答える
0

最も簡単な方法は、イベント ベースのメソッドです。各ノードには「onchanged」イベントがあり、そのノードを使用するものはすべてそのイベントにサブスクライブできます。ノードが自分自身を更新した後、そのイベントを発生させ、知る必要がある他のすべてを知らせます。

依存関係がより複雑な場合は、最適化のために更新を管理する別のものが必要になる場合があります。たとえば、A が B および C に影響し、C も B に影響する場合 (たとえば、B=A+C および C=A+1)、単純な方法で a、次に b、次に C、および B を更新できます。これは機能しますが、明らかに必要以上の 1 つの mroe 更新です。更新を最適化する正確な方法は、依存関係ツリーの複雑さによって異なります。

于 2010-10-21T16:22:50.740 に答える