CSCI 335 - Artificial Intelligence

Spring 2020

Programming Project #1: Solving Mazes with A*

Overview

You will develop a series of search heuristics for solving a maze. You will be provided with the code for representing mazes and generating random mazes. You will develop a best-first search implementation, along with several heuristics. Mazes can be of different levels of "perfection", and they can also contain treasures that must be obtained.

Setup

The Java source files are provided in maze.zip. To set up the files in IntelliJ, do the following:

Programming Assignment

The files are placed in four packages. Classes you will modify are in boldface. Once MazeExplorer is working, you will need to modify BestFirstSearcher to implement best-first search. Once both of these are working, implement the following heuristics. Each one will be a class that implements the BestFirstHeuristic interface. Each one should be placed in maze.heuristics: Note: All heuristics should be completely deterministic. Any heuristic making use of random numbers will receive no credit, as a heuristic is supposed to correspond to actual information about the path to a solution. Here are some hints and tips to help you with your implementation:

Proofs

Your proofs need not be fully formal; a well-constructed argument will suffice. Be sure to employ the definition of monotonicity from class.

Experiments

For each heuristic, determine experimentally the "hardest" mazes that it can solve in two minutes or less on your computer. Be sure to specify its clock speed. You will need to determine the "hardness" of mazes in the following categories: For each experiment you run:

Paper

When you are finished with your experiments, you will write a short paper summarizing your findings. Include the following details in your paper:

Deadlines

Grading criteria

AchievementPoints
Pass MazeTest.testNoTreasure()3
Pass MazeTest.testMany()2
Pass MazeTest.testBestFirst()5
Implement Manhattan Distance3
Implement two other monotonic heuristics6
Implement two non-monotonic heuristics6
Experiments completed as described20
Paper describes heuristics and includes source code for each5
Monotonicity proven (or disproven) for each heuristic10
Paper describes and analyzes experiments10