CSCI 335 - Artificial Intelligence

Fall 2017

Programming Project #1: Solving Mazes with A*


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.


The Java source files are provided in To set up the files in Eclipse, 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:


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


For each heuristic, determine experimentally the "hardest" mazes that it can solve in two minutes or less using the Linux machines in the lab. If you would rather use your own 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:


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


Grading criteria

AProgram is working with all heuristics
Paper is complete
Analysis properly characterizes the basis of each claim
BOne or two heuristics have small bugs
The analysis is somewhat flawed
CProblematic bugs and/or somewhat incomplete or moderately flawed paper
DSevere bugs and/or multiple parts missing from paper
FProgram does not work at all and/or paper is not seriously attempted