Skip to content
难度基础(★)
建议时长45分钟

14.3.2 算法策略概述

四种策略之间最容易混的是分治、贪心和动态规划,因为它们都可能出现“子问题”和“最优”。辨析时要看子问题是否重叠、是否需要保存结果、局部选择是否能保证全局最优。

关键对比

策略子问题关系是否保存子问题解是否一定求最优
分治通常相互独立不强调保存不一定
贪心每步做局部最优选择不保存完整表只有具备贪心性质时才全局最优
动态规划子问题重叠保存,常用数组/表通常用于最优解
回溯解空间分支保存当前路径,失败回退可求一个解或所有解

贪心与动态规划的共同点和差别

二者都可能要求最优解,也都可能提到最优子结构。

对比贪心动态规划
决策方式当前一步直接选最优综合多个子问题状态
是否反悔通常不反悔通过表格比较多个可能
典型题最小生成树、哈夫曼树、Dijkstra背包、最长公共子序列、矩阵连乘

本节例题

单选
关于算法策略,下列说法正确的是:

自查清单

  1. 能否解释贪心和动态规划都能求最优但方法不同?
  2. 能否判断子问题是否重叠?
  3. 能否把“解空间树”与回溯联系起来?