贪婪算法

1.教室调度问题

一间教室的课程表如上所示,现在如果尽可能在这个教室上最多的课,需要怎么安排课程呢?由于课程之间有冲突,无法在这个教室上所有课,所以只能去选择彼此时间不冲突的课程。
具体做法:
(1)选出结束最早的课;
(2)选择第一节课结束时间最早的课。
重复上面两个步骤。



最后在这个教室就是上这三节课。
这里的做法就是每次去找最早结束的课程,相当于每一步的最优解,最终得到的就是全局最优解。

2.背包问题

假设有三样物品,具体如下:



现在有一个最多只能装35磅的背包,需要在这些物品中选择,使得背包中物品价值最高。如果按照上面的做法就是,
(1)先找最贵的,装进去;
(2)继续找最贵的,直到背包满了。
这样最后背包里装的就是3000$的音响,事实上,选择2000$的笔记本和1500$的吉他,最后是3500$,价值最高。所以,上面的做法在这种情况下,得到的并不是最优解。但是,这种做法最后的结果也很接近最优解了,在只需要找到一个能够大致解决问题的算法时,这种做法刚好可以使用。

上面的这种做法就是经常说的贪婪算法,即每步都采取最优的做法,虽然可能不是最优解,但是很接近最优解,而且效率比较高。

你可能感兴趣的:(贪婪算法)