From d2afe1e7abb15c89cd6c3bc6e84c061c3b4e9522 Mon Sep 17 00:00:00 2001 From: fredrikr79 Date: Tue, 21 Oct 2025 14:43:34 +0200 Subject: [PATCH] ass3: handin --- .envrc | 1 + assignment3/Makefile | 5 + assignment3/handin.zip | Bin 0 -> 32074 bytes assignment3/report.md | 212 +++++++++++++++++++++++++++++++++++++++++ assignment3/report.pdf | Bin 0 -> 34587 bytes flake.lock | 27 ++++++ flake.nix | 24 +++++ 7 files changed, 269 insertions(+) create mode 100644 .envrc create mode 100644 assignment3/Makefile create mode 100644 assignment3/handin.zip create mode 100644 assignment3/report.md create mode 100644 assignment3/report.pdf create mode 100644 flake.lock create mode 100644 flake.nix diff --git a/.envrc b/.envrc new file mode 100644 index 0000000..3550a30 --- /dev/null +++ b/.envrc @@ -0,0 +1 @@ +use flake diff --git a/assignment3/Makefile b/assignment3/Makefile new file mode 100644 index 0000000..9fea87f --- /dev/null +++ b/assignment3/Makefile @@ -0,0 +1,5 @@ +all: report.pdf handin.zip +report.pdf: report.md + pandoc $< -o $@ --pdf-engine typst +handin.zip: *.py report.pdf + zip $@ $^ diff --git a/assignment3/handin.zip b/assignment3/handin.zip new file mode 100644 index 0000000000000000000000000000000000000000..fde0a555f37540e3aa12f6ac5c69c4d402764d97 GIT binary patch literal 32074 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%0A}M%-DY8-7Z;Q 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 literal 0 HcmV?d00001 diff --git a/assignment3/report.md b/assignment3/report.md new file mode 100644 index 0000000..813e2c0 --- /dev/null +++ b/assignment3/report.md @@ -0,0 +1,212 @@ +--- +title: assignment 3 +date: 2025-10-21 +author: Fredrik Robertsen, Erlend Ulvund Skaarberg +--- + +## (a) code output + +### halving game output + +``` +The number is 5 and it is P1's turn +P1's action: -- +The number is 4 and it is P2's turn +P2's action: -- +The number is 3 and it is P1's turn +P1's action: /2 +The number is 1 and it is P2's turn +P2's action: -- +The number is 0 and P1 won +``` + +this is as expected (provided by the example code) + +### bucket game output + +``` +The state is (0, ['A', 'B', 'C']) and it is P1's turn +P1's action: B +The state is (1, [3, 1]) and it is P2's turn +P2's action: 1 +The state is (0, [1]) and P1's utility is 1 +``` + +the results follow the expected run-through of the minimax algorithm + +### tic tac toe output + +``` + | | +---+---+--- + | | +---+---+--- + | | + +It is P1's turn to move +P1's action: (0, 0) + + x | | +---+---+--- + | | +---+---+--- + | | + +It is P2's turn to move +P2's action: (0, 1) + + x | o | +---+---+--- + | | +---+---+--- + | | + +It is P1's turn to move +P1's action: (0, 2) + + x | o | x +---+---+--- + | | +---+---+--- + | | + +It is P2's turn to move +P2's action: (1, 1) + + x | o | x +---+---+--- + | o | +---+---+--- + | | + +It is P1's turn to move +P1's action: (1, 0) + + x | o | x +---+---+--- + x | o | +---+---+--- + | | + +It is P2's turn to move +P2's action: (2, 0) + + x | o | x +---+---+--- + x | o | +---+---+--- + o | | + +It is P1's turn to move +P1's action: (2, 1) + + x | o | x +---+---+--- + x | o | +---+---+--- + o | x | + +It is P2's turn to move +P2's action: (1, 2) + + x | o | x +---+---+--- + x | o | o +---+---+--- + o | x | + +It is P1's turn to move +P1's action: (2, 2) + + x | o | x +---+---+--- + x | o | o +---+---+--- + o | x | x + +The game is a draw +``` + +this is an optimal game, ending in a draw + +## (b) runtime improvement with alpha-beta pruning + +### results of our benchmarks + +- 8.7112 seconds without alpha-beta pruning + +- 0.0001 seconds with alpha-beta pruning + +the results are measured at the first step of the algorithms + +we can see a clear speed-up from using the alpha-beta pruning + +### benchmarking code + +``` +game = Game() +state = game.initial_state() +game.print(state) +record = False +while not game.is_terminal(state): + player = game.to_move(state) + start_time = time.time() + action = minimax_search(game, state) # The player whose turn it is is the MAX player + if not record: + print(f"Elapsed time (minimax): {time.time() - start_time:.4f} seconds") + record = True + print(f'P{player+1}\'s action: {action}') + assert action is not None + state = game.result(state, action) + game.print(state) + print() + +game = Game() +state = game.initial_state() +game.print(state) +record = False +while not game.is_terminal(state): + start_time = time.time() + player = game.to_move(state) + action = alpha_beta_search(game, state) # The player whose turn it is is the MAX player + if not record: + print(f"Elapsed time (alpha-beta-pruning): {time.time() - start_time:.9f} seconds") + record = False + print(f'P{player+1}\'s action: {action}') + assert action is not None + state = game.result(state, action) + game.print(state) + print() +``` + +## non-mandatory + +in the provided game state + +``` + x | o | o +---+---+--- + x | | +---+---+--- + | | +``` + +the minimax algorithm will choose the path that leads to victory, which could be +the middle point, or the lower left one. although, due to our implementation, it +will always pick the middle point because it sees it first (it is on a higher +row). this path also provides two paths to win. it is in such a sense even more +optimal than greedily choosing the lower left option, but both options lead to +a win and are as such considered equal. + +to make the algorithm choose the immediate path on the lower left, we can for +example have it greedily scan the board for such an option every recursive call +so as to discover the option of a quicke win. though this may not be more +performant due to the overhead of checking for this condition all the time, but +on this rare occasion we will at least avoid performing unecessary minimax +calls. + +another way to achieve this, which could also improve the performance, would be +to keep track of path lengths. this would also let it discover such an option. + +yet another way would be to implement the algorithm differently, as a BFS +algorithm that checks for the winning state before expanding it. diff --git a/assignment3/report.pdf b/assignment3/report.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ebcae098f6e5b8138a36fe29320d48d1dd222f66 GIT binary patch literal 34587 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