【正文】
1) ((= n 1) 1) (T (* (N!( n 1)) n)))) ? Lisp的程序設計也就是定義函數, lisp的整個程序也就是一堆函數 sspu 王帥 人工智能 例:漢諾塔問題 (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)) 盤子所在針 起中轉作用的針 盤子要移到的目標針 回車換行函數 輸出函數 sspu 王帥 人工智能 小結 ? Prolog中所有事實和規(guī)則都是以謂詞形式存放, Prolog自己提供了一套匹配回溯的控制策略??梢哉f用 Prolog建立 AI程序,推理部分已經在它內部實現了,我們只要用它規(guī)定的方式把各種規(guī)則、事實寫出,然后就可運行求解 ? Lisp中也是一樣,都以符號表達式這種結構來表示事實和規(guī)則 ? 設計 AI程序時,也可采用 C、 C++等語言,但這需要我們自己來控制每一步,需要考慮知識以什么形式、什么結構如何存放等(可以用數組、鏈表、樹結構、文本文件、數據庫等存放知識),還需要考慮以什么方式來調用、管理、控制知識的運用 ?缺點:編程工作量增加 ?優(yōu)點:有更大的主動權,更大的靈活性,可自由采用一些快速的搜索、推理算法,可設計更方便美觀的界面,利用更多的系統(tǒng)資源 ?采用哪種語言進行 AI程序設計是根據具體情況決定的 sspu 王帥 人工智能 ?求三個盤子的漢諾塔,則輸入 (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