【正文】
1) ((= n 1) 1) (T (* (N!( n 1)) n)))) ? Lisp的程序設(shè)計(jì)也就是定義函數(shù), lisp的整個(gè)程序也就是一堆函數(shù) sspu 王帥 人工智能 例:漢諾塔問(wèn)題 (DEFUN HANO1(a b c n) (COND ((= n 1)(movedisk a c)) (T (HANO1 a c b ( n 1)) (movedisk a c) (HANO1 b a c ( n 1))))) (DEFUN movedisk (X Y) (TERPR1) (PRINTC “move disk from ”) (PRINTC X) (PRINTC “to “) (PRINTC Y)) 盤子所在針 起中轉(zhuǎn)作用的針 盤子要移到的目標(biāo)針 回車換行函數(shù) 輸出函數(shù) sspu 王帥 人工智能 小結(jié) ? Prolog中所有事實(shí)和規(guī)則都是以謂詞形式存放, Prolog自己提供了一套匹配回溯的控制策略。可以說(shuō)用 Prolog建立 AI程序,推理部分已經(jīng)在它內(nèi)部實(shí)現(xiàn)了,我們只要用它規(guī)定的方式把各種規(guī)則、事實(shí)寫出,然后就可運(yùn)行求解 ? Lisp中也是一樣,都以符號(hào)表達(dá)式這種結(jié)構(gòu)來(lái)表示事實(shí)和規(guī)則 ? 設(shè)計(jì) AI程序時(shí),也可采用 C、 C++等語(yǔ)言,但這需要我們自己來(lái)控制每一步,需要考慮知識(shí)以什么形式、什么結(jié)構(gòu)如何存放等(可以用數(shù)組、鏈表、樹結(jié)構(gòu)、文本文件、數(shù)據(jù)庫(kù)等存放知識(shí)),還需要考慮以什么方式來(lái)調(diào)用、管理、控制知識(shí)的運(yùn)用 ?缺點(diǎn):編程工作量增加 ?優(yōu)點(diǎn):有更大的主動(dòng)權(quán),更大的靈活性,可自由采用一些快速的搜索、推理算法,可設(shè)計(jì)更方便美觀的界面,利用更多的系統(tǒng)資源 ?采用哪種語(yǔ)言進(jìn)行 AI程序設(shè)計(jì)是根據(jù)具體情況決定的 sspu 王帥 人工智能 ?求三個(gè)盤子的漢諾塔,則輸入 (HANO1 ?a ?b ?c 3) ?輸出為 Move disk from a to c Move disk from a to b Move disk from c to b Move disk from a to c Move disk from b to a Move disk from b to c Move disk from a to