这段文字基本上是在聊聊背包问题及其不同类型和优良决方案。背包问题是一个经典的组合优化问题,涉及怎么在给定容量的背包中装入物品以实现值钱Zui巨大化。
01背包问题
- 定义每种物品只Neng选择一次。
- 状态转移方程
f = max,其中f表示前i件物品放入容量为v的背包Neng得到的Zui巨大值钱。
- 优化用一维数组,按v递减的顺序填表。
彻头彻尾背包问题
- 定义每种物品Neng无限次选择。
- 状态转移方程与01背包相同,但循环顺序改为v递增。
许多沉背包问题
- 定义每种物品有有限件可用。
- 解决方案Neng将每种物品拆成若干个01背包物品。
分组背包问题
- 定义物品被分成组,每组内物品互斥。
- 解决方案将个个组视为一个物品,然后用01背包或其他方法解决。
有依赖的背包问题
- 定义有些物品非...不可一起被选择。
- 解决方案Neng用递归或动态规划解决。
泛化物品
- 定义泛化物品是一个函数,它将费用映射到值钱。
- 应用Neng通过将问题转化为泛化物品的和来解决。
输出方案
- 方法记录个个状态是通过哪种策略转移得到的,然后根据这些个信息回溯找出Zui优方案。
排序算法
- 插入排序将当前元素插入到Yi排序序列中的合适位置。
- 选择排序每次选择剩余元素中Zui细小的元素,然后将其放到Yi排序序列的末尾。
- 冒泡排序通过不断交换相邻的逆序对来排序。
- 飞迅速排序通过递归将数组分成两有些,然后分别排序。
背包问题是一个麻烦且具有挑战性的问题, 但通过搞懂不同类型和优良决方案,Neng有效地解决各种背包问题。