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

28
Problem generowania i rozwiązywania plansz sudoku o określonym poziomie trudności Mateusz Mikłuszka 171001 Mikołaj Szkutnik 156545 Kamil Markuszewski 171016

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

Page 1: 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

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

Sudoku• Łamigłówka logiczna

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

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

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

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

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

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

powtarzać

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

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

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

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

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

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ć

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

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

kwadratu• Wypełniamy brakującymi cyframi

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

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

Page 10: Problem generowania i rozwiązywania plansz sudoku o określonym poziomie trudnoś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ń

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

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)

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

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

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

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

Brute Force

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

Algorytmy rozwiązujące sudoku

• Deterministyczne• Niedeterministyczne• Metaheurystyka – odpada

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

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

Algorytmy generujące sudoku

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

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

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

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

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.)

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

Generowanie: Permutacje

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

Generowanie: Permutacje

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

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

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

Generowanie: Usuwanie

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

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

Generowanie: Usuwanie

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

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

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

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

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

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

Wstępne porównanie wyników

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

Wstępne porównanie wyników

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

Wstępne porównanie wyników

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

Wstępne porównanie wyników

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

Gra Sudoku: Interfejs użytkownika