univerzita palackÉho v olomouci pŘÍrodovĚdeckÁ …obsah: Úvod 6 1 sudoku 7 1.1 Úvod k sudoku...

65
UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ FAKULTA KATEDRA MATEMATICKÉ ANALÝZY A APLIKACÍ MATEMATIKY DIPLOMOVÁ PRÁCE Matematika Sudoku Vedoucí diplomové práce: Vypracovala: RNDr. Tomáš Fürst, Ph.D. Bc. Lucie Pešková Rok odevzdání: 2011 AME, II. ročník

Upload: others

Post on 02-Feb-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ FAKULTA KATEDRA MATEMATICKÉ ANALÝZY A APLIKACÍ MATEMATIKY

DIPLOMOVÁ PRÁCE

Matematika Sudoku

Vedoucí diplomové práce: Vypracovala:

RNDr. Tomáš Fürst, Ph.D. Bc. Lucie Pešková

Rok odevzdání: 2011 AME, II. ročník

Page 2: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 2 -

Prohlášení

Prohlašuji, že jsem diplomovou práci zpracovala samostatně pod vedením pana

Tomáše Fürsta a všechny použité zdroje jsem uvedla.

V Olomouci dne 30. března 2011

Page 3: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 3 -

Poděkování

Ráda bych na tomto místě poděkovala svému vedoucímu diplomové práce panu

Tomáši Fürstovi za odbornou pomoc, připomínky a hlavně čas, který mi při konzultacích

věnoval. Dále bych chtěla poděkovat mé rodině, která mě při studiu vždy podporovala.

Page 4: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 4 -

Obsah: Úvod 6

1 Sudoku 7

1.1 Úvod k Sudoku 7

1.2 Historie Sudoku 7

1.3 Magické čtverce 8

1.4 Latinské čtverce 9

1.5 Princip Sudoku 12

1.6 Terminologie 13

1.7 Popularita Sudoku 16

1.8 Varianty Sudoku 18

1.8.1 Sudoku s nápovědou (neboli Number Place Sudoku) 18

1.8.2 Klasické Sudoku (neboli Classic Sudoku) 19

1.8.3 X Sudoku (neboli Diagonal Sudoku) 19

1.8.4 Sudá/Lichá Sudoku (neboli Odd/Even Sudoku) 19

1.8.5 Sudoku s netypickými oblastmi (neboli Extra-Regions Sudoku) 20

1.8.6 Menší/Větší Sudoku (neboli Sudoku < >) 20

1.8.7 Šipkové Sudoku (neboli Arrow Sudoku) 20

1.8.8 Početní Sudoku (neboli Calcudoku) 21

1.8.9 Kruhové Sudoku (neboli Circle Sudoku) 21

1.8.10 Samurajské Sudoku (neboli Samurai Sudoku) 21

1.9 Matematika Sudoku 22

1.9.1 Všechny možnosti Sudoku 22

1.9.2 Počet vyplněných polí v Sudoku 25

1.10 Metody pro řešení Sudoku 26

1.10.1 Metody určující přímo čísla 27

1.10.1.1 Jediné ve skupině 27

1.10.1.2 Jediná možnost 28

1.10.2 Metody omezující počet kandidátů 29

1.10.2.1 Průsečíky skupin 29

1.10.2.2 Holé množiny 31

1.10.2.3 Zobecněné dvojice 33

Page 5: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 5 -

1.10.2.4 XY – křížení 38

1.10.2.5 Vedoucí prvek 39

1.10.2.6 Prázdný čtverec 41

2 MATLAB 43

2.1 Magické čtverce v MATLABu 43

2.2 Latinské čtverce v MATLABu 48

2.2.1 Vytvoření latinského čtverce pomocí magického čtverce 48

2.2.2 Vytvoření latinského čtverce pomocí rekurzivního algoritmu 49

2.3 Algoritmy řešící Sudoku 53

2.4 Algoritmy vytvářející zadání Sudoku 57

Závěr 62

Zdroje 63

Page 6: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 6 -

Úvod

Cílem mé diplomové práce je seznámit čtenáře s dnes velmi populární hrou

Sudoku. A to hned ze dvou pohledů.

První pohled a také první kapitola se bude zabývat hrou samotnou, kdy se kouknu

na její historii, s tím souvisejí magické a latinské čtverce. Dále vysvětlím princip této hry a

ukážu nějaké méně známé varianty Sudoku. Velkou část této kapitoly budu věnovat

souvislosti matematiky a Sudoku a to ze dvou pohledů. První pohled se bude zabývat tím,

kolik je všech možností Sudoku a druhý pohled, kolik musí být předvylněno číslic

v zadání, aby bylo Sudoku řešitelné. A v závěru této kapitoly se pokusím vysvětlit různé

metody pro řešení, které ukážu názorně na příkladech, aby bylo čtenáři jasné, jak Sudoku

luštit a sám zvládl vyluštit jakékoliv zadání.

Druhý pohled a zároveň druhá kapitola se podívá na Sudoku z hlediska

programátorského. Také krátce seznámím čtenáře s matematickým programem MATLAB,

ve kterém budu všechno vytvářet. Prvně se opět podívám na magické a latinské čtverce a

jak je lze vytvořit v MATLABu. Dále se pokusím vytvořit algoritmus, který bude jakékoliv

Sudoku řešit a v případě, že bude více správných řešení, tak aby to poznal a vypsal je. Pak

se také pokusím vytvořit algoritmus, který bude Sudoku zadávat, aby si čtenář mohl

kdykoliv nějaké zadání vygenerovat a poté si jej vyřešit a zkontrolovat.

Page 7: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 7 -

1 Sudoku

1.1 Úvod k Sudoku

Sudoku je bezesporu jedna z nejoblíbenějších logických her, kterou hrají denně

statisíce lidí po celém světě. Jde totiž o jedinečný hlavolam, který vyplňují lidé všech

věkových kategorií bez ohledu na vzdělání a společenské postavení. Krása Sudoku tkví

v jeho „jednoduchosti“ a téměř nevyčerpatelném množství herních kombinací. Sudoku

zcela potvrzuje starou a dobře známou poučku o tom, že v jednoduchosti je krása.

K luštění totiž zcela postačí papír a tužka.

Rébus Sudoku dnes najdeme dokonce i v některých světových denících. Píší se

o něm knihy a spousta lidí si nedovede představit, že by tuto hru nenašla ve svém

mobilním telefonu. Novozélanďan Wayne Gould řekl: „Nejsem si jistý, proč je Sudoku tak

návyková. Akorát vím, že to tak je!“ [18].

Číselné rébusy založené na doplňování čísel zná lidstvo už odpradávna. Nejprve to

byly magické čtverce, které vysvětlím později, jejichž původ sahá přinejmenším do roku

2000 před naším letopočtem. V 18. Století to byly populární rébusy švýcarského

matematika a astronoma Leonharda Eulera, o kterých se také zmíním později [9].

1.2 Historie Sudoku

Sudoku je logická hra, která vznikla v Americe. Sudoku v podobě, jak jej známe

dnes, vytvořil v roce 1979 Howard Garns a publikoval jej pod názvem „Number Place“

v časopise Dell Pencil Puzzle & Games [9] jako jednu z mnoha logických úloh určenou

pro zábavu. A právě z tohoto časopisu ji o sedm let později převzali a vydali japonští

vydavatelé magazínu Nikoli, kde Sudoku vycházelo pod názvem „Súdži wa dokušin ni

kagiru“, což velmi volně přeloženo do češtiny znamená „vlož každé číslo na určené

místo“. A právě z tohoto názvu vznikl dnešní název Sudoku. Kromě dnešního názvu

Sudoku se také objevily názvy jako „Su Doku“, nebo „Nanpure“ [10].

Page 8: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 8 -

Ale až v roce 2005 se Sudoku stalo mezinárodním hitem a zasloužil se o to

Novozélanďan Wayne Gould, který vymyslel speciální počítačový program, který dokázal

vygenerovat obrovské množství mřížek s předvyplněnými některými číslicemi. Tento

program bezplatně poskytnul londýnskému listu The Times, který začal pravidelně tento

rébus vydávat jako přílohu ve svých novinách. Ostatní země nechtěly zůstat pozadu, a

proto dnes Sudoku můžete najít v mnoha novinách a časopisech [18].

1.3 Magické čtverce

V úvodu jsem se zmínila o magických čtvercích, jejichž původ sahá přinejmenším

do roku 2000 před naším letopočtem. Podle čínské legendy zemi tehdy zachvátila potopa.

Přívaly vody neustávaly, ačkoli lidé bez přestání konali oběti. Pak si jedno dítě všimlo,

že se z řeky Lo vynořila želva, na jejímž hřbetě byly tečky odpovídající číslicím 1 až 9.

Byly uspořádány do tří řad a tří sloupců tak, že součtem čísel vodorovně, svisle i šikmo

bylo vždy číslo 15. Tomuto číslu se někdy říká magická konstanta. Lidé pochopili, že musí

vykonat patnáct obětí, jak jim ukázaly číslice. Když tak učinili, vody začaly ustupovat.

První magický čtverec byl podle místa svého původu nazván Lo Šu [9].

Magickým čtvercem se rozumí čtverec, který má n řádků, n sloupců a n2 políček,

do kterých jsou vepsána čísla 1, 2, 3, …, n2 tak, aby součet čísel v každém řádku, sloupci a

na obou úhlopříčkách byl stejný. Což si můžete ověřit na následujícím příkladu:

Magickým číslem se označuje konstantní číslo, které dostaneme součtem

jednotlivých řádků, sloupců a úhlopříček. Toto číslo se dá jednoduše vypočítat podle

následujícího vzorce:

7 12 1 14

2 13 8 11

16 3 10 5

9 6 15 4

Page 9: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 9 -

2)1( 2

nnM pro n 1.

Nejstarším a nejznámějším dokladem o znalosti magických čtverců ve střední

Evropě je mědirytina německého malíře Albrechta Dürera s názvem Melancholie, která se

datuje do roku 1514. Jak si můžete všimnout tento letopočet lze nalézt v posledním řádku

uprostřed. Další zajímavostí je fakt, že magické číslo 34 nedostaneme pouze po součtu

řádků, sloupců a úhlopříček, ale dokonce i po součtu čísel ve čtvercích 2 x 2 a čísel

v rozích čtverce.

Dá se říci, že Sudoku je méně náročnou variantou těchto magických čtverců [12].

1.4 Latinské čtverce

V roce 1783 vymyslel geniální švýcarský matematik, fyzik a astronom

Leonhard Euler nový typ magických čtverců, tzv. latinské čtverce. Jejich název byl

odvozen od písmen latinské abecedy, které byly použity místo čísel. Tyto čtverce se

[13]

Page 10: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 10 -

podobali dnešnímu Sudoku tím, že každé písmeno se mohlo objevit pouze jednou

v každém řádku i sloupci. Dále to budu vysvětlovat na číslech.

Latinským čtvercem se rozumí čtverec, který má n řádků a n sloupců, do kterých

jsou vepsána čísla 1, 2, 3, …, n tak, aby v každém řádku a sloupci bylo právě každé číslo

od 1, …, n [15]. Tak jak je vidět na následujícím obrázku.

Dále Leonhard Euler objevil překvapivou souvislost magických a latinských

čtverců. Odvodil, že když se sestrojí čtverec lichého řádu vhodným způsobem, dostaneme

z něj magický a po úpravě i latinský čtverec. Za vhodný způsob uvažujeme tento postup:

vepíšeme číslo 1 doprostřed prvního řádku. Číslo 2 zapíšeme o jeden řádek výše a o jeden

sloupec doprava. Nad prvním řádkem je poslední řádek a vpravo od posledního sloupce je

první sloupec. Může se stát, že máme napsat číslo na již obsazené pole, v tomto případě

napíšeme dané číslo pod číslo předcházející. Takto postupujeme tak dlouho, dokud čtverec

nemáme celý obsazený [14]. Například magický čtverec 5. Řádu vypadá následovně:

Teď z tohoto magického čtverce uděláme latinský čtverec. To znamená, že v našem

případě budeme vpisovat pouze čísla 1, 2, 3, 4 a 5 ve stejném pořadí jako čísla předtím.

Pak latinský čtverec vypadá následovně.

1 2 3 4

2 3 4 1

3 4 1 2

4 1 2 3

17 24 1 8 15

23 5 7 14 16

4 6 13 20 22

10 12 19 21 3

11 18 25 2 9

Page 11: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 11 -

Sestavit magický čtverce se sudým počtem polí je o něco těžší než u čtverce

s lichým počtem polí. Existuje mnoho metod, jak se dají sestrojit. Ukážu to na čtverci

4 x 4. Začneme tak, že vepíšeme číslo 1 do horního levého rohu. Číslo 2 napravo od čísla

1. Pak následuje trojka a čtverka. Tím je horní řada vyplněná. Do druhé řady vyplňuji

analogicky čísla 5 až 8, do třetí řady čísla 9 až 12 a v poslední řadě 13 až 16. Čtverec

vypadá následovně

Nyní musíme, vyjmou prostřední dvě čísla ve vnějších řádcích a sloupcích. To

znamená v horní řadě čísla 2 a 3, ve spodní řadě čísla 14 a 15, v levém sloupci čísla 5 a 9 a

nakonec v levém sloupci čísla 8 a 12.

Tyto dvojice čísel mezi sebou proházíme. Vždycky v dané dvojici nejprve čísla

mezi sebou prohodíme a prohodíme je z dvojicí naproti. Tzn. Dvojici 2 a 3 mezi sebou

prohodíme na dvojici 3 a 2 a dosadíme do spodní řady místo čísel 14 a 15. To samé

naopak. Do horní řady dosadíme 15 a 14. Analogicky bychom to provedli pro sloupce. A

dostali bychom takový magický čtverec.

2 4 1 3 5

3 5 2 4 1

4 1 3 5 2

5 2 4 1 3

1 3 5 2 4

1 2 3 4

5 6 7 8

9 10 11 12

13 14 15 16

1 15 14 4

12 6 7 9

8 10 11 5

13 3 2 16

Page 12: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 12 -

Leonhard Euler se také zabýval otázkou, zda může šachovnicový kůň postupně

projít všechna pole na šachovnici tak, aby na každé pole vstoupil právě jednou. Na typické

šachovnici 8 x 8 polí existuje obrovské množství řešení. Ale Leonhard Euler objevil jedno

speciální řešení, který vypadá následovně.

Tento čtverec popisuje nejen cestu šachového koně, ale dokonce se jedná

o polomagický čtverec, protože součet řádků i sloupců je roven číslu 260, ale neplatí to

pro úhlopříčky [14]. Až do roku 2003 se matematici snažili najít dokonalý magický čtverec

založený na jezdcových tazích, ale bylo dokázané, že takovýto čtverec nemůže existovat.

Pokud by ale bylo možné šachovnici zvětšit na 12 x 12 a větší počet polí, který by byl

navíc dělitelný 4 tzn. 12 x 12, 16 x 16, 20 x 20 atd. je možné dokonalý magický čtverec

najít [18].

1.5 Princip Sudoku

Nyní vysvětlím pravidla klasického Sudoku. Na začátku máme hrací plochu, která

je rozdělena na 9 x 9 čtverečků. Zároveň čtvercový hrací plán je rozdělen na 9 menších

čtverců (3 x 3). Každé pole má tedy 9 čtverečků (3 x 3). V některých čtverečcích jsou

předvyplněna čísla z intervalu <1 – 9> (o jejich zadávání se zmíním později). Úkolem

hráče je doplnit tabulku tak, aby v každém sloupci, řádku i malém čtverci (3 x 3) byla

1 48 31 50 33 16 63 18

30 51 46 3 62 19 14 35

47 2 49 32 15 34 17 64

52 29 4 45 20 61 36 13

5 44 25 56 9 40 21 60

28 53 8 41 24 57 12 37

43 6 55 26 39 10 59 22

54 27 42 7 58 23 38 11

Page 13: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 13 -

všechna čísla od 1 do 9 (libovolně poskládána, žádné se nesmí opakovat). Na následujícím

obrázku můžete vidět příklad, jak může být Sudoku zadaná.

1.6 Terminologie

Zde vysvětlím některé důležité pojmy, které dále budu používat a které nemusí být

vždy jasné.

Pole

Polem myslím každé z 81 míst čtvercové sítě, kam ve hře Sudoku zapisujeme čísla.

Souřadnice

Jednotlivá pole budu označovat dvojicí čísel v závorkách (řádek, sloupec), počítáno

shora dolů a zleva doprava.

1 9 8 7 2 6

3 2 1

1 4 5 2 1 8 9

3 2 6

9 3 8 7 1

5 8 6 9

Page 14: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 14 -

Řádek

Odpovídá intuitivně chápanému pojmu řádku.

Sloupec

Odpovídá intuitivně chápanému pojmu sloupec.

Blok

Blokem myslím skupinu 3 x 3 polí v silně orámovaném čtverci. Na hracím poli je

celkem 9 takových bloků a budeme je označovat po řádcích čísly 1-9 – viz obrázek.

Skupina

Skupinou rozumím kterýkoliv z pojmů řádek, sloupec nebo blok.

Kandidát

Pokud je více možností, jaké číslo lze na pole umístit, mluvím o kandidátech. Dále

budu kandidáty zobrazovat tak, jak je na obrázku (malými modrými čísly v horní části

pole).

Page 15: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 15 -

479 1479 14579 489 19 1489 12457 6 123458

9

469 8 2 7 169 3 145 15 1459

4679 3 1479 2 169 5 147 178 1489

2478 47 478 4568 567 4678 3 9 124568

1 5 6 3489 379 4789 247 278 248

4789 479 34789 1 35679 2 4567 578 4568

469 1469 149 3569 123569 169 8 1235 7

5 1679 1789 369 4 1679 126 123 1236

3 2 17 56 8 167 9 4 156

Vázaná dvojice

Při řešení úloh budu v celé řadě metod používat pojem „vázaná dvojice“. Tím

myslím situace, kdy ve skupině (řádku, sloupci nebo bloku) se vyskytnou právě dvě pole,

obsahující nějaké konkrétní číslo jako kandidáta.

Jejich význam tkví v tom, že vždy musí platit buď jeden, nebo druhý prvek

z dvojice. Ukážu tuto situaci na konkrétním příkladě na následujícím obrázku (vybrala

jsem jen nějaké vázané dvojice, protože jich existuje celá řada).

Např. číslo 8 se v konečném řešení objeví buď na pozici (1,4) nebo na pozici (1,6),

nikde jinde se nemůže ve druhém bloku objevit. To samé platí pro další dvě označené

vázané dvojice. Tzn. číslo 6 se v 7. řádku objeví na pozici (6,7) nebo (8,7). A poslední

označená dvojice čísla 7 označuje, že se číslo 7 objeví v posledním řádku na pozici (9,3)

nebo na pozici (9,6).

Page 16: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 16 -

1.7 Popularita Sudoku

Velmi populárním se Sudoku stalo na konci roku 2004 ve Velké Británii a postupně

se rozšiřuje do celé Evropy. Rychlost, jakou se Sudoku šíří světem je způsobeno hlavně

internetem, protože dnes existuje okolo 30 miliónů internetových stránek, které se

o Sudoku alespoň zmiňují. Ale podstatnou úlohu sehrála i média, která tento rébus začala

ve velkém tisknout do mnoha novin a časopisů. Sudoku bývá často označováno jako „hra

roku 2005“ či „nejpopulárnější hlavolam současnosti“ [11].

Řešení Sudoku je věcí logického myšlení ne matematickou úlohou, jak se může

na první pohled zdát. A na oblibě ji přidává i fakt, že není závislá na žádném jazyce,

z čehož vyplývá, že nevyžaduje žádnou slovní zásobu ani žádné vědomosti.

Page 17: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 17 -

Číslice v řádku, sloupci a blocích jsou všude ve světě stejné, proto je možné je

nahradit jakýmikoliv devíti symboly. Sudoku se dá hrát například s písmenky, obrázky

nebo barvami. Rovněž počet polí je měnitelný. Pro děti je možné mít Sudoku jen třeba

o 4 x 4 polích a naopak pro profesionály a velmi dobré hráče třeba Sudoku o rozměrech

16 x 16 polí.

Na obrázkcích jsou nějaké ukázky.

Další výhodou může být fakt, že existuje obrovské množství různých zadání. Pokud

se totiž na Sudoku podíváme z matematického hlediska, tak nám vyjde, že je přesně

6 670 903 752 021 072 936 960 (přibližně 6,67 triliard) možností, ke kterým se vrátím

ještě později. Jinak řečeno. Za předpokladu, že byste začali luštit v den svého narození a

dožili se stovky let, tak byste museli každou sekundu vyluštit přibližně 2 113 881 838 930

Sudoku což je nemožné [5].

O popularitě Sudoku svědčí i to, že se v březnu roku 2006 konalo v italském městě

Lucca první oficiální mistrovství světa v Sudoku, které překvapivě vyhrála Češka Jana

Tylová. Když porazila všech 87 soupeřů z 22 zemí světa. Druhé mistrovství světa se

konalo od 28. 3. do 1. 4. 2007 v Praze a mistrem světa se stal Američan Thomas Snyder

[11].

Vůbec poprvé na světě vypravily České dráhy 10. 11. 2007 na koleje „sudokuvlak“.

Šlo o pendolino na trase Praha-Brno a zpět. V rámci společné akce železnice, Českého

rozhlasu Online a knihkupectví Kanzelsberger tehdy proběhl dětský turnaj v Sudoku [11].

Page 18: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 18 -

Někteří dokonce hovoří o tom, že tento hlavolam se stal stejně populárním jako

před lety Rubikova kostka, se kterou má Sudoku mnoho společného. Protože kostka se dá

otáčet třemi směry a každá z její strany se skládá z 3 x 3 čtverečků. Sudoku má taky

3 dimenze: řádky, sloupce a bloky. V Sudoku je také 3 x 3 čtverců a každý z nich má 3 x 3

políček.

Jelikož je omezený počet postupů při řešení, dá se očekávat, že této hře časem

odvane popularita.

1.8 Varianty Sudoku [8]

Bylo vymyšleno obrovské množství různých Sudoku. A tady jsou ukázky jen

některých z nich:

1.8.1 Sudoku s nápovědou (neboli Number

Place Sudoku)

Takto vypadalo původní zadání Sudoku,

které vymyslel Howard Garns. Pravidla pro řešení

jsou stejná jako u normální Sudoku, jen je tu malá

nápověda na začátek. Pod tabulkou jsou uvedena

čísla, která jsou potřeba doplnit do kroužků

v zadání. Čísla můžeme doplňovat v libovolném

pořadí, protože do každého kroužku padne pouze 1

číslo z nabídky.

1 9 8 7

2 6

3 2 1

1 4 5

2 1 8 9

3 2 6

9 3 8

7 1

5 8 6 9

1 2 4 9

Page 19: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 19 -

1.8.2 Klasické Sudoku (neboli Classic Sudoku)

Klasické Sudoku, jak je znáte z většiny

novin a časopisů.

1.8.3 X Sudoku (neboli Diagonal Sudoku)

Liší se od klasického Sudoku tím, že se

čísla 1 – 9 musí objevit i na diagonále.

1.8.4 Sudá/Lichá Sudoku (neboli Odd/Even

Sudoku)

Pravidla jsou podobná jako při klasickém

Sudoku jen s tím rozdílem, že na šedých polích

můžou být jen sudá čísla a na bílých polích jen lichá

čísla.

1 9 8 7

2 6

3 2 1

1 4 5

2 1 8 9

3 2 6

9 3 8

7 1

5 8 6 9

1 6

2 9 4 7

3 2

7 6 5

5 8 7

7 5

5 9 1 8

8 9

3 4 8

7

4 2 6 9

3 7 9

6 9 8 5

3 8

7 4 1

7 8 9 4

8 3 5

Page 20: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 20 -

1.8.5 Sudoku s netypickými oblastmi (neboli

Extra-Regions Sudoku)

Čísla od 1 do 9 se navíc objeví i na stejně

barevných polích.

1.8.6 Menší/Větší Sudoku (neboli Sudoku

< >)

U tohoto typu Sudoku musí platit

matematická znaménka > (menší než) a < (větší

než) pro doplněná čísla podle konkrétního zadání.

1.8.7 Šipkové Sudoku (neboli Arrow Sudoku)

Další velice zajímavá možnost Sudoku.

Princip spočívá v tom, že číslo, které se objeví

v kolečku, se musí rovnat součtu všech čísel,

kterými prochází daná šipka za dodržení všech

základních pravidel.

Page 21: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 21 -

1.8.8 Početní Sudoku (neboli Calcudoku)

U tohoto Sudoku doplňujeme jen číslice od 1 do

6 a musí platit, že v každém řádku a sloupci se vyskytne

právě jedna z těchto číslic. A druhou podmínkou je,

že v označeném bloku se musí objevit taková čísla, aby

součet, rozdíl, součin či podíl se rovnal číslu v zadání.

U podílu vždycky dělíme menší číslo od většího.

Např. v pravém horním rohu, kde vidíme

matematickou operaci 6+ pro 2 políčka, se mohou objevit tyto kombinace čísel: 1+5, 2+4.

1.8.9 Kruhové Sudoku (neboli Circle

Sudoku)

Do tohoto Sudoku doplňujeme čísla

od 1 do 12. Musí platit, že v každém ze 6 kruhů

se musí objevit každé číslo jen jednou. A

v barevně odlišných kruhových výsečích se

rovněž musí objevit všechna čísla 1 – 12.

1.8.10 Samurajské Sudoku (neboli

Samurai Sudoku)

Toto Samurajské Sudoku se liší

od klasického Sudoku jen tím, že je zde

spojeno více klasických Sudoku do jedné

větší Sudoku.

Page 22: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 22 -

1.9 Matematika Sudoku

Sudoku je velmi zajímavá nejen pro luštitele, ale také pro matematiky.

Matematickou analýzu Sudoku můžeme rozdělit do dvou oblastí. První z nich se zaměřuje

na počet všech možných Sudoku a druhá se zaměřuje na počet vyplněných polí.

1.9.1 Všechny možnosti Sudoku

Prvně si musíme uvědomit, že Sudoku je zvláštním případem latinských čtverců,

které byly vysvětleny výše. Výpočet latinských čtverců je sám o sobě složitým úkolem,

protože není znám žádný obecný vzorec. Je známo, že počet latinských čtverců rozměru

9 x 9 je

N1 = 5 524 751 496 156 892 842 531 225 600 2710525,5

V Sudoku jsou další omezující podmínky, takže toto číslo bude o něco menší a to

přesně

N0 = 6 670 903 752 021 072 936 960 2110671,6

všech možností [16].

Nyní naznačím, jak lze k tomuto číslu dojít. Budu uvažovat blok 1 v tomto tvaru:

Tato úvaha mi sníží počet možností o 9! = 362 880. Dostáváme

N1 = ,10838,1!9

N 160 což je počet možností Sudoku, které mají blok 1 v uvažovaném

tvaru.

1 2 3

4 5 6

7 8 9

Page 23: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 23 -

Teď musím zvážit všechny možné způsoby jak vyplnit blok 2 a blok 3. Začnu

prvním řádkem bloku 2 a 3. Je jasné, že tento řádek budou tvořit čísla z 2. a 3. řádku bloku

1 v libovolných kombinacích. Nyní vypíši všechny možné trojice čísel pro první řádek 2. a

3. bloku, pro které platí, že číslice v trojici jdou vzestupně.

{4, 5, 6}{7, 8, 9} {5, 6, 7}{4, 8, 9}

{4, 5, 7}{6, 8, 9} {5, 6, 8}{4, 7, 9} {4, 5, 8}{6, 7, 9} {5, 6, 9}{4, 7, 8} {4, 5, 9}{6, 7, 8} {5, 7, 8}{4, 6, 9} {4, 6, 7}{5, 8, 9} {5, 7, 9}{4, 6, 8} {4, 6, 8}{5, 7, 9} {5, 8, 9}{4, 6, 7} {4, 6, 9}{5, 7, 8} {6, 7, 8}{4, 5, 9} {4, 7, 8}{5, 6, 9} {6, 7, 9}{4, 5, 8} {4, 7, 9}{5, 6, 8} {6, 8, 9}{4, 5, 7} {4, 8, 9}{5, 6, 7} {7, 8, 9}{4, 5, 6}

Když si teď vezmu nejlehčí možnost, kdy jsou čísla vzestupně, tzn. {4, 5, 6}{7, 8,

9}. Lze lehce ukázat, že trojice čísel {4, 5, 6} i {7, 8, 9} lze napsat v šesti různých

kombinacích.

{4, 5, 6} {4, 6, 5}{5, 4, 6}{5, 6, 4}{6, 4, 5}{6, 5, 4}

{7, 8, 9} {7, 9, 8}{8, 9, 7}{8, 7, 9}{9, 7, 8}{9, 8, 7}

Tzn. 312 93 )(3!2 6 možností kombinací pro doplnění 2. a 3. bloku s trojicí čísel {4, 5,

6} {7, 8, 9}.

Další případy doplnění 2. a 3. bloku, kdy čísla horní řady mohou být v libovolných

kombinacích už jsou složitější, ale stále rychle spočitatelné. Vezmu zase příklad, kdy do 1.

řádku 2. a 3. bloku doplním smíšené trojice {5, 7, 9} a {4, 6, 8}.

Page 24: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 24 -

Do dalších řádků jsem doplnila 1 z mnoha možností, která se tam může objevit a

písmena X, Y a Z jsou doplněna místo číslic 1, 2 a 3. Protože tyto čísla se můžou libovolně

na písmenech umístit. Máme tedy 3 možnosti pro 3 číslice na 6 pozicích. Když to zapíšu

matematicky, tak dostávám: .)!3(3 6 Stejně můžu postupovat i pro dalších 17 polí v bloku

2 a 3. Celkový počet možností vyplnění bloků 2 a 3 při pevně uvažovaném bloku 1 je:

.2612736)!3(56)!3(318)!3(2 666

Vypsat všechny možnosti vyplnění bloku 2 a 3 by nám trvalo strašně dlouho,

abychom pomocí toho mohli spočítat všechny možnosti Sudoku, budeme se proto snažit

toto číslo co nejvíce snížit. Naštěstí existuje hned několik možností.

První možností je obměňování sloupců v bloku 2 a 3. Podobně jako výše, těchto

možností je .7262 2 Snížením celkového čísla dostáváme .3628872

2612736

Ve skutečnosti jsme nevyčerpali ještě úplně všechny možnosti. Protože první blok

uvažujeme pořád stejný. Ale téměř analogicky bychom to mohli udělat i s blokem 1,

že bychom měnili jeho sloupce. Takto bychom znova snížili číslo pro vyplnění bloku 2 a 3

na 2051 možností [16].

Další možností je obměňovat úplně analogicky řádky. Tím se nám sníží možnosti

pro blok 2 a 3 na 416 [16].

Další snížení docílíme tím, když se zaměříme na zdvojená čísla. Ukážu to

na příkladě.

1 2 3 5 7 9 4 6 8 4 5 6 8 X Y 7 9 Z 7 8 9 4 6 Z 5 X Y

Page 25: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 25 -

Když se podívám na dvojici čísel {1,4}, {5,8},{6,9} a {3,7}, tak je vidět,

že ve sloupcích, když tyto čísla proměním, tak se nic nestane.

Při použití tohoto omezení se nám počet sníží jen na 71 možností [16]. Hodně

podobně jako pro blok 2 a 3 bychom mohli postupovat pro blok 4 a 7.

Postup, který jsem popisovala až doteď, se dále znatelně komplikuje, proto ho dále

nebudu uvádět. Zmíním, že na celkový počet všech možností byl vymyšlen počítačový

program Bertramem Felgenhaurem a Frazerem Jarvisem v roce 2005, který dokáže spočítat

všechny možné kombinace, a který je z velké části naprogramován pomocí postupu, který

jsem uváděla [17].

Je známo, že celkový počet všech možných kombinací je

9! 12770426797272 72 6 670 903 752 021 072 936 960 2110671,6 .

[16]

1.9.2 Počet vyplněných polí v Sudoku

Nyní se budu zabývat tím, jaký minimální počet polí musí být předvyplněn, aby

Sudoku bylo řešitelné. Ale nejprve vysvětlím, kdy je Sudoku řešitelné a kdy ne.

Dostáváme dvě možnosti řešení:

řešitelné přímou logickou cestou = jediná možnost řešení

neřešitelné

o více správných řešení

zkouším dosazovat náhodně čísla, protože je nelze dosadit podle

žádných logických pravidel, jen dodržuji základní pravidlo Sudoku,

1 2 3 4 5 8 6 7 9 4 5 6 1 7 9 2 3 8

7 8 9 2 3 6 1 4 5

1 2 3 4 5 8 6 7 9 4 5 6 1 7 9 2 3 8

7 8 9 2 3 6 1 4 5

Page 26: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 26 -

takže se může stát, že do políčka můžu umístit více různých čísel a

dostanu správné řešení

příkladem může být úplně prázdná mřížka, do které doplním

libovolně čísla, aby bylo dodrženo základní pravidlo Sudoku

o špatně předvyplněná čísla

jako příklad může být Sudoku, která bude mít v prvním řádku

předvyplněno dvakrát číslo 1

Je dokázáno, že musí být zadáno minimálně 17 čísel, aby bylo Sudoku řešitelné

s jediným správným řešením [10]. Neznamená to však, že Sudoku, které má vyplněné více

čísel, je jednodušší. Obtížnost záleží na tom, jak jsou čísla rozmístěna a na jejích

vzájemných vazbách, které na první pohled nejsou vidět.

Můžeme tedy rozdělovat Sudoku podle obtížnosti do dvou skupin:

lehké – průměrnému hráči zabere jen pár minut

těžké – průměrnému hráči může trvat i několik desítek minut, než dojde

ke správnému řešení

Je dokázáno, že Sudoku je neřešitelné, pokud nemá zadáno ani jedno číslo

v prvních 3 řadách, i kdyby byly všechny zbývající číslice doplněny. Složité jsou právě ty

úlohy, kde existují prázdné velké plochy, například dva čtverce 3 x 3 naproti sobě

na diagonále. Sudoku, které by v zadání mělo úplně prázdné 3 čtverce 3 x 3, tak by se

nedalo vyluštit logickým postupem.

Dobré Sudoku musí jít vždy vyluštit logicky a ne tak, že tipujeme čísla a jakmile se

dostaneme do slepé uličky, tak číslo vygumujeme a zkoušíme znova [18].

1.10 Metody pro řešení Sudoku

Při řešení lehkých Sudoku si ve většině případů vystačíme se základními metodami

řešení, kterými jsou doplnění jediné možné číslice pro určité pole nebo jediné možné

Page 27: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 27 -

umístění číslice v některém řádku, sloupci či bloku 3 x 3. U těžších úloh již tomu tak není.

Zde je potřeba si pomoci ještě dalšími, složitějšími metodami či technikami řešení.

Metody řešení můžeme rozdělit do dvou oblastí:

metody určující přímo čísla

o jediné ve skupině

o jediná možnost

metody omezující počet kandidátů

o průsečíky skupin

o holé množiny

o zobecněné dvojice

o XY – křížení

o vedoucí prvek

o prázdný čtverec

V následujících kapitolách všechny tyto metody vysvětlím

1.10.1 Metody určující přímo čísla

1.10.1.1 Jediné ve skupině

Tato velmi jednoduchá metoda vychází ze základního pravidla Sudoku, které říká,

že se ve skupině může každé číslo vyskytovat právě jednou. Hledám tedy takové pole,

na které můžu umístit číslo, abych neporušila základní pravidlo.

Tuto metodu objasním na příkladě a to konkrétně pro číslo 1.

Page 28: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 28 -

Na prvním obrázku je výchozí situace. Napravo od něj jsou žlutě vybarvena pole,

na kterých se jednička vyskytuje anebo pole, na které přichází jednička v úvahu. Vidíme,

že v bloku 2, 6 a 7 je vždy pouze jedno pole, kam můžeme jedničku umístit. Když na tyto

pole jedničku umístíme (jak je vidět na obrázku 3), zůstane nám v bloku 9 pouze jedno

pole místo čtyř původních, kam můžeme jedničku vložit. Na posledním obrázku jsou

doplněny všechny jedničky na správných pozicích. Toto je podstata této metody.

1.10.1.2 Jediná možnost

Druhou jednoduchou metodou, která vychází ze základního pravidla Sudoku, a

která umožňuje určit číslo, které má být do pole zapsáno, je metoda „jediná možnost“. Tato

metoda, spočívá v tom, že hledám pole, na které můžu umístit jen jediné číslo, aniž bych

měla v řádku, sloupci či bloku duplikátní číslo. Pro lepší pochopení uvedu názorný příklad.

Page 29: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 29 -

Na obrázku jsou dvě pole vybarvena žlutě. Pokud projdu všechny možnosti, jaké

číslo lze na tyto pole zapsat, zůstane mi pouze jediná možnost pro obě pole a to číslo čtyři.

Na tomto principu funguje celá metoda „jediné možnosti“.

1.10.2 Metody omezující počet kandidátů

1.10.2.1 Průsečíky skupin

Přesněji bych měla psát průsečíky bloku s řádkem nebo sloupcem. Představte si

následující situaci. Budu uvažovat průsečík řádku s blokem. Pole řádku jsou na obrázku

označena zeleně, pole bloku modře a jejich průsečík žlutě. Předpokládám, že se

v průsečíku na žlutě označených polích vyskytují buď dvě, nebo tři stejné číslice jako

kandidáti. Pak mohou nastat dvě situace.

První varianta nastává v případě, pokud se číslo z průsečíku nevyskytuje již nikde

jinde v řádku (na zelených polích), ale vyskytuje se na některých modrých polích v bloku.

Z toho plyne, že nutně musí být číslice umístěna na některém ze žlutých polí (aby byla

Page 30: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 30 -

dodržena podmínka, že se číslice musí na řádku vyskytnout právě jednou) a jednak fakt, že

se tedy nemůže vyskytnout na žádném z modrých polí (aby byla dodržena podmínka, že se

číslice v bloku musí objevit právě jednou) a proto ji můžeme bez obav vyškrtnout ze všech

modrých polí, kde se vyskytuje jako kandidát. Na konkrétním příkladě to bude vypadat

následovně.

2346 1 456 9 56 4 345 8 7 3489 3457 45789 2 1578 47 345 345 6 4689 4567 45678

9

4567 5678 3 2 1 459

3689 367 1 67 4 5 378 237 238

346 34567 2 1 67 8 9 3457 345

489 457 45789 3 2 79 6 457 1458

1246 9 3 8 57 247 1457 24567 1245

7 246 46 45 359 1 3458 23456 23458

5 8 4 47 379 6 1347 9 1234

V průsečíku bloku 4 a řádku 4 je jedna devítka. Vzhledem k tomu, že je to jediná

devítka v řádku, je jasné, že nemůže být na jiné pozici, proto ji můžu z bloku 4 vyškrtnout

ze všech kandidátů, to znamená na pozici (6,1) a (6,3).

Druhá varianta nastává v případě, že se kromě průsečíku vyskytuje číslo ještě

na některém z polí v řádku a nevyskytuje se ve zbylé části bloku (tzn. na modrých polích).

Pokud má být opět dodržena podmínka, že se v bloku má vyskytnout právě jedna číslice,

znamená to, že musí být na některém ze žlutých polí a nemůže tedy být na žádném

ze zelených polí. Bez obav ji můžeme na všech zelených polích v řádku vymazat

ze seznamu kandidátů. Opět ukázka na konkrétním příkladě.

Page 31: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 31 -

2346 1 456 9 56 4 345 8 7 3489 3457 45789 2 1578 47 345 345 6 4689 4567 45678

9

4567 5678 3 2 1 459

3689 367 1 67 4 5 378 237 238

346 34567 2 1 67 8 9 3457 345

489 457 45789 3 2 79 6 457 1458

1246 9 3 8 57 247 1457 24567 1245

7 246 46 45 359 1 3458 23456 23458

5 8 4 47 379 6 1347 9 1234

Je vidět, že v průsečíku bloku 8 a řádku 7 je jedna dvojka. Vzhledem k tomu, že je

to jediná dvojka v bloku, je jasné, že nemůže být na jiné pozici, proto můžu

ze zbytku řádku eliminovat zbylé kandidáty na číslo 2 označené malými modrými čísly.

1.10.2.2 Holé množiny

Tato metoda je velmi jednoduchá a většinou není problém příslušná pole s holou

množinou nalézt. Podstatou metody je situace, kdy se v jedné skupině vyskytuje N polí,

která obsahují právě N kandidátů. Vyjdu z nejjednodušší varianty – dvě pole a dva

kandidáti. Představte si situaci, kdy máme na dvou polích ve skupině právě dva kandidáty,

například A a B. Je jasné, že tato dvě pole se v konečném výsledku podělí o tato dvě čísla,

a tím pádem lze tato dvě čísla vymazat ze všech kandidátů v ostatních polích skupiny.

„Obrazně“ znázorním tuto situaci pro dvě čísla v řádku.

Page 32: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 32 -

Na žlutých polích jsou pouze dva kandidáti A a B a na zbývajících polích v řádku

mohou být libovolní kandidáti (včetně A i B). Z toho vyplývá, že v konečném řešení

nastane právě jedna z těchto dvou možností, žádná jiná:

nebo

To znamená, že na všech zbývajících polích v řádku můžeme případné kandidáty

A a B vymazat.

Stejné pravidlo platí i pro sloupce a bloky. Uvedená situace platí pro 2 čísla

na dvou polích. Ale úplně stejně by to platilo pro 3 čísla na třech polích, 4 čísla na 4 polích

atd. Holé množiny se při řešení vyskytují velmi často, občas i ve velkém množství.

Na dalším obrázku jsem zvýraznila holou množinu čísel 3, 4 a 5 v bloku 3.

2346 1 456 9 56 4 345 8 7 3489 3457 45789 2 1578 47 345 345 6 4689 4567 45678

9

4567 5678 3 2 1 459

3689 367 1 67 4 5 378 237 238

346 34567 2 1 67 8 9 3457 345

489 457 45789 3 2 79 6 457 1458

1246 9 3 8 57 247 1457 24567 1245

7 246 46 45 359 1 3458 23456 23458

5 8 4 47 379 6 1347 9 1234

Po aplikaci metody bych na zbývajícím poli v bloku 3 mohla vymazat kandidáta 4 a

5 a zbylo by tu jen jediné číslo 9, které bych hned mohla dosadit.

Page 33: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 33 -

1.10.2.3 Zobecněné dvojice

Realizace a princip této metody je jednodušší a názornější než většina výše

uvedených metod, vyhledávající příliš konkrétní kombinace. Začneme definicí.

Definice: Předpokládejme, že máme dvě vázané dvojice (d1 a d2) čísla n, které mají svůj

konec ve stejné skupině (řádek, sloupec, blok). Označme A množinu všech polí, na které

vidí začátek dvojice d1 a B množinu všech polí, na které vidí začátek dvojice d2. Jestliže

v průniku A a B se vyskytuje pole, obsahující jako kandidáta číslici n, můžeme ji z tohoto

pole vymazat.

Nyní ukážu, jak to vypadá názorně. Připomínám však, že vázaná dvojice je dvojicí

čísel, které se vyskytují jako kandidáti ve skupině (řádku, sloupci nebo bloku). Na obrázku

jsou znázorněny dvě vázané dvojice nějakého čísla (označeného hvězdičkou). Vazba je

znázorněna modrou čárou. Konec z každé dvojice musí končit podle definice ve stejné

skupině, v našem případě je to blok 7, vybarvený zelenou barvou.

Na následujícím obrázku jsou barevně zobrazena pole, na která „vidí“ začátky

dvojic. U první dvojice je množina polí A znázorněna modrou barvou, u druhé dvojice je

množina B znázorněna žlutou barvou a oranžově je znázorněn průnik těchto dvou množin.

Pokud se na oranžově zvýrazněném poli vyskytuje jako kandidát číslice, ze které jsou

složeny vázané dvojice, pak můžeme tuto číslici ze seznamu kandidátů na oranžovém poli

vymazat.

Začátek první dvojice d1

Konec první dvojice d1

Začátek druhé dvojice d2

Konec druhé dvojice d2

Page 34: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 34 -

Nyní podrobněji vysvětlím, jak tato metoda funguje. Platí, že ve vázané dvojici

jedna z číslic musí platit. Z toho vyplývá, že pro každou dvojici mám 2 možnosti. Nejprve

budeme uvažovat dvojici d2. Předpokládám, že platí číslice na poli (2, 2). Pak je jasné, že

nemůže platit číslice na oranžovém poli. Ve druhém případě uvažuji, že platí číslice na poli

(7, 2), z toho plyne, že nemůže platit číslice na poli (9, 3) a musí platit číslice na poli (9, 7).

A z toho opět vyplývá, že nemůže platit číslice na oranžovém poli. Pro dvojici d1 by byl

postup analogický.

Zajímavé je i to, že na polích označených křížkem se klidně mohou vyskytovat jako

kandidáti stejné číslice, jako ve dvojicích aniž bychom narušili princip této metody.

Tím jsme ale ještě nevyčerpali všechny možnosti této metody. Platí totiž další

pravidlo, které říká:

Pravidlo 1: Jestliže máme N vázaných dvojic takových, že tyto dvojice mají v sekvenci

vždy jeden konec umístěn ve společné skupině, pak pro koncové body takové sekvence

platí stejný důsledek jako pro výše zmíněné dvě dvojice.

Ukážu opět názorné zobrazení (viz. Následující obrázek) pro tři vázané dvojice d1,

d2 a d3. Konec první dvojice na pozici (9, 9) sdílí společný řádek 9 se začátkem druhé

dvojice na pozici (9, 6) a konec této druhé dvojice na pozici (8, 4) sdílí společný řádek 8 se

začátkem třetí dvojice na pozici (8, 1). Začátek první dvojice na pozici (2, 9) „vidí“ na pole

znázorněna modrou barvou, konec třetí dvojice na pozici (3, 1) „vidí“ na pole znázorněna

žlutou barvou a oba konce společně „vidí“ na pole znázorněna oranžovou barvou.

Opět jednoduše odvodíme platnost výše zmíněného tvrzení. Platí-li číslo na pozici

(2, 9) nemohou platit kandidáti stejného čísla na oranžových polích. Pokud ale číslo na této

pozici neplatí, musí tudíž platit číslo na (9, 9), z toho plyne, že nemůže platit toto samé

číslo na pozici (9, 6), ale musí z druhé dvojice platit číslo na pozici (8, 4), a to samé

Page 35: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 35 -

pro třetí dvojici. Nemůže platit číslo na pozici (8, 1), ale platí na pozici (3, 1). Z toho je

opět zřejmé, že se nemůžou na oranžových polích vyskytnout kandidáti daného čísla.

V těchto úvahách můžeme pokračovat ještě dále. Když se na předchozí obrázek

podíváme podrobněji, vidíme, že naše tři dvojice můžeme rozdělit na dvě dvojice. První

dvojici tvoří dvojice d1 a d2 a druhou dvojice d2 a d3.

Nyní můžeme použít výše zmíněné pravidlo 1 pro dvě vázané dvojice. Dostáváme,

že konce první dvojice společně „vidí“ na pole (2,4). A obdobně pro druhou dvojici, která

„vidí“ na pole (3,6), na obrázku jsou tyto pole znázorněna světle oranžovou barvou. To

však znamená, že na těchto dvou polích můžeme rovněž vymazat případné kandidáty a

vyslovit další pravidlo.

Pravidlo 2: Jestliže máme N vázaných dvojic takových, že tyto dvojice mají v sekvenci

vždy jeden konec umístěn ve společné skupině, pak pro koncové body takové sekvence

platí stejný, výše zmíněný důsledek pro každou souvislou podsekvenci složenou z nejméně

dvou vázaných dvojic.

Začátek první dvojice d1

Konec první dvojice d1

Začátek druhé dvojice d2

Začátek třetí dvojice d3

Konec druhé dvojice d2

Konec třetí dvojice d3

Page 36: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 36 -

To znamená, že pokud budeme mít v sekvenci například pět dvojic, označím je d1

– d5, nehledáme kandidáty na vyškrtnutí pouze pro koncové body celé sekvence, ale

pro všechny koncové body následujících sekvencí:

d1 – d2,

d2 – d3,

d3 – d4,

d4 – d5,

d1 – d2 – d3,

d2 – d3 – d4,

d3 – d4 – d5,

d1 – d2 – d3 – d4,

d2 – d3 – d4 – d5,

d1 – d2 – d3 – d4 – d5.

A abych vyčerpala všechny možnosti až do dna, můžu poslední pravidlo ještě trochu

vylepšit.

Pravidlo 2: Tvoří-li sekvence dvojic uzavřený cyklus (první a poslední dvojice mají jeden

svůj konec ve společné skupině), pak platí výše zmíněné důsledky pro každou podsekvenci

cyklu, složenou z nejméně dvou dvojic.

Pro výše uvedený výčet by to znamenalo, že bych mohla přidat ještě podsekvence,

které procházejí přes spojnici d1 – d5 (čili například d4 – d5 – d1 nebo d5 – d1 – d2).

Nyní ukážu konkrétní příklad. Zpočátku je možné řešit každou Sudoku

jednoduššími metodami, které jsem popsala na začátku, aby se nám Sudoku zjednodušilo.

Teď ale chci ukázat, jak se dá použít pouze poslední zmíněná metoda na příkladě, proto se

jinými metodami nebudu zabývat.

Pokud si zobrazíme kandidáty, dostaneme zobrazení, které je vidět na následujícím

obrázku a na kterém jsem už zvýraznila i některé možnosti pro tuto metodu.

Page 37: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 37 -

2346 1 456 9 56 4 345 8 7 3489 3457 45789 2 1578 47 345 345 6 4689 4567 45678

9

4567 5678 3 2 1 459

3689 367 1 67 4 5 378 237 238

346 34567 2 1 67 8 9 3457 345

489 457 45789 3 2 79 6 457 1458

1246 9 3 8 57 247 1457 24567 1245

7 246 46 45 359 1 3458 23456 23458

5 8 4 47 379 6 1347 9 1234

Vidíme zde sekvenci třech silně vázaných dvojic kandidáta 3: (4,2) – (2,2), (1,1) –

(1,7) a (8,7) – (8,9). Koncové body (4,2) a (8,9) „vidí“ společně na pole (4,9), které taky

obsahuje kandidáta číslici 3 a tudíž můžeme trojku z tohoto pole vypustit.

Výše jsem zmínila pravidlo, které tvrdilo, že je možné v sekvenci většího počtu

dvojic vyzkoušet i kratší sekvence.

2346 1 456 9 56 4 345 8 7 3489 3457 45789 2 1578 47 345 345 6 4689 4567 45678

9

4567 5678 3 2 1 459

3689 367 1 67 4 5 378 237 238

346 34567 2 1 67 8 9 3457 345

489 457 45789 3 2 79 6 457 1458

1246 9 3 8 57 247 1457 24567 1245

7 246 46 45 359 1 3458 23456 23458

5 8 4 47 379 6 1347 9 1234

Page 38: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 38 -

Pokud budeme uvažovat jen první dvě dvojice, čili (4,2) – (2,2) a (1,1) – (1,7), pak

jejich koncová pole „vidí“ na pole (4,7), které taky obsahuje kandidáta 3, kterého zde

můžu opět eliminovat.

1.10.2.4 XY – křížení

Tato metoda nám může pomoci v situacích, kdy si myslíme, že již nelze

pokračovat. Často se nám podaří jediným tahem odblokovat zdánlivě těžko řešitelnou

situaci.

Při této metodě musíme vždy vycházet z vedoucího pole, na kterém se vyskytují

dva kandidáti na řešení. Toto pole musí „vidět“ na další dvě pole, které obsahují opět

dvojici kandidátů, přičemž jeden z kandidátů je totožný s jedním z kandidátů na vedoucím

poli a druhý kandidát musí být pro obě pole společný. Vypadá to složitě, ale z obrázku to

bude jasnější.

Žlutě je znázorněno vedoucí pole, které obsahuje dvojici kandidátů X a Y. Růžově

jsou znázorněna pomocná pole, na která vedoucí pole „vidí“. Na těchto polích se musí

vyskytovat vždy jeden z kandidátů z původního pole (v našem případě X nebo Y) a jeden

nový společný kandidát označený C. Tato pomocná pole mají svou množinu polí, na které

„vidí“. Pro pole YC jsem množinu polí označila zelenou barvou a pro pole XC modrou

barvou. Průsečík těchto dvou množin jsem znázornila oranžově. Pokud se na těchto polích

vyskytuje v seznamu kandidátů číslo C, můžeme je ze seznamu vyškrtnout.

A teď objasním, jak to funguje. Na žlutém vedoucím poli bude v konečném řešení

buď X nebo Y, nic jiného se tam objevit nemůže. Pokud budu uvažovat, že zde bude X,

pak na poli s kandidáty XC může být jen C a na oranžově označených polích být tedy C

Page 39: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 39 -

nemůže. Pokud budu uvažovat druhou možnost, že na vedoucím poli bude Y, pak na poli

s kandidáty YC musí být C a opět na oranžovém poli být C nemůže.

A nyní ukázka na konkrétním zadání Sudoku. Žlutě je zvýrazněno vedoucí pole

(9,4) a růžově znázorněny zbylé prvky XY – křížení. Oranžovou barvou jsou pak

znázorněna pole, z nichž můžeme odebrat kandidáta číslice 5.

2346 1 456 9 56 4 345 8 7 3489 3457 45789 2 1578 47 345 345 6 4689 4567 45678

9

4567 5678 3 2 1 459

3689 367 1 67 4 5 378 237 238

346 34567 2 1 67 8 9 3457 345

489 457 45789 3 2 79 6 457 1458

1246 9 3 8 57 247 1457 24567 1245

7 246 46 45 359 1 3458 23456 23458

5 8 4 47 379 6 1347 9 1234

1.10.2.5 Vedoucí prvek

Tato metoda se hodně podobá předchozí metodě XY – křížení s tím rozdílem, že

nemusíme mít pouze dva kandidáty. Ale zase je větší problém tuto situaci při řešení najít.

V této metodě se vždy jedná o dvojici blok + řádek a blok + sloupec. Ve srovnání

s metodou XY – křížení se může na vedoucím poli (označeno žlutou barvou) vyskytnout

více kandidátů, včetně kandidáta na odstranění. To samozřejmě vyžaduje, aby se na polích,

na která vedoucí prvek v této kombinaci „vidí“, vyskytly všechny kombinace kandidáta

na odstranění se všemi ostatními kandidáty na vedoucím poli. Tím se omezí množina

prvků, ze kterých můžeme kandidáta C vyškrtnout. Protože všechna dotyčná pole musí

na tyto pole „vidět“. Na následujícím obrázku je názorná ukázka. Společnou podmnožinu

všech barevných polí s kandidáty jsem označila oranžovou.

Page 40: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 40 -

Teď trošku jak to funguje. Pokud bude v konečném řešení na vedoucím poli

některý z kandidátů A – F mimo C, zbylí kandidáti se rozmístí na pole zvýrazněna růžovou

barvou a místo kandidáta, který se umístil na žlutém poli, bude v růžovém poli kandidát C.

Z toho vyplývá, že na oranžovém poli už být kandidát C nemůže a stejně tak v opačném

případě, pokud kandidát C by byl na žlutém vedoucím poli.

Počet kandidátů na vedoucím poli může být 2 a více. Ale každému kandidátovi

musí odpovídat pole znázorněná v našem případě růžovou barvou s dvojicí kandidátů.

Jeden musí být z vedoucího pole a druhý, kterého chceme odstranit, který se objeví

na všech námi uvažovaných polích. Pokud by nastala situace, že by se všechna růžová pole

umístila pouze v řádku, sloupci či bloku, zredukovala by se nám metoda na metodu holé

množiny.Na následujícím obrázku je reálný příklad.

236 1 5 9 6 4 35 8 7 89 345 89 2 18 7 345 345 6

4689 4567 45789 67 68 3 2 1 59

3689 367 1 6 4 5 38 237 238

346 34567 2 1 67 8 9 3457 35

48 457 4578 3 2 9 6 457 158

1 9 3 8 5 2 7 6 4

7 2 6 4 39 1 358 35 358

5 8 4 7 39 6 13 9 123

Page 41: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 41 -

Vedoucí prvek jsem zvýraznila žlutě, pomocné prvky jsou zvýrazněny růžově.

Při aplikaci metody vedoucího prvku můžeme z pole (9,7) vyškrtnout kandidáta číslice 3.

1.10.2.6 Prázdný čtverec

Tato poslední metoda opět patří ke skupině obtížnějších, protože není na první

pohled vidět. Ale pokud ji použijeme, často se nám podaří odblokovat těžko řešitelnou

pozici.

Na následujícím obrázku, jsem ve druhém sloupci znázornila silně vázanou dvojici

nějakého kandidáta n. V bloku 9, jsou na polích vybarvených růžovou barvou buď

vyřešená čísla, nebo jsou to pole, na kterých není číslo n kandidátem. Naopak na polích

označených C se může číslo n jako kandidát vyskytovat. Ale na alespoň jednom z modrých

polích v bloku 9 se kandidát n vyskytovat musí. Pokud se v takovémto schématu vyskytne

na oranžovém poli kandidát n, můžeme jej vyškrtnout.

Nyní nastíním, na jakém principu tato metoda funguje. Jeden z bodů vázané dvojice

bude v konečném řešení kandidáta n obsahovat. Bude-li to na poli označených písmenem

A, pak určitě nebude kandidát n na poli označených B a ani na poli oranžové barvy.

Ve druhém případě, bude kandidát n na poli B, z čehož vyplývá, že nebude na poli A ani

na žádném z polí zeleného řádku. To znamená, že v bloku 9 bude muset být kandidát n

na některém z modrých polích označených písmenem C. Odtud je opět vidět, že se

kandidát n také nemůže objevit na poli oranžové barvy.

Na následujícím obrázku je ukázka reálného příkladu s použitím této metody.

Page 42: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 42 -

479 1479 14579 489 19 1489 12457 6 12345

89 469 8 2 7 169 3 145 15 1459

4679 3 1479 2 169 5 147 178 1489

2478 47 478 4568 567 4678 3 9 12456

8

1 5 6 3489 379 4789 247 278 248

4789 479 34789 1 35679 2 4567 578 4568

469 1469 149 3569 12356

9

169 8 1235 7

5 1679 1789 369 4 1679 126 123 1236

3 2 17 56 8 169 9 4 156

V prvním sloupci jsem našla vázanou dvojici kandidáta 9. V bloku 2 odpovídají

zelená pole polím označených písmenem C z předchozího schématu. Po aplikaci metody

prázdného čtverce podle výše zmíněných pravidel, můžeme z pole (7, 5) kandidáta číslo 9

vyškrtnout.

Page 43: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 43 -

2 MATLAB

MATLAB je programové prostředí pro numerické výpočty, modelování, počítačové

simulace, analýzu a prezentaci dat, vizualizaci dat a mnoho dalších podobných věcí.

MATLAB umožňuje provádět výpočetně náročné úlohy celkem rychle, proto jeden

z důvodů, proč jsem si vybrala právě tento program je rychlost. A druhý důvod je

vysvětlen v následujícím odstavci a souvisí s maticemi, které budu hodně využívat.

Krátce bych se zmínila o tom, jak vznikl název MATLAB. Vznikl zkrácením dvou

slov - MATrix a LABoratory, což volně přeloženo do češtiny znamená „laboratoř

s maticemi“. Proto matice jsou klíčovou datovou strukturou tohoto programu. Jak bude

vidět v následujících kapitolách, matice budu hrát důležitou roli i pro nás.

V dílčích částích této kapitoly se budu věnovat tomu, jak lze naprogramovat

v MATLABu magické čtverce, latinské čtverce, řešení jakéhokoliv zadání Sudoku a pak

také generování různých zadání Sudoku.

2.1 Magické čtverce v MATLABu

V této kapitole se vrátím k již zmíněným magickým čtvercům, které byly

vysvětleny podrobněji v kapitole 1.3. Tady ukážu, jak lze tento čtverec vytvořit

v MATLABu. Není to nic složitého, protože základní magický čtverec má MATLAB už

předdefinovaný příkazem magic(n) a tudíž lze zadat jen číslo n, které určuje, jakého

řádu má výsledný magický čtverec být. Jak tento předdefinovaný algoritmus vypadá a jak

ho chápat, tak tomu věnuji následující část.

Nejprve se podíváme, jak tento algoritmus vypadá. Což můžete vidět hned na

následujících řádcích

Page 44: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 44 -

fuction M = magic(n) n = floor(real(double(n(1)))); if mod(n,2) == 1 [J,I] = meshgrid(1:n); A = mod(I+J-(n+3)/2,n); B = mod(I+2*J-2,n); M = n*A + B + 1; elseif mod(n,4) == 0 [J,I] = meshgrid(1:n); K = fix(mod(I,4)/2) == fix(mod(J,4)/2); M = reshape(1:n*n,n,n)‘; M(K) = n*n+1 – M(K); else p = n/2; M = magic(p); M = [M M+2*p^2; M+3*p^2 M+p^2]; if n == 2, return, end i = (1:p)‘; k = (n-2)/4; j = [1:k (n-k+2):n]; M([i; i+p],j) = M([i+p; i],j); i = k+1; j = [1 i]; M([i; i+p],j) = M([i+p; i],j); end Jak je vidět, tak algoritmus se rozděluje do čtyř částí, které nyní objasním.

Na prvním řádku je nadefinovaná funkce M = magic(n), pomocí které se celý

algoritmus spouští. Dále je nadefinováno, že se mají doplňovat čísla 1 až dvojnásobek

zadaného čísla n. Tzn. pokud zadáme, že číslo n = 3, pak se do čtverce 3 x 3 doplní čísla

1, 2, 3,…, 9. Analogicky pro libovolné číslo n.

První podmínka

if mod(n,2) == 1 [J,I] = meshgrid(1:n); A = mod(I+J-(n+3)/2,n); B = mod(I+2*J-2,n);

M = n*A + B + 1;

platí pro n liché. V našem případě n = 3. Řádek [J,I] = meshgrid(1:n)

znamená, že se vygeneruje matice J a I v následujícím tvaru

Page 45: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 45 -

J = 1 2 3 1 2 3 1 2 3

I = 1 1 1 2 2 2 3 3 3 Až máme vygenerované tyto dvě matice, tak můžeme pokračovat v algoritmu, tzn.

vypočítat matici A a B, podle nadefinovaného předpisu

A = mod(I+J-(n+3)/2,n); B = mod(I+2*J-2,n);

Dostaneme matici

A =

2 0 1

0 1 2

1 2 0

a matici

B =

1 0 2

2 1 0

0 2 1

A teď už nám stačí pouze dopočítat matici M, která už bude námi požadovaným

magickým čtvercem, podle následujícího předpisu

M = n*A + B + 1

Výsledná matice M vypadá takto

Page 46: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 46 -

M =

8 1 6

3 5 7

4 9 2

Úplně na stejném principu je vytvořena druhá a třetí podmínka algoritmu. Rozdíl je

jen v tom, že pokud zadáme sudé číslo, první podmínku pro lichá čísla nám to přeskočí a

číslo n se otestuje, zda je dělitelné 4 nebo není. Pokud je číslo n dělitelné 4, provede se

druhá podmínka. Pokud číslo n je sudé, ale není dělitelné 4, provede se třetí podmínka.

Výsledkem je vždy správný magický čtverec. Z toho nám plyne, že funkce

M = magic(n), dokáže vytvořit magický čtverec jakéhokoliv řádu.

Ukážu magický čtverec desátého řádu

M =

92 99 1 8 15 67 74 51 58 40

98 80 7 14 16 73 55 57 64 41

4 81 88 20 22 54 56 63 70 47

85 87 19 21 3 60 62 69 71 28

86 93 25 2 9 61 68 75 52 34

17 24 76 83 90 42 49 26 33 65

23 5 82 89 91 48 30 32 39 66

79 6 13 95 97 29 31 38 45 72

10 12 94 96 78 35 37 44 46 53

11 18 100 77 84 36 43 50 27 59

V následující tabulce ukážu, jak dlouho MATLABu trvá vytvořit magické čtverce

různých rozměrů. Čas v tabulce je průměrný čas několika pokusů.

Tabulka vypadá následovně

Page 47: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 47 -

Rozměr Čas (s)

3 x 3 0.000001

5 x 5 0.000005

10 x 10 0.000009

50 x 50 0.0706

100 x 100 0.1312

500 x 500 4.2208

1000 x 1000 16.9372

Jak je vidět, vytvoření magického čtverce rozměru 100 x 100 trvá pouze asi jednu

desetinu sekundy, což je opravdu velmi rychlé. Menší čtverce zaberou ještě méně. Naopak

větší rozměry například čtverec rozměru 1000 x 1000 trvá skoro dvacet sekund.

Závislost času na rozměru magického čtverce ukážu na následujícím grafu

Jak je názorně vidět z grafu, do rozměru magického čtverce 100 x 100 je čas

vygenerování magického čtverce zanedbatelný. Dále s rostoucím rozměrem magického

čtverce roste i výsledný čas generování.

Page 48: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 48 -

2.2 Latinské čtverce v MATLABu

Tuto kapitolu budu věnovat latinským čtvercům, a jak se dají vytvořit

v MATLABu. Bude to o něco těžší, protože MATLAB nemá předdefinovaný žádný

algoritmus pro tyto čtverce, jak tomu bylo u magických čtverců v předchozí kapitole. Ale

můžeme magické čtverce využít tak, jak jsem psala už dříve v kapitole 1.4 zabývající se

latinskými čtverci. Z toho vyplývá, že latinské čtverce můžu vytvořit dvěma způsoby,

kterým se teď budu věnovat.

2.2.1 Vytvoření latinského čtverce pomocí magického čtverce

První způsob je s využitím magických čtverců a je jednodušší. Nejprve ale musím

vytvořit magický čtverec libovolného řádu a pak do něj místo čísel 1 až n2 dosadit pouze

čísla 1 až n. Ukážu to na konkrétním příkladu. Vytvořím magický čtverec pátého řádu

pomocí příkazu A = magic(5).

A =

17 24 1 8 15

23 5 7 14 16

4 6 13 20 22

10 12 19 21 3

11 18 25 2 9

A teď použiji příkaz

B = mod(A,n)+1,

který jsem používala už u magických čtverců. V našem případě, kdy n = 5, dostanu

po provedení tohoto příkazu latinský čtverec, kde čísla 1 až 5 zůstávají na stejných

pozicích a nahrazuju čísla, která jsou větší jak 5. V tomto případě to bude vypadat

následovně číslo 6 = 1, 7 = 2, …, 10 = 5, 11 = 1,…, 25 = 5. Když to provedu, dostanu

latinský čtverec následujícího tvaru

Page 49: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 49 -

B =

3 5 2 4 1

4 1 3 5 2

5 2 4 1 3

1 3 5 2 4

2 4 1 3 5

Analogicky lze tímto způsobem vytvořit latinský čtverec libovolný řádu.

2.2.2 Vytvoření latinského čtverce pomocí rekurzivního algoritmu

Tento druhý způsob je o něco těžší, ale zase nám pomůže lépe pochopit výsledný

algoritmus pro řešení Sudoku. Což je mým hlavním úkolem této práce. Použiju tedy

rekurzivní algoritmus, který nejprve ukážu, jak vypadá, a pak následně jednotlivé kroky

vysvětlím. Algoritmus vypadá takto

function s = latin(m,s)

global delej

if ~delej return end

n=length(m);

if ~exist('s') s = zeros([size(m),0]); end

krok = min(find(m(:)==0)); if isempty(krok) s(:,:,size(s,3)+1) = m; delej = false; else [i,j] = ind2sub([n,n],krok); for k = randperm(n) if sum(m(i,:)==k)==0 && sum(m(:,j)==k)==0 m(i,j) = k; s = latin(m,s); end end end

Page 50: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 50 -

Na prvním řádku je opět nadefinovaná funkce pro spouštění. Na druhém řádku

nadefinovaná globální proměnná delej, která se při spouštění musí zadat a slouží k tomu,

aby vypsala první správné řešení, které najde.

Podmínka

if ~delej return

end

říká, že pokud neexistuje proměnná delej, tak se vrať zpátky do algoritmu. Na

následujícím řádku je nadefinováno n, takto

n=length(m);

a znamená to, že číslo n bude stejného rozměru jako zadaná matice m.

Řádek obsahující

krok = min(find(m(:)==0))

znamená, že se hledá první pozice v matici m obsahující nulu. Může se stát, že se v matici

m žádné nuly nevyskytují, proto je tam podmínka

if isempty(krok) s(:,:,size(s,3)+1) = m;

která říká, že pokud se v matici m nevyskytují žádné nuly, tak máme výsledné řešení, které

se má uložit do matice s. Ve druhém případě, kdy se v matici m vyskytují nuly, proběhnou

kroky, které následují na dalších řádcích

else [i,j] = ind2sub([n,n],krok); for k = randperm(n) if sum(m(i,:)==k)==0 && sum(m(:,j)==k)==0 m(i,j) = k; s = latin(m,s); end end

end

a tyto řádky obsahují rekurzivní kroky, které se provádějí následujícím způsobem.

Dosazuji na nulové pozice matice m postupně čísla k, která jsou náhodně vygenerovanou

Page 51: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 51 -

posloupností zadané posloupnosti čísel. Například pro n = 5, máme posloupnost čísel

1, 2, 3, 4, 5. A když tuto posloupnost čísel náhodně vygenerujeme, můžeme dostat

např. k = 5, 3, 1, 4, 2. Tyto čísla postupně dosazuji na pozici obsahující 0 a

testuji přitom podmínku, že dané číslo se smí objevit v každém řádku i sloupci jednou.

V mém případě najdu první pozici s 0 a zkusím číslo 5, pokud toto číslo nesplňuje danou

podmínku, tak zkouším další číslo v pořadí, dokud není splněna zadaná podmínka. Jak

najdu první číslo, které splňuje podmínku, tak toto číslo uložím do matice m a jdu hledat

znovu další číslo. Pokud nastane situace, že žádné číslo na dané pole není správné, vracím

se o krok výše a změním předchozí doplněné číslo na jiné, které vyhovuje. Tento postup

opakujeme tak dlouho, až v matici m nejsou žádné nuly. Tento algoritmus nám vypíše

první správné řešení, které najde, protože správných řešení může být i více.

Teďka ukážu konkrétní příklad na tento algoritmus, který musím mít v MATLABu

uložený, aby fungoval. Protože pro spuštění tohoto algoritmu je nutné zadat 4 vstupní

argumenty, je lepší si je opět uložit do M-filu, v kterém pak stačí měnit jen číslo n. Tento

M-file se vstupníma hodnotami vypadá následovně

global delej delej = true; m= zeros(5); s = latin(m)

po spuštění tohoto M-filu vidíme hned výsledek. V mém případě, kdy jsem zvolila n = 5,

vypadal výsledek následovně.

s =

1 2 4 3 5

3 1 2 5 4

5 4 1 2 3

4 3 5 1 2

2 5 3 4 1

Tento výsledek je náhodně vybraný ze všech možností pro daný rozměr. To

znamená, že pokud bych M-file spustila znovu, tak je velmi malá pravděpodobnost, že

Page 52: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 52 -

dostanu úplně stejný latinský čtverec. Kolik je všech možností pro daný rozměr latinského

čtverce ukazuje následující tabulka [15].

Rozměr Počet všech možností

2 x 2 2

3 x 3 12

4 x 4 576

5 x 5 161 280

6 x 6 812 851 200

7 x 7 61 479 419 904 000

8 x 8 108 776 032 459 082 956 800

9 x 9 5 524 751 496 156 892 842 531 225 600

Jak je vidět, tak s rostoucím n hodně rychle roste i počet všech možností.

Teď ukážu ještě jednu tabulku, ve které bude zapsaný průměrný výsledný čas,

vygenerování náhodného latinského čtverce pro různé rozměry, které MATLAB dokáže

Rozměr Čas (s)

2 x 2 0.015

3 x 3 0.023

4 x 4 0.031

5 x 5 0.047

6 x 6 0.078

7 x 7 0.093

8 x 8 0.106

9 x 9 0.109

10 x 10 0.1404

15 x 15 0.6518

20 x 20 1.9188

Jak je vidět, čím větší latinský čtverec, tím je potřeba o kousíček delší čas pro

vygenerování výsledku. Ale vždy je výsledek téměř okamžitě vygenerovaný. Opět ukážu

graf závislosti času na konkrétním rozměru latinského čtverce

Page 53: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 53 -

Jak je vidět z grafu, tak čas mírně roste pro latinské čtverce do rozměru 10 x 10.

Tento čas je, ale téměř zanedbatelný. S většími rozměry čas prudce stoupá.

2.3 Algoritmy řešící Sudoku

Nyní už se vrhu na to, jak se dá udělat program, který vyřeší jakékoliv zadání

Sudoku. Sudoku lze programově řešit třemi způsoby. První z nich napodobuje lidské

myšlení a doplňuje čísla na základě logických dedukcí. Druhý, rekurzivní, prostě zkouší

všechny možnosti, dokud nedosáhne cíle. A třetí způsob je kombinací zmíněného prvního

a druhého způsobu.

Všechny přístupy mají výhody i nevýhody. „Logický" algoritmus zpravidla

nedokáže vyřešit všechna zadání Sudoku. Umí jen tolik, kolik jej tvůrce „naučil". Oproti

tomu rekurzivní algoritmus vyřeší každé Sudoku a dokonce odhalí i více řešení. Pokud jej

spustíme na prázdné mřížce, najde nám všechny možnosti, jak může Sudoku vypadat, ale

na výsledek bychom čekali asi hodně dlouho, protože těch možností existuje strašně moc,

jak bylo zmíněno v kapitole 1.9.1 a také by nestačila paměť. Třetí způsob je nejlepší.

Page 54: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 54 -

V této práci se proto budu věnovat pouze třetímu způsobu řešení, protože dokáže

hodně rychle vyřešit jakékoliv zadání Sudoku. Čím je více správných řešení, tím je potřeba

delší čas na řešení.

Jak tento algoritmus vypadá, je vidět v následující části [19]

function s = Sudoku(m,s) if any((size(m)-[9 9])~=0) error('Vložená matice m musí mít 9 řádků a 9 sloupců.') end if any(any(m~=floor(m))) || any(abs(m(:)-4.5)>4.5) error('V matici m můžou být pouze čísla 0 až 9.') end if ~exist('s') s = zeros([size(m),0]); end prvni_krok = min(find(m(:)==0)); if isempty(prvni_krok) s(:,:,size(s,3)+1) = m; else [i,j] = ind2sub([9,9],prvni_krok); for k=1:9 radky = (ceil(i/3)-1)*3+1; sloupce = (ceil(j/3)-1)*3+1; bloky = m(radky:radky+2,sloupce:sloupce+2); if sum(m(i,:)==k)==0 & sum(m(:,j)==k)==0 & sum(bloky(:)==k)==0 m(i,j) = k; s = Sudoku(m,s); end end end

Tento algoritmus se hodně podobá algoritmu, který jsem popisovala u latinských

čtverců v kapitole 2.2.2, proto v této kapitole zmíním jen ty části, ve kterých se od sebe

liší.

V prvním řádku jsem vytvořila opět funkci s = Sudoku(m, s), pomocí které

se bude celý algoritmus spouštět. Kde s je výstupní matice obsahující řešení a m je vstupní

matice obsahující předvyplněná čísla. Do vstupní matice zadáváme předvyplněná čísla

na konkrétní pozice, na kterých se mají ve výsledku objevit, a na pozice prázdných polí

Page 55: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 55 -

zapisujeme číslo 0. Jak matici m správně zadat do MATLABu a jak spustit celý algoritmus,

ukážu v následující části. Nejprve, jak zadat matici m, která může vypadat například takto

m = [0,1,0,9,0,0,0,8,7;

0,0,0,2,0,0,0,0,6;

0,0,0,0,0,3,2,1,0;

0,0,1,0,4,5,0,0,0;

0,0,2,1,0,8,9,0,0;

0,0,0,3,2,0,6,0,0;

0,9,3,8,0,0,0,0,0;

7,0,0,0,0,1,0,0,0;

5,8,0,0,0,6,0,9,0]

MATLAB nám ji zobrazí jako matici

m =

0 1 0 9 0 0 0 8 7

0 0 0 2 0 0 0 0 6

0 0 0 0 0 3 2 1 0

0 0 1 0 4 5 0 0 0

0 0 2 1 0 8 9 0 0

0 0 0 3 2 0 6 0 0

0 9 3 8 0 0 0 0 0

7 0 0 0 0 1 0 0 0

5 8 0 0 0 6 0 9 0

Nakonec spustím nadefinovaný algoritmus

s = Sudoku(m)

A za chvíli se objeví výsledná matice s

Page 56: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 56 -

s =

2 1 5 9 6 4 3 8 7

8 3 9 2 1 7 4 5 6

6 4 7 5 8 3 2 1 9

9 7 1 6 4 5 8 2 3

3 6 2 1 7 8 9 4 5

4 5 8 3 2 9 6 7 1

1 9 3 8 5 2 7 6 4

7 2 6 4 9 1 5 3 8

5 8 4 7 3 6 1 9 2

Řešení tohoto hodně lehkého Sudoku trvalo 2,7 sekund. Ale tato doba se mění

v závislosti na obtížnosti zadání Sudoku. Na řešení lehkého Sudoku je potřeba pár sekund,

složité zadání Sudoku může trvat i několik desítek sekund. Pokud existuje více správných

řešení, tak se nám ve výsledku všechny vypíší.

V následující tabulce můžete vidět, jak dlouho v průměru trvalo řešení různých

obtížností zadání Sudoku. Různá zadání jsem čerpala z [21]

Obtížnost lehká Střední Těžká

Čas (s) 0.078 0.321 2.0215

Je vidět, že daný algoritmus dokáže vyřešit jakoukoliv obtížnost zadání Sudoku

v hodně rychlém času.

Teď se ještě vrátím k nadefinovanému algoritmu. Vysvětlím, co jednotlivé řádky

znamenají.

Na třetím až pátém řádku je podmínka,

if any((size(m)-[9 9])~=0) error('Vložená matice m musí mít 9 řádků a 9 sloupců.') end

která kontroluje, zda vložená matice je správného rozměru, tzn. rozměru 9 x 9.

Pokud tomu tak není, tak MATLAB vypíše hlášku, že vložená matice m musí mít 9 řádků a

9 sloupců, což můžete vidět na čtvrtém řádku a je na zadavateli, aby matici zadal správně.

Page 57: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 57 -

Na dalších třech řádcích je podobná podmínka,

if any(any(m~=floor(m))) || any(abs(m(:)-4.5)>4.5) error('V matici m můžou být pouze čísla 0 až 9.') end

která kontroluje opět vloženou matice, ale tentokrát z pohledu vyplněných čísel.

Zde se kontroluje, zda vložená matice obsahuje pouze čísla 1 až 9. Pokud se v matici

objevují nesprávná čísla, tak MATLAB vypíše hlášku, že v matici m můžou být pouze čísla

0 až 9.

Další části algoritmu jsou téměř stejné jako u latinských čtverců, takže je nebudu

znovu vysvětlovat. Jen zmíním, že tento algoritmus se od latinských čtverců liší ve dvou

věcech. První věcí je to, že v Sudoku musí platit ještě jedna podmínka navíc. A to ta, že se

čísla 1 až 9 musí vyskytovat i v každém bloku 3 x 3. Tato podmínka je do tohoto algoritmu

přidána. A celkově tedy podmínka testuje, zda se dané číslo k vyskytuje v každém řádku,

sloupci i bloku právě jednou.

A druhá odlišnost je v tom, že se zde nemá vybrat náhodně jedno správné řešení,

pokud jich existuje více, ale všechna správná řešení zobrazit. Takže se může stát, že řešení

nebude jednoznačné, a i když to nebudeme čekat, tak se nám ve výsledku může objevit

hned několik správných řešení daného zadání.

2.4 Algoritmy vytvářející zadání Sudoku

V této kapitole se budu věnovat tomu, jak vytvořit správné zadání Sudoku, aby bylo

Sudoku jednoznačně řešitelné, tzn., aby nebylo více správných řešení pro jedno zadání.

Vytváření zadání Sudoku se skládá ze dvou částí: První částí je vyplnění hrací

plochy rozměru 9 x 9 (najít tzv. "budoucí řešení") a druhou částí je vynechání

nepotřebných čísel. Proto i vytvořený algoritmus se bude skládat z těchto dvou částí.

Kompletní mřížku lze opět vytvořit rekurzivně tak, že čísla dosazuji náhodně, aby

bylo dodrženo základní pravidlo Sudoku.

Page 58: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 58 -

Jak vypadá algoritmus pro první část, tj. vytvoření této mřížky, je vidět

v následující části

function s = zad(m,s) global delej if ~delej return end n=9; if ~exist('s') s = zeros([size(m),0]); end krok = min(find(m(:)==0)); if isempty(krok) s(:,:,size(s,3)+1) = m; delej = false; else [i,j] = ind2sub([n,n],krok); for k=randperm(9) radky = (ceil(i/3)-1)*3+1; sloupce = (ceil(j/3)-1)*3+1; bloky = m(radky:radky+2,sloupce:sloupce+2); if sum(m(i,:)==k)==0 && sum(m(:,j)==k)==0 && sum(bloky(:)==k)==0 m(i,j) = k; s = zad(m,s); end end end

Jak je vidět, algoritmus je téměř totožný s algoritmem pro latinské čtverce

vytvořené rekurzivním způsobem. Akorát zase s tím rozdílem, že je zde pevně daná

velikost čtverce, jako n=9; a opět přidána navíc podmínka, která říká, že se mají čísla 1 až

9 navíc objevit i v bloku 3 x 3.

Pro spuštění tohoto algoritmu potřebuji stejně jako u latinských čtverců zadat

4 vstupní hodnoty. Tyto vstupní hodnoty uložím do M- filu společně s druhou částí

algoritmu pro vygenerování zadání. Nyní ukážu, jak tento algoritmus vypadá

Page 59: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 59 -

global delej delej = true; m = zeros(9); s = zad(m); delej = true; while delej sold = s; j=ceil(81*rand); s(j)=0; v=Sudoku(s); kolik = size(v,3); if kolik~=1 delej = false; end end sold

První čtyři řádky spouští předchozí algoritmus, úplně stejně jako u latinských

čtverců. Pokud bychom spustili jen tyto čtyři první řádky, tak bychom dostali náhodně

vygenerovanou mřížku označenou jako matici s. Tuto matici nepotřebujeme vidět, protože

by nám prozradila správné řešení, proto ji neukazuji.

Následující podmínka

while delej sold = s; j=ceil(81*rand); s(j)=0; v=Sudoku(s); kolik = size(v,3); if kolik~=1 delej = false; end

end

vynechává náhodně čísla na pozici j v matici s. Do proměnné sold se postupně

ukládá vždycky výchozí matice s, ze které vynechám náhodně číslo. Jakmile je náhodně

vygenerována pozice j, nahradí se tato pozice v matici s nulou a zkouším, pomocí

algoritmu na řešení Sudoku, který byl ukázán v předchozí kapitole 2.3, kolik má Sudoku

správných řešení. Kolik je správných řešení, se zapisuje do proměnné kolik. A testuji,

zda je jen jedno správné řešení nebo je jich více. Pokud je jen jedno správné řešení, tak se

Page 60: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 60 -

celý algoritmus vynechání čísla opakuje znovu tak dlouho, až je více správných řešení.

Jakmile tato situace nastane. Zobrazí se nám proměnná sold, ve které je uložena matice s

bez posledního vynechaného čísla, která měla jen jedno správné řešení. Tato matice se nám

zobrazí a zastaví celý algoritmus.

Pro spuštění celého algoritmu stačí napsat jen název M-filu, pod jakým máme

uloženou druhou část. A téměř hned se nám vygeneruje náhodně nějaké zadání Sudoku.

Toto zadání může vypadat například takto

sold =

0 9 0 1 6 3 0 0 8

0 0 0 0 0 7 0 0 0

2 0 3 8 0 9 1 0 7

7 0 1 0 3 4 0 0 0

4 6 5 7 0 2 8 3 0

3 0 9 0 0 1 5 0 0

8 0 0 4 0 6 0 0 9

0 3 0 9 0 5 0 8 0

0 0 0 0 0 8 0 4 0

Vygenerování zadání tímto algoritmem trvá v průměru okolo 1.413 sekund a je

velmi malá pravděpodobnost, že vygeneruje dvakrát za sebou stejné zadání. Protože jak

jsem psala v kapitole 1.9.1 je 6,67 triliard možností, z kterých algoritmus vybírá správné

řešení.

Když máme vygenerované zadání, tak není žádný problém si ho zkontrolovat nebo

podívat, jak má vypadat. K tomuto nám stačí využít předchozí algoritmus pro řešení

Sudoku z předchozí kapitoly. Stačí tedy napsat pouze

S = Sudoku(sold)

a hned vidíme řešení.

V našem případě správné řešení vypadá následovně

Page 61: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 61 -

s =

5 9 7 1 6 3 4 2 8

6 1 8 2 4 7 9 5 3

2 4 3 8 5 9 1 6 7

7 8 1 5 3 4 6 9 2

4 6 5 7 9 2 8 3 1

3 2 9 6 8 1 5 7 4

8 5 2 4 7 6 3 1 9

1 3 4 9 2 5 7 8 6

9 7 6 3 1 8 2 4 5

Teď už nám nebrání nic v tom, abychom luštili každý den od rána do večera pořád

jiné Sudoku.

Page 62: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 62 -

Závěr

Závěrem bych chtěla říct, že když jsem začala psát tuto práci, tak jsem si myslela,

že hru Sudoku znám celkem dobře. Ale jak se ukázalo, tak tomu tak nebylo ani zdaleka.

Historii této hry jsem téměř neznala, že existují další varianty také ne. Matematikou jsem

se u této hry nikdy nezajímala, protože jsem si myslela, že existuje jen několik možností a

k vyřešení postačí základní kombinatorika. Jak se ukázalo, tak moje myšlenky v tomto

směru byly úplně špatné. Metody na řešení jsem znala jen ty základní, tak pro mě bylo

velkým překvapením, že těchto metod existuje mnohem více, které dokážou ve spoustě

případů řešení zjednodušit i zrychlit.

Mým hlavním cílem této práce bylo naprogramovat v MATLABu algoritmus,

který dokáže vyřešit jakékoliv zadání Sudoku a dále také vytvořit algoritmus, který dokáže

náhodně generovat zadání. Tento cíl se mi podařilo splnit, i když ne vždy, byla cesta

zrovna jednoduchá.

Díky psaní této práce jsem se dozvěděla spoustu zajímavých informací o hře

samotné, prohloubila si své znalosti o programu MATLAB a naučila jsem se v něm i

programovat.

Byla bych ráda, aby tato práce nebyla přínosem jen pro mě, ale i pro další studenty

a zájemce o dané téma. Věřím, že znalosti, dovednosti a získané zkušenosti, které jsem

získala touto diplomovou prací, využiji při dalším vzdělávání a v hledání nabídek práce.

Page 63: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 63 -

Zdroje:

[1] Vražedná matematika Sudoku. Praha : Egmond ČR, s.r.o., 2006. 144 s.

[2] Mistrovská Sudoku : Snadné i obtížné rébusy s 5 radami mistryně světa Jany

Tylové. Praha : Kanzelsberger, a.s., 2006. 168 s.

[3] Sudokuweb.cz : Magická hra, geniální hlavolam s jednoduchými pravidly [online].

2008 [cit. 2009-10-17]. SUDOKU. Dostupné z WWW: http://sudokuweb.cz

[4] Sudoku : Tisíce Sudoku jen pro Vás [online]. 2006 [cit. 2009-10-17]. SUDOKU.

Dostupné z WWW: http://sudoku.hu.cz

[5] Sudoku-hra.cz [online]. 2000 [cit. 2010-02-23]. Sudoku. Dostupné z WWW:

http://www.sudoku-hra.cz/index.php

[6] LHDelphi.wz.cz [online]. 2006 [cit. 2010-02-23]. Sudoku. Dostupné z WWW:

http://sudoku-lh.wz.cz

[7] Volny.cz [online]. 2008 [cit. 2010-10-17]. Jen takový malý příspěvek k řešení

sudoku. Dostupné z WWW: http://www.volny.cz/jiven

[8] THE PUZZLECLUB [online]. 2010 [cit. 2010-04-09]. Sudoku. Dostupné z WWW:

http://www.thepuzzleclub.com/sudoku.php

[9] Internetový magazín spisovatele, publicisty a badatele Jaroslava Chvátala [online].

24.11.2005 [cit. 2010-10-30]. Matrix 2001. Dostupné z WWW:

http://www.matrix-2001.cz/clanek-detail/898-fenomen-sudoku

[10] Online-sudoku.cz [online]. [cit. 2010-10-30]. O Sudoku. Dostupné z WWW:

http://www.online-sudoku.cz

Page 64: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 64 -

[11] Sudoku. In Wikipedia : the free encyclopedia [online]. St. Petersburg (Florida):

Wikipedia Foundation, 1995, last modified on 22. 9. 2010 [cit. 2010-10-30].

Dostupné z WWW: http://cs.wikipedia.org/wiki/Sudoku

[12] Prófův svět [online]. 12. 02. 2007 [cit. 2010-11-02]. Magické čtverce. Dostupné z

WWW: http://profuvsvet.ic.cz/view.php?cisloclanku=2007020007

[13] Magic square. In Wikipedia : the free encyclopedia [online]. St. Petersburg

(Florida) : Wikipedia Foundation, 1995, last modified on 29.10.2010 [cit. 2010-11-

02]. Dostupné z WWW: http://en.wikipedia.org/wiki/Magic_square

[14] FUCHS, Eduard. Magické čtverce aneb Od knihy I-ťing k internetové současnosti

[online], 14.4.2004. 33 s. Diplomová práce. Masarykova univerzita. Dostupné z

WWW: http://bart.math.muni.cz/~fuchs/Efuchs/historie_pdf/mactv.pdf

[15] Latin square. In Wikipedia : the free encyclopedia [online]. St. Petersburg (Florida):

Wikipedia Foundation, 1995, last modified on 12.9.2010 [cit. 2010-11-02].

Dostupné z WWW: http://en.wikipedia.org/wiki/Latin_square

[16] FRAZER JARVIS, BERTRAM FELGENHAUER, Enumerating possible Sudoku

grids [online]. June 20, 2005. 7 s. Oborová práce. Department of Computer Science

TU Dresden, Germany & Department of Pure Mathematics University of Sheffield,

U.K. Dostupné z WWW: http://www.afjarvis.staff.shef.ac.uk/sudoku/sudoku.pdf

[17] Mathematics of Sudoku. In Wikipedia : the free encyclopedia [online]. St.

Petersburg (Florida) : Wikipedia Foundation, 1995, last modified on 6.11.2010 [cit.

2010-11-17]. Dostupné z WWW:

http://en.wikipedia.org/wiki/Mathematics_of_Sudoku

[18] Stanislava Kelemenová, Jana Míšaná, Jana Orsaghová. Algoritmizácia a

naprogramovanie hry Sudoku [online]. 2006. 42 s. Študentská vedecká konferencia.

Univerzita Komenského. Dostupné z WWW:

http://cyril.fmph.uniba.sk/mffuk/studium/svk/AI/kelemenova.pdf

Page 65: UNIVERZITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ …Obsah: Úvod 6 1 Sudoku 7 1.1 Úvod k Sudoku 7 1.2 Historie Sudoku 7 ... 1.10.1 Metody určující přímo čísla 27 1.10.1.1

- 65 -

[19] MATLAB - The Language Of Technical Computing [online]. 1994 [cit.

2011-02-03]. MathWorks. Dostupné z WWW:

http://www.mathworks.com/matlabcentral/fileexchange/8083-matlab-sudoku-solver

[20] The MathWorks, Inc. [online]. 1994 [cit. 2011-03-11]. MathWorks. Dostupné z

WWW: http://www.mathworks.com/

[21] Online Sudoku [online]. 2009 [cit. 2011-03-25]. SUDOKU ONLINE. Dostupné z

WWW: http://www.sudoku-online.mojeip.cz/

[22] MATLAB. In Wikipedia : the free encyclopedia [online]. St. Petersburg (Florida) :

Wikipedia Foundation, 1995, last modified on 17. března 2011 [cit. 2011-03-25].

Dostupné z WWW: http://cs.wikipedia.org/wiki/MATLAB.

[23] Latin Squares: Leonhard Euler, Quasigroup, Latin Square, Mathematics of Sudoku,

Graeco-Latin Square, R. C. Bose, Circulant Matrix, Books LLC, 2010

[24] Narendra Jussien: A to Z of Sudoku. Ecole des Mines de Nantes, Francie 2007

[25] Seymour S Block, Santiago A Tavares: Before Sudoku: The World of Magic

Squares. Oxford Univ., 2009

[26] Wei-Meng Lee:Programming Sudoku (Technology in Action).Apress, 2006