Color the map so adjacent regions differ. Pick the most-constrained region (MRV), try a color, forward-check (shrink neighbor domains), and backtrack on a wipeout.
≠ CSP).
MRV = pick the variable with the fewest remaining values (fail-first). Forward checking = remove the chosen color from unassigned neighbors; an empty domain (wipeout) forces a backtrack. See junior.md and middle.md.