教室调度问题
假设有如下课程表,你希望将尽可能多的课程安排在某间教室上。
你希望在这间教室上尽可能多的课。如何选出尽可能多且时间不冲突的课程呢?
这个问题好像很难,不是吗?实际上,算法可能简单得让你大吃一惊。具体做法如下。
(1) 选出结束最早的课,它就是要在这间教室上的第一堂课。
(2) 接下来,必须选择第一堂课结束后才开始的课。同样,你选择结束最早的课,这将是要在这间教室上的第二堂课。
因此将在这间教室上如下三堂课。
显然,贪婪算法就是你每步都选择局部最优解,最终得到的就是全局最优解。
但是这种贪心策略每次都好用吗?
背包问题
假设你是个贪婪的小偷,背着可装35磅(1磅≈0.45千克)重东西的背包,在商场伺机盗窃各种可装入背包的商品。
你力图往背包中装入价值最高的商品,你会使用哪种算法呢?
同样,你采取贪婪策略,这非常简单。
- 盗窃可装入背包的最贵商品。
- 再盗窃还可装入背包的最贵商品,以此类推。
只是这次这种贪婪策略不好使了!例如,你可盗窃的商品有下面三种。
你的背包可装35磅的东西。音响最贵,你把它给偷了,但背包没有空间装其他东西了。