对于一个问题,我们如果可以枚举所有的解,那么这个解空间我们是知道的。那么如何在解空间里面找到最优解呢?这时有一个非常好的方法,从底向上地构造整个解,而每一步都是从地层寻求最优解,这样就能保证在最终得到的一定是最优解。这就是最优子结构,有这种结构的问题,通常都可以用动态规划的办法来寻求最优解。而且它是从小规模(子问题)到大规模问题的构造,而常常这样的解法能够用一张表直观地表现出来。表中的元素是一个表达式的某个特定值,这个表达式表现的是问题和子问题的关系,也就是如何在子问题中的解中寻找最优的关系,这样的关系在例子中会非常地明了。
【装配流水线】
往往最经典的算法书里面都会讲最经典的“装配流水线”问题。因为它相对来说比较简单,一个问题,只有两个个子问题,那就是两条流水线选哪条路径。即使是最简单的例子也会有一大通的表达式搞得头有点晕,不过多看几遍应该是可以克服的。
假设一个工厂有两条装配线:装配线0 和 装配线1 ,这两个装配线中有相同数量的装配站用于装配元件。
可以用下面的图表示两个装配站:
可以用Si,j 表示第i条装配线(i 为0或1)的第j个装配站。从一个装配线转移到另一个装配线的下一站需要消耗时间Ti,j,例如从第一条线的第一站到第二条线的下一站(即第二站)所用的时间为T1,1。表明是从一线一站出发,而不用标记下一站是几,因为下一战一定是另一条线的j+1站。我们可以选择第一条线还是第二条线,来使得最终出线的时候,用时最短。
可能用语言表达很混乱,那么就用图像说明一下这些符号吧:
时间: 2025-01-21 01:59:24