@@ -115,34 +115,34 @@ Problem: Wrap a paragraph to a line length, minimizing the sum of the squares of
## DAG
* Edges (actions):
*…
*Place an entire line
* Vertices (situations):
*…
*The number of words placed so far
* Edge weights:
*…
*The penalty for the line just placed
* Topological order:
*…
*0 → 1 → … → `wordCount`
* Goal:
*…
*Find a shortest path from 0 to `wordCount`
## Backpointer Class
* Information for the final result:
*…
*What was the position of the previous line break?
* Information to go back:
*…
*What was the position of the previous line break? (redundant)
* Information to compare quality:
*…
*What was the *total* penalty for the lines placed so far?
## Choosing a Backpointer
* Exhaustive search:
* Generate ….
* Check that ….
* Generate start-of-line positions (in reverse order) as long as the character count (a running total) does not exceed the line length and the start-of-line position does not go negative.
* Check that the backpointer minimizes the *total* penalty (the total penalty of all prior lines plus the penalty of the newly added line).
## Example
> x x xx xxxxxxxx
> x x x|x xxxx|xxxx
> 0 1 2 3 4 5 6
Vertex Backpointer
...
...
@@ -150,13 +150,13 @@ Problem: Wrap a paragraph to a line length, minimizing the sum of the squares of