我正在尝试编写一个VB6程序(用于笑),它将计算事件时间+基于PRECEDENCE TABLE的关键路径。我希望我的学生将其用作检查机制,即。无需绘制活动网络即可完成所有工作。一旦我为每项活动开始和结束活动,我很高兴我可以做到这一切。如何在不绘制网络的情况下分配事件。我提出的所有内容都适用于特定的示例,然后不适用于另一个示例。我需要一个更通用的算法,它让我精神振奋。救命啊!
我不是一名专业的程序员 - 我在业余时间这样做是为了创造教学资源 - 真的很感激简单的英语。
答案 0 :(得分:5)
好的,所以你有一个优先级表,我把它作为像
这样的对的表 A→B
B→C
等等,用于活动{A,B,C}。每个活动也有一个持续时间和(可能)持续时间的分布,所以你知道A需要3天,B需要2,依此类推。这将被解释为“必须在B之前完成,必须在C之前完成”。
右?
现在,显而易见的事情是构建活动和箭头的图形 - 实际上,你基本上在其中以入射列表形式存在图形。关键部分是最重量(最大的时间)路径。这是一个longest-path problem,假设您的图表不是循环的(无论如何都是坏的),可以使用topological sort或transitive closure来解决。