Problem generowania i rozwiązywania plansz sudoku o określonym poziomie trudności Mateusz Mikłuszka 171001 Mikoł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 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