如何设计CPM算法?

时间:2009-12-09 09:26:09

标签: c++ algorithm project-management

如何用列表数据结构表示图形我有三个类(图形,节点,边缘),并希望在图形中找到关键路径。

如何计算

  • ES:最早的开始
  • EC:Earliest Complete
  • LS:最新开始
  • LC:最新完成

感谢

2 个答案:

答案 0 :(得分:0)

优秀的quickgraph库包含用于描述图形的类和大量图形算法,包括shortest path。你也许可以做那样的事情。

然而,您似乎想要的东西实际上比标准图算法更复杂;看起来你想要一个简单算法中的Microsoft Project核心,不幸的是它不是。您可以考虑购买项目副本,并使用它的COM API来创建您的计划 - 这可能是一种简单的方法,具体取决于您的环境。不过,我怀疑你将面临一大堆工作。

答案 1 :(得分:0)

存储图形的另一种方法是Boost Graph Library(BGL)。从我在维基百科上看到的情况来看,critical path是两个顶点之间最长的路径。此外,对于一般情况,似乎发现longest path是NP完全,但对于有向无环图(DAG),我认为是你的情况,有更有效的算法。

最长路径算法不在BGL中,但维基百科上的DAG算法看起来相当容易实现。