Milestone 1: Analysis

The first deliverable consists of an analysis and design phase. The designer is to prove correctness of the search algorithm in question and to give a preliminary design for the necessary object(s). This entire milestone will take the form of a single written document answering each of the following questions:

  1. Prove that under an admissible heuristic, the A* algorithm is guaranteed to find the shortest path to the goal state. Specifically, when the goal state is opened, the path by which it was discovered is an optimal path.
  2. Prove that under a monotonic heuristic, the A* algorithm is guaranteed to find the shortest path to every state (including the goal state). Specifically, the first time any state is opened, the path by which it was discovered is an optimal path to that state.
  3. Describe and provide pseudo-code for an algorithm+data structure that will implement the A* search for a general, admissible puzzle. This design need not be at the full resolution of Java code (i.e., it doesn't have to provide full type information, full bounds and error checks, etc.), but it should be at a much lower level than the general A* description that will be discussed in class or that is found in most AI textbooks. Specifically, it must provide a description of and pseudocode for the underlying data structures necessary to implement the OPEN and CLOSED LISTs, as well as the Java method signatures for all public interfaces with the OPEN/CLOSED list and the entire search engine object.

    For example, simply stating that "The OPEN LIST will be implemented in terms of a queue" is insufficient. You must also specify how that queue is implemented, what methods it supports, pseudocode for those methods, etc.

  4. Provide an analysis of the running time and space overhead for each of the methods specified in Question 3. A full, formal proof is not always necessary, but a reasonably detailed and convincing analysis is.
  5. Repeat Questions 3 and 4 for the special case of a puzzle with a monotonic heuristic. You need not re-specify any components that are unchanged in this version, but you must specify all changes and give pseudocode for any algorithms that are modified. If improved time/space bounds can be obtained for this version, describe how and why as well as which data structure(s) take advantage of those changes.
  6. Give at least two nontrivial, ADMISSIBLE HEURISTICS for each of the PUZZLEs described in Section 3.1. For each HEURISTIC, specify whether it is simply admissible or whether it is also MONOTONIC. Can you construct a HEURISTIC that is ADMISSIBLE but not MONOTONIC?

This milestone MAY be handwritten or MAY be typed/word processed, but it MUST be neat and legible in all cases. Pay special attention to logical flow, support of conclusions, and clarity of writing.

Either paper or electronic submission is acceptable for this milestone.

NOTE: Although this milestone only describes design, it is expected that the designer/implementer will also be working on code aspects of the project in parallel with accomplishing this milestone.

Terran Lane 2004-03-24