介绍
动态编程解决的问题必须包含两个重要属性(至少其一)
- 重复子问题
- 最优子结构属性
今天我们讨论最优子结构属性。
如果一个问题的最优解决方法可以通过使用它的子问题的最优解决方法的话,那么表示这个问题具有最优子结构属性。
例如,最短路径问题就具有最优子结构属性,如果节点x在从节点u到节点v的最短路径上,那么从u到v的最短路径就是从u到x和从x到v的最短路径的结合。
但是最长路径问题就不具有最优子结构属性。考虑如下图,从q到t的最长路径是:q->r->t和q->s->t,不像最短路径,最长路径 问题没有最优子结构,例如,q->r->t的最长路径并不是从q->r最长路径和从r到t最长路径的集合。因为从q->r最长路径是q->s->t->r,从r->t最长路径是r->q->s->t。

本文探讨了动态编程中一个重要概念——最优子结构属性。通过对比最短路径与最长路径问题,详细阐述了何为最优子结构属性,并解释了为什么最短路径问题具有此属性而最长路径问题则不具有。
4万+

被折叠的 条评论
为什么被折叠?



