theory pdf
This commit is contained in:
320
assignment2/delivery.md
Normal file
320
assignment2/delivery.md
Normal file
@@ -0,0 +1,320 @@
|
||||
---
|
||||
title: TDT4136 Assignment 2
|
||||
author: Erlend Ulvund Skaarberg and Fredrik Robertsen
|
||||
date: 2025-09-24
|
||||
---
|
||||
|
||||
## 2a) Solutions
|
||||
|
||||
Here are the solutions for the provided Sudoku puzzles:
|
||||
|
||||
```
|
||||
Solution for sudoku_easy.txt
|
||||
8 7 5 | 9 3 6 | 1 4 2
|
||||
1 6 9 | 7 2 4 | 3 8 5
|
||||
2 4 3 | 8 5 1 | 6 7 9
|
||||
------+-------+------
|
||||
4 5 2 | 6 9 7 | 8 3 1
|
||||
9 8 6 | 4 1 3 | 2 5 7
|
||||
7 3 1 | 5 8 2 | 9 6 4
|
||||
------+-------+------
|
||||
5 1 7 | 3 6 9 | 4 2 8
|
||||
6 2 8 | 1 4 5 | 7 9 3
|
||||
3 9 4 | 2 7 8 | 5 1 6
|
||||
|
||||
==================================================
|
||||
|
||||
Solution for sudoku_medium.txt
|
||||
7 8 4 | 9 3 2 | 1 5 6
|
||||
6 1 9 | 4 8 5 | 3 2 7
|
||||
2 3 5 | 1 7 6 | 4 8 9
|
||||
------+-------+------
|
||||
5 7 8 | 2 6 1 | 9 3 4
|
||||
3 4 1 | 8 9 7 | 5 6 2
|
||||
9 2 6 | 5 4 3 | 8 7 1
|
||||
------+-------+------
|
||||
4 5 3 | 7 2 9 | 6 1 8
|
||||
8 6 2 | 3 1 4 | 7 9 5
|
||||
1 9 7 | 6 5 8 | 2 4 3
|
||||
|
||||
==================================================
|
||||
|
||||
Solution for sudoku_hard.txt
|
||||
1 5 2 | 3 4 6 | 8 9 7
|
||||
4 3 7 | 1 8 9 | 6 5 2
|
||||
6 8 9 | 5 7 2 | 3 1 4
|
||||
------+-------+------
|
||||
8 2 1 | 6 3 7 | 9 4 5
|
||||
5 4 3 | 8 9 1 | 7 2 6
|
||||
9 7 6 | 4 2 5 | 1 8 3
|
||||
------+-------+------
|
||||
7 9 8 | 2 5 3 | 4 6 1
|
||||
3 6 5 | 9 1 4 | 2 7 8
|
||||
2 1 4 | 7 6 8 | 5 3 9
|
||||
|
||||
==================================================
|
||||
|
||||
Solution for sudoku_very_hard.txt
|
||||
4 3 1 | 8 6 7 | 9 2 5
|
||||
6 5 2 | 4 9 1 | 3 8 7
|
||||
8 9 7 | 5 3 2 | 1 6 4
|
||||
------+-------+------
|
||||
3 8 4 | 9 7 6 | 5 1 2
|
||||
5 1 9 | 2 8 4 | 7 3 6
|
||||
2 7 6 | 3 1 5 | 8 4 9
|
||||
------+-------+------
|
||||
9 4 3 | 7 2 8 | 6 5 1
|
||||
7 6 5 | 1 4 3 | 2 9 8
|
||||
1 2 8 | 6 5 9 | 4 7 3
|
||||
```
|
||||
|
||||
## 2b) domains
|
||||
|
||||
Here are the domains after running AC-3 on each sudoku puzzle: \
|
||||
(variable): {old domain} -> {new domain}
|
||||
|
||||
```
|
||||
Running AC-3 on sudoku_easy.txt yields that the problem is solvable: True
|
||||
AC-3 reduced the number of domain values from 473 to 294:
|
||||
X11: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 7, 8}
|
||||
X12: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 7, 8}
|
||||
X14: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {2, 6, 7, 9}
|
||||
X16: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {2, 3, 6, 8}
|
||||
X17: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3}
|
||||
X19: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 6, 7}
|
||||
X22: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 6, 7, 8}
|
||||
X25: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {2, 3, 7, 8, 9}
|
||||
X26: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {2, 3, 5, 6, 8}
|
||||
X27: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 5}
|
||||
X28: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 5, 6, 7}
|
||||
X29: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 6, 7}
|
||||
X31: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {2, 6, 7}
|
||||
X32: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {3, 6, 7}
|
||||
X35: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 7}
|
||||
X36: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 5, 6}
|
||||
X41: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 5, 7, 8}
|
||||
X42: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 4, 7, 8}
|
||||
X43: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 4, 5, 7, 8}
|
||||
X44: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 5}
|
||||
X46: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 5, 6}
|
||||
X49: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 6, 7, 8, 9}
|
||||
X52: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4}
|
||||
X53: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 4, 5, 9}
|
||||
X55: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 6, 8, 9}
|
||||
X57: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 5, 8, 9}
|
||||
X58: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 5, 6, 7, 8, 9}
|
||||
X61: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 5, 7, 8, 9}
|
||||
X64: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 5, 6, 7, 8, 9}
|
||||
X66: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 5, 6, 7, 8}
|
||||
X67: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 5, 8, 9}
|
||||
X69: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 4, 6, 7, 8, 9}
|
||||
X74: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 7, 8}
|
||||
X75: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 7, 8}
|
||||
X78: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 6, 8, 9}
|
||||
X79: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 6, 8, 9}
|
||||
X81: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 6, 8}
|
||||
X82: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 6, 8}
|
||||
X83: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 6, 8}
|
||||
X84: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 6, 8, 9}
|
||||
X85: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 6, 8, 9}
|
||||
X88: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 6, 7, 8, 9}
|
||||
X91: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 6, 7, 8}
|
||||
X93: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 6, 7, 8, 9}
|
||||
X94: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 6, 7, 8, 9}
|
||||
X96: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 5, 6, 7, 8, 9}
|
||||
|
||||
Running AC-3 on sudoku_medium.txt yields that the problem is solvable: True
|
||||
AC-3 reduced the number of domain values from 473 to 294:
|
||||
X11: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 7, 8}
|
||||
X12: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 7, 8}
|
||||
X14: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {2, 6, 7, 9}
|
||||
X16: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {2, 3, 6, 8}
|
||||
X17: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3}
|
||||
X19: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 6, 7}
|
||||
X22: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 6, 7, 8}
|
||||
X25: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {2, 3, 7, 8, 9}
|
||||
X26: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {2, 3, 5, 6, 8}
|
||||
X27: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 5}
|
||||
X28: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 5, 6, 7}
|
||||
X29: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 6, 7}
|
||||
X31: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {2, 6, 7}
|
||||
X32: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {3, 6, 7}
|
||||
X35: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 7}
|
||||
X36: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 5, 6}
|
||||
X41: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 5, 7, 8}
|
||||
X42: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 4, 7, 8}
|
||||
X43: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 4, 5, 7, 8}
|
||||
X44: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 5}
|
||||
X46: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 5, 6}
|
||||
X49: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 6, 7, 8, 9}
|
||||
X52: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4}
|
||||
X53: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 4, 5, 9}
|
||||
X55: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 6, 8, 9}
|
||||
X57: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 5, 8, 9}
|
||||
X58: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 5, 6, 7, 8, 9}
|
||||
X61: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 5, 7, 8, 9}
|
||||
X64: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 5, 6, 7, 8, 9}
|
||||
X66: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 5, 6, 7, 8}
|
||||
X67: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 5, 8, 9}
|
||||
X69: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 4, 6, 7, 8, 9}
|
||||
X74: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 7, 8}
|
||||
X75: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 7, 8}
|
||||
X78: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 6, 8, 9}
|
||||
X79: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 6, 8, 9}
|
||||
X81: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 6, 8}
|
||||
X82: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 6, 8}
|
||||
X83: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 6, 8}
|
||||
X84: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 6, 8, 9}
|
||||
X85: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 6, 8, 9}
|
||||
X88: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 6, 7, 8, 9}
|
||||
X91: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 6, 7, 8}
|
||||
X93: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 6, 7, 8, 9}
|
||||
X94: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 6, 7, 8, 9}
|
||||
X96: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 5, 6, 7, 8, 9}
|
||||
|
||||
Running AC-3 on sudoku_hard.txt yields that the problem is solvable: True
|
||||
AC-3 reduced the number of domain values from 473 to 294:
|
||||
X11: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 7, 8}
|
||||
X12: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 7, 8}
|
||||
X14: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {2, 6, 7, 9}
|
||||
X16: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {2, 3, 6, 8}
|
||||
X17: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3}
|
||||
X19: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 6, 7}
|
||||
X22: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 6, 7, 8}
|
||||
X25: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {2, 3, 7, 8, 9}
|
||||
X26: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {2, 3, 5, 6, 8}
|
||||
X27: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 5}
|
||||
X28: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 5, 6, 7}
|
||||
X29: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 6, 7}
|
||||
X31: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {2, 6, 7}
|
||||
X32: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {3, 6, 7}
|
||||
X35: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 7}
|
||||
X36: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 5, 6}
|
||||
X41: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 5, 7, 8}
|
||||
X42: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 4, 7, 8}
|
||||
X43: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 4, 5, 7, 8}
|
||||
X44: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 5}
|
||||
X46: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 5, 6}
|
||||
X49: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 6, 7, 8, 9}
|
||||
X52: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4}
|
||||
X53: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 4, 5, 9}
|
||||
X55: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 6, 8, 9}
|
||||
X57: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 5, 8, 9}
|
||||
X58: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 5, 6, 7, 8, 9}
|
||||
X61: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 5, 7, 8, 9}
|
||||
X64: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 5, 6, 7, 8, 9}
|
||||
X66: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 5, 6, 7, 8}
|
||||
X67: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 5, 8, 9}
|
||||
X69: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 4, 6, 7, 8, 9}
|
||||
X74: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 7, 8}
|
||||
X75: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 7, 8}
|
||||
X78: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 6, 8, 9}
|
||||
X79: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 6, 8, 9}
|
||||
X81: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 6, 8}
|
||||
X82: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 6, 8}
|
||||
X83: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 6, 8}
|
||||
X84: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 6, 8, 9}
|
||||
X85: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 6, 8, 9}
|
||||
X88: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 6, 7, 8, 9}
|
||||
X91: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 6, 7, 8}
|
||||
X93: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 6, 7, 8, 9}
|
||||
X94: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 6, 7, 8, 9}
|
||||
X96: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 5, 6, 7, 8, 9}
|
||||
|
||||
Running AC-3 on sudoku_very_hard.txt yields that the problem is solvable: True
|
||||
AC-3 reduced the number of domain values from 473 to 294:
|
||||
X11: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 7, 8}
|
||||
X12: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 7, 8}
|
||||
X14: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {2, 6, 7, 9}
|
||||
X16: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {2, 3, 6, 8}
|
||||
X17: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3}
|
||||
X19: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 6, 7}
|
||||
X22: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 6, 7, 8}
|
||||
X25: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {2, 3, 7, 8, 9}
|
||||
X26: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {2, 3, 5, 6, 8}
|
||||
X27: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 5}
|
||||
X28: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 5, 6, 7}
|
||||
X29: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 6, 7}
|
||||
X31: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {2, 6, 7}
|
||||
X32: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {3, 6, 7}
|
||||
X35: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 7}
|
||||
X36: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 5, 6}
|
||||
X41: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 5, 7, 8}
|
||||
X42: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 4, 7, 8}
|
||||
X43: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 4, 5, 7, 8}
|
||||
X44: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 5}
|
||||
X46: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 5, 6}
|
||||
X49: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 6, 7, 8, 9}
|
||||
X52: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4}
|
||||
X53: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 4, 5, 9}
|
||||
X55: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 6, 8, 9}
|
||||
X57: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 5, 8, 9}
|
||||
X58: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 5, 6, 7, 8, 9}
|
||||
X61: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 5, 7, 8, 9}
|
||||
X64: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 5, 6, 7, 8, 9}
|
||||
X66: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 5, 6, 7, 8}
|
||||
X67: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 5, 8, 9}
|
||||
X69: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 4, 6, 7, 8, 9}
|
||||
X74: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 7, 8}
|
||||
X75: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 7, 8}
|
||||
X78: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 6, 8, 9}
|
||||
X79: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 6, 8, 9}
|
||||
X81: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 6, 8}
|
||||
X82: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 6, 8}
|
||||
X83: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 6, 8}
|
||||
X84: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 6, 8, 9}
|
||||
X85: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 2, 3, 6, 8, 9}
|
||||
X88: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 6, 7, 8, 9}
|
||||
X91: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 6, 7, 8}
|
||||
X93: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 6, 7, 8, 9}
|
||||
X94: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 6, 7, 8, 9}
|
||||
X96: {1, 2, 3, 4, 5, 6, 7, 8, 9} -> {1, 3, 4, 5, 6, 7, 8, 9}
|
||||
```
|
||||
|
||||
## 2c) number of times backtrack() was called and failed
|
||||
|
||||
How many times backtrack() was called and how many times it failed for each of the four Sudoku puzzles.
|
||||
|
||||
```
|
||||
Backtracking search on sudoku_easy.txt:
|
||||
Backtracking search called 439 times with 357 failures.
|
||||
|
||||
Backtracking search on sudoku_medium.txt:
|
||||
Backtracking search called 439 times with 357 failures.
|
||||
|
||||
Backtracking search on sudoku_hard.txt:
|
||||
Backtracking search called 439 times with 357 failures.
|
||||
|
||||
Backtracking search on sudoku_very_hard.txt:
|
||||
Backtracking search called 439 times with 357 failures.
|
||||
```
|
||||
|
||||
## 2d,e) runtime for backtracking search and AC-3
|
||||
|
||||
Time taken to run AC-3, backtracking search, and the total time for each of the four Sudoku puzzles.
|
||||
|
||||
```
|
||||
Timing on sudoku_easy.txt:
|
||||
AC-3 took 0.022991 seconds.
|
||||
Backtracking search took 0.041559 seconds.
|
||||
Total time: 0.064553 seconds.
|
||||
|
||||
Timing on sudoku_medium.txt:
|
||||
AC-3 took 0.023183 seconds.
|
||||
Backtracking search took 0.056572 seconds.
|
||||
Total time: 0.079757 seconds.
|
||||
|
||||
Timing on sudoku_hard.txt:
|
||||
AC-3 took 0.033311 seconds.
|
||||
Backtracking search took 0.053730 seconds.
|
||||
Total time: 0.087044 seconds.
|
||||
|
||||
Timing on sudoku_very_hard.txt:
|
||||
AC-3 took 0.027815 seconds.
|
||||
Backtracking search took 0.139221 seconds.
|
||||
Total time: 0.167038 seconds.
|
||||
```
|
||||
|
||||
## 2f) why does AC-3 drastically reduce the runtime for backtracking search?
|
||||
|
||||
AC-3 drastically reduces the runtime for backtracking search because it prunes the search space by eliminating inconsistent values from the domains of the variables before the backtracking search begins. By enforcing arc consistency, AC-3 ensures that many impossible assignments are removed early on, which means that the backtracking algorithm has fewer options to consider when trying to assign values to variables. This reduction in the number of potential assignments leads to fewer recursive calls and backtracks during the search process, which speeds up the backtracking search significantly. We've seen this in practice by printing the number of failures during backtracking search without AC-3. Using AC-3, we reach a few hundred failures, while without AC-3, we reach hundreds of thousands of failures within a few minutes of runtime.
|
||||
Reference in New Issue
Block a user