159.302 Artificial Intelligence


159.302 Artificial Intelligence 
Assignment #1 
N.H.Reyes 
The 8-Puzzle: Search Algorithms 
 
Maximum number of members per group: 3 students 
Deadline for submission: 9th of September 
 
Instructions 
• Your task is to write a C++ program that will solve the 8-puzzle problem using a selection of 
search algorithms, and their variants. 
 
• The successors of a state are to be generated in a FIXED order, namely move the blank tile: Up, 
Right, Down, then Left. For simplicity, make node insertions into the Q, following the same 
order. 
 
• An AnimateSolution() function has been provided that you can use to animate the sequence of 
moves (i.e. path) calculated by the algorithms. A start-up program (compiles with g++ 13.2) 
with a graphics library and routines for running multiple experiments and for generating 
tabulated results are available for downloading from stream. 
 
• It is up to you to write any functions, classes or data structures that you may require. However, 
for each of the algorithm, there is a specific STL data structure that is required. You can use 
cout statements to trace the algorithms’ execution. 
 
• For each implementation of the algorithms below, include codes that will capture the following 
information during the algorithm’s execution. 
 
a. Max. Q length – e.g. 26 
b. Path length - the number of moves to solve the puzzle, e.g. 30 
c. Number of state expansions – e.g. 157 
d. Actual running time in seconds (use the clock() function as shown in the start-up codes) 
 
• Write your algorithm implementations inside the skeleton functions provided for the required 
algorithms. Do not change the names and input parameters of these skeleton functions as the 
batch files would refer to them. Each algorithm implementation should return the sequence of 
moves as a string. Moreover, make sure that your program runs with the supplied routines for 
executing multiple experiments (i.e. batch_run), and for generating the tabulated experiment 
results. Your assignments will be marked using them. 
 
e.g. 
 
string aStar_ExpandedList (string const initialState, string const goalState, int &pathLength, 
int &numOfStateExpansions, int& maxQLength, float &actualRunningTime, 
int &numOfDeletionsFromMiddleOfHeap, int &numOfLocalLoopsAvoided, 
int &numOfAttemptedNodeReExpansions, heuristicFunction heuristic ) 
 
Note that the function uses pass by reference to copy the statistical results back to the calling 
function 

 159.302 Artificial Intelligence 
Assignment #1 
N.H.Reyes 
 
Part 1: Uniform Cost Search with the Strict Expanded List 
• Use the following search node pushing sequence (for a Heap data structure): Up, Right, Down, 
Left 
• Implement the Q container using the heap data structure implementation - available in the C++ 
Standard Template Library (STL): use make_heap(), push_heap(), pop_heap(), etc. 
 
Part 2: A* Search with the Strict Expanded List 
• Use the following search node pushing sequence (for a Heap data structure): Up, Right, Down, 
Left 
• Implement the Q container using the heap data structure implementation - available in the C++ 
Standard Template Library (STL): use make_heap(), push_heap(), pop_heap(), etc. 
 
a) Using the Misplaced Tiles heuristic 
b) Using the Sum of Manhattan Distance heuristic 
 
Part 3: Experiments and Documentation 
Test your implementation of the different algorithms by performing experiments using the 5 given 
(start, goal) state combinations below. Run your program until it either returns a solution, the Q 
becomes empty (no solution), the computer runs out of memory, or until the program crashes. Run 
the program in batch_run all mode to run all the experiments and collect the results easily. 
 
Tabulate the experiment results in an Excel worksheet by converting the output of the batch file into 
a worksheet. Ensure that the format of your tabulation matches the provided template (see 
results_template.xlsx). Name your Excel file using the following format: results_ID.xlsx 
 
Example: (e.g., results_20298765.xlsx). 

In addition, assign the name "results" to the sheet containing the experiment results. For a group 
submission, use one of the group member's ID numbers, but make sure to include the names and 
IDs of all members in the checklist Excel file. 
 
If there is no solution found for a given (start, goal states), simply leave that section blank in the 
table, or write 0 in each of the required statistical measure (e.g. path length, no. of state expansions, 
max q length, running time, etc.). 
 
Specify under the “comments” section of the tabulation of results if any of the following was 
observed for a given (start, goal state) combination: 
• the program ran out of memory 
• program crashed without any warning 
• the Q turned empty; thus, allowing the program to close properly 

ID number 159.302 Artificial Intelligence 
Assignment #1 
N.H.Reyes 
 
(Start, Goal) State Combinations 
Note: 0 - blank space 
 
GOAL STATE: ((1 2 3) 
 (4 5 6) 
 (7 8 0)) 
 
Run the different algorithms on the following START STATES: 
1. 120483765 
2. 208135467 
3. 704851632 
4. 536407182 
5. 638541720 
 
Hints: 
You can step through the search by including a getch() function (made available via the graphics 
engine provided in the start-up codes) inside your main loop to pause the program until the user 
presses any key. 
 
Example Sequence: 
 Sequence of states and operations. 
 
You may choose to represent states in an array, of size 9. The moves must be represented using the 
'u', 'd', 'l', 'r' characters. 
 
In notation, the sequence s to get to the goal from the initial state could be represented as: 
s = {d,r,u,u,l,d} You may find it helpful to cout something similar to help debug your program. 
 
Criteria for Marking: 
• Make sure that your program compiles using gcc 13.2 (or later), or clang 15.0 (or later), 
before handing it in. 
• Make sure that you submit a tabulation of all the experiment results, following the 
results_template.xlsx format that comes with the start-up codes package. This will be used 
to accurately analyse your implementation of the algorithms and mark your assignment. You 
will lose 50% of your grade if you fail to perform the required experiments and submit this 
file. 
• Submit the accomplished checklist as part of your documentation. Please download the 
checklist.xlsx Excel file from our Stream site, fill-up the worksheet and rename it by 
concatenating your ID number with the word ‘checklist’. 
 
Name your Excel checklist file using the following format: checklist_ID.xlsx 
 
Example: (e.g., checklist_20298765.xlsx). 
 ID number 159.302 Artificial Intelligence 
Assignment #1 
N.H.Reyes 
• You can work in a group (max. 3 members) for this assignment. 
• Copied work will be given zero marks. 
• Each algorithm implementation will be assessed based on its accuracy and performance on 
the given set of (start/goal) state combinations. 
 

  • 11
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
人工智能和LISP(LISt Processing)是紧密相关的两个概念。LISP是一种编程语言,最早于1958年由美国计算机科学家约翰·麦卡锡(John McCarthy)设计并开发。正是基于LISP语言的特性,人工智能领域得到了巨大的推动和发展。 LISP的设计使其非常适用于处理符号化的数据和执行复杂的逻辑运算。这使得LISP成为早期人工智能研究中的首选编程语言。研究人员利用LISP的高度灵活性和表达能力,构建了许多能够模拟人类智能的系统。 LISP为人工智能的发展提供了强大的工具和理论基础。其中最著名的例子是LISP语言中的列表(list)数据结构,它提供了一种方便的方式来存储和操作符号化的知识。这在构建专家系统和知识表示方面起到了重要的作用。 另一个与LISP和人工智能密切相关的概念是LISP的元编程能力。通过LISP的元编程功能,研究人员可以在运行时修改和扩展程序逻辑,这对于开发智能系统的学习和自适应能力非常有帮助。例如,利用LISP的元编程能力,人工智能研究人员能够实现基于案例推理的系统,通过不断添加新的规则和示例,使系统能够从经验中学习。 总之,LISP语言为人工智能的发展做出了巨大贡献。它提供了强大的符号化处理能力和元编程能力,使研究人员能够构建智能系统并实现学习和自适应。至今,LISP仍然在人工智能研究中扮演着重要的角色,它仍然是研究人员用于开发智能系统的一种首选语言
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值