【发布时间】:2012-03-01 12:03:52
【问题描述】:
有一种线性时间算法(或 Knuth & Plass 的二次时间算法)可以将文本均匀地分成最大宽度的行。它使用 SMAWK,“均匀”表示:
http://en.wikipedia.org/wiki/Word_wrap#Minimum_raggedness
上述算法是否有算法或凹成本函数会考虑我希望文本插入的行数,而不是最大行宽?
换句话说,我正在寻找一种换行(或段落形成,或换行)算法,其中输入是所需的行数,而不是所需的行宽。
仅描述一种实际上无法使用的方法:每个单词对之间有 N 个单词和 N-1 个空格,M 是所需的行数(M
【问题讨论】:
-
你能解释一下“衣衫褴褛”吗?你如何决定哪个结果比另一个更好?如果没有评估 - 您可以只返回随机插入的换行符,但我认为情况并非如此。
-
文本是左对齐的——也就是说,右边可能有剩余的空白,我们称之为浪费。换句话说,浪费是最大(最佳、期望的)线宽和实际线宽之间的差异。现在我们计算浪费的平方根,所以我们惩罚真正错误的,把所有的浪费平方加起来,这就是“不规则”。我们只是尽量避免间隙,即我们希望线条具有尽可能相似的宽度。顺便说一句,这一切都在上面的维基百科链接中。
标签: algorithm computer-science line-breaks