本章内容
学习处理不可能完成的任务:没有快速解决的办法
学习识别np完全问题,以免浪费时间去寻找解决问题的方法
学习近似算法,使用它快速找到np问题的近似解
学习贪婪策略
教师调度问题
这个问题好像很难,但是其实简单的很,选出最早结束的课,然后选择第一堂课结束之后才开始的课里结束最早的。以此类推。
通过每步都选择最优解,最终的到全局最优解。
背包问题
找到一个大致解决问题的方法,因为有些问题完全解决非常困难。小偷的包里可以放下35磅的东西,画个表格
- 你有一辆大卡车,要把大大小小的包裹运走,设计一个算法,你要将尽可能多的货物运走:把箱子从大到小排序,然后扔上车
- 欧洲旅行,行程为7天,你还为去每个地点标上了价值表和时间。你将这次旅行价值最大化该如何设计: 价值/时间 然后依次排序。
集合覆盖问题
让全美50个州都能收到所有的电台,那你该收集哪些广播单
- 列出广播集合 叫做幂集power set 子集为2^n.(抛硬币问题)
- 贪婪算法 选择一个覆盖最多未覆盖州的电台,重复
- 贪婪算法的优劣标准:速度快/和最优解近似
np完全问题:为解决集合覆盖问题,你必须计算每个可能的集合
你需要计算所有的解,并选出最小最短的那个,这些问题都属于np问题。
旅行商问题:随便出发,然后选择离你最近又没去过的城市作为下一个目的地。
识别NP问题
- 元素小运行快,元素增加,速度很慢
- 涉及所有组合的问题
- 不能将问题分解成小问题,必须考虑所有情况
- 涉及序列且难以解决,可能是np问题
- 涉及集合且难以解决,就可能是NP完全问题
- 可转换为集合覆盖和旅行商问题,可能是NP问题