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:
- 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.
- 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.
- 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.
- 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.
- 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.
- 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