例如A+B = C C+D = E E+F = G,因为对每个节点进行了更改,相关节点被重新计算。下图是我要做的事情的简单示例。

进一步澄清每个对象的结构是相同的。投入将是价格,因为每个价格变化都会对下游的价格产生级联影响。因此,在上面的示例中,A+B = C将变为5+6 = 11。等等

更改会不断发生(可能是每一秒),因为每个值都会更改,因此需要通知(事件发射)。

有帮助吗?

解决方案

只要您的图形不更改,只有值,您就可以执行 拓扑排序 您的图。然后以拓扑排序顺序以更改的值开始以拓扑排序顺序行走。如果更改将是图的稀疏部分,请按拓扑排序分配每个节点一个索引,并使用 优先队列 确定下一步要做哪个节点。

其他提示

最简单的方法将是基于事件的方法。每个节点都有一个“ on Changed”事件,并且任何使用该节点的东西都可以订阅该事件。节点自行更新后,然后提出了该事件,并让其他需要知道的任何东西。

如果您的依赖关系更为复杂,那么您可能需要拥有其他东西来管理更新以优化事物。例如,如果a效应b和c和c还效应b(例如b = a+c和c = a+1),那么一种简单的方法可能会更新a,然后b,然后c再次b。这有效,但显然是一个MROE更新。优化更新的确切方法将取决于您的依赖树的复杂程度。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top