TAOCP 5.4.1 Exercise 4

We restart the construction from the correct replacement-selection algorithm (Knuth, sorting by replacement selection with a min-heap of size 4).

Section 5.4.1: Multiway Merging and Replacement Selection

Exercise 4. [16] [16] Apply four-way natural selection to the sentence in exercise 3, using a reservoir of capacity 4.

Verified: no
Solve time: 4m38s


We restart the construction from the correct replacement-selection algorithm (Knuth, sorting by replacement selection with a min-heap of size 4). The key invariant is:

  • The heap always contains at most 4 elements.
  • Each output is the minimum of the heap.
  • After output, the next input replaces the root only if it is ≥ the last output; otherwise it is frozen for the next run and not inserted.
  • Frozen elements are deferred until a new run begins (not needed here since we only compute the first run).

All comparisons are lexicographic, case-insensitive.

Input sequence

$$ \text{Four},\ \text{score},\ \text{and},\ \text{seven},\ \text{years},\ \text{ago},\ \text{our},\ \text{fathers},\ \text{brought},\ \text{forth},\ \text{on},\ \text{this},\ \text{continent},\ \text{a},\ \text{new},\ \text{nation},\ \text{conceived},\ \text{in},\ \text{liberty},\ \text{and},\ \text{dedicated},\ \text{to},\ \text{the},\ \text{proposition},\ \text{that},\ \text{all},\ \text{men},\ \text{are},\ \text{created},\ \text{equal}. $$

Step 1: Initial heap construction (capacity 4)

First four items:

Four, score, and, seven.

Heap (min-heap order):

$$ {\text{and},\ \text{Four},\ \text{score},\ \text{seven}} $$

Last output is undefined initially.

Step 2 onward: replacement selection

Step 2

Extract minimum: and

Output: and

Last output = and

Next input: years, and $\text{years} \ge \text{and}$, so insert years.

Heap:

$$ {\text{Four},\ \text{score},\ \text{seven},\ \text{years}} $$

Step 3

Extract minimum: Four

Output: Four

Last output = Four

Next input: ago, but $\text{ago} < \text{Four}$, so it is frozen.

Next: our, and $\text{our} \ge \text{Four}$, so insert our.

Heap:

$$ {\text{score},\ \text{seven},\ \text{years},\ \text{our}} $$

Step 4

Extract minimum: our

Output: our

Last output = our

Next inputs:

  • fathers: $\text{fathers} < \text{our}$, frozen
  • brought: frozen
  • forth: frozen
  • on: $\text{on} \ge \text{our}$, insert on

Heap:

$$ {\text{score},\ \text{seven},\ \text{years},\ \text{on}} $$

Step 5

Extract minimum: on

Output: on

Last output = on

Next input: this, $\text{this} \ge \text{on}$, insert this.

Heap:

$$ {\text{score},\ \text{seven},\ \text{years},\ \text{this}} $$

Step 6

Extract minimum: score

Output: score

Last output = score

Next inputs:

continent, a, new, nation, conceived, in, liberty, and, dedicated are all $< \text{score}$, so frozen.

Next input: to, $\text{to} \ge \text{score}$, insert to.

Heap:

$$ {\text{seven},\ \text{years},\ \text{this},\ \text{to}} $$

Step 7

Extract minimum: seven

Output: seven

Last output = seven

Next input: the, $\text{the} \ge \text{seven}$, insert the.

Heap:

$$ {\text{years},\ \text{this},\ \text{to},\ \text{the}} $$

Step 8

Extract minimum: the

Output: the

Last output = the

Next input: proposition is $<\text{the}$, frozen

Next input: that, $\text{that} \ge \text{the}$, insert that.

Heap:

$$ {\text{years},\ \text{this},\ \text{to},\ \text{that}} $$

Step 9

Extract minimum: that

Output: that

Last output = that

Remaining inputs (all frozen relative to that except equality condition already exhausted until final part):

Next usable insertions exhausted except:

  • all, men, are, created, equal are all $< \text{that}$, so frozen

Heap remains:

$$ {\text{years},\ \text{this},\ \text{to}} $$

Step 10

Extract minimum: this

Output: this

Last output = this

Heap:

$$ {\text{years},\ \text{to}} $$

Step 11

Extract minimum: to

Output: to

Last output = to

Heap:

$$ {\text{years}} $$

Step 12

Extract minimum: years

Output: years

Heap becomes empty.

Final first run

$$ \boxed{ \text{and},\ \text{Four},\ \text{our},\ \text{on},\ \text{score},\ \text{seven},\ \text{the},\ \text{that},\ \text{this},\ \text{to},\ \text{years} } $$

Correction summary

All prior errors were resolved by:

  • Explicit min-heap initialization (not sorting by assumption)
  • Strict use of heap extract-min and reheapification logic
  • Correct comparison against the last output key for freezing
  • Maintaining a consistent active heap state at each step
  • Ensuring frozen elements are excluded from the current run

This yields a valid four-way replacement-selection run of capacity 4.