olve nnhtml> CS Challenge 13, Sudoku Solver

CS Challenge 13, Sudoku Solver


Spørgsmål A

En ekstra Sudoku blev fundet i New York Times: Kompleksiteterne for eksemplerne er: En grov øvre grænse for kompleksiteten er selvfølgelig:

981 = 196.627.050.475.552.913.618.075.908.526.912.116.283.103.450.944.214.766.927.315.415.537.966.391.196.809

Mange af disse vil dog hurtigt stoppe med konflikter, så en mere nøjagtigt grænse er antallet af lovlige Sudokuer, hvilket faktisk vides at være:

6.670.903.752.021.072.936.960

Den mindste øvre grænse er ikke kendt.


Spørgsmål B

Metoden legal undersøger, om et givet tal kan placeres i et gicet felt, uden at overtræ de tre regler for Sudokuer. Metoden zoom finder det første blanke felt regnet fra øvenste venstre hjørne. Metoden solve ser først om Sudokuen er løst, og ellers zoomer den ind på første blanke felt. Her prøves tallene fra 1 til 9. Hvis de lovligt kan placeres i det blanke felt. så prøves dette, og solve kaldes rekursivt for at løse resten af Sudokuen. Hvis ingen tal kan give en løning, gøres feltet blankt igen.

Spørgsmål C

I stedet for at zoome ind på det første blanke felt, kan man gå efter det felt, der giver flest nye begænsninger på de andre rækker, søjler og kvadrater. Dette vil langt hurtigere fremprovokere en konflikt, hvis en sådan kan opstå. Den modificerede kode kan ses i Sudoku.java.

Kompleksiteterne ændres nu til:

AI Escargot er uimponeret af heurestikken, men ellers er der forbedringer overalt.

Løsningen til rekursionsdræberen er: