《2023年人工智能实验报告大全.pdf》由会员分享,可在线阅读,更多相关《2023年人工智能实验报告大全.pdf(131页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、锄曲关邦密大牵d?XIAN UNIVERSITY OF POSTS TELECOMMUNICATIONS人工智能课内实验报告(8 次)学 院:自动化学院_ _ _ _ _ _ _ _ _ _ _ _班 级:智能15 0 1姓 名:刘 少 鹏(3 4)学 号:0 6 15 3 0 3 4目录课内实验1:猴子摘香蕉问题的V C编程实现.1课内实验2:编程实现简朴动物辨认系统的知识表达5课内实验3:盲目搜索求解8数码问题.18课 内 实 验4:回溯算法求解四皇后问题.33课 内 实 验5:编程实现一字棋游戏.37课内实验6:字句集消解实验.46课内实验7:简朴动物辨认系统的产生式推理.66课内实验8
2、:编程实现D-S证据推理算法.78的关再雷大亭XIAN UNIVERSITY OF POSTS&TCLECOMMUNICATIONS人工智能课内实验报告实 验1 :猴子摘香蕉问题的V C编程实现学 院:自动化学院班 级:智 能15 0 1姓 名:刘 少 鹏(3 3)学 号:0 6 1 5 3 0 3 4日 期:2 0 2 3 -3-8 1 0:15-1 2 :0 0实 验1 :猴子摘香蕉问题的VC编程实现一、实验目的(1)熟悉谓词逻辑表达法;(2)掌握人工智能谓词逻辑中的经典例子猴子摘香蕉问题的编程实现。二、编程环境VC语言三、问题描述房子里有一只猴子(即机器人),位于a处。在C处上方的天花板
3、上有一串香蕉,猴子想吃,但摘不到。房间的b处尚有一个箱子,假如猴子站到箱子上,就可以摸着天花板。如 图1所示,对于上述问题,可以通过谓词逻辑表达法来描述知识。规定通过VC语言编程实现猴子摘香蕉问题的求解过程。图1 猴子摘香蕉问题四、源代码#i n c lud e u n s i g n e d in t i;void MOnkey_Go_Box(uns 1 g ned cha r x,u nsig n e d ch a r y)(3 printf(S t ep%d:monkey从虹走至吸cn ,+i,x,y);/x表达猴子的位置,y为箱子的位置)v o id M o n k ey_ M o v
4、e_ B 0 x(c har x,c h a r y)(pri n tf(S t ep%d:monke y 把箱子从%c运到%c n,+i,x,y);/x 表达箱子的位置,y为香蕉的位置)v o id Mo n k e y _On_Box()(。prin t f(S t ep%d:mo n key爬上箱子 n,+i);)vo id M o n key_G e t _ Ban ana()(。pr i nt f(S tep%d:mo n k ey摘到香蕉n,+i);)vo i d ma i n()u n sig n ed c h ar Monkey,Box,Banana;print f(*智能 1
5、501 班-*n);p ri ntf(*061 5 3 0 3 4*n);print f(*文少鹏*n);pri n t f(”请用a b c来表达猴子箱子香蕉的位置 n”);printf(Monk e y tbox t banan a n );s c a n t(%c,&M o n k e y);g e tc har();p r intf(t );scanf(%c,&BOx);g etchar();p r int f(t t);s c anf(%c,&B a n a na);g e tcha r();p r i标(口操作环节如下5 );if(Monkey!=Box)Mo n key_Go_
6、B ox(Monke y,B ox);)if(Bo x!=Bana n a)(Monkey_Move_ B ox(Box,Banan a);)Monkey_On_Bo x();M o n key_Get_Bana n a();p rintf(n);g e tc h a r();五、实验结果相关截图*4*M:*智 50 j*;:i:.:06153034*刘少鹏*请用a b c来表示猴子箱子香蕉的位置tonkey box bananabc操作步骤如下Step l:monkey从a走到bStep 2:monkey把箱子从b运到cStep 3:monkey爬上箱子Step 4:monkey摘到香蕉六、
7、心得体会通过本次实验,我初步了学会了使用V C 的新建工程,并且进行简朴的程序编写。此外我还学会如何使用一些谓词来解决生活中的一些简朴问题,并且用V C 编程给出具体的操作环节,感觉对V C 编程有了新的结识。在实验中我也碰到过许多问题,比如在我写完代码进行编译时总是会出现一个错误fa ta l erro r C101 0:在查找预编译头时碰到意外的文献结尾,是否忘掉了向源中添加、#inclu d e std a fx.h 关于这个错误我我问了几个同学得不出答案后,我决定通过上网查找,最终找到了解决方法,需要在该项目的每一个cpp结尾的文献属性中设立不使用预编译头即可。在这个过程中也锻炼了自己
8、解决问题的能力。曲美邦雷大号XI*AN UNIVERSHY OF POSTS A TtLECOMMUNICATlONS人工智能课内实验报告实验2:编程实现简朴动物辨认系统的知识表达学 院:自动化学院_ _ _ _ _ _ _ _ _ _ _ _ _ _班 级:智能150 1 _姓 名:刘少鹏(33)_学 号:0 6 153034_日 期:2 023-3-13 10:15-12:00实验2:编程实现简朴动物辨认系统的知识表达一、实验目的1、理解和掌握产生式知识表达方法;2、可以通过V C编程语言实现产生式系统的规则库。二、实验内容1、以动物辨认系统的产生式规则为例;2、用选定的编程语言建造规则库
9、和综合数据库,并能对它们进行增长、删除和修改操作。三、实验环节1、拟定需要辨认的动物及其属性本次实验的简朴动物辨认系统总共能辨认7种动物,即:老虎、金钱豹、斑马、长颈鹿、企鹅、鸵鸟和信天翁。2、建立辨认七种动物辨认系统的规则3、选定编程语言并拟定综合数据库和规则库结构(1)选用C语言作为编程语言(2)综合数据库的建立(3)规则库的建立四、程序源代码#in c l u d e#i ncl u de us 1 n gn a m e s p a c e s td;struct RULE S。i n t coun t;ch a r pre2 5 5;ch ar b a ck 255;i nt mark
10、;);vo i d chec k();R U LES rl 0 0=L 有毛发,“哺乳动物“Q ,。/所有规则静态数据库 1,“有奶,哺乳动物”,0,1有羽毛,鸟”,0,2会飞&下 蛋 鸟,0,1,“吃肉,食肉动物 Q ,3,”有锋利的牙齿&有爪&眼睛盯着前方&食肉动物”,0,2,”哺乳动物&有蹄&有蹄类哺乳动物,0,2,哺乳动物&反刍&”有偶蹄类哺乳动物,0 ,4,”哺乳动物&食肉动物&黄褐色&有暗斑”金钱豹“,0),4,哺乳动物&食肉动物&黄褐色&黑 色 条 纹”老虎”,0,4”有蹄类哺乳动物&有长脖子&有长腿&有暗斑&“:长颈鹿”,0,2,”有蹄类哺乳动物&黑条纹斑马”,0),5,鸟&不
11、会飞&有长脖子&有长腿&黑白色&,鸵鸟,0,4,“鸟&不会飞&会游泳&黑 白 色 企鹅,0,2,”鸟&会飞&,信天翁”,0,1,反刍“,“哺乳动物”,0;1 nt number;int m;in t ca t=15;int a;int le n g th;。输入的事实长度stri n g ”2 55;。/输入的事实数组v o id 1 nput()(wh i 1 e(1)(cat+;cout number rca t.count;c o u t ”输入事实,两种以上的事实请在每个事实后加上*&。c i n rC a t .pre;cout 输入结果 rcat.ba c k;r cat.mark
12、=0;。while(1)(cout ”输 入“r继续添加规贝IJ 输入 2 查看规则库”p;符号”end 1 ;en d l;if (P=D。inputQ;。3。el s e(。i f(p=2)(。check();0 0 0 j。else3 0。cout ”输入错误,重 新 输 入 end 1 ;0 0 0)0)v o id delate()(c out 输入要删除的条数 ba r;fo r(i nt t=0;t =cat;t+)(rb a r-1=rb a r;6 b a r +;)c a t-;。c h eck();)vo 1 d check()(3 c out end 1 规 则 库 如
13、 下 e n d l;。for(i n t i=0;i =c at;i+)3 。cout i+1 ,由 ri.pre 可得 r i.bac k endl;)3 c ou t en d I;while(1)(。cout ”输 入“1 ”继续添加规则,输 入“3”删除选定的规则“m;if(m=1 )(in p u t();else。i f(m=3)s。d e late();)int find_rul e(1 n t s)。/查找规则库中是否尚有可使用的规则(f or(i nt 1 =0;1 =15;i+)s。s=s*r i.mark;3 /cout f 1 ndjule结果s e ndl;retu
14、rn s;)in t comparel(RU L ES r)当前提条件为1时(in t j=0,i=1;string S tr,str2;s tr=r.p r e;wh 1 I e(i =leng t h)(1 f(f i=s tr)0(。s tr2=r.bac k;。f I e ng t h+1 =str2;。加入事实库。1 eng th+;/事实库的长度加1一。.mark=1;。/标记规则已使用过。break;。else 。1 +;o return r.mark;)i n t comp a re2(RULES r)。/前提条件不为 1(st r i n g b 1 0;s tring st
15、 r,s t r 2;s i n t i,j=1,num=0;int a=0;st r=r.p re;for(i=0;i!=10;+1 )/转换数组6(,bi=0)for(i=0;i!=s t r.le n g t h();+i)(。if(st r.a t(i)!=&)0 0。bj+=s tr.a t(i);)。e Ise 。j+;)3)i=1 ;。while(i =r.coun t)fo r(j=1 ;j!=leng t h+1;j+)。i f(fj=bi)(a+=1;0 )o i+;)Q i f(a=r.c ount)(s t r2=r.b ack;。(leng th+1=str 2;。加
16、入事实库。le n g t h+;。/事实库的长度加工。r.mark=1;。/标记规则已使用过)3 retu r n r.ma r k;)void r e s u 1 t()(o i nt i=1 ,m=0;w h 1 Ie(i!=1 eng th+1)i f(f i =:金钱豹”)co u t 该动物是金钱豹”endl;=1;。b r eak;。e 1 se。if(f i=老虎”)0(cou t ”该动物是老虎“(endl;0 m 二 1 ;break;ft 0 j el s e。if(f i=长颈鹿”)。co u t 该动物是长颈鹿”oo m=1;。break;0 0 0 J。else。i
17、f(f i =斑马)0 0 1。o o co u t 该动物是斑马 e ndl;m=1;b r eak;0 d 0 0。else。if(f i=鸵鸟)。cou t 该动物是鸵鸟 en d I;。o m=1;break;0 0 0 0 J。e l s e。i f(f 1=企鹅)3 0 0 o 。6 0 c out 该动物是企鹅 endl;。o o rn=1;。bre ak;b o b o o 0 el s e。1 f(fi=信天翁)d 0 0。o 。cout 信 天 翁 e n d l;。m=1;。break;0 O 。el s eo 。o j+;)1 f(m=0)c o u t 没有符合的动物
18、,请确认特性.重新输入”endl;void 1 deti f y()(int i=0,u=0;。if (fi n d_rule(u)=0)/假如规则库中尚有未使用的规则/cou t “尚有未使用的规则”end 1 ;。1 nt num=Ie n g th;while(i。/该条规则前提数为13 0 。u=com pa r e l(ri);。if(u=1)。ri.mark=1;。i f(ri.mark=1)0 0 1。o cout 使 用 规 则 i+1 ;。o c out 且加入的新事实为“r i.ba c k endl;d 0 0 J3 0 0。oooo e ls e6(。u=compare
19、2(ri);。if(u=1)r i.mark=1;。if(ri.mar k=1)3 0 0 。cout 使用规则”i+1 ;。cout ”且加入的新事实为 r i.b a c k e n d l;。)0 0 3 3 i f (i=15)(。if(num!=length)3 0 s ft o i=0;。num=I e ng t h;。else3 3 0 i=16;。e ls e)s e Ise。cout ”所有的规则都已使用“en dl;。re s u lt();)/*主函数*/vo 1 d main()(3 c out *智能 1 5 0 1班*endl;,cout *06 1 53034*e
20、 n d I;。cout *刘少鹏火*大*e ndl;s c out ”进行动物辨认请输入7 end I;3 cout 进行规则库操作请输入8 a;。while(a=8)w h ile (1 )(。cout ”添加规则输入 1 ,查看已有规则输入 2 endl;cin m;一。if(m=1 )3 3 input();BOO。el s e1 f(m=2)。c h eck();d 0 el s e。co u t 输入错误请重新输入 e n d I;。)if(a=7)。i nt u=0;。co u t ”请输入动物的特性数”1 en g th;。cout ”请输入动物的特性 endl;for(i n
21、 t 1 =1;i f i;。i det i fy();)system(pa u s e);)五、实验结果相关截图1 s程序总体结构u s i n g nam osia c e s t d ;/*规贝U号 桐*/匡 stx u.c t RUI_ES|.,v o l d c h e c k C):S:RULES x-C1OOJ=r|点工 riu 1 口 ex-.1 5:/输 入 的 本 实 长 庭/专前人.白勺力文缴 且7 57G8Q901 1 31 1 41 2 112 21 4 31 9 41 9 52 5 63 1 23 1 33 5 8*v o i d i n p u t。/*规贝U则
22、除 函-*-v o i d d e l a t e。/+椀 仰J走 春 西 蚪*/-*-v o id,o h e c k ax-el(RULES i nX corraare2 CRT fl.P:-:/*三才戈/吉果*/v o i d i d e t i f y C/*壬 西 漱*/.土 v o l d m ai i i ()|.j|c c 2、规则库操作一查看规则库E C:UsersasusDesktopAI2dong wushibie shujukug uizekuDebug g uizeku.exe*智 能1501班*0 6153034*:!(文。少 鹏*进行动物识别请输入7进行规则库操作
23、请输入8添 加 规 则 输 入 T,查 看 己 有 规 则 输 入 2 n规则库如下1.由有毛发可得哺乳动物2.由有奶可得哺乳动物3.由有羽毛可得鸟4.由会飞&下蛋&可得鸟5.由吃肉可得食肉动物6.由有锋利的牙齿&有爪&眼睛盯着前方&可得食肉动物7.由哺乳动物&有蹄&可得有蹄类哺乳动物8.由哺乳动物&反刍&可得有偶蹄类哺乳动物9.由哺乳动物&食肉动物&黄褐色&有暗斑&可得金钱豹10.由哺乳动物&食肉动物&黄褐色&黑色条纹&可得老虎11.由有蹄类哺乳动物&有长脖子&有长腿&有暗斑&可得长颈鹿12.由有蹄类哺乳动物&黑条纹&可得斑马13.由鸟&不会飞&有长脖子&有长腿&黑白色&可得鸵鸟14.由鸟&
24、不会飞&会游泳&黑白色&可得企鹅15.由鸟&会飞&可得信天翁16.由反刍可得哺乳动物输 入“1”继续添加规则,输 入“3”删除选定的规则搜 狗 拼 音 输 入 法 全:3、规则库操作T 添加规则T 添加袋鼠规则 1 C:UsersasusDesktopAI2dongwushibie shujukuguizekuDebugguizeku.exe15.由鸟&会 飞&可 得 信 天 翁16.由 反 刍 可 得 哺 乳 动 物输 入“1”继 续 添 加 规 则,输 入“3”删 除 选 定 的 规 则1number输 入 事 实,两 种 以 上 的 事 实 请 在 每 个 事 实 后 加 上 符 号会
25、跳&会跑输 入 结 果袋鼠输 入“1”继 续 添 加 规 则,输 入“2”查 看 规 则 库规 则 库 如 下1.由 有 毛 发 可 得 哺 乳 动 物2 .由 有 奶 可 得 哺 乳 动 物3 .由 有 羽 毛 可 得 鸟4 .由 会 飞&下 蛋&可得鸟5 .由 吃 肉 可 得 食 肉 动 物6 .由 有 锋 利 的 牙 齿&有 爪&眼 睛 盯 着 前 方&可 得 食 肉 动 物7.由 哺 乳 动 物&有 蹄&可 得 有 蹄 类 哺 乳 动 物8 .由 哺 乳 动 物&反 刍&可 得 有 偶 蹄 类 哺 乳 动 物9 .由 哺 乳 动 物&食 肉 动 物&黄 褐 色&有 暗 斑&可 得 金
26、钱 豹10.由 哺 乳 动 物&食 肉 动 物&黄 褐 色&黑 色 条 纹&可 得 老 虎11.由 有 蹄 类 哺 乳 动 物&有 长 脖 子&有 长 腿&有 暗 斑&可 得 长 颈 鹿12.由 有 蹄 类 哺 乳 动 物&黑 条 纹&可 得 斑 马13.由鸟&不 会 飞&有 长 脖 子&有 长 腿&黑 白 色&可 得 鸵 鸟14.由鸟&不 会 飞&会 游 泳&黑 白 色&可 得 企 鹅15.由鸟&会 飞&可 得 信 天 翁16.由 反 刍 可 得 哺 乳 动 物17.由 会 跳&会 跑 可 得 袋 鼠输 入“1”继 续 添 加 规 则,输 入“3”删 除 选 定 的 规 则4、规则库操作一删
27、除规则一删除袋鼠规则 C:UsersasusDesktopAI2dong wushibie shujukug uizekuDebug g uizeku.exe14.由鸟&不会飞&会游泳&黑白色&可得企鹅15 .由鸟&会飞&可得信天翁16 .由反刍可得哺乳动物17 .由会跳&会跑可得袋鼠输 入“1”继续添加规则,输 入3”删除选定的规则3输入要删除的条数17规则库如下1.由有毛发可得哺乳动物2 .由有奶可得哺乳动物3 .由有羽毛可得鸟4.由会飞&下蛋&可得鸟5 .由吃肉可得食肉动物6 .由有锋利的牙齿&有爪&眼睛盯着前方&可得食肉动物7 .由哺乳动物&有蹄&可得有蹄类哺乳动物8 .由哺乳动物&反
28、刍&可得有偶蹄类哺乳动物9 .由哺乳动物&食肉动物&黄褐色&有暗斑&可得金钱豹10 .由哺乳动物&食肉动物&黄褐色&黑色条纹也可得老虎11.由有蹄类哺乳动物&有长脖子&有长腿&有暗斑&可得长颈鹿12 .由有蹄类哺乳动物&黑条纹&可得斑马13 .由鸟&不会飞&有长脖子&有长腿&黑白色&可得鸵鸟14.由鸟&不会飞&会游泳&黑白色&可得企鹅15 .由鸟&会飞&可得信天翁16 .由反刍可得哺乳动物输 入“1”继续添加规则,输 入“3”删除选定的规则5、动物辨认一 辨认长颈鹿 C:UsersasusDesktopAI2dong wushibie shujukug uizekuDebug g uizeku
29、.exe*智能15 0 1班*0 6 15 3 0 3 4*刘少鹏*进行动物识别请输入7进行规则库操作请输入8请输入动物的特征数4请输入动物的特征有蹄类哺乳动物有长脖子有长腿有暗斑使用规则11且加入的新事实为长颈鹿该动物是长颈鹿请按任意键继续.六、心得体会通过本次实验我深刻的理解和掌握产生式知识表达方法,并且可以通过VC编程语言实现产生式系统的规则库。本次实验我同样碰到许多问题,我通过自己查阅资料,与同学们讨论,逐步的将自己的问题解决,在这个过程中提高了我的问题解决能力。最后由于本次实验只有对数据库有清楚的掌握,同时熟悉规则才干合理编程,因此我在平时的学习中应当加大数据库与数据结构的学习力度,
30、提高自己的编程能力。的美寿密大牵XI*AN UNIVERSITY OF POSTS A TEUCOMMUNICAT1ONS人工智能课内实验报告实验3:盲目搜索求解八数码问题学 院:自动化学院_ _ _ _ _ _ _ _ _ _ _ _ _ _班 级:智能15 01姓 名:刘 少 鹏(3 3)学 号:0 6153 0 34_日 期:2023-03-3 0 10:1 5-12:00人工智能课内实验3:盲目搜索求解8数码问题1、实验目的(1)熟悉人工智能系统中的问题求解过程;(2)熟悉状态空间中的盲目搜索策略;(3)掌握盲目搜索算法,重点是宽度优先搜索和深度优先搜索算法。2、实验规定用 VC语言编
31、程,采用宽度优先搜索和深度优先搜索方法,求解8数码问题3、实验内容(1)采用宽度优先算法,运营程序,规定输入初始状态假设给定如下初始状态S。2 8 31 6 47 0 5和目的状态S g2 1 64 0 87 5 3验证程序的输出结果,写出心得体会。(2)对代码进行修改(选作),实现深度优先搜索求解该问题提醒:每次选扩展节点时,从数组的最后一个生成的节点开始找,找一个没有被扩展的节点。这样也需要对节点添加一个是否被扩展过的标志。4源代码及实验结果截图(1)实验源代码#in c lude#inc lu d e T y pedef s t ru ct Node in t num 9;/棋盘状态i
32、n t d eep t h;/派生的深度 g(n)i nt di f fnum;/不 在 位 的 数 目 h(n)i nt v al u e;/耗散值 f(n)=g(n)+h(n)struc t Nod e*p r e;s t r uct N o de*ne x t;s t ruct Nod e*par e nt;n umNod e;/*-end o f stru c tn umNode-*/int o r i g i n。;棋盘初始状态i nt t a rget9 /棋盘目的状态int n u mNo d e_ n u m,tot a 1 _ s tep;n um Node*open,*cl
33、o s e;/Ope n 表和 CI Ose 表n u mNod e*c r eate_n u mN o d e()(retur n(numN ode*)mall oc(si z e of(n u mNode);)numNo d e*open_ g etfirst(nu m N od e*he a d);返回第一项,并从Open表中删除void o p e n _i n sert(numNo d e*he a d,numNo d e*1 tem);/向Ope n表中按序插入新节点vo 1 d close_append(numNo d e*h e a d,n u mNode*item);/向Cl
34、o s e表中插入新节点in t ex p a n d(n umNode*it e m);/扩展节点int print_r e s u lt(numN o d e*item);/打印结果n umNode*co py_numN o de(numNod e*o r gi n);char i s N ewNode(numN o de*o p e n,n u mNo d e*close,1 ntn u m9);是否在Open表或Cl o s e表中vo id p r in t _n u m(i n t n um 9);打印棋盘状态int diff(i nt num9);求不在位棋子的个数void i
35、n it();/初始化,获得棋盘初始状态和目的状态vo 1 d swap(int*a,in t*b);int o p e rate(i n t n u m,int op);vo i d f r ee_ 1 ist(numN o de*he a d);/*N a m e:主函数/*D esc r ip t io n:程序入口int ma 1 n(1 nt arg c,char*a rg v )(/初始化Open表和C l o s e表s printf(*智能 150 l*n);pr 1 n tf(*刘少鹏*n);。pri n t f(*06 1 5303 4*n );o pe n=create_
36、 numN o de();c losec reate_numN o d e();open-p re =o p en-next=c 1 ose-p r ecl os e n e xt=NULL;ini t();/由用户输入初始和目的状态。初始化初始节点n umN o d e*p 1 ;p 1 =ere a t e_num N ode();p l-pare nt=NULL;pl-d e epth=0;int i =0;f or(1=0;i num i=orig in”;)op e n_ 1 nse rt(open,pl);num No d e_num=1;p 1 =open_g etfirst(o
37、 pen);w h I 1 e(p 1 !=N U L L)close_appen d(cl o se,p l);if(ex p and(pl)r eturn EXI T _S U CCESS;pl=o p e n_ getfirst(open);print f(No s o lut 1 on!n);。return EXIT_SUCC E SS;/*-end of f u n c t i o n ma in-*/v oid ini t()(wh i Ie(1)6(p r intf(Plea s e i n put opriginal st a t us:nFo r examp 1 e:st a
38、 nd s fo r n。1 2 3 ns。”4 5 6n780n)c h a r temp 10 ;。scan f(%s,&temp);i nt i =0;for(i=0;i=0&t empi-O=8;i+)o ri g 1 ni=tem p i-O;6)o pr 1 n t f(Please input t a rg et stat u s:n);s c anf(%s,&tem p);。i n t j=0;f o r (j=0;j=0&temp j-O next;。q=h e a d;wh i Ie(p!=N U LL&it e m-va 1 ue p-value)(q=P;p=p-nex
39、 t;6),q-n ext=i t em;。it e m-p re=q;i tem-n e x tP;if(p!=NULL)6 lp-pre=ite m;)/*-end o f function open_ i n s e rt-*/n u mNode*open_g etfirst(numNod e*h e a d)(numNode*p;i f(he a d-next=NUL L)0(r eturn NULL;)。p=h e a d-nex t;h ead-n ext=p-nex t;if(p-nex t!=N U LL)p-n e xt-pre=h e ad;p-pre=NULL;p-ne
40、x t=N UL L;return p;/*-en d of function ope n _g e t f i r stvo id cl os e _ap p e nd(n u m No d e*hea d,numNode*item)(it e m-n e xt=head-ne x t;item-pre=h e a d;h e a d-n e xt=i t em;if(item-next!=N ULL)6(i tem-n ex t-pre=i tem;6)/*-end o f fun c tion c 1 os e _appen d*/int expan d(numN o de*p 1)nu
41、mNod e*p2;i n t op=1;fo r(o p=1 ;o p num,op);i f(isNewNode(open,c 1 ose,p2-n u m)=N1)0(p 2-parent=pl;。p 2-d ee p th=p l-de e pth+1;p2-d if f num=d if f (p2-num);p2-v alu e=p2-de e pth+p2-dif f n um;i f(p 2-diffnum=0)e o o。total_st e p=p r 1 n t _ r esul t(p2);s pri n t f(T o t al s te p:%dn ,total_s
42、tep);f ree_ 1 ist(o p en);。f r ee_li s t(clo se);。r e t u rn 1 ;else6 b numN o d e _ num+;6 o pen_ in s ert(ope n,p 2);6)e Ise。fr e e(p2);6)retur n 0;e n d o f func t ion expan d-*/i n t o p e r a te (i n t m,in t op)(i n t b lank;b 1 ank-0;while(mb lank!=0&blan k 2)s wa p(m+bla n k,m+b 1 a n k-3);b
43、 r e ak;c ase 2:/*dow n*/i f(blankdeepth=orig i n-d e e pt h;p-diffnum=origin-d if f num;p-value=origi n-v a lue;in t i;fo r(i=0;inum)i=(origin-n u m)i ;)r etu r n p;/*-en d o f fu n ct i on co p y _numNode-*/intd 1 f f(i n t num 9)(i nt i,diffnum=0;fo r(i=0;i ne x t;while(p!=NULL)6(f o r(i=0;i b i
44、f(p-n u m i!=n umi)bre a k;0)o o if(i=9)re t urn O,;/Ope np=p-n e x t;p=clos e-next;w h il e(p!=NULL)(*for(i=0;i n u mi!=num”)br e ak;0 0 i f(i=9)return C;/Close p=p-next;6)r e tur n N/*-e n d o f f u nc t i o n isNewNo d e*/void free_l 1 s t(n umN o d e *hea d)n umNode*p,*q;ph ead-n ext;wh 1 1 e(p!
45、=NU L L)q=p-ne x t;fre e (p);P=q;)f r e e(hea d);/*-end of f u n c t ion f r ee_lis tvoid pri n t _n u m(i n t n um 9)i nt i;for(i=0;i pare nt)。o p r i nt f(nStep%d:n,step+1 );o p rint_num(p-num);re t u rn st e p+1;e Ise(。return-1;)(2)实验截图SB C:W indowssystem32cmd.exe*智 能1501*文u 少鹏*06153034*Please in
46、put opriginal status:For example:123456780 stands for12 34 5 67 8 0283164705Please input target status:216408753.SB 选 择C:W indowssystem32cmd.exe860865865865065605615615 01234567ppppppppeeeeeeeetttttttts217s217s217s217s217s217s2o7s27o345340304034834834834834QB iSC:Windowssystem32cmd.exeSt e p7:Q68713
47、054St e p8:Q68/13504St e p9:n68713540St e p10:n68710543St e p11:n60718543St e p12:n06718543St e p13:n16708543St e p14:n16/48503St e p15:n16搜狗拼音输入法 全:明圣 C:Windowssystem32cmd.exeStep 12:06718543Step 13:Q16I08543Step 14:n16748503Step 15:n16I48053Step 16:216048/53Step 17:n16408753Total step:17请按任意键继续.5心
48、得体会本次实验对我最大的收获就是我再解决问题的过程中提高了C语言编程能力,对用编程解决实际问题有了更加深刻的结识。本次实验我采用了宽度优先算法,成功的完毕了本次实验,我对宽度优先算法有了更为深刻的理解,我相信我再通过几次宽度优先算法的练习,我就可以用它来解决一些生活中的实际问题。的关再翟大牵XIAN UNlVERSfTY OF POSTS&TELECOMMUNICATIONS人工智能课内实验报告实验4:回溯算法求解四皇后问题学 院:自动化学院_ _ _ _ _ _ _ _ _ _ _ _ _班 级:智能15 0 1 _ _ _ _ _ _ _ _ _ _ _ _ _ _姓 名:刘 少 鹏(3
49、3)学 号:0 6 1 5 3 0 3 4日期:2023-04-05。0:1 5-12:00实验4回溯算法求解四皇后问题1实验目的:理解搜索的概念,掌握回溯搜索算法,用回溯算法求解四皇后问题.2实验规定:用V C编程实现求解四皇后问题的回溯过程,根据实验结果写出回溯算法的总结.3实验结果分析:选择叶:庆件 学习vc6.0 testg归 四皇后(回 溯)Debug 1.exe笑紫四回测舁力智能15 0 1班*0 6 15 3 0 3 4*岐j 少鹏*1100020001any key100001000010to continue.回朔算法总结:回朔算法是从一条路往前走,能进则进,不能进则退回来,
50、换一条路再试。本次四皇后就是回溯算法,第一步按照顺序放一个皇后,然后第二步符合规定放第2个皇后假如没有位置符合规定,那么就要改变第一个皇后的位置,重新放第2个皇后的位置,直到找到符合条件的位置就可以了。回朔算法是一个既带有系统性又带有跳跃性的的搜索算法。它在包含问题的所有解的解空间树中,按照深度优先的策略,从根结点出发搜索解空间树。算法搜索至解空间树的任一结点时,总是先判断该结点是否肯定不包含问题的解。假如肯定不包含,则跳过对以该结点为根的子树的系统搜索,逐层向其祖先结点回溯。否则,进入该子树,继续按深度优先的策略进行搜索。回溯法在用来求问题的所有解时,要回溯到根,且根结点的所有子树都已被搜索