Q3 — SSS* on a Deep Narrow Tree

A single MIN child under the root means SSS* walks the whole tree — every leaf gets SOLVED, nothing is pruned.

The Question

Squares = MAX, circles = MIN. Horizon nodes A–D. Tie-breaker: deepest, then leftmost.

#QuestionOfficial answer
3.1Horizon nodes assigned SOLVEDA,B,C,D
3.2Horizon nodes pruned (removed from queue by a MAX-ancestor)NIL

The Topic in 60 Seconds

The course's SSS* loop: process the highest-merit node —

  • LIVE leaf → mark SOLVED with its eval.
  • LIVE MAX → insert all children; LIVE MIN → insert first child only.
  • SOLVED node: MAX parent → parent SOLVED once all its children are solved (purge any leftover siblings from OPEN); MIN parent → update merit and insert the next sibling.

Deep-dive: SSS*, Game Strategies.

The trace — everyone gets solved

Backups first (MIN circles take minima, MAX squares take maxima):

C1=min⁡(11,70)=11C2=min⁡(48,54)=48C_1 = \min(11, 70) = 11 \qquad C_2 = \min(48, 54) = 48 SQ1=C1=11 (only child)SQ2=C2=48SQ_1 = C_1 = 11 \ (\text{only child}) \qquad SQ_2 = C_2 = 48 N=min⁡(SQ1,SQ2)=min⁡(11,48)=11Root=max⁡(N)=11N = \min(SQ_1, SQ_2) = \min(11, 48) = 11 \qquad \text{Root} = \max(N) = \mathbf{11}

StepProcessedEffect
1Root (LIVE MAX, ∞)insert N (∞). OPEN = { N(∞) }
2N (LIVE MIN, ∞)insert first child SQ1 (∞). OPEN = { SQ1(∞) }
3SQ1 (LIVE MAX, ∞)insert all children → C1 (∞). OPEN = { C1(∞) }
4C1 (LIVE MIN, ∞)insert first child A (∞). OPEN = { A(∞) }
5A (leaf)A SOLVED = 11
6A SOLVED → C1 (MIN parent)merit ← min(∞, 11) = 11; insert next sibling B (LIVE, 11). OPEN = { B(11) }
7B (leaf, merit 11 — highest in OPEN)B SOLVED = 70
8B SOLVED → C1 (MIN)both children solved → C₁ SOLVED = min(11, 70) = 11
9C1 SOLVED → SQ1 (MAX)only child → SQ₁ SOLVED = 11, nothing to purge
10SQ1 SOLVED → N (MIN)merit ← 11; insert next child SQ2 (LIVE, 11). OPEN = { SQ2(11) }
11SQ2 (LIVE MAX, 11)insert all children → C2 (LIVE, 11)
12C2 (LIVE MIN, 11)insert first child C (LIVE, 11)
13C (leaf)C SOLVED = 48
14C SOLVED → C2 (MIN)merit stays 11; insert sibling D (LIVE, 11)
15D (leaf, 11)D SOLVED = 54
16D SOLVED → C2 (MIN)both solved → C₂ SOLVED = min(48, 54) = 48
17C2 SOLVED → SQ2 (MAX)only child → SQ₂ SOLVED = 48
18SQ2 SOLVED → N (MIN)both children solved → N SOLVED = min(11, 48) = 11
19N SOLVED → Root (MAX)only child → Root SOLVED = 11. Done

The key structural fact: N and both SQ nodes are only children, so SSS* simply walks the chain — left line first (A at step 5, B at step 7), across to the right line once N demands its second subtree (steps 10–15), then back up. Nothing is ever pruned because no MAX node ever has a second branch sitting in OPEN when it resolves. Every leaf is assigned SOLVED: A, B, C, D ✓

Interactive trace — watch the queue walk the chain (squares = MAX, circles = MIN):

1 / 9
Root (LIVE MAX) → insert its child. OPEN = { N(∞) }
processing nowwaiting in OPENSOLVEDnot yet reached

3.2 — Pruned → NIL

A MAX-ancestor purge happens when a MAX node is solved while siblings still sit in OPEN. Here: SQ1 and SQ2 are only children; N is an only child. Nobody gets purged → NIL ✓

Why nothing is pruned

The tree is a single chain of only-children — there are no alternative branches for a MAX node to discard. Compare with the FN paper's version of this question, where the root has two MIN children and the cheap left line lets MAX purge the other side.

Tricks & Tips

Answers: 3.1 A,B,C,D · 3.2 NIL