COSC 387: Artificial Intelligence

Project 2
Fall 2001

Due: Oct 15 @ 5 P.M.
7 points

  1. In Lisp, encode the following weighted graph:

  2. Use the following latitudes and longitudes for the cities to write a function that returns the estimated distance between two cities.
    Paris, 48:51:00N 2:20:00E
    Caen, 49:15:00N 0:20:00W
    Calais, 50:57:36N 1:57:00E
    Dijon, 47:21:00N 5:02:00E
    Lyon, 45:44:00N 4:52:00E
    Grenoble, 45:21:36N 5:19:12E
    Avignon, 43:50:00N 4:45:00E
    Marseille, 43:18:00N 5:25:00E
    Nice, 43:42:00N 7:21:00E
    Montpellier, 43:38:00N 3:53:00E
    Toulouse, 43:37:00N 1:27:00E
    Bordeaux, 44:50:00N 0:37:00W
    Limoges, 45:30:00N 1:10:00W 
    Rennes, 48:07:00N 1:02:00W
    Brest, 48:24:00N 4:30:00W
    Strasbourg, 48:32:24N 7:37:34E
    Nancy, 48:50:00N 6:10:00E
    Nantes, 47:15:00N 1:30:00W
    
  3. Implement

    1. one uninformed search algorithm (e.g., depth- or breadth-first),
    2. one informed search algorithm (e.g., hill-climbing, or best-first search), and
    3. one admissible search algorithm (e.g., branch-and-bound or A*).

  4. Using each algorithm, attempt to find the shortest path between the following initial and goal cities:

    Run Initial State Goal State
    1 Brest Marseille
    2 Montpellier Calais
    3 Strasbourg Bordeaux
    4 Paris Grenoble
    5 Grenoble Paris
    6 Brest Grenoble
    7 Grenoble Brest

  5. For each algorithm, over the seven runs:

    1. what was the average number of nodes entered (i.e., visited)?
    2. what was the average number of nodes expanded?
    3. what was the average number of nodes maintained (i.e., stored)?
    4. how often did it find the optimum?

    Place these results in comments at the top of your source file.

Hint: Take a look at property lists as a way to represent graphs.

Instructions for Submission: In the header comments, provide the following information:

;;;;
;;;; Name
;;;; E-mail Address
;;;; Platform: Windows, Linux, Solaris (cssun)
;;;; Lisp Environment: gcl, clisp, cmucl
;;;; Mail Client: mailx, pine, GUMail, Netscape, Yahoo!, etc.
;;;;
;;;; In accordance with the class policies and Georgetown's Honor Code,
;;;; I certify that, with the exceptions of the lecture notes and those
;;;; items noted below, I have neither given nor received any assistance
;;;; on this project.
;;;;
When you are ready to submit your program for grading, e-mail it to me as one file with your net ID and the suffix ``.lisp'' as the subject line.

For example, if you were to submit using mailx on cssun, and if your net ID is ab123 and the name of your source file is proj1.lisp, then type at the UNIX prompt:

cssun% mailx -s "ab123.lisp" maloof@cs < proj1.lisp
If you use some other mail client, then follow the same instructions, and send your code as an attachment. Submit your project before 5:00 P.M. on the due date.

Once submitted, it is important to keep an electronic copy of your project on either cssun or gusun. If we lose your project or the e-mail system breaks, then we will need to look at the modification date and time of your project to ensure that you submitted it before it was due. If you developed your code on a Windows machine, then use a secure ftp client to transfer your file to cssun or gusun.

Finally, when storing source code on university machines, it is important to set file permissions so others cannot read the file. To turn off such read/write permissions, type at the UNIX prompt chmod og-rw <file>, where <file> is the name of your source file.