https://johaupt.github.io/causal%20machine%20learning/Uplift_ITE_summary.html#x-learner
最优子结构的话,没什么好说的,就是原问题的最优解包含子问题的最优解。粗略的理解为:一个国家中有一名最强力的士兵(也就是问题的最优解),那么他必须是他所在军营中最强力的士兵(也是子问题的最优解),这样他才可能是这个国家最强力的士兵。
如果一个解是全局的最优解,我们按照区块划分,那么这个解也一定是这个区块的最优解,只有这样才有可能是全局的最优解
重叠子问题:子问题之间是不独立的,一个子问题在下一阶段的决策中可能被多次使用到
重叠子问题是一个递归解决方案里包含的子问题虽然很多,但不同子问题很少。少量的子问题被重复解决很多次。
例如LCS(最长公共子序列)问题,给定两个序列X和Y,长度分别是m和n,穷举子问题是指数级的,而不同子问题的数量只是mn.
用来解原问题的递归算法可以反复地解同样的子问题,而不是总在产生新的子问题。
虽然动态规划的核心思想就是穷举求最值,但是问题可以千变万化,穷举所有可行解其实并不是一件容易的事,只有列出**正确的「状态转移方程」**才能正确地穷举。