人工智能實(shí)驗(yàn)報(bào)告大全_第1頁(yè)
人工智能實(shí)驗(yàn)報(bào)告大全_第2頁(yè)
人工智能實(shí)驗(yàn)報(bào)告大全_第3頁(yè)
人工智能實(shí)驗(yàn)報(bào)告大全_第4頁(yè)
人工智能實(shí)驗(yàn)報(bào)告大全_第5頁(yè)
已閱讀5頁(yè),還剩47頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

人工智能課內(nèi)實(shí)驗(yàn)報(bào)告(8次)學(xué)院:自動(dòng)化學(xué)院班級(jí):智能1501姓名:劉少鵬(34)學(xué)號(hào):06153034目錄課內(nèi)實(shí)驗(yàn)1:猴子摘香蕉問(wèn)題的VC編程實(shí)現(xiàn)……1課內(nèi)實(shí)驗(yàn)2:編程實(shí)現(xiàn)簡(jiǎn)單動(dòng)物識(shí)別系統(tǒng)的知識(shí)表示………5課內(nèi)實(shí)驗(yàn)3:盲目搜索求解8數(shù)碼問(wèn)題………18課內(nèi)實(shí)驗(yàn)4:回溯算法求解四皇后問(wèn)題………33課內(nèi)實(shí)驗(yàn)5:編程實(shí)現(xiàn)一字棋游戲……………37課內(nèi)實(shí)驗(yàn)6:字句集消解實(shí)驗(yàn)…………………46課內(nèi)實(shí)驗(yàn)7:簡(jiǎn)單動(dòng)物識(shí)別系統(tǒng)的產(chǎn)生式推理………………66課內(nèi)實(shí)驗(yàn)8:編程實(shí)現(xiàn)D-S證據(jù)推理算法……78人工智能課內(nèi)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)1:猴子摘香蕉問(wèn)題的VC編程實(shí)現(xiàn)學(xué)院:自動(dòng)化學(xué)院班級(jí):智能1501姓名:劉少鵬(33)學(xué)號(hào):06153034日期:2017-3-810:15-12:00實(shí)驗(yàn)1:猴子摘香蕉問(wèn)題的VC編程實(shí)現(xiàn)實(shí)驗(yàn)?zāi)康模?)熟悉謂詞邏輯表示法;(2)掌握人工智能謂詞邏輯中的經(jīng)典例子——猴子摘香蕉問(wèn)題的編程實(shí)現(xiàn)。二、編程環(huán)境VC語(yǔ)言問(wèn)題描述房子里有一只猴子(即機(jī)器人),位于a處。在c處上方的天花板上有一串香蕉,猴子想吃,但摘不到。房間的b處還有一個(gè)箱子,如果猴子站到箱子上,就可以摸著天花板。如圖1所示,對(duì)于上述問(wèn)題,可以通過(guò)謂詞邏輯表示法來(lái)描述知識(shí)。要求通過(guò)VC語(yǔ)言編程實(shí)現(xiàn)猴子摘香蕉問(wèn)題的求解過(guò)程。圖1猴子摘香蕉問(wèn)題源代碼#include<stdio.h>unsignedinti;voidMonkey_Go_Box(unsignedcharx,unsignedchary) printf("Step%d:monkey從%c走到%c\n",++i,x,y);//x表示猴子的位置,y為箱子的位置voidMonkey_Move_Box(charx,chary) printf("Step%d:monkey把箱子從%c運(yùn)到%c\n",++i,x,y);//x表示箱子的位置,y為香蕉的位置voidMonkey_On_Box() printf("Step%d:monkey爬上箱子\n",++i);voidMonkey_Get_Banana() printf("Step%d:monkey摘到香蕉\n",++i);voidmain() unsignedcharMonkey,Box,Banana; printf("********智能1501班**********\n"); printf("********06153034************\n"); printf("********劉少鵬**************\n"); printf("請(qǐng)用abc來(lái)表示猴子箱子香蕉的位置\n"); printf("Monkey\tbox\tbanana\n"); scanf("%c",&Monkey); getchar(); printf("\t");scanf("%c",&Box); getchar(); printf("\t\t"); scanf("%c",&Banana); getchar(); printf("\n操作步驟如下\n"); if(Monkey!=Box) Monkey_Go_Box(Monkey,Box); if(Box!=Banana) Monkey_Move_Box(Box,Banana); Monkey_On_Box(); Monkey_Get_Banana(); printf("\n"); getchar();實(shí)驗(yàn)結(jié)果相關(guān)截圖六、心得體會(huì)通過(guò)本次實(shí)驗(yàn),我初步了學(xué)會(huì)了使用VC的新建工程,并且進(jìn)行簡(jiǎn)單的程序編寫。此外我還學(xué)會(huì)如何使用一些謂詞來(lái)解決生活中的一些簡(jiǎn)單問(wèn)題,并且用VC編程給出具體的操作步驟,感覺(jué)對(duì)VC編程有了新的認(rèn)識(shí)。在實(shí)驗(yàn)中我也遇到過(guò)許多問(wèn)題,比如在我寫完代碼進(jìn)行編譯時(shí)總是會(huì)出現(xiàn)一個(gè)錯(cuò)誤“

fatalerrorC1010:在查找預(yù)編譯頭時(shí)遇到意外的文件結(jié)尾,是否忘記了向源中添加“#include‘stdafx.h’”關(guān)于這個(gè)錯(cuò)誤我我問(wèn)了幾個(gè)同學(xué)得不出答案后,我決定通過(guò)上網(wǎng)查找,最終找到了解決方法,需要在該項(xiàng)目的每一個(gè)cpp結(jié)尾的文件屬性中設(shè)置不使用預(yù)編譯頭即可。在這個(gè)過(guò)程中也鍛煉了自己解決問(wèn)題的能力。人工智能課內(nèi)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)2:編程實(shí)現(xiàn)簡(jiǎn)單動(dòng)物識(shí)別系統(tǒng)的知識(shí)表示學(xué)院:自動(dòng)化學(xué)院班級(jí):智能1501姓名:劉少鵬(33)學(xué)號(hào):06153034日期:2017-3-1310:15-12:00實(shí)驗(yàn)2:編程實(shí)現(xiàn)簡(jiǎn)單動(dòng)物識(shí)別系統(tǒng)的知識(shí)表示一、實(shí)驗(yàn)?zāi)康?、理解和掌握產(chǎn)生式知識(shí)表示方法;2、能夠通過(guò)VC編程語(yǔ)言實(shí)現(xiàn)產(chǎn)生式系統(tǒng)的規(guī)則庫(kù)。二、實(shí)驗(yàn)內(nèi)容1、以動(dòng)物識(shí)別系統(tǒng)的產(chǎn)生式規(guī)則為例;2、用選定的編程語(yǔ)言建造規(guī)則庫(kù)和綜合數(shù)據(jù)庫(kù),并能對(duì)它們進(jìn)行增加、刪除和修改操作。實(shí)驗(yàn)步驟確定需要識(shí)別的動(dòng)物及其屬性本次實(shí)驗(yàn)的簡(jiǎn)單動(dòng)物識(shí)別系統(tǒng)總共能識(shí)別7種動(dòng)物,即:老虎、金錢豹、斑馬、長(zhǎng)頸鹿、企鵝、鴕鳥(niǎo)和信天翁。建立識(shí)別七種動(dòng)物識(shí)別系統(tǒng)的規(guī)則選定編程語(yǔ)言并確定綜合數(shù)據(jù)庫(kù)和規(guī)則庫(kù)結(jié)構(gòu)選用C語(yǔ)言作為編程語(yǔ)言(2)綜合數(shù)據(jù)庫(kù)的建立(3)規(guī)則庫(kù)的建立四、程序源代碼#include<iostream>#include<string>usingnamespacestd;structRULES intcount; charpre[255]; charback[255]; intmark;voidcheck();RULESr[100]={ {1,"有毛發(fā)","哺乳動(dòng)物",0}, //所有規(guī)則靜態(tài)數(shù)據(jù)庫(kù) {1,"有奶","哺乳動(dòng)物",0}, {1,"有羽毛","鳥(niǎo)",0}, {2,"會(huì)飛&下蛋&","鳥(niǎo)",0}, {1,"吃肉","食肉動(dòng)物",0}, {3,"有鋒利的牙齒&有爪&眼睛盯著前方&","食肉動(dòng)物",0}, {2,"哺乳動(dòng)物&有蹄&","有蹄類哺乳動(dòng)物",0}, {2,"哺乳動(dòng)物&反芻&","有偶蹄類哺乳動(dòng)物",0}, {4,"哺乳動(dòng)物&食肉動(dòng)物&黃褐色&有暗斑&","金錢豹",0}, {4,"哺乳動(dòng)物&食肉動(dòng)物&黃褐色&黑色條紋&","老虎",0}, {4,"有蹄類哺乳動(dòng)物&有長(zhǎng)脖子&有長(zhǎng)腿&有暗斑&","長(zhǎng)頸鹿",0}, {2,"有蹄類哺乳動(dòng)物&黑條紋&","斑馬",0},{5,"鳥(niǎo)&不會(huì)飛&有長(zhǎng)脖子&有長(zhǎng)腿&黑白色&","鴕鳥(niǎo)",0}, {4,"鳥(niǎo)&不會(huì)飛&會(huì)游泳&黑白色&","企鵝",0}, {2,"鳥(niǎo)&會(huì)飛&","信天翁",0}, {1,"反芻","哺乳動(dòng)物",0}intnumber;intm;intcat=15;inta;intlength; //輸入的事實(shí)長(zhǎng)度stringf[255]; //輸入的事實(shí)數(shù)組voidinput() while(1) cat++; cout<<"number"<<endl; cin>>r[cat].count; cout<<"輸入事實(shí),兩種以上的事實(shí)請(qǐng)?jiān)诿總€(gè)事實(shí)后加上‘&’符號(hào)"<<endl; cin>>r[cat].pre; cout<<"輸入結(jié)果"<<endl; cin>>r[cat].back; r[cat].mark=0; while(1) cout<<"輸入“1”繼續(xù)添加規(guī)則,輸入“2”查看規(guī)則庫(kù)"<<endl; intp; cin>>p; if(p==1) input(); else if(p==2) check(); else cout<<"輸入錯(cuò)誤,重新輸入"<<endl;voiddelate() cout<<"輸入要?jiǎng)h除的條數(shù)"<<endl; intbar; cin>>bar; for(intt=0;t<=cat;t++) r[bar-1]=r[bar]; bar++; cat--; check();voidcheck() cout<<endl<<"規(guī)則庫(kù)如下"<<endl; for(inti=0;i<=cat;i++) cout<<i+1<<"."<<"由"<<r[i].pre<<"可得"<<r[i].back<<endl; cout<<endl; while(1) cout<<"輸入“1”繼續(xù)添加規(guī)則,輸入“3”刪除選定的規(guī)則"<<endl; cin>>m; if(m==1) input(); else if(m==3) delate();intfind_rule(ints) //查找規(guī)則庫(kù)中是否還有可使用的規(guī)則 for(inti=0;i<=15;i++) s=s*r[i].mark; //cout<<"find_rule結(jié)果"<<s<<endl; returns;intcompare1(RULESr)//當(dāng)前提條件為1時(shí) intj=0,i=1; stringstr,str2; str=r.pre; while(i<=length) if(f[i]==str) str2=r.back; f[length+1]=str2; //加入事實(shí)庫(kù) length++; //事實(shí)庫(kù)的長(zhǎng)度加1 r.mark=1; //標(biāo)記規(guī)則已使用過(guò) break; else i++; returnr.mark;intcompare2(RULESr) //前提條件不為1 stringb[10]; stringstr,str2; inti,j=1,num=0; inta=0; str=r.pre; for(i=0;i!=10;++i)//轉(zhuǎn)換數(shù)組 b[i]=""; for(i=0;i!=str.length();++i) if(str.at(i)!='&') b[j]+=str.at(i); else j++; i=1; while(i<=r.count) for(j=1;j!=length+1;j++) if(f[j]==b[i]) a+=1; i++; if(a==r.count) str2=r.back; f[length+1]=str2; //加入事實(shí)庫(kù) length++; //事實(shí)庫(kù)的長(zhǎng)度加1 r.mark=1; //標(biāo)記規(guī)則已使用過(guò) returnr.mark;voidresult() inti=1,m=0; while(i!=length+1) if(f[i]=="金錢豹") cout<<"該動(dòng)物是金錢豹"<<endl; m=1; break; else if(f[i]=="老虎") cout<<"該動(dòng)物是老虎"<<endl; m=1; break; else if(f[i]=="長(zhǎng)頸鹿") cout<<"該動(dòng)物是長(zhǎng)頸鹿"<<endl; m=1; break; else if(f[i]=="斑馬") cout<<"該動(dòng)物是斑馬"<<endl; m=1; break; else if(f[i]=="鴕鳥(niǎo)") cout<<"該動(dòng)物是鴕鳥(niǎo)"<<endl; m=1; break; else if(f[i]=="企鵝") cout<<"該動(dòng)物是企鵝"<<endl; m=1; break; else if(f[i]=="信天翁") cout<<"信天翁"<<endl; m=1; break; else i++; if(m==0) cout<<"沒(méi)有符合的動(dòng)物,請(qǐng)確認(rèn)特征,重新輸入"<<endl;voididetify() inti=0,u=0; if(find_rule(u)==0)//如果規(guī)則庫(kù)中還有未使用的規(guī)則 {//cout<<"還有未使用的規(guī)則"<<endl; intnum=length; while(i<16) //從第一條規(guī)則開(kāi)始遍歷 if(r[i].mark==0) //如果該條規(guī)則未使用 if(r[i].count==1) //該條規(guī)則前提數(shù)為1 u=compare1(r[i]); if(u==1) r[i].mark=1; if(r[i].mark==1) cout<<"使用規(guī)則"<<i+1; cout<<"且加入的新事實(shí)為"<<r[i].back<<endl; else u=compare2(r[i]); if(u==1) r[i].mark=1; if(r[i].mark==1) cout<<"使用規(guī)則"<<i+1; cout<<"且加入的新事實(shí)為"<<r[i].back<<endl; if(i==15) if(num!=length) i=0; num=length; else i=16; else i++; else cout<<"所有的規(guī)則都已使用"<<endl; result();/*主函數(shù)*/voidmain() cout<<"******智能1501班********"<<endl; cout<<"******06153034**********"<<endl; cout<<"******劉少鵬************"<<endl; cout<<"進(jìn)行動(dòng)物識(shí)別請(qǐng)輸入7"<<endl; cout<<"進(jìn)行規(guī)則庫(kù)操作請(qǐng)輸入8"<<endl; cin>>a; while(a==8) {while(1) cout<<"添加規(guī)則輸入‘1’,查看已有規(guī)則輸入‘2’"<<endl; cin>>m; if(m==1) input(); else if(m==2) check(); else cout<<"輸入錯(cuò)誤請(qǐng)重新輸入"<<endl;if(a==7) intu=0; cout<<"請(qǐng)輸入動(dòng)物的特征數(shù)"<<endl; cin>>length; cout<<"請(qǐng)輸入動(dòng)物的特征"<<endl; for(inti=1;i<=length;i++) cin>>f[i]; idetify(); system("pause");實(shí)驗(yàn)結(jié)果相關(guān)截圖1、程序總體結(jié)構(gòu)規(guī)則庫(kù)操作→查看規(guī)則庫(kù)規(guī)則庫(kù)操作→添加規(guī)則→添加袋鼠規(guī)則規(guī)則庫(kù)操作→刪除規(guī)則→刪除袋鼠規(guī)則5、動(dòng)物識(shí)別→識(shí)別長(zhǎng)頸鹿六、心得體會(huì)通過(guò)本次實(shí)驗(yàn)我深刻的理解和掌握產(chǎn)生式知識(shí)表示方法,并且能夠通過(guò)VC編程語(yǔ)言實(shí)現(xiàn)產(chǎn)生式系統(tǒng)的規(guī)則庫(kù)。本次實(shí)驗(yàn)我同樣遇到許多問(wèn)題,我通過(guò)自己查閱資料,與同學(xué)們討論,逐步的將自己的問(wèn)題解決,在這個(gè)過(guò)程中提高了我的問(wèn)題解決能力。最后因?yàn)楸敬螌?shí)驗(yàn)只有對(duì)數(shù)據(jù)庫(kù)有清楚的掌握,同時(shí)熟悉規(guī)則才能合理編程,因此我在平時(shí)的學(xué)習(xí)中應(yīng)當(dāng)加大數(shù)據(jù)庫(kù)與數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)力度,提高自己的編程能力。人工智能課內(nèi)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)3:盲目搜索求解八數(shù)碼問(wèn)題學(xué)院:自動(dòng)化學(xué)院班級(jí):智能1501姓名:劉少鵬(33)學(xué)號(hào):06153034日期:2017-03-3010:15-12:00人工智能課內(nèi)實(shí)驗(yàn)3:盲目搜索求解8數(shù)碼問(wèn)題實(shí)驗(yàn)?zāi)康氖煜と斯ぶ悄芟到y(tǒng)中的問(wèn)題求解過(guò)程;熟悉狀態(tài)空間中的盲目搜索策略;掌握盲目搜索算法,重點(diǎn)是寬度優(yōu)先搜索和深度優(yōu)先搜索算法。實(shí)驗(yàn)要求用VC語(yǔ)言編程,采用寬度優(yōu)先搜索和深度優(yōu)先搜索方法,求解8數(shù)碼問(wèn)題實(shí)驗(yàn)內(nèi)容采用寬度優(yōu)先算法,運(yùn)行程序,要求輸入初始狀態(tài)假設(shè)給定如下初始狀態(tài)S0283164705和目標(biāo)狀態(tài)Sg216408753驗(yàn)證程序的輸出結(jié)果,寫出心得體會(huì)。(2)對(duì)代碼進(jìn)行修改(選作),實(shí)現(xiàn)深度優(yōu)先搜索求解該問(wèn)題提示:每次選擴(kuò)展節(jié)點(diǎn)時(shí),從數(shù)組的最后一個(gè)生成的節(jié)點(diǎn)開(kāi)始找,找一個(gè)沒(méi)有被擴(kuò)展的節(jié)點(diǎn)。這樣也需要對(duì)節(jié)點(diǎn)添加一個(gè)是否被擴(kuò)展過(guò)的標(biāo)志。4源代碼及實(shí)驗(yàn)結(jié)果截圖實(shí)驗(yàn)源代碼#include<stdlib.h>#include<stdio.h>TypedefstructNode{intnum[9];//棋盤狀態(tài) intdeepth;//派生的深度g(n) intdiffnum;//不在位的數(shù)目h(n) intvalue;//耗散值f(n)=g(n)+h(n) structNode*pre; structNode*next; structNode*parent;}numNode;/*--endofstructnumNode--*/intorigin[9];//棋盤初始狀態(tài)inttarget[9];//棋盤目標(biāo)狀態(tài)intnumNode_num,total_step;numNode*open,*close;//Open表和Close表numNode*create_numNode() return(numNode*)malloc(sizeof(numNode));numNode*open_getfirst(numNode*head);//返回第一項(xiàng),并從Open表中刪除voidopen_insert(numNode*head,numNode*item);//向Open表中按序插入新節(jié)點(diǎn)voidclose_append(numNode*head,numNode*item);//向Close表中插入新節(jié)點(diǎn)intexpand(numNode*item);//擴(kuò)展節(jié)點(diǎn)intprint_result(numNode*item);//打印結(jié)果numNode*copy_numNode(numNode*orgin);charisNewNode(numNode*open,numNode*close,intnum[9]);//是否在Open表或Close表中voidprint_num(intnum[9]);//打印棋盤狀態(tài)intdiff(intnum[9]);//求不在位棋子的個(gè)數(shù)voidinit();//初始化,獲得棋盤初始狀態(tài)和目標(biāo)狀態(tài)voidswap(int*a,int*b);intoperate(intnum[],intop);voidfree_list(numNode*head);//*Name:主函數(shù)//*Description:程序入口intmain(intargc,char*argv[]) //初始化Open表和Close表 printf("*****智能1501****\n"); printf("*****劉少鵬******\n"); printf("*****06153034****\n"); open=create_numNode(); close=create_numNode(); open->pre=open->next=close->pre=close->next=NULL; init();//由用戶輸入初始和目標(biāo)狀態(tài) //初始化初始節(jié)點(diǎn) numNode*p1; p1=create_numNode(); p1->parent=NULL; p1->deepth=0; inti=0; for(i=0;i<9;i++) p1->num[i]=origin[i]; open_insert(open,p1); numNode_num=1; p1=open_getfirst(open); while(p1!=NULL) close_append(close,p1); if(expand(p1)) returnEXIT_SUCCESS; p1=open_getfirst(open); printf("Nosolution!\n"); returnEXIT_SUCCESS;}/*----------endoffunctionmain----------*/voidinit() while(1) printf("Pleaseinputopriginalstatus:\nForexample:123456780standsfor\n" "123\n" "456\n" "780\n"); chartemp[10]; scanf("%s",&temp); inti=0; for(i=0;i<9&&temp[i]-'0'>=0&&temp[i]-'0'<=8;i++) origin[i]=temp[i]-'0'; printf("Pleaseinputtargetstatus:\n"); scanf("%s",&temp); intj=0; for(j=0;j<9&&temp[j]-'0'>=0&&temp[j]-'0'<=8;j++) target[j]=temp[j]-'0'; system("cls"); if(i==9&&j==9) break;}/*-----endoffunctioninit-----*/voidopen_insert(numNode*head,numNode*item) numNode*p,*q; p=head->next; q=head; while(p!=NULL&&item->value>p->value) q=p; p=p->next; q->next=item; item->pre=q; item->next=p; if(p!=NULL) p->pre=item;}/*-----endoffunctionopen_insert-----*/numNode*open_getfirst(numNode*head) numNode*p; if(head->next==NULL) returnNULL; p=head->next; head->next=p->next; if(p->next!=NULL) p->next->pre=head; p->pre=NULL; p->next=NULL; returnp;}/*-----endoffunctionopen_getfirst-----*/voidclose_append(numNode*head,numNode*item) item->next=head->next; item->pre=head; head->next=item; if(item->next!=NULL) item->next->pre=item;}/*-----endoffunctionclose_append-----*/intexpand(numNode*p1) numNode*p2; intop=1; for(op=1;op<=4;op++) p2=copy_numNode(p1); operate(p2->num,op); if(isNewNode(open,close,p2->num)=='N') p2->parent=p1; p2->deepth=p1->deepth+1; p2->diffnum=diff(p2->num); p2->value=p2->deepth+p2->diffnum; if(p2->diffnum==0) total_step=print_result(p2); printf("Totalstep:%d\n",total_step); free_list(open); free_list(close); return1; else numNode_num++; open_insert(open,p2); else free(p2); return0;}/*-----endoffunctionexpand-----*/intoperate(intm[],intop) intblank; blank=0; while(m[blank]!=0&&blank<9) ++blank; if(blank==9) return1; switch(op){ case1:/*up*/ if(blank>2) swap(m+blank,m+blank-3); break; case2:/*down*/ if(blank<6) swap(m+blank,m+blank+3); break; case3:/*left*/ if(blank!=0&&blank!=3&&blank!=6) swap(m+blank,m+blank-1); break; case4:/*right*/ if(blank!=2&&blank!=5&&blank!=8) swap(m+blank,m+blank+1); break; default:return1; return0;voidswap(int*a,int*b) intc; c=*a; *a=*b; *b=c;numNode*copy_numNode(numNode*origin) numNode*p; p=create_numNode(); p->deepth=origin->deepth; p->diffnum=origin->diffnum; p->value=origin->value; inti; for(i=0;i<9;i++) (p->num)[i]=(origin->num)[i]; returnp;}/*-----endoffunctioncopy_numNode-----*/intdiff(intnum[9]) inti,diffnum=0; for(i=0;i<9;i++) if(num[i]!=target[i]) diffnum++; returndiffnum;}/*-----endoffunctiondiff-----*/charisNewNode(numNode*open,numNode*close,intnum[9]) numNode*p; inti=0; p=open->next; while(p!=NULL) for(i=0;i<9;i++) if(p->num[i]!=num[i]) break; if(i==9) return'O';//Open p=p->next; p=close->next; while(p!=NULL) for(i=0;i<9;i++) if(p->num[i]!=num[i]) break; if(i==9) return'C';//Close p=p->next; return'N';}/*-----endoffunctionisNewNode-----*/voidfree_list(numNode*head) numNode*p,*q; p=head->next; while(p!=NULL) {q=p->next; free(p); p=q; free(head);}/*-----endoffunctionfree_list-----*/voidprint_num(intnum[9]){inti; for(i=0;i<9;i++) { printf("%d\t",num[i]); if((i%3)==2) printf("\n");}/*-----endoffunctionprint_num-----*/intprint_result(numNode*item) numNode*p; intstep; p=item; if(p!=NULL) step=print_result(p->parent); printf("\nStep%d:\n",step+1); print_num(p->num); returnstep+1; else return-1;(2)實(shí)驗(yàn)截圖5心得體會(huì)本次實(shí)驗(yàn)對(duì)我最大的收獲就是我再解決問(wèn)題的過(guò)程中提高了C語(yǔ)言編程能力,對(duì)用編程解決實(shí)際問(wèn)題有了更加深刻的認(rèn)識(shí)。此次實(shí)驗(yàn)我采用了寬度優(yōu)先算法,成功的完成了本次實(shí)驗(yàn),我對(duì)寬度優(yōu)先算法有了更為深刻的理解,我相信我再經(jīng)過(guò)幾次寬度優(yōu)先算法的練習(xí),我就可以用它來(lái)解決一些生活中的實(shí)際問(wèn)題。人工智能課內(nèi)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)4:回溯算法求解四皇后問(wèn)題學(xué)院:自動(dòng)化學(xué)院班級(jí):智能1501姓名:劉少鵬(33)學(xué)號(hào):06153034日期:2017-04-0510:15-12:00實(shí)驗(yàn)4回溯算法求解四皇后問(wèn)題1實(shí)驗(yàn)?zāi)康?理解搜索的概念,掌握回溯搜索算法,用回溯算法求解四皇后問(wèn)題.2實(shí)驗(yàn)要求:用VC編程實(shí)現(xiàn)求解四皇后問(wèn)題的回溯過(guò)程,根據(jù)實(shí)驗(yàn)結(jié)果寫出回溯算法的總結(jié).3實(shí)驗(yàn)結(jié)果分析:回朔算法總結(jié):回朔算法是從一條路往前走,能進(jìn)則進(jìn),不能進(jìn)則退回來(lái),換一條路再試。本次四皇后就是回溯算法,第一步按照順序放一個(gè)皇后,然后第二步符合要求放第2個(gè)皇后,如果沒(méi)有位置符合要求,則就要改變第一個(gè)皇后的位置,重新放第2個(gè)皇后的位置,直到找到符合條件的位置就可以了?;厮匪惴ㄊ且粋€(gè)既帶有系統(tǒng)性又帶有跳躍性的的搜索算法。它在包含問(wèn)題的所有解的解空間樹(shù)中,按照深度優(yōu)先的策略,從根結(jié)點(diǎn)出發(fā)搜索解空間樹(shù)。算法搜索至解空間樹(shù)的任一結(jié)點(diǎn)時(shí),總是先判斷該結(jié)點(diǎn)是否肯定不包含問(wèn)題的解。如果肯定不包含,則跳過(guò)對(duì)以該結(jié)點(diǎn)為根的子樹(shù)的系統(tǒng)搜索,逐層向其祖先結(jié)點(diǎn)回溯。否則,進(jìn)入該子樹(shù),繼續(xù)按深度優(yōu)先的策略進(jìn)行搜索。回溯法在用來(lái)求問(wèn)題的所有解時(shí),要回溯到根,且根結(jié)點(diǎn)的所有子樹(shù)都已被搜索遍才結(jié)束。而回朔算法在用來(lái)求問(wèn)題的任一解時(shí),只要搜索到問(wèn)題的一個(gè)解就可以結(jié)束。這種以深度優(yōu)先的方式系統(tǒng)地搜索問(wèn)題的解的算法稱為回溯法,它適用于解一些組合數(shù)較大的問(wèn)題。4實(shí)驗(yàn)的心得體會(huì):通過(guò)本次實(shí)驗(yàn)我理解了搜索的概念,掌握了回溯搜索算法,學(xué)會(huì)了用回溯算法求解四皇后問(wèn)題。實(shí)驗(yàn)中我遇到了很多問(wèn)題,但是通過(guò)自己的努力,和同學(xué)的幫助,我順利的完成了實(shí)驗(yàn),在此過(guò)程中我有了很大的收獲,我對(duì)回朔算法有了更深刻的理解,我在此次實(shí)驗(yàn)結(jié)束后,我想回朔算法可以求解四皇后問(wèn)題,則八皇后,十皇后,N皇后問(wèn)題該怎么解決,我想通過(guò)自己的不斷學(xué)習(xí)這些問(wèn)題都將一一解決。參考示例代碼:#include<stdio.h>#defineboolint#definefalse0#definetrue1intNum=1;//用來(lái)記錄有幾種實(shí)現(xiàn)方法intq[5];boolC[5];//C[1]~C[4],布爾型變量,當(dāng)前列是否安全boolL[9];//L[2]~L[8],布爾型變量,(i-j)對(duì)角線(從左上角到右下角)是否安全2<=(i-j)+5<=8;boolR[9];//R[2]~R[8],布爾型變量,(i+j)對(duì)角線(從右上角到左下角)是否安全2<=i+j<=8intqipan[4][4]={{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};voidTry(inti)//皇后放置函數(shù) intj,k,n,m; for(j=1;j<5;j++) if((C[j]==true)&&(L[i-j+5]==true)&&(R[i+j]==true))//表示第i行第j列是安全的q[i]=j;//第一件事,既然i行,j列安全,就放置皇后在(i,j)處 C[j]=false;//i行,j列放置皇后后不再安全 L[i-j+5]=false;//(i,j)所在的從左上角到右下角的對(duì)角線將不再安全 R[i+j]=false; if(i<4)//第二件事,判斷是否放完4個(gè)皇后 Try(i+1);//未放完四個(gè)皇后,則接著放下一個(gè) else//四個(gè)皇后已經(jīng)放完 Num++; printf("方案:%d\n",Num); for(k=1;k<5;k++) qipan[k-1][q[k]-1]=1;//輸出棋盤,皇后用1表示,0表示該位置無(wú)皇后 for(m=0;m<4;m++) for(n=0;n<4;n++) printf("%d\t",qipan[m][n]); printf("\n");for(m=0;m<4;m++)//棋盤再次初始化 for(n=0;n<4;n++) qipan[m][n]=0; C[j]=true;//第三件事,修改安全的標(biāo)志,回溯 L[i-j+5]=true; R[i+j]=true;intmain(void) inti; Num=0; printf("****實(shí)驗(yàn)四回溯算法四皇后******\n");printf("****智能1501班****\n"); printf("****06153034******\n"); printf("****劉少鵬********\n"); printf("1表示該位置有皇后,0表示該位置無(wú)皇后\n"); for(i=1;i<5;i++) C[i]=true; for(i=0;i<9;i++) L[i]=R[i]=true; Try(1); return0;人工智能課內(nèi)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)5:編程實(shí)現(xiàn)一字棋游戲?qū)W院:自動(dòng)化學(xué)院班級(jí):智能1501姓名:劉少鵬(33)學(xué)號(hào):06153034日期:2017-04-1110:15-12:00實(shí)驗(yàn)5編程實(shí)現(xiàn)一字棋游戲1實(shí)驗(yàn)?zāi)康?(1)理解和掌握博弈樹(shù)的啟發(fā)式搜索過(guò)程;(2)熟悉博弈中兩種最基本的搜索方法——極大極小過(guò)程和過(guò)程;(3)能夠用VC編程語(yǔ)言設(shè)計(jì)簡(jiǎn)單的博弈游戲。2實(shí)驗(yàn)要求:用VC編程實(shí)現(xiàn)一字棋,根據(jù)實(shí)驗(yàn)結(jié)果寫出總結(jié)。3實(shí)驗(yàn)結(jié)果分析:3.1實(shí)驗(yàn)代碼#include<iostream>#include<windows.h>#include<conio.h>#include<string>#include<ctime>usingnamespacestd;#defineMAX_NUM1000//計(jì)算機(jī)獲勝的標(biāo)志#defineNO_BLANK-1001//人獲勝的標(biāo)志#defineTREE_DEPTH3//遞歸深度#defineNIL1001//根節(jié)點(diǎn)的函數(shù)走步評(píng)估值classState//棋盤狀態(tài)節(jié)點(diǎn),一個(gè)State實(shí)例就是一個(gè)棋盤的狀態(tài)節(jié)點(diǎn),從而形成一顆樹(shù)狀結(jié)構(gòu)public: intQP[3][3];//當(dāng)前棋盤數(shù)組 inte_fun;//評(píng)分結(jié)果 intchild[9];//當(dāng)前棋盤狀態(tài)下的后一步的所有狀態(tài)節(jié)點(diǎn) intparent;//當(dāng)前棋盤狀態(tài)下的父母節(jié)點(diǎn)下標(biāo) intbestChild;//在child[9]里e_fun最優(yōu)的節(jié)點(diǎn)下標(biāo)classTicpublic: inttmpQP[3][3];//用于層遞歸的臨時(shí)棋盤 staticints_count;//葉子節(jié)點(diǎn)的靜態(tài)總數(shù) StateStates[MAX_NUM];//棋盤狀態(tài)節(jié)點(diǎn)數(shù)組 Tic() voidinit()//初始化棋盤,將各個(gè)位置的棋盤都置為 s_count=0; for(inti=0;i<3;i++) for(intj=0;j<3;j++) States[0].QP[i][j]=0; States[0].parent=NIL; voidPrintQP()//棋盤界面顯示 for(inti=0;i<3;i++) for(intj=0;j<3;j++) cout<<States[0].QP[i][j]<<'\t'; cout<<endl; intIsWin(States)//判斷當(dāng)前的棋盤狀態(tài)是否有令任何一方獲勝 inti=0; for(i=0;i<3;i++) if(s.QP[i][0]==1&&s.QP[i][1]==1&&s.QP[i][2]==1)return1; if(s.QP[i][0]==-1&&s.QP[i][1]==-1&&s.QP[i][2]==-1)return-1; for(i=0;i<3;i++) if(s.QP[0][i]==1&&s.QP[1][i]==1&&s.QP[2][i]==1)return1; if(s.QP[0][i]==-1&&s.QP[1][i]==-1&&s.QP[2][i]==-1)return-1; if((s.QP[0][0]==1&&s.QP[1][1]==1&&s.QP[2][2]==1)||(s.QP[2][0]==1&&s.QP[1][1]==1&&s.QP[0][2]==1))return1; if((s.QP[0][0]==-1&&s.QP[1][1]==-1&&s.QP[2][2]==-1)||(s.QP[2][0]==-1&&s.QP[1][1]==-1&&s.QP[0][2]==-1))return-1; return0; inte_fun(States)//機(jī)器智能判定評(píng)價(jià)函數(shù) boolflag=true; inti=0; for(i=0;i<3;i++) for(intj=0;j<3;j++) if(s.QP[i][j]==0)flag=false; if(flag)returnNO_BLANK; if(IsWin(s)==-1)return-MAX_NUM; if(IsWin(s)==1)returnMAX_NUM; intcount=0; for(i=0;i<3;i++) for(intj=0;j<3;j++) if(s.QP[i][j]==0)tmpQP[i][j]=1; elsetmpQP[i][j]=s.QP[i][j]; for(i=0;i<3;i++) count+=(tmpQP[i][0]+tmpQP[i][1]+tmpQP[i][2])/3; for(i=0;i<3;i++) count+=(tmpQP[0][i]+tmpQP[1][i]+tmpQP[2][i])/3; count+=(tmpQP[0][0]+tmpQP[1][1]+tmpQP[2][2])/3; count+=(tmpQP[2][0]+tmpQP[1][1]+tmpQP[0][2])/3; for(i=0;i<3;i++) for(intj=0;j<3;j++) if(s.QP[i][j]==0)tmpQP[i][j]=-1; elsetmpQP[i][j]=s.QP[i][j]; for(i=0;i<3;i++) count+=(tmpQP[i][0]+tmpQP[i][1]+tmpQP[i][2])/3; for(i=0;i<3;i++) count+=(tmpQP[0][i]+tmpQP[1][i]+tmpQP[2][i])/3; count+=(tmpQP[0][0]+tmpQP[1][1]+tmpQP[2][2])/3; count+=(tmpQP[2][0]+tmpQP[1][1]+tmpQP[0][2])/3; returncount; virtualboolAutoDone() returnfalse; voidUserInput()//獲取用戶的輸入 intpos,x,y; L1:cout<<"請(qǐng)輸入棋子的坐標(biāo)xy:"; cin>>pos; x=pos/10,y=pos%10; if(x>0&&x<4&&y>0&&y<4&&States[0].QP[x-1][y-1]==0) States[0].QP[x-1][y-1]=-1; else cout<<"非法輸入!"; gotoL1;intTic::s_count=0;//初始化棋盤狀態(tài)節(jié)點(diǎn)總數(shù),剛開(kāi)始置為classdemo:publicTicpublic: demo() boolJudge() inti,j,a=0; for(i=0;i<3;i++) for(j=0;j<3;j++) if(States[0].QP[i][j]==0)a++; if(a==0)returntrue; returnfalse; virtualboolAutoDone() inta,b,i,j,m,n,max,min,x,y; if(IsWin(States[0])==-1) cout<<"恭喜您獲勝!"<<endl; returntrue; a=0,b=0; max=-10000; for(x=0;x<3;x++) for(y=0;y<3;y++) States[11].QP[x][y]=States[0].QP[x][y]; for(i=0;i<3;i++) for(j=0;j<3;j++) if(States[0].QP[i][j]==0) a=1; for(x=0;x<3;x++) for(y=0;y<3;y++) States[a].QP[x][y]=States[0].QP[x][y]; States[a].QP[i][j]=1; min=10000; for(m=0;m<3;m++) for(n=0;n<3;n++) if(States[a].QP[m][n]==0) b=1; for(x=0;x<3;x++) for(y=0;y<3;y++) States[10].QP[x][y]=States[a].QP[x][y]; States[10].QP[m][n]=-1; States[10].e_fun=e_fun(States[10]); if(States[10].e_fun<min)min=States[10].e_fun; States[a].e_fun=min; if(States[a].e_fun>max) max=States[a].e_fun; for(x=0;x<3;x++) for(y=0;y<3;y++) States[11].QP[x][y]=States[a].QP[x][y]; for(x=0;x<3;x++) for(y=0;y<3;y++) States[0].QP[x][y]=States[11].QP[x][y]; cout<<"計(jì)算機(jī)走棋"<<endl; PrintQP(); if(IsWin(States[0])==1) cout<<"抱歉你輸了,計(jì)算機(jī)獲勝!"<<endl; returntrue; elseif(IsWin(States[0])==-1) cout<<"恭喜您獲勝!"<<endl; returntrue; returnfalse;voidmain() cout<<"****項(xiàng)目名稱:一字棋游戲的實(shí)現(xiàn)****"<<endl; cout<<"****班級(jí):智能1501****"<<endl; cout<<"****姓名:劉少鵬****"<<endl; cout<<"****學(xué)號(hào):06153034****"<<endl;cout<<"****說(shuō)明:-1代表人落子位置,1代表電腦落子位置,0代表該位置無(wú)棋子****"<<endl; system("title#子棋智能小游戲"); system("colorA2"); charIsFirst; boolIsFinish; cout<<"若您為先手,請(qǐng)輸入'Y'!反之,請(qǐng)輸入'N':"<<endl; cin>>IsFirst; demo*p=newdemo(); p->init(); cout<<"棋盤的初始狀態(tài):"<<endl; p->PrintQP(); do{ if(!p->Judge()) if(IsFirst=='Y') p->UserInput();p->PrintQP(); if(!p->Judge()) IsFinish=p->AutoDone(); elseif(IsFirst=='N') IsFinish=p->AutoDone(); if(!p->Judge()) if(!IsFinish){p->UserInput();p->PrintQP();} if(p->Judge())IsFinish=true; }while(!IsFinish); if((p->IsWin(p->States[0])==0)&&p->Judge()) cout<<"平局"<<endl; system("pause");3.2、實(shí)驗(yàn)運(yùn)行結(jié)果截圖4、實(shí)驗(yàn)心得本次實(shí)驗(yàn),我通過(guò)學(xué)習(xí)用VC編程語(yǔ)言設(shè)計(jì)簡(jiǎn)單的博弈游戲,從而理解和掌握博弈樹(shù)的啟發(fā)式搜索過(guò)程,熟悉博弈中兩種最基本的搜索方法——極大極小過(guò)程和過(guò)程。并且將這種思想通過(guò)代碼表現(xiàn)出來(lái)。本次實(shí)驗(yàn)我最大的收獲不僅僅是學(xué)到了課本上的知識(shí),更是學(xué)會(huì)了如何主動(dòng)的求解問(wèn)題的答案。實(shí)驗(yàn)中我遇到了許多困難,不僅僅是有關(guān)編程算法方面的,還有一些代碼邏輯流程的設(shè)計(jì)。這些困難我通過(guò)上網(wǎng)和去圖書館查找資料或者向同學(xué)請(qǐng)教等方式,逐一解決了困難,我收獲良多。人工智能課內(nèi)實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)6:子句集消解實(shí)驗(yàn)學(xué)院:自動(dòng)化學(xué)院班級(jí):智能1501姓名:劉少鵬(33)學(xué)號(hào):06153034日期:2017-05-810:15-12:00實(shí)驗(yàn)6子句集消解實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康氖煜ぷ泳浼?jiǎn)的九個(gè)步驟;理解消解規(guī)則,能把任意謂詞公式轉(zhuǎn)換成子句集。二、編程環(huán)境VisualStudio2017三、實(shí)驗(yàn)原理在謂詞邏輯中,任何一個(gè)謂詞公式都可以通過(guò)應(yīng)用等價(jià)關(guān)系及推理規(guī)則化成相應(yīng)的子句集。其化簡(jiǎn)步驟如下:(1)消去連接詞“→”和“?”反復(fù)使用如下等價(jià)公式:P→Q?﹁P∨QP?Q?(P∧Q)∨(﹁P∧﹁Q)即可消去謂詞公式中的連接詞“→”和“?”。(2)減少否定符號(hào)的轄域反復(fù)使用雙重否定率﹁(﹁P)?P摩根定律﹁(P∧Q)?﹁P∨﹁Q﹁(P∨Q)?﹁P∧﹁Q量詞轉(zhuǎn)換率﹁(?x)P(x)?(?x)﹁P(x)﹁(?x)P(x)?(?x)¬P(x)將每個(gè)否定符號(hào)“﹁”移到僅靠謂詞的位置,使得每個(gè)否定符號(hào)最多只作用于一個(gè)謂詞上。(3)對(duì)變?cè)獦?biāo)準(zhǔn)化在一個(gè)量詞的轄域內(nèi),把謂詞公式中受該量詞約束的變?cè)坑昧硗庖粋€(gè)沒(méi)有出現(xiàn)過(guò)的任意變?cè)?,使不同量詞約束的變?cè)胁煌拿帧?4)化為前束范式化為前束范式的方法:把所有量詞都移到公式的左邊,并且在移動(dòng)時(shí)不能改變其相對(duì)順序。消去存在量詞(6)化為Skolem標(biāo)準(zhǔn)形對(duì)上述前束范式的母式應(yīng)用以下等價(jià)關(guān)系P∨(Q∧R)?(P∨Q)∧(P∨R)消去全稱量詞(8)消去合取詞在母式中消去所有合取詞,把母式用子句集的形式表示出來(lái)。其中,子句集中的每一個(gè)元素都是一個(gè)子句。(9)更換變量名稱對(duì)子句集中的某些變量重新命名,使任意兩個(gè)子句中不出現(xiàn)相同的變量名。四、實(shí)驗(yàn)結(jié)果及代碼//化簡(jiǎn)子句集的九步法演示//作者:劉少鵬//時(shí)間:2017.5#include<iostream>#include<sstream>#include<stack>#include<queue>usingnamespacestd;//一些函數(shù)的定義voidinitString(string&ini);//初始化stringdel_inlclue(stringtemp);//消去蘊(yùn)涵符號(hào)stringdec_neg_rand(stringtemp);//減少否定符號(hào)的轄域stringstandard_var(stringtemp);//對(duì)變量標(biāo)準(zhǔn)化stringdel_exists(stringtemp);//消去存在量詞stringconvert_to_front(stringtemp);//化為前束形stringconvert_to_and(stringtemp);//把母式化為合取范式stringdel_all(stringtemp);//消去全稱量詞stringdel_and(stringtemp);//消去連接符號(hào)合取%stringchange_name(stringtemp);//更換變量名稱 //輔助函數(shù)定義boolisAlbum(chartemp);//是字母stringdel_null_bracket(stringtemp);//刪除多余的括號(hào)stringdel_blank(stringtemp);//刪除多余的空格voidcheckLegal(stringtemp);//檢查合法性charnumAfectChar(inttemp);//數(shù)字顯示為字符 //主函數(shù)voidmain() cout<<"------------------求子句集九步法演示-----------------------"<<endl; system("color0A"); //orign="Q(x,y)%~(P(y)"; //orign="(@x)(P(y)>P)"; //orign="~(#x)y(x)"; //orign="~((@x)x!b(x))"; //orign="~(x!y)"; //orign="~(~a(b))"; stringorign,temp; charcommand,command0,command1,command2,command3,command4,command5, command6,command7,command8,command9,command10; cout<<"請(qǐng)輸入(Y/y)初始化謂詞演算公式"<<endl; cin>>command; if(command=='y'||command=='Y') initString(orign); else exit(0); cout<<"請(qǐng)輸入(Y/y)消除空格"<<endl; cin>>command0; if(command0=='y'||command0=='Y') //del_blank(orign);//undone cout<<"消除空格后是"<<endl <<orign<<endl; else exit(0); cout<<"請(qǐng)輸入(Y/y)消去蘊(yùn)涵項(xiàng)"<<endl; cin>>command1; if(command1=='y'||command1=='Y') orign=del_inlclue(orign); cout<<"消去蘊(yùn)涵項(xiàng)后是"<<endl <<orign<<endl; else exit(0); cout<<"請(qǐng)輸入(Y/y)減少否定符號(hào)的轄域"<<endl; cin>>command2; if(command2=='y'||command2=='Y') do temp=orign; orign=dec_neg_rand(orign); }while(temp!=orign); cout<<"減少否定符號(hào)的轄域后是"<<endl <<orign<<endl; else exit(0); cout<<"請(qǐng)輸入(Y/y)對(duì)變量進(jìn)行標(biāo)準(zhǔn)化"<<endl; cin>>command3; if(command3=='y'||command3=='Y') orign=standard_var(orign); cout<<"對(duì)變量進(jìn)行標(biāo)準(zhǔn)化后是"<<endl <<orign<<endl; else exit(0); cout<<"請(qǐng)輸入(Y/y)消去存在量詞"<<endl; cin>>command4; if(command4=='y'||command4=='Y') orign=del_exists(orign); cout<<"消去存在量詞后是(w=g(x)是一個(gè)Skolem函數(shù))"<<endl <<orign<<endl; else exit(0); cout<<"請(qǐng)輸入(Y/y)化為前束形"<<endl; cin>>command5; if(command5=='y'||command5=='Y') orign=convert_to_front(orign); cout<<"化為前束形后是"<<endl <<orign<<endl; else exit(0); cout<<"請(qǐng)輸入(Y/y)把母式化為合取方式"<<endl; cin>>command6; if(command6=='y'||command6=='Y') orign=convert_to_and(orign); cout<<"把母式化為合取方式后是"<<endl <<orign<<endl; else exit(0); cout<<"請(qǐng)輸入(Y/y)消去全稱量詞"<<endl; cin>>command7; if(command7=='y'||command7=='Y') orign=del_all(orign); cout<<"消去全稱量詞后是"<<endl <<orign<<endl; else exit(0); cout<<"請(qǐng)輸入(Y/y)消去連接符號(hào)"<<endl; cin>>command8; if(command8=='y'||command8=='Y') orign=del_and(orign); cout<<"消去連接符號(hào)后是"<<endl <<orign<<endl; else exit(0); cout<<"請(qǐng)輸入(Y/y)變量分離標(biāo)準(zhǔn)化"<<endl; cin>>command9; if(command9=='y'||command9=='Y') orign=change_name(orign); cout<<"變量分離標(biāo)準(zhǔn)化后是(x1,x2,x3代替變量x)"<<endl <<orign<<endl; else exit(0); cout<<"-------------------------完畢-----------------------------------"<<endl; cout<<"(請(qǐng)輸入Y/y)結(jié)束"<<endl; do }while('y'==getchar()||'Y'==getchar()); exit(0);voidinitString(string&ini) charcommanda,commandb; cout<<"請(qǐng)輸入您所需要轉(zhuǎn)換的謂詞公式"<<endl; cout<<"需要查看輸入幫助(Y/N)"<<endl; cin>>commanda; if(commanda=='Y'||commanda=='y') cout<<"本例程規(guī)定輸入時(shí)蘊(yùn)涵符號(hào)為>,全稱量詞為@,存在量詞為#,"<<endl <<"取反為~,吸取為!,合取為%,左右括號(hào)分別為(、),函數(shù)名請(qǐng)用一個(gè)字母"<<endl; cout<<"請(qǐng)輸入(y/n)選擇是否用戶自定義"<<endl; cin>>commandb; if(commandb=='Y'||commandb=='y') cin>>ini; else ini="(@x)(P(x)>((@y)(P(y)>P(f(x,y)))%~(@y)(Q(x,y)>P(y))))"

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論