algoritam sudoku

6
Algoritam za rešavanje sudoku ukrštenica J.F. Kruk profesor računarskih nauka na Univerzitetu Vindrop, Zahvaljujem John Hohn, Kathryn Cooper, David Gill, i Libby Neely na čitanju mog rada . Takođe, hvala i Loretta Nethercot koja mi je poklonila prve dve Sudoku knjige na Božić 2005., i na moj sedamdeseti rođendan 2007. Sudoku je postao strast mnogih ljudi širom sveta u poslednjih nekoliko godina. Zanimljiva činjenica o Sudoku je da je trivijalan za rešavanje. Razlog za to je jednostavan: postoji algoritam za rešavanje Sudoku ukrštenice. Algoritam je baziran na na pretraživanju stabla unazad dok se rešenje ne nađe. Ako je sve što jedna osoba treba da uradi da sedne na svoj kućni kompjuter, ukuca brojeve koje je dobio u ukrštenici i pogleda rešenje kompjuterskog programa, opravdano se možemo pitati zašto bi se neka osoba gnjavila u boreći se da reši Sudoku ukrštenicu. Razlog je u tome što ljudi uživaju da se bore olovkom i papirom van sudoku rešenja. Hercberg i Murti (2007.) daju dva rayloga za uživanje u toj borbi: Prvi, to što je dovoljno teško da predstavlja ozbiljan izazov za sve koji pokušavaju rešiti ukrštenicu. Drugi, jednostavnim skeniranjem redova i kolona jednostavno uneti „nedostajuće boje“ i to daje neki podsticaj da istraje. Definicija Sudoku table Sudoku se igra na tabli 9x9. Ima osamdeset jedno polje na tabli, koja je podeljena u devet 3x3 podtabli koje se ne preklapaju. Te podtable nazivamo kutijama i one su označene brojevima od 1 do 9 i poređane u rastućen redosledu od gornjeg levog ugla table, kao što je prikazano na slici 1.

Upload: lena-petrov

Post on 21-Oct-2015

202 views

Category:

Documents


7 download

DESCRIPTION

sudoku

TRANSCRIPT

Page 1: Algoritam Sudoku

Algoritam za rešavanje sudoku ukrštenica

J.F. Kruk profesor računarskih nauka na Univerzitetu Vindrop,

Zahvaljujem John Hohn, Kathryn Cooper, David Gill, iLibby Neely na čitanju mog rada . Takođe, hvala i LorettaNethercot koja mi je poklonila prve dve Sudoku knjige na Božić 2005., i na moj sedamdeseti rođendan 2007.

Sudoku je postao strast mnogih ljudi širom sveta u poslednjih nekoliko godina. Zanimljiva činjenica o Sudoku je da je trivijalan za rešavanje. Razlog za to je jednostavan: postoji algoritam za rešavanje Sudoku ukrštenice. Algoritam je baziran na na pretraživanju stabla unazad dok se rešenje ne nađe.

Ako je sve što jedna osoba treba da uradi da sedne na svoj kućni kompjuter, ukuca brojeve koje je dobio u ukrštenici i pogleda rešenje kompjuterskog programa, opravdano se možemo pitati zašto bi se neka osoba gnjavila u boreći se da reši Sudoku ukrštenicu. Razlog je u tome što ljudi uživaju da se bore olovkom i papirom van sudoku rešenja. Hercberg i Murti (2007.) daju dva rayloga za uživanje u toj borbi:Prvi, to što je dovoljno teško da predstavlja ozbiljan izazov za sve koji pokušavaju rešiti ukrštenicu. Drugi, jednostavnim skeniranjem redova i kolona jednostavno uneti „nedostajuće boje“ i to daje neki podsticaj da istraje.

Definicija Sudoku table

Sudoku se igra na tabli 9x9. Ima osamdeset jedno polje na tabli, koja je podeljena u devet 3x3 podtabli koje se ne preklapaju. Te podtable nazivamo kutijama i one su označene brojevima od 1 do 9 i poređane u rastućen redosledu od gornjeg levog ugla table, kao što je prikazano na slici 1.

Page 2: Algoritam Sudoku

Slika 1. Sudoku tablaU notaciji za određivanje pojedinačnih ćelija na tabli je dat broj vrste praćen brojem kolone. Na primer notacija c(6,7) – gde c označava ćeliju- označava čeliju na preseku šeste vrste i sedme kolone.

U teoriji koja se razvija u sledećem odeljku koristi se nadaleko poznata teorija mactching numbers across cells(pogađanje brojeva kroz ćelije?). Različiti autori, shodno svojim namerama, to pogađanje brojeva nazivaju različito. Na primer, Šeldon(2006.) naziva ih partnerima, dok Mefam(2005.) naziva konceptom deljenja brojeva. Ovde ćemo koristiti naziv preemptive sets, koji je precizniji sa matematičke tačke gledišta. Teorija razvijena je ovde odnosi se na Sudoku table svih veličina.

Sudoku table mogu se podeliti u regularne i neregularne table. Formula za regularne Sudoku table je: Neka m označava širinu i visinu od Sudoku podtable, gde je m>=2. Veličina Sudoku table je onda mxm. Veličine regularnih podtabli i tabli su date za nekolike vrednosti m u sledećoj tabeli:

Tabela 1. (Prva kolona predstavlja širinu i visinu podtable, druga širinu i visinu table, a treća broj ćelija na tabli ) .

Najčešća neregularna Sudoku tabla je 6x6, koja se sastoji od šest nepreklapajućih 2x3 podtabli. Časopis USA Today objavljuje 6x6 ukrštenice redovno.

Preemptive Sets i teorija popunjenosti

Page 3: Algoritam Sudoku

Najvažniji pojedinačni alat za rešavanje Sudoku ukrštenice bazira se na definiciji rešenja Sudoku ukrštenice.

Definicija 1 (Rešenje Sudoku ukrštenice). Rešenje Sudoku ukrštenice zahteva da da svaka vrsta, kolona i kutija sadrži sve brojeve iz skupa [1,2,…,9] i da je svaka ćelija zauzeta jednim i samo jednim brojem.

Ova definicija implicira da nijedan red, kolona ili kutija nema ni jedan broj koji se ponavlja. Primer sudoku ukrštenice dat je na slici 2. Teže ukrštenice se jedino mogu efikasno rešiti upisivanjem u prazne ćelije svih mogućih brojeva koji mogu zauzeti ćeliju. Ovaj spisak mogućih brojeva za svaku ćeliju zove se markiranje (označavanje) ćelije. Označavanje ukrštenice sa slike 2 prikazano je na slici 3.

Slika 2. Primer Sudoku ukrštenice

Page 4: Algoritam Sudoku

Slika 3 Označena Sudoku ukrštenica sa slike 2

Sada definišemo preemptive set, što je primarni alat za rešavanje Sudoku ukrštenice do tačke 1 gde je rešenje pronađeno ili do tačke 2 gde se zahteva nastavak i nasumično odabira jedan od dva ili više brojeva iz skupa označenih brojeva za praznu ćeliju.

Definicija 2 (Preemptive sets) Preemptive set se sastoji od brojeva iz skupa [1,2,...,9] i veličina seta je m, gde je m: 2<= м<= 9, čiji su brojevi potencijalni “stanari”, ćelije m ekskluzivno, gde ekskluzivno znači da nema ni jedan broj u skupu [1, 2, ... , 9] osim članova preemptive seta koji bi bili potencijalni “stanari” te ćelije..Preemptive set je obeležen sa:{[n1,n2,…,nm],[c(i1,j1), c(i2,j2),…,c(im,jm)]},gde je [n1,n2,…nm], 1<=ni<=9 za i=1,2,…,m, označava skup brojeva u preemptive setu i[c(i1,j1), c(i2,j2),…,c(im,jm) označava skup m ćelija gde se skup [n1,n2,…nm] i podskupovi istog ekskluzivno prisutni.

Definicija 3 (Rang preemptive seta) Rang preemptive seta je vrsta, kolona ili kutija u kojoj su sve ćelije preemptive seta locirane. Gde je m+ 2 ili 3, rang može biti jedan od skupova [vrsta, kutija] ili [kolona, kutija].

Opis nekog preemptive seta je skup od m različitih brojeva iz skupa[1, 2,. . . , 9] i skup od m ćelija ekskluzivno zauzetih sa m brojeva, ili podskup

Page 5: Algoritam Sudoku

istog, Sa osobinom da je raspodela m brojeva širom m ćelija nije poznata u vreme kada je preemptive set otkriven, Raspodela m brojeva u m ćelija znači napredak u rešavanju Sudoku ukrštenice.

Slika 4. Kutija sa preemptive setom veličine 4

Primer preemptive seta je prikazan na slici 4., gde su veliki brojevi – brojevi dobijeni u ukrštenici, a lista malih brojeva u donjem desnog uglu svake ćelije su označeni brojevi. Na slici 4 možemo da posmatramo preemptive set {[3, 4, 5, 9], [C (7, 1), C (7, 2), C (8, 3), C (9, 3)]}, koji je veličine 4, a preemptive je četvorostruk, u kutiji na levoj strani.