boost :: graph是否适合执行此任务?

时间:2018-04-16 08:02:05

标签: c++ boost tree graph-theory

我有以下简化情况:

我需要创建一个如下所示的树:

tree

我从一个得分为3的节点开始。从这个节点开始,我计算得分为4,6,5和7的所有可能的下一个节点。在下一步中,我只想考虑最高的两个节点得分,在我们的例子中是6和7.从这两个节点我再次计算所有可能的下一个节点。所有下一个节点的最高得分分别是12和13,所以在下一步中,我只想将这两个节点视为我的下一个起点。这意味着从现在开始忽略来自先前得分6节点的所有节点。

等等......

我现在不知道图论(但我想我必须做一些研究)

我找了一些可能帮助我在C ++中实现它的库。我遇到了boost :: graph,第一眼看上去很有希望。缺点是,它看起来也很复杂。

我的问题是:

  1. 你认为boost :: graph可以很容易地用来实现这样的树吗?是否值得花几天时间尝试精益boost :: graph,或者它不适合我。
  2. 有更好的图书馆吗?我非常喜欢使用它并且已经使用了很多,但不是它的图形库。
  3. 我认为我的要求是

    1. 计算我的节点非常昂贵,因此我需要一个树/图表来保存每个节点的“得分”,以后可以轻松扩展。
    2. 应该可以简单地说_“从现在起让我们忽略那些节点”并专注于那两个最好的节点。
    3. 我需要以某种方式轻松地在每一步都能访问“我的树的末尾”,以便我知道哪些节点是我必须计算下一个可能节点的当前节点。
    4. 计算我的下一个节点的分数我需要能够轻松地将树跟回到它的根(我不仅需要以前的分数而且需要更多信息。我的实现会以某种方式要求每个节点都是一个对象,得分,我需要访问这些对象的成员以及得分)。这意味着我需要能够通过树重建我的方式。
    5. 注意:

      我想它应该是图论的一种标准问题。但是现在我真的不知道从哪里开始我的研究。如果您有任何好的文献,论文,描述,谷歌的关键词,对于这个问题,请告诉我。

      修改

      很多人都指出阵列可能就足够了。首先:你可能是对的,谢谢你的评论。我的例子非常简化。在每个步骤中,我需要计算多达一万个新的可能节点,我需要进行大约1000次迭代。只跟随几个节点的想法(在我的例子2中,但在我的应用程序中最有可能~100或类似“最好的x%”只是为了减少可能性的数量。我认为它很明显,问题会很快爆发。

      EDIT2:

      似乎对这些数字存在一些困惑: 现在代码运行顺序(没有图形,只是一个数组)。对于每个可能的新节点,我根据某些指标计算了得分。最后,我选择得分最高的节点,然后继续进行新的迭代。

      如何使用图表实现它的想法如下: 同样,对于每个可能的节点,我计算得分(这是连接两个节点的线上的数字)但我们感兴趣的是所有这些得分的总和通过图表,这是我在节点中写的数字。这意味着我对通过图表的路径感兴趣,这导致得分最高。

0 个答案:

没有答案