【问题标题】:Graph/tree representation and recursion图/树表示和递归
【发布时间】:2011-01-28 07:16:14
【问题描述】:

我目前正在 MATLAB 中编写优化算法,但我完全不擅长,因此我真的可以使用您的帮助。我真的很难找到一种表示图形的好方法(或者更像是一棵有多个根的树),它看起来或多或少像这样:

alt text http://img100.imageshack.us/img100/3232/graphe.png

基本上 11/12/13 是我们的根(stage 0),2x 是 stage1,3x stage2 和 4x stage3。如您所见,stageX 的节点仅连接到 stage(X+1) 的几个节点(因此它们不必连接到所有节点)。

重要提示:每个节点必须保存多个值(至少 3-4 个),一个是它的编号,至少还有两个其他变量(用于优化决策)。

我确实有一个使用矩阵的简单表示,但它真的很难维护,所以我想知道有没有好的方法来做到这一点?

第二个问题:当我完成该表示后,我需要计算每条路线(从根到尾)有多好(比如假设我需要比较的是 11-21-31-41 最好还是11-21-31-42 更好)为此我将使用每个节点拥有的变量。但是这些值必须递归计算,假设我们从 11 开始,但要计算 11-21-31-41 有多好,我们首先需要到 41,做一些计算,到 31,做一些计算,去到 21 做一些计算,然后我们可以使用之前的所有计算来计算 11。与 11-21-31-42 相同(我们从 42 开始,然后是 31->21->11)。我需要以这种方式检查所有可能的路线。问题来了,怎么做?也许是 BFS/DFS?但我不太确定如何存储所有结果。

这些都是一些冗长的问题,但我希望我不是要你做作业(因为我掌握了所有算法,只是我不太擅长 matlab,我的老师不让我做用java做)。

【问题讨论】:

    标签: matlab graph representation


    【解决方案1】:

    当然,这可能不是最有效的解决方案,但如果您可以访问 Matlab 2008+,您可以定义一个节点类来表示您的图形。

    Matlab documentation 有一个很好的链表示例,您可以将其用作模板。

    基本上,一个节点会有一个属性“linksTo”,它指向它链接到的节点的索引,以及一个计算每个链接成本的方法(可能还有一些描述每个链接的附加属性) .然后,您所需要的只是一个向下移动每个链接的函数,并在向上移动时带来成本。

    【讨论】:

      猜你喜欢
      • 2012-12-20
      • 1970-01-01
      • 2019-08-15
      • 1970-01-01
      • 2012-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多