From: <ÓÉ Microsoft Internet Explorer 5 ±£´æ> Subject: 433-303 Artificial Intelligence Project 1 Date: Tue, 10 Aug 2004 22:43:34 +1000 MIME-Version: 1.0 Content-Type: multipart/related; boundary="----=_NextPart_000_000B_01C47F2B.77ADD9E0"; type="text/html" X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1409 This is a multi-part message in MIME format. ------=_NextPart_000_000B_01C47F2B.77ADD9E0 Content-Type: text/html; charset="gb2312" Content-Transfer-Encoding: quoted-printable Content-Location: http://www.cs.mu.oz.au/303/project/projA-2004.html 433-303 Artificial Intelligence Project 1

433-303 Artificial Intelligence

Project - Part A

Last updated 3 August 2004

Task

The aim of this part of the project is to design and = implement an=20 algorithm for state space search in Prolog. This state space search = algorithm=20 can be used to evaluate whether a given board state represents a win for = the=20 join player. =20

Specification

Before you read this specification, please ensure = that you=20 have read the "Rules of=20 the Game".

In the pipeline game, the join player wins if = there is a=20 path from the refinery to the port along the trenches that have been = "joined"=20 using pipelines. In order to determine whether there is a connected path = through=20 the joined trenches, we can use state space search to search for a path. = Your=20 task is to implement a path search function through a given list of = joined=20 trenches.

You are required to implement a Prolog function
pathsearch(M, = N,=20 Role, Links, Route)
where
M and = N specify the = dimensions of the=20 board, as defined in the "Rules of the Game";
Role is the player for = whom we=20 are testing;
Links = is=20 the list of trenches which will be used as the basis for the path = search;=20 and
Route is = the output=20 parameter, which is the list of nodes in the path if a path exists, or = the=20 empty list [ ] if no path exists.
In general, pathsearch can be used = to test=20 whether either player has won. If Role is set to join, and Links contains the = trenches that=20 have been joined, then the join player has won if a path exists among = the joined=20 trenches given in Links. In=20 contrast, if Role = is set to=20 cut, and Links contains all the = trenches=20 that have not been cut, then the cut player has won if no = path=20 exists among the trenches given in Links.

To = simplify the=20 submission for Part A, you can make the following assumptions in your=20 implementation of pathsearch:
  • assume M=20 and N have the=20 value 4=20
  • assume Role = has the=20 value join  =
These simplifications have been made since Part A is only = meant to be=20 a progress submission. In Part B you will need to implement a version of = pathsearch that relaxes = these=20 assumptions, so that you can write a complete game playing agent. But = you don't=20 have to worry about that for Part A.

Consider the following = example board=20 configuration, showing the joined and cut trenches.

3D""=20

For this = example,=20 your function would be called using the following parameter values:
pathsearch(4, = 4,=20 join, [(0,0,4,1), (4,1,4,2), (4,2,3,2), (3,2,3,3), (3,3,0,4)],=20 Route)

The return value of Route=20 for this example would be [(0,0), (4,1), (4,2), (3,2), = (3,3),=20 (0,4)].

In contrast, consider the following example board=20 configuration, showing the joined and cut trenches.

3D""=20

For this = example,=20 your function would be called using the following parameter values:
pathsearch(4, = 4,=20 join, [(0,0,4,1), (3,2,4,2), (4,2,4,3), (3,2,3,3), (3,3,0,4), = (1,2,1,3)],=20 Route)

Since there is no possible route from the refinery to the port in = this=20 example, the return value of Route=20 for this example would be the empty list [ ].

Submission

Your program must be written in Prolog. Your = implementation=20 will be tested using the swiprolog interpreter on the CSSE=20 machines. Useful information about Prolog and swiprolog can = be=20 found on the subject web page. If you are developing your implementation = on a=20 non-CSSE machine or using a different interpreter, it is your = responsibility to=20 make sure it runs correctly using swiprolog on the CSSE = machines.=20

Your submission will consist of one file, called pathsearch.pl. Your = submitted file=20 will be compiled along with the test program testsearch.pl, which = will include=20 the test data and call your pathsearch function. The = testsearch.pl test = program is=20 available here.=20 An example test data file testlinks.pl is = available here. This = test data=20 file is included automatically by the test program testsearch.pl. Do not submit testsearch.pl nor the = test data=20 file.

When you have submitted your program, it will be compiled = with=20 testsearch.pl and = some test=20 data, and then tested using an automated testing script. The automated = test=20 script assumes that the only output is generated by the testsearch.pl test = program. In=20 order for the automated testing to work, you should take note of the = following=20 requirements:
  • If you can find a path, the path must be returned as list of = nodes, with=20 the nodes ordered by the order they occur in the path, starting from = the=20 refinery (0, 0), and ending with the port (0,4).=20
  • If there is no path possible, you must return an empty list [ ].=20
  • You are not required to = find the=20 shortest path. However, your path must=20 not contain loops.
  • In order to ensure that your program does not interfere with the = automated=20 testing, your function should not attempt to write anything. In = particular,=20 you must not write the = keyword=20 "TESTING" to the standard output nor the standard error, since this = has a=20 special meaning to the automated test script. =20
  • You do not need to do = error=20 checking for links that cannot appear on the 4x4 board.=20
  • There will be a time limit of 20 seconds of real time and CPU time = (whichever comes first) on the execution of your program. =
Your=20 submission will be compiled as follows:

pl --goal=3Dmain -L15M -o = testsearch -c=20 testsearch.pl pathsearch.pl

Once submissions are open, you = should=20 submit by typing the following command on a CSSE machine:=20

submit 303 A pathsearch.pl

Verify your submission using the command

verify 303 A | more

You must submit by 5:00pm on Thursday 2 September 2004.

Late submissions will incur a penalty of two marks per day (or part = thereof).=20 If you cannot submit on time you should contact the head tutor Olivia=20 March  (oliviacm at cs.mu.oz.au) via email (use the subject header=20 `303-projA-extension') at the soonestpossible opportunity (this = generally=20 means before the deadline). If you have a medical reason for = being=20 late, you will be asked to provide a medical certificate. We will then = assess=20 whether an extension is appropriate. Note that computer systems are = often=20 heavily loaded near project deadlines, and unexpected network or system = downtime=20 can occur. You should plan ahead to avoid leaving things to the last = minute,=20 when unexpected problems may occur. Generally, system downtime or = failure will=20 not be considered as grounds for an extension.

Late submission will be done using the command

submit 303 A.late pathsearch.pl

Do not use submit as a test = environment=20 for your program.

Assessment

Part A is intended as a progress submission for the = larger=20 project. The aim of Part A is to motivate you to get started on the = project.=20 Consequently, marks will be awarded for making a reasonable attempt at = the=20 specification, and for correct operation of your function. In Part A, we = will=20 not be marking the quality of your code, or the creativity of your = solution.=20 Those aspects will be addressed in Part B.

Part A will be marked = out of 6=20 points, and contribute 6% to your final mark for the subject. Of the 6 = points, 3=20 points will be for making a reasonable attempt, and the remaining 3 = points will=20 be for the result of automatic testing on a set of test cases.  = Program=20 functionality will be tested by running it on a battery of test cases. = Your=20 program should include comments where appropriate. Note that even if you = don't=20 have a function that works correctly by the time of the deadline, you = should=20 submit anyway, since we will automatically award 3 points for a=20 reasonable attempt at the project.

Your program will be = tested=20 using an automated testing script. If your program does not compile and = run=20 correctly because you have not followed this specfication, you will lose = the 3=20 marks for the test cases. We do not have the resources to run = submissions by=20 hand if you make an error in the submission process.

Questions and answers pertaining to the project will be available in = the=20 Q&A web page here and=20 will be considered as part of the specification for the project. If you = have a=20 question that is not answered by the Q&A page, then it can be = directed to=20 the head tutor Olivia March (oliviacm at cs.mu.oz.au), or you can use = the cs.303=20 newsgroup for general discussion with other students. 

As a starting point, you may want to look at an example of a general = search=20 solution sampleAstar.pl= for=20 the Missionaries and Cannibals problem (which will be discussed in Week = 3's=20 tutorial). You may use this as a guide. However, it is provided with no=20 guarantees, and will need modification for this project.

This is an individual project. Group submissions will not be allowed. = You are=20 encouraged to discuss ideas with your fellow students, but your program = should=20 be entirely your own work. Automated similarity checking software will = be used=20 to compare all submissions with each other. It is not acceptable to = share code,=20 nor to use the code of someone else. If you program is found to be = suspiciously=20 similar to someone else's, you may be subject to investigation and, if=20 necessary, punitive action. Please refer to Student Manual Volume A if = you need=20 further clarification on this point.



------=_NextPart_000_000B_01C47F2B.77ADD9E0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.cs.mu.oz.au/303/project/board3.gif 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 ------=_NextPart_000_000B_01C47F2B.77ADD9E0 Content-Type: image/gif Content-Transfer-Encoding: base64 Content-Location: http://www.cs.mu.oz.au/303/project/board5.gif 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 XWU3eDRoS7S1DPrnEc33WDgIhEGoDQUAADs= ------=_NextPart_000_000B_01C47F2B.77ADD9E0--