PERT && Knapsack && 匹配

         PERTProgram Evaluation and Review Technique),即计划评估技术,又叫“关键路径分析”。

         关键路径(critical path):其上的任务是决定整个项目所需时间的那些任务。如果要减少项目所需要的时间,必须加快完成关键路径上的任务。

         关键路径法(critical path method):拓扑排序。

        

         背包问题(Knapsack),主要有部分背包,完全背包,多维背包。部分背包用的是贪心的思想;完全背包和多维背包四用DP去做的。

 

 

关键字:向后拓展、向前拓展

“关键路径”就是这个图的最长路;对于有向无环图,可以用拓扑法去做。算法的核心是“向后拓展”:就是要到某个点的入度处理完了之后再把这个点加入。

         这种思想很常见:

1)       BFS中的点的拓展,就是先找到一个已经是有最优解的点,然后去更新可以到达的点的值。等到无法再更新的时候,那个点的最优值就确定了,就可以去更新其它的点了;

2)       如无限背包问题的一种写法,先枚举容量,再枚举物品。枚举到的容量是已经达到最优解了,可以去更新其它的点了。

这种方法有一点判断是难的:怎样确定一个点达到了最优状态?

1)  PERT中,就是一个点的入度为0时,达到了最优。

2)  SPFA中,正是由于无法判断这点,所以要一个点加入队列多次去做,但是这样的次数不会太多;

还有一种就是“递推”,就是对于确定的一个点,去找前面可到达它的所有点,并更新:

101背包就是这种方法

 

 

猜你喜欢

转载自blog.csdn.net/zjsxzjb/article/details/6244527