算法的乐趣 · 第二十六节
《算法的乐趣》第二十六节
CriticalPath()函数按事件顶点的拓扑顺序逐个处理,搜索每个顶点发出的有向边以找出关键活动并输出关键路径;图中的虚拟活动虽不影响结果但会被输出……
CriticalPath()函数按事件顶点的拓扑顺序逐个处理,搜索每个顶点发出的有向边以找出关键活动并输出关键路径;图中的虚拟活动虽不影响结果但会被输出,需依据名称为空或活动时间为零加以过滤。对给定活动关系数据,算出的关键路径为P1→P3→P4→P6,与Project软件结果一致。
本章总结指出,一组活动在规则约束下于开始时间上形成偏序,对其排序即得拓扑排序;工程管理软件的实用功能背后就是拓扑排序和关键路径这两个简单算法,其核心是图、数组和带优先级标记的队列等数据结构的灵活运用,按开始时间排序与普通拓扑排序结构相同,仅将普通队列换成带优先级标记的队列。