Problem generowania i rozwiązywania plansz sudoku o określonym poziomie trudności

Post on 18-Mar-2016

78 views 3 download

description

Mateusz Mikłuszka 171001 Mikołaj Szkutnik 156545 Kamil Markuszewski 171016. Problem generowania i rozwiązywania plansz sudoku o określonym poziomie trudności. Sudoku. Łamigłówka logiczna Jap. 数独 sūdoku Sū ji wa doku shin ni kagiru Cyfry muszą być pojedyncze. Zasady: plansza. - PowerPoint PPT Presentation

Transcript of Problem generowania i rozwiązywania plansz sudoku o określonym poziomie trudności

Problem generowania i rozwiązywania plansz sudoku o określonym poziomie trudności

Mateusz Mikłuszka 171001Mikołaj Szkutnik 156545

Kamil Markuszewski 171016

Sudoku• Łamigłówka logiczna

• Jap. 数独 sūdoku• Sūji wa dokushin ni kagiru• Cyfry muszą być pojedyncze

Zasady: plansza• Tablica dwuwymiarowa 9x9• Podzielona na 9 tablic dwuwymiarowych 3x3

Zasady: niepowtarzalność• Każdy kwadrat 3x3 musi być wypełniony cyframi 1-

9• Cyfry w obrębie kwadratu 3x3 nie mogą się

powtarzać

Zasady: niepowtarzalność• Cyfry w kolumnie 1x9 nie mogą się powtarzać

(cyfra 2)• Cyfry w rzędzie 9x1 nie mogą się powtarzać (cyfra

3)• Rzędy i kolumny muszą być wypełnione cyframi 1-

9

Ciekawostka: rodzaje sudoku• Sudoku samurai - składa się z pięciu kwadratów połączonych

ze sobą w kształcie litery X• Sudoku diagonalne - cyfry nie mogą się powtarzać po

przekątnych kwadratu• Sudoku trójwymiarowe - w kształcie kostki sześciennej o

wymiarach 9x9x9• Killer Sudoku – początkowa plansza nie ma żadnych

wpisanych cyfr, ale zamiast tego ma zaznaczone obszary obejmujące od 2 do 7 pól, dla których podana jest suma zawartych w nich cyfr

• Sudoku magnetyczne - niedozwolone jest stykanie się takich samych cyfr w rogach kwadratów

• Sudoku na większej planszy - z większą liczbą symboli

Rozwiązywanie: Sposób 1 - eliminacja• Zaczynamy od cyfry która występuje najczęściej• Eliminacja rzędów/kolum do których cyfry nie możemy

wstawić

Rozwiązywanie: Sposób 2 dopełnianie • Dopełnianie• Szukamy najbardziej zapełnionego rzędu / kolumny /

kwadratu• Wypełniamy brakującymi cyframi

Rozwiązywanie: Sposób 3 -oznaczanie • Sposób polegający na zaznaczaniu możliwości

Generowanie plansz• Rozwiązywanie jest o wiele prostsze niż generowanie plansz• Liczba możliwych plansz 6 670 903 752 021 072 936 960• Plansza musi posiadać minimum 17 cyfr początkowych• Poniżej 17 cyfr istnieje wiele rozwiązań

Analiza trudności generowania plansz• Nie istnieje jeden sposób analizy

trudności plansz – własne metryki• Analiza czasu działania wybranych

algorytmów (Rule based)

Metryki

• Liczba łącznie wypełnionych pól• Puste pola w

kolumnie/wierszu/kwadracie• Funkcja więzów i Ukryci kandydaci

• Liczba wystąpień danej cyfry

Sprawdzanie poprawności sudoku• Istnieje rozwiązanie• Dokładnie 1 rozwiązanie• Przeszukanie zbiorku rozwiązań –

Brute Force

Algorytmy rozwiązujące sudoku

• Deterministyczne• Niedeterministyczne• Metaheurystyka – odpada

• Backtracking – Brute Force• Rule Based – Funkcja więzów

Algorytmy generujące sudoku

• Wylosowanie planszy• Permutacje kolumn i wierszy• Usuwanie pól• Usuwanie konkretnych pól

Generowanie: Wylosowanie planszy• Daje głównie złe wyniki• Jest niezbędny• Korzystają z niego pozostałe

algorytmy• Bardzo wrażliwy na liczbę pól

Generowanie: Permutacje

• permutowanie kolumn 3x9 w obrębie kwadratu 9x9

• permutowanie wierszy 9x3 w obrębie kwadratu 9x9

• permutowanie kolumn 1x9 w obrębie kolumn 3x9

• permutowanie wierszy 9x1 w obrębie wierszy 9x3 (Rys 5.2.4.)

Generowanie: Permutacje

Generowanie: Permutacje

• Można użyć do generowania bazy plansz

• Można zamieniać też cyfry ze sobą

Generowanie: Usuwanie

• Zaczynamy od rozwiązanego sudoku• Usuwamy losowo pola• Co iterację sprawdzamy poprawność• Kończymy w zależności od sumy pól

Generowanie: Usuwanie

Generowanie: Usuwanie konkretnych pól• Zaczynamy od rozwiązanego sudoku• Usuwamy pola tak by zwiększyć

trudność• Na podstawie metryk trudności• Co iterację sprawdzamy poprawność• Kończymy w zależności od sumy pól

Gra Sudoku: Interfejs użytkownika• Stworzyliśmy grę wykorzystującą

nasze algorytmy• Język C#• Środowisko Unity 3d

Wstępne porównanie wyników

Wstępne porównanie wyników

Wstępne porównanie wyników

Wstępne porównanie wyników

Gra Sudoku: Interfejs użytkownika