Tài liệu Lập trình Prolog_chương 1-2-3 pptx

101 541 6
Tài liệu Lập trình Prolog_chương 1-2-3 pptx

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

LÅÌI NỌI ÂÁƯU Cún sạch ny nhàòm cung cáúp cå såí l thuút v cạc phỉång phạp láûp trçnh cå bn nháút ca män hc « Láûp trçnh lägich » (Programming in Logic). Ngỉåìi âc s âỉåüc lm quen våïi mäüt säú k thût láûp trçnh lägich âỉåüc ỉïng dủng tỉång âäúi phäø biãún v ch úu trong lénh vỉûc trê tû nhán tảo (Artificial Intelligence) nhỉ cäng nghãû xỉí l tri thỉïc, mạy hc, hãû chun gia, xỉí l ngän ngỉỵ tỉû nhiãn, tr chåi, v.v Cún sạch gäưm nàm chỉång v phủ lủc nhỉ sau : − Chỉång 1 giåïi thiãûu ngän ngỉỵ láûp trçnh Prolog lägich dỉûa trãn lägich Horn (Horn logic). Ngỉåìi âc lm quen våïi cạc kiãøu dỉỵ liãûu ca Prolog, khại niãûm vãư lût, sỉû kiãûn v viãút cạc chỉång trçnh Prolog âån gin. − Chỉång 2 trçnh by cạc mỉïc nghéa khạc nhau ca mäüt chỉång trçnh Prolog : nghéa lägich, nghéa khai bạo v nghéa th tủc, cạch Prolog tr låìi cạc cáu hi, cạch lm tho mn âêch. − Chỉång 3 trçnh by cạc phẹp toạn säú hc, phẹp so sạnh v âënh nghéa hm sỉí dủng phẹp âãû quy trong Prolog. − Chỉång 4 trçnh by cáúu trục danh sạch v cạc phẹp xỉí l cå bn trãn danh sạch ca Prolog. − Chỉång 5 trçnh by k thût láûp trçnh náng cao våïi Prolog. − Pháưn phủ lủc giåïi thiãûu ngän ngỉỵ láûp trçnh SWI-Prolog, hỉåïng dáùn cạch ci âàût sỉí dủng pháưn mãưm ny v mäüt säú chỉång trçnh vê dủ tiãu biãøu viãút trong SWI Prolog. Cún sạch ny dng lm giạo trçnh cho sinh viãn ngnh Tin hc v cạc âäüc gi mún tçm hiãøu thãm vãư k thût láûp trçnh cho lénh vỉûc trê tû nhán tảo. Trong quạ trçnh biãn soản, tạc gi â nháûn âỉåüc tỉì cạc bản âäưng nghiãûp nhiãưu âọng gọp bäø êch vãư màût chun män, nhỉỵng âäüng viãn khêch lãû vãư màût tinh tháưn, sỉû giụp âåỵ vãư biãn táûp âãø cún sạch âỉåüc ra âåìi. Tạc gi xin âỉåüc by t l ng biãút ån sáu sàõc. Tạc gi cng chán thnh cm ån mi kiãún phã bçnh âọng gọp ca bản âc gáưn xa vãư näüi dung ca cún sạch ny. Â Nàơng, ngy 27/05/2004 Tạc gi. MỦC LỦC CHỈÅNG 1 MÅÍ ÂÁƯU VÃƯ NGÄN NGỈỴ PROLOG 1 I. GIÅÏI THIÃÛU NGÄN NGỈỴ PROLOG 1 I.1. Prolog l ngän ngỉỵ láûp trçnh lägich 1 I.2. Cụ phạp Prolog 2 I.2.1. Cạc thût ngỉỵ 2 I.2.2. Cạc kiãøu dỉỵ liãûu Prolog 3 I.2.3. Chụ thêch 4 II. CẠC KIÃØU DỈỴ LIÃÛU SÅ CÁÚP CA PROLOG 5 II.1. Cạc kiãøu hàòng (trỉûc kiãûn) 5 II.1.1. Kiãøu hàòng säú 5 II.1.2. Kiãøu hàòng lägich 5 II.1.3. Kiãøu hàòng chùi k tỉû 5 II.1.4. Kiãøu hàòng ngun tỉí 5 II.2. Biãún 6 III. SỈÛ KIÃÛN V LÛT TRONG PROLOG 6 III.1. Xáy dỉûng sỉû kiãûn 6 III.2. Xáy dỉûng lût 10 III.2.1. Âënh nghéa lût 10 III.2.2. Âënh nghéa lût âãû quy 15 III.2.3. Sỉí dủng biãún trong Prolog 18 IV. KIÃØU DỈỴ LIÃÛU CÁÚU TRỤC CA PROLOG 19 IV.1. Âënh nghéa kiãøu cáúu trục ca Prolog 19 IV.2. So sạnh v håüp nháút cạc hảng 22 CHỈÅNG 2 NGỈỴ NGHÉA CA CHỈÅNG TRÇNH PROLOG 31 I. QUAN HÃÛ GIỈỴA PROLOG V LÄGICH TOẠN HC 31 II. CẠC MỈÏC NGHÉA CA CHỈÅNG TRÇNH PROLOG 32 II.1. Nghéa khai bạo ca chỉång trçnh Prolog 33 II.2. Khại niãûm vãư gọi mãûnh âãư 34 i II.3. Nghéa lägich ca cạc mãûnh âãư 35 II.4. Nghéa th tủc ca Prolog 37 II.5. Täø håüp cạc úu täú khai bạo v th tủc 47 III. VÊ DỦ : CON KHÈ V QU CHÚI 48 III.1. Phạt biãøu bi toạn 48 III.2. Gii bi toạn våïi Prolog 49 III.3. Sàõp âàût thỉï tỉû cạc mãûnh âãư v cạc âêch 54 III.3.1. Nguy cå gàûp cạc vng làûp vä hản 54 III.3.2. Thay âäøi thỉï tỉû mãûnh âãư v âêch trong chỉång trçnh 56 CHỈÅNG 3 CẠC PHẸP TOẠN V SÄÚ HC 65 I. SÄÚ HC 65 I.1. Cạc phẹp toạn säú hc 65 I.2. Biãøu thỉïc säú hc 65 I.3. Âënh nghéa cạc phẹp toạn trong Prolog 68 II. CẠC PHẸP SO SẠNH CA PROLOG 73 II.1. Cạc phẹp so sạnh säú hc 73 II.2. Cạc phẹp so sạnh hảng 75 II.3. Vë tỉì xạc âënh kiãøu 77 II.4. Mäüt säú vë tỉì xỉí l hảng 77 III. ÂËNH NGHÉA HM 79 III.1. Âënh nghéa hm sỉí dủng âãû quy 79 III.2. Täúi ỉu phẹp âãû quy 87 III.3. Mäüt säú vê dủ khạc vãư âãû quy 88 III.3.1. Tçm âỉåìng âi trong mäüt âäư thë cọ âënh hỉåïng 88 III.3.2. Tênh âäüü di âỉåìng âi trong mäüt âäư thë 89 III.3.3. Tênh gáưn âụng cạc chùi 90 CHỈÅNG 4 CÁÚU TRỤC DANH SẠCH 95 I. BIÃØU DIÃÙN CÁÚU TRỤC DANH SẠCH 95 II. MÄÜT SÄÚ VË TỈÌ XỈÍ L DANH SẠCH CA PROLOG 98 III. CẠC THAO TẠC CÅ BN TRÃN DANH SẠCH 99 III.1. Xáy dỉûng lải mäüt säú vë tỉì cọ sàơn 99 III.2. Hoạn vë 107 ii III.3. Mäüt säú vê dủ vãư danh sạch 109 CHỈÅNG 5 K THÛT LÁÛP TRÇNH PROLOG 117 I. NHẠT CÀÕT 117 I.1. Khại niãûm nhạt càõt 117 I.2. K thût sỉí dủng nhạt càõt 118 I.3. Phẹp ph âënh 126 II. SỈÍ DỦNG CẠC CÁÚU TRỤC 131 II.1. Truy cáûp thäng tin cáúu trục tỉì mäüt cå såí dỉỵ liãûu 132 II.2. Trỉìu tỉåüng hoạ dỉỵ liãûu 136 II.3. Mä phng ätämat hỉỵu hản 138 II.4. Vê dủ : láûp kãú hoảch âi du lëch bàòng mạy bay 144 II.5. Bi toạn tạm qn háûu 150 III. QUẠ TRÇNH VO-RA V LM VIÃÛC VÅÏI TÃÛP 163 III.1. Khại niãûm 163 III.2. Lm viãûc våïi cạc tãûp 164 III.3. ỈÏng dủng chãú âäü lm viãûc våïi cạc tãûp 172 PHỦ LỦC A MÄÜT SÄÚ CHỈÅNG TRÇNH PROLOG 187 PHỦ LỦC B HỈÅÏNG DÁÙN SỈÍ DỦNG SWI-PROLOG 194 I. GIÅÏI THIÃUU SWI-PROLOG 194 II. LAIM VIÃUC VÅÏI SWI-PROLOG 195 II.1. Âàût cáu hi 195 II.2. Chảy trçnh demo 196 II.3. Chảy trçnh demo XPCE 197 II.4. Cạc lãûnh âån (Menu commands) 198 II.5. Soản tho chỉång trçnh 200 III. MÄÜT SÄÚ LÃÛNH SWI-PROLOG THÄNG DỦNG 201 TI LIÃÛU THAM KHO 203 iii CHỈÅNG 1 Måí âáưu vãư ngän ngỉỵ Prolog « A program is a theory (in some logic) and computation is deduction from the theory » J. A. Robinson « Program = data structure + algorithm » N. Wirth « Algorithm = logic + control » R. Kowalski I. Giåïi thiãûu ngän ngỉỵ Prolog I.1. P rolog l ngän ngỉỵ âỉåüc sỉí dủng phäø biãún nháút trong dng cạc ngän ngỉỵ láûp trçnh lägich (Prolog cọ nghéa l PROgramming in LOGic). Ngän ngỉỵ Prolog do giạo sỉ ngỉåìi Phạp Alain Colmerauer v nhọm nghiãn cỉïu ca äng âãư xút láưn âáưu tiãn tải trỉåìng Âải hc Marseille âáưu nhỉỵng nàm 1970. Âãún nàm 1980, Prolog nhanh chọng âỉåüc ạp dủng räüng ri åí cháu Áu, âỉåüc ngỉåìi Nháût chn lm ngän ngỉỵ phạt triãøn dng mạy tênh thãú hãû 5. Prolog â âỉåüc ci âàût trãn cạc mạy vi tênh Apple II, IBM-PC, Macintosh. rolog l ngän ngỉỵ láûp trçnh lägich P P Prolog cn âỉåüc gi l ngän ngỉỵ láûp trçnh k hiãûu (symbolic programming) tỉång tỉû cạc ngän ngỉỵ láûp trçnh hm (functional programming), hay láûp trçnh phi säú (non-numerical programming). Prolog ráút thêch håüp âãø gii quút cạc bi toạn liãn quan âãún cạc âäúi tỉåüng (object) v mäúi quan hãû (relation) giỉỵa chụng. Prolog âỉåüc sỉí dủng phäø biãún trong lénh vỉûc trê tû nhán tảo. Ngun l láûp trçnh lägich dỉûa trãn cạc mãûnh âãư Horn (Horn logêc). Mäüt mãûnh âãư Horn biãùu diãùn mäüt sỉû kiãûn hay mäüt sỉû viãûc no âọ l âụng hồûc khäng âụng, xy ra hồûc khäng xy ra (cọ hồûc khäng cọ, v.v ). 1 2 Láûp trçnh logic trong Prolog Vê dủ I.1 : Sau âáy l mäüt säú mãûnh âãư Horn : 1. Nãúu mäüt ngỉåìi gi m (v) khän ngoan thç ngỉåìi âọ hảnh phục. 2. Jim l ngỉåìi hảnh phục. 3. Nãúu X l cha mẻ ca Y v Y l cha mẻ ca Z thç X l äng ca Z. 4. Tom l äng ca Pat. 5. Táút c mi ngỉåìi âãưu chãút (hồûc Nãúu ai l ngỉåìi thç ai âọ phi chãút). 6. Socrat l ngỉåìi. Trong cạc mãûnh âãư Horn åí trãn, cạc mãûnh âãư 1, 3, 5 âỉåüc gi l cạc lût (rule), cạc mãûnh âãư cn lải âỉåüc gi l cạc sỉû kiãûn (fact). Mäüt chỉång trçnh lägich cọ thãø âỉåüc xem nhỉ l mäüt cå såí dỉỵ liãûu gäưm cạc mãûnh âãư Horn, hồûc dảng lût, hồûc dảng sỉû kiãûn, chàóng hản nhỉ táút c cạc sỉû kiãûn v lût tỉì 1 âãún 6 åí trãn. Ngỉåìi sỉí dủng (NSD) gi chảy mäüt chỉång trçnh lägich bàòng cạch âàût cáu hi (query/ question) truy váún trãn cå såí dỉỵ liãûu ny, chàóng hản cáu hi : Socrat cọ chãút khäng ? (tỉång âỉång khàóng âënh Socrat chãút âụng hay sai ?) Mäüt hãû thäúng lägich s thỉûc hiãûn chỉång trçnh theo cạch «suy lûn»-tçm kiãúm dỉûa trãn väún «hiãøu biãút» â cọ l chỉång trçnh - cå såí dỉỵ liãûu, âãø minh chỉïng cáu hi l mäüt khàóng âënh, l âụng (Yes) hồûc sai (No). Våïi cáu hi trãn, hãû thäúng tçm kiãúm trong cå såí dỉỵ liãûu khàóng âënh Socrat chãút v «tçm tháúy» lût 5 tho mn (vãú thç). Váûn dủng lût 5, hãû thäúng nháûn âỉåüc Socrat l ngỉåìi (vãú nãúu) chênh l sỉû kiãûn 5. Tỉì âọ, cáu tr låìi s l : Yes cọ nghéa Socrat chãút l âụng. I.2. Cụ phạp Prolog I.2.1. Cạc thût ngỉỵ Mäüt chỉång trçnh Prolog l mäüt cå såí dỉỵ liãûu gäưm cạc mãûnh âãư (clause). Mäùi mãûnh âãư âỉåüc xáy dỉûng tỉì cạc vë tỉì (predicat). Mäüt vë tỉì l mäüt phạt biãøu no âọ vãư cạc âäúi tỉåüng cọ giạ trë chán âụng (true) hồûc sai (fail). Mäüt vë tỉì cọ thãø cọ cạc âäúi l cạc ngun lägich (logic atom). Måí âáưu vãư ngän ngỉỵ Prolog 3 Mäùi ngun tỉí (nọi gn) biãøu diãùn mäüt quan hãû giỉỵa cạc hảng (term). Nhỉ váûy, hảng v quan hãû giỉỵa cạc hảng tảo thnh mãûnh âãư. Hảng âỉåüc xem l nhỉỵng âäúi tỉåüng “dỉỵ liãûu” trong mäüt trçnh Prolog. Hảng cọ thãø l hảng så cáúp (elementary term) gäưm hàòng (constant), biãún (variable) v cạc hảng phỉïc håüp (compound term). Cạc hảng phỉïc håüp biãøu diãùn cạc âäúi tỉåüng phỉïc tảp ca bi toạn cáưn gii quút thüc lénh vỉûc âang xẹt. Hảng phỉïc håüp l mäüt hm tỉí (functor) cọ chỉïa cạc âäúi (argument), cọ dảng Tãn_hm_tỉí(Âäúi_1, , Âäúi_n) Tãn hm tỉí l mäüt chùi chỉỵ cại v/hồûc ch säú âỉåüc bàõt âáưu båíi mäüt chỉỵ cại thỉåìng. Cạc âäúi cọ thãø l biãún, hảng så cáúp, hồûc hảng phỉïc håüp. Trong Prolog, hm tỉí âàûc biãût “.” (dáúu cháúm) biãøu diãùn cáúu trục danh sạch (list). Kiãøu dỉỵ liãûu hm tỉí tỉång tỉû kiãøu bn ghi (record) v danh sạch (list) tỉång tỉû kiãøu mng (array) trong cạc ngän ngỉỵ láûp trçnh mãûnh lãûnh (C, Pascal ). Vê dủ I.2 : f(5, a, b). student(robert, 1975, info, 2, address(6, 'mal juin', 'Caen')). [a, b, c] Mãûnh âãư cọ thãø l mäüt sỉû kiãûn, mäüt lût (hay quy tàõc), hay mäüt cáu hi. Prolog quy ỉåïc viãút sau mäùi mãûnh âãư mäüt dáúu cháúm âãø kãút thục nhỉ sau : • Sỉû kiãûn : < >. (tỉång ỉïng våïi lût < > :- true. ) • Lût : < > :- < >. • Cáu hi ?- < >. (åí chãú âäü tỉång tạc cọ dáúu nhàõc lãûnh) I.2.2. Cạc kiãøu dỉỵ liãûu Prolog Hçnh 1.1. biãøu diãùn mäüt sỉû phán låïp cạc kiãøu dỉỵ liãûu trong Prolog gäưm kiãøu dỉỵ liãûu så cáúp v kiãøu dỉỵ liãûu cọ cáúu trục. Sỉû phán låïp ny nháûn biãút kiãøu ca mäüt âäúi tỉåüng nhåì bãư ngoi cụ phạp. Cụ phạp ca Prolog quy âënh mäùi kiãøu âäúi tỉåüng cọ mäüt dảng khạc nhau. Prolog khäng cáưn cung cáúp mäüt thäng tin no khạc âãø nháûn biãút kiãøu ca mäüt âäúi tỉåüng. Trong Prolog, NSD khäng cáưn khai bạo kiãøu dỉỵ liãûu. 4 Lỏỷp trỗnh logic trong Prolog kióứu dổợ lióỷu kióứu sồ cỏỳp kióứu phổùc hồỹp hũng bióỳn sọỳ chuọựi kyù tổỷ nguyón tổớ Hỗnh I.1. Caùc kióứu dổợ lióỷu trong Prolog Caùc kióứu dổợ lióỷu Prolog õổồỹc xỏy dổỷng tổỡ caùc kyù tổỷ ASCII : Caùc chổợ caùi in hoa A, B, , Z vaỡ chổợ caùi in thổồỡng a, b, , z. Caùc chổợ sọỳ 0, 1, , 9. Caùc kyù tổỷ õỷc bióỷt, chúng haỷn + / < > = : . & _ . I.2.3. Chuù thờch Trong mọỹt chổồng trỗnh Prolog, chuù thờch (comment) õổồỹc õỷt giổợa hai cỷp kyù hióỷu /* vaỡ */ (tổồng tổỷ ngọn ngổợ C). Vờ duỷ : // / ỏy laỡ mọỹt chuù thờch / // Trong trổồỡng hồỹp muọỳn õỷt mọỹt chuù thờch ngừn sau mọựi phỏửn khai baùo Prolog cho õóỳn hóỳt doỡng, coù thóứ õỷt trổồùc mọỹt kyù hióỷu %. Vờ duỷ : %%%%%%%%%%%%%%% % ỏy cuợng laỡ mọỹt chuù thờch %%%%%%%%%%%%%%% Prolog seợ boớ qua tỏỳt caớ caùc phỏửn chuù thờch trong thuớ tuỷc. . MÅÍ ÂÁƯU VÃƯ NGÄN NGỈỴ PROLOG 1 I. GIÅÏI THIÃÛU NGÄN NGỈỴ PROLOG 1 I.1. Prolog l ngän ngỉỵ láûp trçnh lägich 1 I.2. Cụ phạp Prolog 2 I.2.1. Cạc thût. TRÇNH PROLOG 31 I. QUAN HÃÛ GIỈỴA PROLOG V LÄGICH TOẠN HC 31 II. CẠC MỈÏC NGHÉA CA CHỈÅNG TRÇNH PROLOG 32 II.1. Nghéa khai bạo ca chỉång trçnh Prolog

Ngày đăng: 22/01/2014, 10:20

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan