10-step DP walkthrough với candidate comparison. ←→ nav.
Step 1 / 10
STEP 1 — INITIAL
$N = 5$ hòn đá. $h = [10, 30, 40, 20, 50]$. Tìm $\text{dp}[N]$ = chi phí nhỏ nhất tới đá cuối.
$\text{dp}[1] = 0$ (ếch bắt đầu ở đá 1, chưa tốn chi phí).
Từ đá 2 chỉ có thể đến từ đá 1. Cost = $|30 - 10| = 20$.
Chỉ 1 option → $\text{dp}[2] = 20$.
Từ đá 3: (a) từ đá 2, tổng = $20 + 10 = 30$; (b) từ đá 1, tổng = $0 + 30 = 30$. Tie.
Cả 2 đều bằng 30. Pick option từ đá 2 (quy ước predecessor gần hơn). $\text{dp}[3] = 30$.
Từ đá 4: (a) từ đá 3, total = $30+20=50$; (b) từ đá 2, total = $20+10=30$.
Nhảy xa hơn (từ đá 2) rẻ hơn! $\text{dp}[4] = 30$.
Từ đá 5: (a) từ đá 4, total = $30+30=60$; (b) từ đá 3, total = $30+10=40$. $\text{dp}[5] = 40$.
Traceback: $5 \leftarrow 3 \leftarrow 1$. Đường tối ưu $1 \to 3 \to 5$ với chi phí $30 + 10 = 40$.
Notes
Candidate arrows: cung curve từ source cell → target cell với label = total cost.
Ở step "candidates", cả 2 arrow visible và có màu xám (đang compare).
Ở step "commit", winner thành xanh + bold, loser fade opacity.
State persistence: Scriba cumulative semantics. Step 4 commit dp[2]=20 → cell
xanh lá + text "20". Cho tới step cuối cell đó vẫn xanh.
Traceback: step 10 recolor stones[0], stones[2], stones[4] và dp[0], dp[2], dp[4]
thành path (xanh dương). Đây là đường 1→3→5.
Cái Scriba không làm: không có frog icon, không có bar chart cho heights,
không có parabola motion. Nếu bạn cần những cái đó → dùng Manim hoặc custom SVG.