这节课通过讲解动态规划在文本对齐(Text Justification)和黑杰克(Blackjack)上的求解过程,来帮助我们理解动态规划的通用求解的五个步骤:
动态规划求解的五个“简单”步骤:
拿上节课的例子(斐波那契数和最短路径)来看,如下图所示:
一、文本对齐
首先,我们先看下文本对齐问题,在使用word排版文字的时候,为了排版美观,我们常会用到文本两端对齐的功能。文本对齐功能就是将文本拆分成合适的行,让行内尽可能塞进足够的词。微软MS OFFICE是用贪心算法做的,而Latex是用动态规划算法去做,效率会更高些。在解决文本对齐问题时,我们要定义它的对齐代价,即如果拆分后的文本近似与行宽,则它们的badness近乎于0,但如果不合适,则无穷。如下图所示:
现在,我们用上面讲的五步求解步骤来分析下:
在上面的过程中会用到父指针,用于记住哪个猜的是最好的,这样下一个猜测可以直接基于上一个最好的猜测进行。
二、黑杰克
黑杰克是一个赌场游戏,如果看过《决胜21点》的话,电影里面的21点扑克玩法就是黑杰克。游戏者的目标是使手中的牌的点数之和不超过 21 点且尽量大。在要牌的过程中,如果所有的牌加起来超过21点,玩家就输了——叫爆掉(Burst)。假如他没爆掉,那么你就与他比点数大小,大为赢。拿牌叫HIT,停牌(不再拿牌)叫STAND。玩家叫player,庄家叫dealer。
在黑杰克中的动态规划求解五步为上图所示,这里不做详细解释,因为游戏规则我也不是很懂,后续有空再了解进行补充。
手机扫一扫
移动阅读更方便
你可能感兴趣的文章