我有以下简化情况:
我需要创建一个如下所示的树:
我从一个得分为3的节点开始。从这个节点开始,我计算得分为4,6,5和7的所有可能的下一个节点。在下一步中,我只想考虑最高的两个节点得分,在我们的例子中是6和7.从这两个节点我再次计算所有可能的下一个节点。所有下一个节点的最高得分分别是12和13,所以在下一步中,我只想将这两个节点视为我的下一个起点。这意味着从现在开始忽略来自先前得分6节点的所有节点。
等等......
我现在不知道图论(但我想我必须做一些研究)
我找了一些可能帮助我在C ++中实现它的库。我遇到了boost :: graph,第一眼看上去很有希望。缺点是,它看起来也很复杂。
我的问题是:
我认为我的要求是
注意:
我想它应该是图论的一种标准问题。但是现在我真的不知道从哪里开始我的研究。如果您有任何好的文献,论文,描述,谷歌的关键词,对于这个问题,请告诉我。
修改
很多人都指出阵列可能就足够了。首先:你可能是对的,谢谢你的评论。我的例子非常简化。在每个步骤中,我需要计算多达一万个新的可能节点,我需要进行大约1000次迭代。只跟随几个节点的想法(在我的例子2中,但在我的应用程序中最有可能~100或类似“最好的x%”只是为了减少可能性的数量。我认为它很明显,问题会很快爆发。
EDIT2:
似乎对这些数字存在一些困惑: 现在代码运行顺序(没有图形,只是一个数组)。对于每个可能的新节点,我根据某些指标计算了得分。最后,我选择得分最高的节点,然后继续进行新的迭代。
如何使用图表实现它的想法如下: 同样,对于每个可能的节点,我计算得分(这是连接两个节点的线上的数字)但我们感兴趣的是所有这些得分的总和通过图表,这是我在节点中写的数字。这意味着我对通过图表的路径感兴趣,这导致得分最高。