



版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第 16 章 智能程序設(shè)計(jì)語(yǔ)言 第 16 章 智能程序設(shè)計(jì)語(yǔ)言 16.1 綜述綜述 16.2 函數(shù)型程序設(shè)計(jì)語(yǔ)言函數(shù)型程序設(shè)計(jì)語(yǔ)言 16.3 Visual Prolog16.3 Visual Prolog語(yǔ)言簡(jiǎn)介語(yǔ)言簡(jiǎn)介習(xí)題十六習(xí)題十六 第 16 章 智能程序設(shè)計(jì)語(yǔ)言 16.1 綜綜 述述 16.1.1 16.1.1 函數(shù)型語(yǔ)言函數(shù)型語(yǔ)言 LISP是一種函數(shù)型程序設(shè)計(jì)語(yǔ)言。LISP程序由一組函數(shù)組成, 程序的執(zhí)行過(guò)程就是一系列的函數(shù)調(diào)用和求值過(guò)程。 但 LISP還不是純函數(shù)型語(yǔ)言, 準(zhǔn)確地講, 它是基于函數(shù)的語(yǔ)言。除LISP外, 20世紀(jì)70年代J.Backus還提出了一種稱為FP的所謂純函數(shù)
2、型程序設(shè)計(jì)語(yǔ)言。 但該語(yǔ)言現(xiàn)在還限于理論研究, 實(shí)現(xiàn)上還存在一定困難。 第 16 章 智能程序設(shè)計(jì)語(yǔ)言 16.1.2 16.1.2 邏輯型語(yǔ)言邏輯型語(yǔ)言邏輯型程序設(shè)計(jì)語(yǔ)言起源于PROLOG(PROgramming in LOGic)。 PROLOG語(yǔ)言首先由法國(guó)馬塞大學(xué)的Colmerauer和它的研究小組于1972年研制成功, 后來(lái)在歐洲得到進(jìn)一步發(fā)展。 特別是1981年日本宣布要以PROLOG作為他們正在研制的新一代計(jì)算機(jī)智能計(jì)算機(jī)的核心語(yǔ)言, 更使PROLOG舉世矚目, 迅速風(fēng)靡世界?,F(xiàn)在PROLOG幾乎在人工智能的所有領(lǐng)域都獲得了應(yīng)用, 成為與LISP并駕齊驅(qū)的甚至更加流行的智能程序設(shè)計(jì)
3、語(yǔ)言。由于PROLOG語(yǔ)言是一種邏輯型程序設(shè)計(jì)語(yǔ)言, 因此用它編寫的程序也就是邏輯程序,即在PROLOG程序中一般不需告訴計(jì)算機(jī)“怎么做”, 而只需告訴它“做什么”。因此,PROLOG亦屬陳述性語(yǔ)言。與通常的過(guò)程性程序設(shè)計(jì)語(yǔ)言相比, PROLOG是更高級(jí)的語(yǔ)言。 第 16 章 智能程序設(shè)計(jì)語(yǔ)言 PROLOG語(yǔ)言是以Horn子句邏輯為基礎(chǔ)的程序設(shè)計(jì)語(yǔ)言,它是目前最具代表性的一種邏輯程序設(shè)計(jì)語(yǔ)言。早期PROLOG版本都是解釋型的, 1986 年美國(guó)的Borland公司推出了編譯型PROLOG-Turbo PROLOG, 并很快成為PC機(jī)上流行的PROLOG。 現(xiàn)在還有運(yùn)行在Windows環(huán)境下的可
4、視化編程語(yǔ)言Visual PROLOG。但這些PROLOG語(yǔ)言版本屬順序邏輯程序設(shè)計(jì)語(yǔ)言。為了進(jìn)一步提高運(yùn)行效率和推理速度,從20世紀(jì)80年代初起,人們開始研制并行邏輯程序設(shè)計(jì)語(yǔ)言。目前已開發(fā)出了不少并行邏輯語(yǔ)言,其中比較著名和成熟的有PARLOG(PARallel LOGical programming language)、ConcurrentPROLOG、GHC(Guarded Horn Clauses)等。 第 16 章 智能程序設(shè)計(jì)語(yǔ)言 16.1.3 16.1.3 面向?qū)ο笳Z(yǔ)言面向?qū)ο笳Z(yǔ)言20 世紀(jì) 80 年代以來(lái), 面向?qū)ο蟪绦蛟O(shè)計(jì)(ObjectOriented Programmin
5、g,OOP)異軍突起, 發(fā)展迅速, 如今已日漸成熟, 并越來(lái)越流行起來(lái)。 面向?qū)ο蟪绦蛞云湫畔㈦[蔽、 封裝、繼承、多態(tài)、消息傳遞等一系列優(yōu)良機(jī)制, 大大改善了軟件的復(fù)雜性、模塊性、重用性和可維護(hù)性, 有望從根本上解決軟件的生產(chǎn)效率問(wèn)題。另一方面,由于面向?qū)ο蟪绦蛟O(shè)計(jì)的類、對(duì)象、繼承等概念,與人工智能特別是知識(shí)表示和知識(shí)庫(kù)產(chǎn)生了天然的聯(lián)系。因而, 現(xiàn)在面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言也成為一種人工智能程序設(shè)計(jì)語(yǔ)言, 面向?qū)ο蟪绦蛟O(shè)計(jì)也被廣泛引入人工智能程序設(shè)計(jì), 特別是知識(shí)工程、 專家系統(tǒng)程序設(shè)計(jì)。 第 16 章 智能程序設(shè)計(jì)語(yǔ)言 面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言也種類繁多, 已發(fā)展成為一個(gè)大家 族 。 其 中 最 純
6、 正、 最具面向?qū)ο箫L(fēng)格的語(yǔ)言當(dāng)推Smalltalk,而最流行的OOP語(yǔ)言是C+, Java則是適于網(wǎng)絡(luò)(Internet)環(huán)境的一種面向?qū)ο笳Z(yǔ)言。 第 16 章 智能程序設(shè)計(jì)語(yǔ)言 16.1.4 16.1.4 混合型語(yǔ)言混合型語(yǔ)言 1. 1. 函數(shù)型與邏輯型相結(jié)合的語(yǔ)言函數(shù)型與邏輯型相結(jié)合的語(yǔ)言 函數(shù)型與邏輯型語(yǔ)言的結(jié)合方式有耦合型和統(tǒng)一型兩類。 統(tǒng)一型又可分為具有歸結(jié)語(yǔ)義的函數(shù)型語(yǔ)言和集成式語(yǔ)言兩個(gè)子類。 耦合型語(yǔ)言意為將具有歸約語(yǔ)義的函數(shù)型語(yǔ)言和具有歸結(jié)語(yǔ)義的邏輯型語(yǔ)言組合在一起, 并在二者之間提供一個(gè)接口而形成的一種混合型語(yǔ)言。 其典型代表有: 第 16 章 智能程序設(shè)計(jì)語(yǔ)言 (1) L
7、OGLISP。該語(yǔ)言在LISP的基礎(chǔ)上增加了表達(dá)合一、 回溯等機(jī)制的系統(tǒng)函數(shù),從而在保持LISP特色的同時(shí)又有了邏輯程序設(shè)計(jì)能力。 (2) FUNLOG。該語(yǔ)言在 PROLOG 之外又增加了函數(shù)定義機(jī)制, 系統(tǒng)以歸結(jié)語(yǔ)義執(zhí)行PROLOG程序, 以歸約語(yǔ)義求解函數(shù)。 (3) POPLOG。這是POP-11、PROLOG和LISP的混合型語(yǔ)言, 三種成分各有一個(gè)增量式編譯器。具有歸結(jié)語(yǔ)義的函數(shù)型語(yǔ)言又可分為N-語(yǔ)言、F-語(yǔ)言和R語(yǔ)言。 第 16 章 智能程序設(shè)計(jì)語(yǔ)言 2. 2. 函數(shù)型與面向?qū)ο笙嘟Y(jié)合的語(yǔ)言函數(shù)型與面向?qū)ο笙嘟Y(jié)合的語(yǔ)言 在LISP語(yǔ)言的基礎(chǔ)上再擴(kuò)充面向?qū)ο髾C(jī)制而產(chǎn)生的語(yǔ)言, 稱為函
8、數(shù)型的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言(亦稱為面向?qū)ο蟮腖ISP)。 這種語(yǔ)言現(xiàn)已成為一個(gè)家族, 其中比較著名的有: (1) Flavors 由 MIT 的 Lisp Machine 小組于 1979 年研制而成, 它的基語(yǔ)言是Symbolics Common LISP。 (2)LOOPS(Lisp-Object-OrientedProgramming System )。它是在InterLisp-D環(huán)境上實(shí)現(xiàn)的基于LISP的OOP語(yǔ)言, 由Xerox公司于1983年推出。 第 16 章 智能程序設(shè)計(jì)語(yǔ)言 (3) CommonLoops。 它是基于CommonLisp的函數(shù)型OOP語(yǔ)言, 由Xerox公司于
9、1985 年推出。 (4) CLOS (CommonLisp Objetc System)。它是Xerox公司于1986 年推出的一個(gè)CommonLoops與New Flavors的后繼產(chǎn)品。 (5) CommonObjects。它是由HP公司于19831985年實(shí)現(xiàn)的又一個(gè)基于CommonLisp 的OOP語(yǔ)言。 (6) OBJ2 也是一種面向?qū)ο蟮暮瘮?shù)型語(yǔ)言。 第 16 章 智能程序設(shè)計(jì)語(yǔ)言 3. 3. 邏輯型與面向?qū)ο笙嘟Y(jié)合的語(yǔ)言邏輯型與面向?qū)ο笙嘟Y(jié)合的語(yǔ)言 這類語(yǔ)言著名的有: (1) SPOOL。該語(yǔ)言是日本IBM分部于1985年推出的以面向?qū)ο笏枷霐U(kuò)充的PROLOG語(yǔ)言。 (2) O
10、rient 84K。該語(yǔ)言是Keio大學(xué)于1984年發(fā)表的基于PROLOG和Smalltalk 的并行執(zhí)行語(yǔ)言。 (3) Vulan。 該語(yǔ)言是一種面向?qū)ο蟮倪壿嬓驼Z(yǔ)言。 第 16 章 智能程序設(shè)計(jì)語(yǔ)言 16.2 函數(shù)型程序設(shè)計(jì)語(yǔ)言函數(shù)型程序設(shè)計(jì)語(yǔ)言LISP LISP語(yǔ)言的主要特點(diǎn)是: (1) LISP程序由一組函數(shù)組成, 程序的執(zhí)行過(guò)程是函數(shù)的調(diào)用過(guò)程。 (2) 程序和數(shù)據(jù)在形式上是相同的, 即都是符號(hào)表達(dá)式, 簡(jiǎn)稱為S-表達(dá)式。 (3) 遞歸是LISP語(yǔ)言的主要控制結(jié)構(gòu)。 (4) 程序以交互方式運(yùn)行。 第 16 章 智能程序設(shè)計(jì)語(yǔ)言 16.2.1 LISP16.2.1 LISP的程序結(jié)構(gòu)與
11、運(yùn)行機(jī)制的程序結(jié)構(gòu)與運(yùn)行機(jī)制LISP的程序一般由函數(shù)的定義和函數(shù)的調(diào)用兩部分組成。 其一般格式為: (DEFUN (函數(shù)名 (形參表) 函數(shù)體) (函數(shù)名 (形參表)函數(shù)體) (函數(shù)名 (形參表)函數(shù)體) (函數(shù)名 實(shí)參表) (函數(shù)名 實(shí)參表) (函數(shù)名 實(shí)參表) 第 16 章 智能程序設(shè)計(jì)語(yǔ)言 其中的“DEFUN”是定義函數(shù)的關(guān)鍵字,“函數(shù)名”可以是系統(tǒng)的內(nèi)部函數(shù)(名), 也可以是用戶用DEFUN定義的函數(shù)(名)。 例如下面就是一個(gè)LISP程序。 (DEFUN HANOI (a b c n) (COND (= n 1) (MOVE-DISK a c) (T (HANOI a c b (- n
12、 1) (MOVE-DISK a c) (HANOI b a c (- n 1) (DEFUN MOVE-DISK(from to) (TERPRI) (PRINC Move Disk From) (PRINC from) (PRINC To) (PRINC to) (HANOI abc 3) 第 16 章 智能程序設(shè)計(jì)語(yǔ)言 可以看出, 這個(gè)程序的函數(shù)定義部分定義了名為HANOI和MOVE-DISK兩個(gè)函數(shù), 其中前者調(diào)用后者; 函數(shù)調(diào)用部分只有一個(gè)函數(shù)調(diào)用, 即最后一行。 這個(gè)程序運(yùn)行時(shí), 就從對(duì)函數(shù)HANOI關(guān)于實(shí)參(abc 3)的調(diào)用、求值開始, 依函數(shù)體內(nèi)各子函數(shù)的邏輯順序, 又依次對(duì)
13、各函數(shù)進(jìn)行調(diào)用、求值, 直到最后一個(gè)或最后一次函數(shù)調(diào)用和求值完成后, 整個(gè)程序運(yùn)行結(jié)束。所以, LISP程序的運(yùn)行過(guò)程, 就是一個(gè)不斷地進(jìn)行函數(shù)調(diào)用和求值的過(guò)程。 第 16 章 智能程序設(shè)計(jì)語(yǔ)言 16.2.2 S-16.2.2 S-表達(dá)式表達(dá)式 從語(yǔ)法上看,LISP程序的基本單位是S-表達(dá)式。 S-表達(dá)式又可分為原子和表兩大類。 原子(atom)是由字母和數(shù)字組成的字符串,是S-表達(dá)式的最簡(jiǎn)單情況。原子又可分為文字原子、串原子和數(shù)字原子三種。 文字原子又稱符號(hào)(symbol), 是以字母開頭的字母數(shù)字串, 用來(lái)表示常量、變量和函數(shù)的名字等。例如:ABC、X1等。 串原子是由雙引號(hào)括起來(lái)的一串字
14、符。 如LISP Program。 數(shù)字原子由數(shù)字串組成。 在其前面可以有符號(hào)“-”或“+”, 中間可出現(xiàn)“.”,用來(lái)表示整數(shù)和實(shí)數(shù)。例如:256、-66、 3.141 59等。 第 16 章 智能程序設(shè)計(jì)語(yǔ)言 S-表達(dá)式可以遞歸定義如下: (1) 原子是S-表達(dá)式。 (2) 若S1和S2是S-表達(dá)式, 則(S1S2)也是S-表達(dá)式。 由定義,下面的式子都是S-表達(dá)式: X2 123 (AB) (A(BC) 表(list)是LISP語(yǔ)言中最常用的數(shù)據(jù)類型, 也是主要的處理對(duì)象。 表是由圓括號(hào)括起來(lái)的由空格分開的若干個(gè)元素的集合。 第 16 章 智能程序設(shè)計(jì)語(yǔ)言 表的一般形式為: (S-表達(dá)式S
15、-表達(dá)式 S-表達(dá)式) 例如: (X Y Z), (+1 2), (A (B C) 左括號(hào)后面的第一個(gè)元素稱為表頭, 其余的元素組成的表稱為表尾。 例如, 對(duì)于表(+ 1 2)的頭為+, 尾為(1 2)。 特別地, 元素個(gè)數(shù)為零的表為空表, 記為()或NIL。 表是一種特殊的S-表達(dá)式, 每一個(gè)表都對(duì)應(yīng)著一個(gè)S-表達(dá)式。二者的關(guān)系由下面的例子說(shuō)明。 第 16 章 智能程序設(shè)計(jì)語(yǔ)言 表S表達(dá)式(A) (A NIL)(A B) (A (B NIL)(A B C) (A (B (C NIL)(A B) C D) (A (B NIL) (C (D NIL) 可以看出, 表的 S-表達(dá)式的結(jié)構(gòu)實(shí)際是一棵
16、二叉樹。 第 16 章 智能程序設(shè)計(jì)語(yǔ)言 16.2.3 16.2.3 基本函數(shù)基本函數(shù)LISP的函數(shù)都以表的形式出現(xiàn), 并一律使用前綴表示方式, 即表頭為函數(shù)名, 并且每個(gè)函數(shù)都有一個(gè)返回值。 LISP的函數(shù)可分為語(yǔ)言自身提供的內(nèi)部函數(shù)(稱為基本函數(shù)或系統(tǒng)函數(shù))和用戶自定義函數(shù)兩類。 基本函數(shù)的種類有十多個(gè), 下面僅給出其中主要的幾類。第 16 章 智能程序設(shè)計(jì)語(yǔ)言 1. 1. 表處理函數(shù)表處理函數(shù) 表處理是LISP的主要特色, 表處理的函數(shù)也很多, 下面僅給出最常用的幾個(gè)。 1) CAR函數(shù) 格式 (CAR 表)其中CAR為函數(shù)名, 它是一個(gè)保留字(下同)。 功能 取出表中的表頭。 例如:
17、(CAR (LISP Language Program)返回值為: LISP 第 16 章 智能程序設(shè)計(jì)語(yǔ)言 2) CDR函數(shù) 格式 (CDR 表) 功能 取出表中的表尾。 例如: (CDR (LISP Language Program)返回值為: (Language Program) 第 16 章 智能程序設(shè)計(jì)語(yǔ)言 3) CONS函數(shù) 格式 (CONS S-表達(dá)式 表) 功能 將S-表達(dá)式作為一個(gè)元素加到表中去, 并作為所構(gòu)成新表中的第一個(gè)元素。 例如: (CONS My (LISP Language Program)返回值為: (My LISP Language Program) 第 16
18、 章 智能程序設(shè)計(jì)語(yǔ)言 4) APPEND函數(shù) 格式 (APPEND 表1 表2 表n)功能 將n個(gè)表中的元素合并成一個(gè)新表。 例如: (APPEND (TIGER LION) (DOG CAT)返回值為: (TIGER LION DOG CAT) 第 16 章 智能程序設(shè)計(jì)語(yǔ)言 5) LIST函數(shù) 格式 (LIST S-表達(dá)式1S-表達(dá)式2 S-表達(dá)式n) 功能 把n個(gè)S-表達(dá)式作為元素括在一起構(gòu)成一張新表。 例如: (LIST YELLOW RED BLUE)返回值為: (YELLOW RED BLUE) 第 16 章 智能程序設(shè)計(jì)語(yǔ)言 2. 2. 算術(shù)函數(shù)算術(shù)函數(shù) LISP的算術(shù)表達(dá)式也
19、是用函數(shù)表示的, 稱為算術(shù)函數(shù)。 下面我們僅舉例說(shuō)明。 (+ 2 5)表示2+5, 返回值為7。 (- (* 4 8) (/ 10 5)表示48-10/5, 返回值為30。 第 16 章 智能程序設(shè)計(jì)語(yǔ)言 3. 3. 求值與賦值函數(shù)求值與賦值函數(shù) 在上面的函數(shù)中多次出現(xiàn)撇號(hào),它的意思是禁止求值。 為什么要禁止求值呢? 原來(lái), LISP總是試圖對(duì)一切S-表達(dá)式求值。表的值是通過(guò)函數(shù)運(yùn)算而得到的, 原子的值則是通過(guò)賦值函數(shù)實(shí)現(xiàn)的。撇號(hào)也是一個(gè)函數(shù), 它實(shí)際是禁止求值函數(shù)QUOTE的簡(jiǎn)寫形式。 賦值函數(shù)有多個(gè), 其中SET函數(shù)是一個(gè)最基本的賦值函數(shù)。 第 16 章 智能程序設(shè)計(jì)語(yǔ)言 格式 (SET
20、變量 S-表達(dá)式) 功能 把S-表達(dá)式賦給變量。 例如: (SET X 8) ;X得到值8 (SET Y (a b c) ;Y得到值(a b c) (SET Z (CDR Y) ;Z得到值(b c) 另外, 賦值函數(shù)還有SETQ、 SETF(COMMON LISP), 其功能是類似的。 第 16 章 智能程序設(shè)計(jì)語(yǔ)言 4. 4. 謂詞函數(shù)謂詞函數(shù) 返回值為邏輯值真或假的函數(shù)稱為謂詞函數(shù), 簡(jiǎn)稱謂詞。 LISP中真和假分別用T和NIL表示,當(dāng)函數(shù)的返回值為非NIL時(shí), 也表示為真。另外, NIL也表示空表。1) 原子謂詞ATOM 格式 (ATOM 參數(shù)) 功能 檢測(cè)其參數(shù)是否為原子, 是則返回T
21、, 否則返回NIL。 例如: (ATOM a) ;返回T (ATOM (a b) ;返回NIL 第 16 章 智能程序設(shè)計(jì)語(yǔ)言 2) 相等謂詞EQUAL 格式 (EQUAL 參數(shù) 參數(shù)) 功能 判斷兩個(gè)參數(shù)是否邏輯相等。 例如: (EQUAL a a) ;返回T (EQUAL (a b) (a c) ;返回NIL (EQUAL (a b) (CONS a (b) ;返回T 還有一種相等謂詞, 其格式為:(EQ ),但它只是用來(lái)判斷兩個(gè)原子是否相等。例如: (EQ a a) , 則返回T 第 16 章 智能程序設(shè)計(jì)語(yǔ)言 3) 判空表函數(shù)NULL 格式 (NULL 參數(shù)) 功能 判斷參數(shù)是否為空表
22、, 是則返回T, 否則返回NIL。 第 16 章 智能程序設(shè)計(jì)語(yǔ)言 5. 5. 條件函數(shù)條件函數(shù) 條件函數(shù)也稱分支函數(shù), 類似于其他語(yǔ)言中的分支語(yǔ)句, 其作用是控制程序的流程。最常用到的條件函數(shù)是COND函數(shù)。 格式 (COND (P1 e1) (P2 e2) (Pn en) 其中Pi(i=1,n)為謂詞, ei(i=1,n)為一個(gè)或多個(gè)S-表達(dá)式。 第 16 章 智能程序設(shè)計(jì)語(yǔ)言 功能如果P1為真,則COND函數(shù)的值為e1(當(dāng)e1為多個(gè)S表達(dá)式時(shí),取最后一個(gè)S表達(dá)式的值,下同)。否則,判斷P2,直到某個(gè)Pi真為止,然后將對(duì)應(yīng)的ei作為函數(shù)值。若沒(méi)有一個(gè)Pi的值為非NIL,則COND的返回值為
23、NIL。特別地,Pi也可以為邏輯常量T,這時(shí)則對(duì)其對(duì)應(yīng)的各表達(dá)式求值,并把最后一個(gè)表達(dá)式的值作為COND的返回值。第 16 章 智能程序設(shè)計(jì)語(yǔ)言 例如: (COND(NULL x)0) (ATOM x)1) (LISTP x)(LENGTH x) 其語(yǔ)義是,若x的值為NIL,則COND的返回值為0;若x為原子,則COND的返回值為1;若x的值為表,則COND的返回值為表的長(zhǎng)度。第 16 章 智能程序設(shè)計(jì)語(yǔ)言 16.2.4 自定義函數(shù)自定義函數(shù) 基本函數(shù)是LISP提供的基本處理功能,要用LISP編程解決實(shí)際問(wèn)題,僅有基本函數(shù)還是不夠的,用戶還必須根據(jù)問(wèn)題的需要,利用基本函數(shù)自定義所需的函數(shù)。 自
24、定義函數(shù)的格式為: (DEFUN() )第 16 章 智能程序設(shè)計(jì)語(yǔ)言 其中函數(shù)體,又可能是用戶自定義的函數(shù)或LISP基本函數(shù)的某種組合。所以,一般來(lái)講,LISP自定義函數(shù)就是由其基本函數(shù)組合而成的。常用的組合方法有復(fù)和、分支、遞歸、迭代等。其中最具特色的構(gòu)造方法是遞歸。第 16 章 智能程序設(shè)計(jì)語(yǔ)言 例16.1 定義求N!的LISP函數(shù)。 階乘的公式是 n!n(n-1)! 1!1 0!1 由此我們給出其LISP函數(shù)如下: (DEFUNN!(n) (COND(=n 0)1) (=n 1)1) (T(* n(N!(- n 1)第 16 章 智能程序設(shè)計(jì)語(yǔ)言 可以看出,該函數(shù)的最后一行中又調(diào)用了它
25、自己。所以,這個(gè)函數(shù)N!是遞歸定義的。 需說(shuō)明的是,一個(gè)函數(shù)是否能遞歸定義,要取決于以下兩條: (1)函數(shù)的求值存在最簡(jiǎn)的情形,在這種情形下函數(shù)值是顯然的或已知的; (2)該函數(shù)對(duì)于其參數(shù)的求值,可以歸結(jié)為對(duì)另一些參數(shù)的求值,而且后者比前者更容易求值,即使問(wèn)題朝最簡(jiǎn)情形逼近了一步。第 16 章 智能程序設(shè)計(jì)語(yǔ)言 16.2.5 程序舉例程序舉例 例例16.2 符號(hào)微分程序。 這里是指數(shù)學(xué)上的一元函數(shù)求導(dǎo)。我們用D(ex)表示數(shù)學(xué)上的de/dx,這里e為需求導(dǎo)的函數(shù)表達(dá)式,x為自變量。程序如下: (DEFUND(ex) (COND(ATOM e)(IF(Eq e x)1 0) (T(APPLY(D
26、-RULE(CAR e) (APPEND(CDR e) (LIST x)第 16 章 智能程序設(shè)計(jì)語(yǔ)言 其中D-RULE是一個(gè)獲取給定操作符的微分規(guī)則的LISP函數(shù)。微分規(guī)則的存放,是通過(guò)為相應(yīng)操作符建立d特性的方法完成的。D-RULE的定義為 (DEFUN D-RULE(operator) (GET operatord) 其中操作符d的特性值需事先用SETF函數(shù)建立好。例如對(duì)于操作符加和乘,在數(shù)學(xué)上有 d(uv)/dxdu/dxdv/dx d(uv)/dxvdu/dxudv/dx第 16 章 智能程序設(shè)計(jì)語(yǔ)言 用LISP表示就是 (SETF(GET+D)(LAMBDA(u v x)(+,(D
27、ux),(D v x) (SETF(GET*D)(LAMBDA(u v x )(+(*,(Dux),v)(*,(D v x),u)有了這些函數(shù),我們就可以用機(jī)器求符號(hào)微分了。例如,給出如下的函數(shù)調(diào)用(D(+(*2x)(*x x)x);即求一元函數(shù)2x+x2關(guān)于x的導(dǎo)函數(shù)則得到返回值為 (+(+(* 0 x)(* 1 2)(+(* 1 x)(*1 x)即2+2x,結(jié)果正確。第 16 章 智能程序設(shè)計(jì)語(yǔ)言 16.3 Visual Prolog語(yǔ)言簡(jiǎn)介語(yǔ)言簡(jiǎn)介 Visual Prolog 是一種可視化邏輯程序設(shè)計(jì)語(yǔ)言。 它是美國(guó)的Prolog開發(fā)中心(PDC)推出的新一代Prolog語(yǔ)言, 其語(yǔ)言特性符合相應(yīng)的國(guó)際標(biāo)準(zhǔn)ISO/IEC 13
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 影視道具租賃倉(cāng)儲(chǔ)與道具租賃合同解除合同
- 專利商標(biāo)續(xù)展一體化代理合同
- 高效物流托運(yùn)補(bǔ)充服務(wù)協(xié)議
- 電競(jìng)俱樂(lè)部戰(zhàn)隊(duì)比賽獎(jiǎng)金分配與管理協(xié)議
- 高效生物轉(zhuǎn)化項(xiàng)目合伙人權(quán)益保護(hù)協(xié)議
- 公司管理調(diào)查報(bào)告
- 入職培訓(xùn)會(huì)流程
- 政薪火相傳的傳統(tǒng)美德 課件+-2024-2025學(xué)年統(tǒng)編版道德與法治七年級(jí)下冊(cè)
- 藥事管理促進(jìn)合理用藥
- 安全我知道活動(dòng)目標(biāo)
- 主動(dòng)脈夾層病人的健康宣教
- 法律文化-形考作業(yè)2-國(guó)開(ZJ)-參考資料
- 2025貴州省專業(yè)技術(shù)人員繼續(xù)教育公需科目考試題庫(kù)(2025公需課課程)
- 《危險(xiǎn)化學(xué)品企業(yè)安全生產(chǎn)標(biāo)準(zhǔn)化規(guī)范》專業(yè)深度解讀與應(yīng)用培訓(xùn)指導(dǎo)材料之4:5管理要求-5.3 安全生產(chǎn)信息與合規(guī)審核(雷澤佳編制-2025A0)
- 《危險(xiǎn)化學(xué)品企業(yè)安全生產(chǎn)標(biāo)準(zhǔn)化規(guī)范》專業(yè)深度解讀與應(yīng)用培訓(xùn)指導(dǎo)材料之3:5管理要求-5.2 安全生產(chǎn)責(zé)任制(雷澤佳編制-2025A0)
- 2025年鄉(xiāng)村醫(yī)生基礎(chǔ)醫(yī)學(xué)知識(shí)歷年真題解析及試題
- 2024屆安徽省合肥市高三一模物理試題 無(wú)答案
- 2025年體育產(chǎn)業(yè)信息化管理計(jì)劃
- 抵押車位合同協(xié)議
- 高校教職工通訊員培訓(xùn)
- 理化外包合同協(xié)議
評(píng)論
0/150
提交評(píng)論