Algorithm 我们能解决这个问题吗;“打印整齐”;使用贪婪算法而不是动态规划解决问题?

Algorithm 我们能解决这个问题吗;“打印整齐”;使用贪婪算法而不是动态规划解决问题?,algorithm,Algorithm,“算法简介”一书中的“整齐打印”问题是通过动态规划解决的。这是问题5.3,找到了解决方案 我认为这个问题可以用贪婪算法简单地解决。只要把尽可能多的单词放在每一行,直到你不能适应下一个单词,所以移动到一个新的行 有人能帮我理解这个解决方案是否足够吗?(贪婪算法) 问题是:打印整齐 考虑在打印机上整齐打印段落的问题。输入文本是长度为l1、l2、…、ln的n个单词的序列,以字符为单位。我们希望将此段落整齐地打印在多行上,每行最多包含M个字符。我们的“整洁”标准如下。如果给定的一行包含单词i到j,并且我

“算法简介”一书中的“整齐打印”问题是通过动态规划解决的。这是问题5.3,找到了解决方案

我认为这个问题可以用贪婪算法简单地解决。只要把尽可能多的单词放在每一行,直到你不能适应下一个单词,所以移动到一个新的行

有人能帮我理解这个解决方案是否足够吗?(贪婪算法)

问题是:打印整齐


考虑在打印机上整齐打印段落的问题。输入文本是长度为l1、l2、…、ln的n个单词的序列,以字符为单位。我们希望将此段落整齐地打印在多行上,每行最多包含M个字符。我们的“整洁”标准如下。如果给定的一行包含单词i到j,并且我们在单词之间只留下一个空格,那么行末尾的额外空格字符数是M和单词中字符总数加上它们之间空格的差值。我们希望在除最后一行之外的所有行上最小化总和,行末尾额外空格字符数的立方体。给出一个动态规划算法,在打印机上整齐地打印n个单词的段落。分析算法的运行时间和空间要求。

否,因为贪婪算法通常都是这样,现在的短视决策(决定当前行的字数)最终会导致更高的成本。例如,假设我们每行可以有10个字符

贪婪解

xx xxx xx    cost = 1
xxxxx        cost = 125
xxxxx        cost = 0 (last line)
更好的解决方案

xx xxx       cost = 64
xx xxxxx     cost = 8
xxxxx        cost = 0 (last line)

贪婪的解决方案在第一行中包含更多的单词,但这实际上会产生更高的总解决方案成本。

我认为规范解决方案使用动态规划是有原因的。我很确定你可以举一个简单的例子,说明贪婪的解决方案失败了(尽管我没有尝试过这样做;贪婪可能会起作用,只是不太可能)