1. Trang chủ
  2. » Khoa Học Tự Nhiên

Chương 4 - Ngôn ngữ Prolog ppt

41 552 1
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Tiêu đề Ngôn ngữ Prolog
Tác giả Trần Thọ Châu
Trường học Đại học Quốc gia Hà Nội
Chuyên ngành Logic Toán
Thể loại Tài liệu
Năm xuất bản 2007
Thành phố Hà Nội
Định dạng
Số trang 41
Dung lượng 332,99 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

nhiˆen • Viˆe´t c´ac chu.o.ng tr`ınh biˆen di.ch ngˆon ng˜u.. p c´ac chu.o.ng tr`ınh viˆe´t b˘a`ng m˜a m´ay v`ao trongchu.o.ng tr`ınh Turbo Prolog.. Turbo Prolog l`a mˆo.t mˆoi tru.`o.ng

Trang 1

Chương 4 Ngôn ngữ Prolog

Trang 2

Ngˆ on ng˜ u PROLOG

4.1 Mo ’ dˆ ` u a 127

4.2 Ngˆ on ng˜ u PROLOG 131

4.2.1 Qui t˘a´c c´u ph´ap 131

4.2.2 C´ac kiˆe’u dˆo´i tu.o ng 131

4.2.3 C´ac ph´ep to´an, quan hˆe v`a h`am chuˆa’n 137

4.3 Cˆ a´u tr´ uc cu’a chu.o.ng tr`ınh PROLOG 139

4.4 Tˆ an t` u FAIL, nh´ at c˘ a ´t (!) v` a tˆ an t` u NOT 141

4.5 Phu.o.ng th´ u.c xuˆ a´t nhˆ a.p d˜ u liˆ e.u 143

4.5.1 Phu.o.ng th´u.c xuˆa´t d˜u liˆe.u 143

4.5.2 Phu.o.ng th´u.c nhˆa.p d˜u liˆe.u 145

4.6 Mˆ o .t sˆ o ´ th´ı du minh hoa vˆ ` lˆ e a .p tr`ınh PROLOG 148 4.7 B` ai tˆ a.p chu o.ng 4 162

Trang 3

4.1 Mo ’ dˆ ` u a 127

Prolog l`a mˆo.t kˆe´t qua’ quan tro.ng cu’a cˆong viˆe.c nghiˆen c´u.u trong nhiˆe` u n˘am

bo.’ i nh´om nghiˆen c´u.u cu’a Alain Colmerauer ta.i tru.`o.ng da.i ho.c Marseille,

cˆo.ng ho`a Ph´ap, v`ao nu’ a dˆ. ` u thˆa a.p ky’ 70

Mˆo.t trong nh˜u.ng nguyˆen nhˆan chu’ yˆe´u l`am cho Prolog du.o c phˆo’ cˆa.p

rˆo.ng r˜ai l`a kha’ n˘ang gia’i quyˆe´t c´o hiˆe.u qua’ c´ac vˆa´n dˆe` c´o liˆen quan dˆe´n xu.’l´y k´y hiˆe.u, ch˘a’ng ha.n:

• C´ac co so.’ d˜u liˆe.u quan hˆe

• Logic To´an ho.c

• L´y thuyˆe´t gia’i quyˆe´t vˆa´n dˆ` tr`e u.u tu.o. ng

• Hiˆe’u ngˆon ng˜u tu. nhiˆen, ta.o c´ac giao diˆe.n Ngu.`o.i - M´ay b˘a`ng ngˆonng˜u tu. nhiˆen

• Viˆe´t c´ac chu.o.ng tr`ınh biˆen di.ch ngˆon ng˜u.

• Thiˆe´t kˆe´ cˆa´u tr´uc

• Gia’i c´ac phu.o.ng tr`ınh da.ng k´y hiˆe.u, xu’ l´. y c´ac cˆong th´u.c

• Phˆan t´ıch cˆa´u tr´uc sinh ho´a

• Diˆ` u khiˆe’n Robot, Tr´ı tuˆe nhˆan ta.o, Hˆe chuyˆen gia v.v e

Diˆe’m ma.nh cu’a ngˆon ng˜u PROLOG so v´o.i ngˆon ng˜u lˆa.p tr`ınh truyˆe`nthˆo´ng l`a c´ach tiˆe´p cˆa.n gia’i quyˆe´t vˆa´n dˆe` b˘a`ng viˆe.c mˆo ta’ phu.o.ng ph´ap gia’iquyˆe´t Chu.o.ng tr`ınh Prolog khˆong mˆo ta’ thu’ tu.c gia’i quyˆe´t vˆa´n dˆe` m`a mˆota’ logic cu’a vˆa´n dˆ` cˆe ` n gia’i quyˆe´t.a

Prolog du.o. c coi l`a bu.´o.c th`anh cˆong dˆ` u tiˆen cu’a lˆa a.p tr`ınh logic, hu.´o.ng

dˆa˜n viˆe.c c`ai d˘a.t c´o hiˆe.u qua’ nhiˆe` u kh´ıa ca.nh thˆong minh cu’a mˆo.t chu.o.ngtr`ınh, ch˘a’ng ha.n: lu a cho.n khˆ. ong tˆa´t di.nh, xu’ l´. y song song, go.i thu’ tu.ckhˆong qua tham sˆo´ (pattern dicected procedure call),

V`ı Prolog tiˆe´p cˆa.n c´ac vˆa´n dˆe` mˆo.t c´ach tu nhiˆ. en v`a logic, nˆen nh˜u.ngngu.`o.i m´o.i lˆa.p tr`ınh v`a nh˜u.ng ngu.`o.i lˆa.p tr`ınh viˆen c´o kinh nghiˆe.m dˆe`u c´o

Trang 4

thˆe’ d`ung n´o dˆe’ viˆe´t nh˜u.ng chu.o.ng tr`ınh ´u.ng du.ng c´o tˆa` m c˜o nhu c´ac hˆe.chuyˆen gia, c´ac co so.’ tri th´u.c, c´ac giao diˆe.n b˘a`ng ngˆon ng˜u tu nhiˆen, v`a c´ac

hˆe thˆo´ng qua’n l´y thˆong tin go.n nhe v`a hiˆe.u qua’

Diˆe’m ma.nh cu’a Prolog l`a c´ach tiˆe´p cˆa.n gia’i quyˆe´t vˆa´n dˆe` b˘a`ng viˆe.c mˆota’ phu.o.ng ph´ap gia’i quyˆe´t Chu.o.ng tr`ınh Prolog khˆong mˆo ta’ thu’ tu.c gia’iquyˆe´t vˆa´n dˆ` m`e a mˆo ta’ logic cu’a vˆa´n dˆ` cˆe ` n gia’i quyˆe´t, ngh˜ıa l`a a ngu.`o.i lˆa.ptr`ınh cˆ` n d`a anh to`an bˆo s´u.c lu c v`a su quan tˆam cu’a m`ınh v`ao viˆe.c khai b´aocho m´ay t´ınh mˆo.t sˆo´ kh˘a’ng di.nh cˆa` n thiˆe´t vˆe` c´ac t´ınh chˆa´t cu’a c´ac dˆo´i tu.o. ngtrong l˜ınh vu. c du.o c dˆe` cˆa.p v`a mˆo.t sˆo´ luˆa.t suy diˆe˜n, mˆo ta’ t´ınh chˆa´t v`a c´acquan hˆe gi˜u.a c´ac dˆo´i tu.o ng

Du. a v`ao viˆe.c suy diˆe˜n theo c´ac luˆa.t, kˆe´t ho p v´. o.i kh˘a’ng di.nh d˜a cho,chu.o.ng tr`ınh Prolog tu. x´ac di.nh c´ach th´u.c “dˆa˜n” ra l`o.i gia’i cu’a vˆa´n dˆe` Ngo`ai ra Prolog cho ph´ep gia’i quyˆe´t c´ac vˆa´n dˆ` m`e a l`o.i gia’i l`a khˆong tˆa´t di.nhv`a l`am viˆe.c v´o.i c´ac dˆo´i tu.o ng ho`an to`an chu.a du.o c biˆe´t ho˘a.c m´o.i chı’ biˆe´t

mˆo.t phˆa` n vˆe` ch´ung

C˜ung nhu c´ac ngˆon ng˜u lˆa.p tr`ınh truyˆe` n thˆo´ng: Pascal, C, ngu.`o.i ta

xˆay du. ng phˆ` n mˆea ` m Turbo-Prolog gi´up cho ngu.`o.i lˆa.p tr`ınh cha.y chu.o.ngtr`ınh Prolog dˆe˜ d`ang v`a hiˆe.u qua’ ho.n Turbo-Prolog tro.’ th`anh mˆo.t cˆong cu

lˆa.p tr`ınh rˆa´t h˜u.u du.ng v´o.i nh˜u.ng l´y do sau dˆay:

1 C´o thˆe’ ta.o ra c´ac chu.o.ng tr`ınh dˆo.c lˆa.p cha.y trˆen c´ac m´ay PC, v`acho ph´ep dˆ˜ d`ang truy cˆa.p dˆe´n bˆo nh´o v`a c´ac cˆo’ng v`ao/ra c˜ung nhu.ec´ac kha’ n˘ang phˆo´i ho. p c´ac chu.o.ng tr`ınh viˆe´t b˘a`ng m˜a m´ay v`ao trongchu.o.ng tr`ınh Turbo Prolog

2 Turbo Prolog duy tr`ı tˆen biˆe´n cu’a riˆeng ngu.`o.i lˆa.p tr`ınh, ngh˜ıa l`a kˆe’ ca’khi chu.o.ng tr`ınh d˜a du.o. c biˆen di.ch, ta vˆa˜n c´o thˆe’ l`am chu’ chu.o.ng tr`ınh

gˆo´c Trong khi t`ım v`a g˜o lˆo˜i, ta d`ung vˆe´t (trace) cho ph´ep quan s´atviˆe.c thu c hiˆ. e.n chu.o.ng tr`ınh v`a qu´a tr`ınh thao t´ac qua c´ac d´ıch (goal).

3 Turbo Prolog l`a mˆo.t mˆoi tru.`o.ng ph´at triˆe’n chu.o.ng tr`ınh ho`an to`antheo mˆodun C´ac mˆodun chu.o.ng tr`ınh viˆe´t trong Turbo Prolog ho˘a.c

Trang 5

Turbo Prolog c´o thˆe’ du.o. c su’ du.ng:.

1 Ta.o h`ınh mˆa˜u (prototype) cho mˆo.t chu.o.ng tr`ınh ´u.ng du.ng Nh˜u.ng

´

y tu.o.’ ng ban dˆ` u c´a o thˆe’ du.o. c mˆo h`ınh ho´a nhanh ch´ong b˘a`ng TurboProlog v`a cha.y thu’ ngay mˆ. o h`ınh d´o

2 Diˆ` u khiˆe’n v`e a chı’ da.o c´ac qu´a tr`ınh sa’n xuˆa´t cˆong nghiˆe.p

3 C`ai d˘a.t c´ac co so.’ d˜u liˆe.u dˆo.ng quan hˆe

4 Di.ch ngˆon ng˜u ho˘a.c di.ch ngˆon ng˜u tu nhiˆen cu’a con ngu.`o.i, ho˘a.c di.cht`u mˆo.t ngˆon ng˜u lˆa.p tr`ınh n`ay sang mˆo.t ngˆon ng˜u lˆa.p tr`ınh kh´ac,ch˘a’ng ha.n mˆo.t chu.o.ng tr`ınh di.ch ngˆon ng˜u viˆe´t b˘a`ng Turbo Prologdi.ch du.o c ngˆon ng˜u Basic sang ngˆon ng˜u C cha.y trong hˆe diˆe`u h`anhUnix trˆen m´ay t´ınh HP-9000

5 Xˆay du. ng c´ac giao diˆe.n b˘a`ng ngˆon ng˜u tu nhiˆen cho c´ac hˆe thˆo´ng phˆa`n

mˆ` m c´e o s˘a˜n dˆe’ c´o thˆe’ truy cˆa.p v`a su.’ du.ng ch´ung thuˆa.n lo i ho.n

6 Xˆay du. ng c´ac Hˆe chuyˆen gia v`a c´ac cˆong cu (Tools) dˆe’ xˆay du ng hˆ. e.chuyˆen gia

7 Viˆe´t c´ac chu.o.ng tr`ınh ´u.ng du.ng cho Tr´ı tuˆe nhˆan ta.o v`a ch´u.ng minhdi.nh l´y

Trang 6

Chu.o.ng tr`ınh Prolog bao gˆo`m c´ac khai b´ao: su. khai b´ao n`ay du.o. c ta.oth`anh bo.’ i 3 phˆ` n:a

a) Tˆen v`a cˆa´u tr´uc cu’a c´ac dˆo´i tu.o. ng trong b`ai to´an

b) Tˆen c´ac quan hˆe gi˜u.a c´ac dˆo´i tu.o ng

c) C´ac su. kiˆe.n (fact) v`a luˆa.t (rule) mˆo ta’ nh˜u.ng quan hˆe n`ay

Su. khai b´ao trong chu.o.ng tr`ınh Prolog du.o. c su’ du.ng dˆe’ x´ac di.nh mˆo´i.quan hˆe gi˜u.a c´ac d˜u liˆe.u v`ao v`a c´ac d˜u liˆe.u ra s˜e du.o c Prolog ta.o ra khi n´o

su.’ du.ng c´ac su kiˆe.n v`a luˆa.t Ngo`ai nh˜u.ng khai b´ao cˆa` n thiˆe´t, mˆo.t chu.o.ngtr`ınh Prolog c`on bao gˆo`m mˆo.t danh s´ach c´ac mˆe.nh dˆe` logic ho˘a.c da.ng c´ac

su. kiˆe.n, ch˘a’ng ha.n “Hˆom nay tr`o i mu.a” ho˘a.c da.ng luˆa.t, ch˘a’ng ha.n “Nˆe´u tr` o.i mu.a m` a ba n quˆ en ˆ o th`ı ba n s˜ e u.´ o.t”.

Prolog c´o thˆe’ thu. c hiˆe.n suy diˆe˜n, ch˘a’ng ha.n cho tru.´o.c c´ac su kiˆe.n:Folin th´ıch Mery

Tom th´ıch Sam

v`a luˆa.t: Nˆe´u Tom th´ıch X th`ı Jeanette th´ıch X.

Prolog c´o thˆe’ suy diˆe˜n nhu sau:

Jeanette th´ıch Sam

Ba.n c˜ung c´o thˆe’ cho Prolog mˆo.t d´ıch, ch˘a’ng ha.n:

H˜ay t`ım ngu.`o.i th´ıch Sam?

Khi d´o Prolog s˜e su.’ du.ng kha’ n˘ang suy diˆe˜n cu’a m`ınh dˆe’ t`ım ra tˆa´t ca’ c´acl`o.i gia’i c´o thˆe’ cu’a b`ai to´an

Khi mˆo.t chu.o.ng tr`ınh Prolog du.o c thu c hiˆe.n, hˆe thˆo´ng s˜e cˆo´ g˘a´ng t`ım

ra c´ac tˆa.p gi´a tri c´o thˆe’ thoa’ m˜an d´ıch d˜a cho Prolog su’ du.ng co chˆe´.

backtracking (quay lui), ngh˜ıa l`a khi d˜a t`ım ra mˆo.t l`o.i gia’i th`ı quay la.i bˆa´tc´u mˆo.t gia’ thiˆe´t d˜a x´ac di.nh dˆe’ xem liˆe.u c´o r´ut ra du.o c l`o.i gia’i m´o.i n˜u.akhˆong

Prolog c´o mˆo.t c´u ph´ap rˆa´t ng˘a´n go.n v`a do.n gia’n, nˆen dˆe˜ ho.c ho.n nhiˆe`u

so v´o.i c´ac ngˆon ng˜u lˆa.p tr`ınh truyˆe` n thˆo´ng

Trang 7

4.2 Ngˆ on ng˜ u PROLOG 131

Theo quan diˆe’m cu’a lˆa.p tr`ınh logic, Prolog l`a mˆo.t ngˆon ng˜u tˆan t`u cˆa´p

1 c´o ha.n chˆe´ du.o c xˆay du ng nˆen t`u c´ac th`anh phˆa`n co ba’n sau dˆay:

• Mˆo.t ba’ng ch˜u c´ai (tˆa.p c´ac k´y hiˆe.u co ba’n cu’a ngˆon ng˜u.)

• Tˆa.p c´ac k´y hiˆe.u h˘a`ng

• Tˆa.p c´ac k´y hiˆe.u biˆe´n

• Tˆa.p c´ac k´y hiˆe.u h`am

• Tˆa.p c´ac k´y hiˆe.u phˆan c´ach

• Tˆa.p c´ac to´an tu’ liˆen hˆe..

4.2.1 Qui t˘ a ´c c´ u ph´ ap

C´ac qui t˘a´c c´u ph´ap cu’a mˆo.t ngˆon ng˜u mˆo ta’ c´ach th´u.c gh´ep nˆo´i ta.o nˆenc´ac t`u cu’a ngˆon ng˜u

Thuˆa.t ng˜u “term” d`ung dˆe’ chı’ mˆo.t d˜ay c´ac k´y hiˆe.u co ba’n ph`u ho p v´o.i

c´ac qui t˘a´c c´u ph´ap cu’a ngˆon ng˜u Ngˆon ng˜u Prolog phˆan biˆe.t 3 loa.i “term”:

• C´ac h˘a`ng

• C´ac biˆe´n

• C´ac kiˆe’u term du.o. c go.i chung l`a cˆa´u tr´uc

4.2.2 C´ ac kiˆ e’u dˆ o´i tu.o ng

Trang 8

1 Nh´om c´ac k´y hiˆe.u viˆe´t hoa

C´ o hai kiˆ e’u h˘ a `ng k´ y hiˆ e u:

– Kiˆe’u th´u nhˆa´t l`a mˆo.t d˜ay c´ac ch˜u v`a c´ac ch˜u sˆo´ b˘a´t dˆa`u b˘a`ng mˆo.t ch˜u.viˆe´t thu.`o.ng ch˘a’ng ha.n: ta.i ch´u.c, c500, john

– Kiˆe’u th´u hai l`a mˆo.t d˜ay k´y tu bˆ. a´t k`y n˘a`m gi˜u.a hai dˆa´u nh´ay do.n,ch˘a’ng ha.n ‘hoa lan’, ngo`ai ra dˆa´u ga.ch thˆa´p “ ” du.o c d`ung dˆe’ ch`env`ao gi˜u.a hai d˜ay k´y hiˆe.u l`am cho h˘a`ng d´o dˆe˜ do.c, dˆe˜ hiˆe’u ho.n nhiˆe` u.C´ac d˜ay k´y hiˆe.u sau dˆay khˆong pha’i l`a c´ac h˘a`ng k´y hiˆe.u : 124k, Void,1hoa lan, alpha

C´ac h˘a`ng sˆo´ d`ung dˆe’ biˆe’u diˆ˜n d˜e u liˆe.u sˆo´ C´ac thao t´ac t´ınh to´an c´o thˆe’du.o. c thu c hiˆ. e.n v´o.i ch´ung

Trang 9

4.2 Ngˆ on ng˜ u PROLOG 133

Ba ’ ng c´ ac miˆ ` n d˜ e u liˆ e u chuˆ a’n cu ’ a Prolog

- integer: sˆo´ nguyˆen t`u - 32768 dˆe´n 32767

- real: sˆo´ thu. c cha.y t`u ±10−307 dˆe´n ±10+307

- char: k´y tu. du.o c viˆe´t trong hai dˆa´u nh´ay do.n, ch˘a’ng ha.n: ‘a0

, ‘b0, ‘c0

- string: xˆau k´y tu. du.o c viˆe´t gi˜u.a hai dˆa´u nh´ay k´ep, ch˘a’ng ha.n “ch`ao c´ac

ban”

- file: l`a c´ac tˆe.p tin

- symbol: c´o hai loa.i k´y hiˆe.u

1 D˜ay c´ac ch˜u., c´ac sˆo´ v`a dˆa´u ga.ch thˆa´p D˜ay n`ay pha’i b˘a´t dˆa` ub˘a`ng mˆo.t ch˜u viˆe´t thu.`o.ng, ch˘a’ng ha.n: anh em

2 D˜ay k´y tu. n˘a`m gi˜u.a c˘a.p dˆa´u nh´ay k´ep ch˘a’ng ha.n: “DR no” ,

“Hanoi”, v.v

nhu.ng ch´ung du.o. c xu’ l´. y kh´ac nhau

Biˆ e´n pha’i b˘a´t dˆa` u b˘a`ng mˆo.t ch˜u viˆe´t hoa ho˘a.c mˆo.t dˆa´u ga.ch thˆa´p “ ”(du.o. c go.i l`a biˆe´n vˆo danh anonymous variable) Biˆe´n vˆo danh c´o mˆo.t t´ınhchˆa´t rˆa´t d˘a.c biˆe.t l`a n´o c´o thˆe’ k´y hiˆe.u cho mo.i dˆo´i tu.o ng, v`ı thˆe´ n´o c´o thˆe’du.o. c su’ du.ng v`ao bˆa´t k`y chˆo˜ n`ao m`a mˆo.t biˆe´n kh´ac c´o thˆe’ d`ung du.o c,.nhu.ng khˆong cˆ` n nhˆa a.n mˆo.t gi´a tri cu thˆe’

Ch´ u ´ y: Ta cˆ` n phˆa an biˆe.t hai loa.i biˆe´n

• Biˆ e´n tu do: Prolog khˆong biˆe´t gi´a tri cu’a n´o,

• Biˆ e´n r` ang buˆ o c: Prolog biˆe´t gi´a tri cu’a n´o

Trang 10

person, hobby=symbolpredicates

likes(person, hobby)clauses

likes(john, reading)

likes(ellen, computers)

likes(eric, swimming)

likes(eric, reading)

Cha.y chu.o.ng tr`ınh theo chˆe´ dˆo Interactive Mode (hˆo.i thoa.i)

Goal: likes(X,

reading)←-Kˆe´t qua’ l`a: X=ellen

X=eric

2 solutionstrong d´o X du.o. c xem l`a biˆe´n tu. do g˘a´n liˆe` n v´o.i quan hˆe cu’a lu.o ng t`u to`anthˆe’ ∀, c`on reading du.o. c xem l`a r`ang buˆo.c g˘a´n liˆe` n v´o.i quan hˆe cu’a lu.o ngt`u tˆo`n ta.i ∃.

Cˆa´u tr´uc l`a loa.i term th´u 3 (thu.`o.ng du.o c go.i l`a biˆe´n h`am f) du.o c su.’

du.ng trong chu.o.ng tr`ınh Prolog

Mˆ o t cˆ a´u tr´ uc l`a mˆo.t dˆo´i tu.o ng do.n du.o c ta.o nˆen t`u mˆo.t tˆa.p ho p c´ac dˆo´itu.o. ng kh´ac go.i l`a c´ac th`anh phˆa` n C´ac th`anh phˆ` n du.o.a c liˆen kˆe´t v´o.i nhautrong mˆo.t cˆa´u tr´uc dˆe’ c´o thˆe’ xu’ l´. y ch´ung mˆo.t c´ach thuˆa.n tiˆe.n v`a thˆo´ngnhˆa´t

Mˆo.t cˆa´u tr´uc du.o c viˆe´t trong c´u ph´ap Prolog b˘a`ng c´ach mˆo ta’ tˆen du.o c

go.i l`a “functor” cu’a cˆa´u tr´uc, sau d´o mˆo ta’ c´ac th`anh phˆa` n C´ac th`anh phˆ` nan`ay du.o. c viˆe´t trong hai dˆa´u ngo˘a.c do.n, v`a c´ach nhau bo.’i c´ac dˆa´u phˆa’y

co(john, sach(doi gio hu, ten tac gia(emily, brownte)))

Trang 11

4.2 Ngˆ on ng˜ u PROLOG 135

/* John c´o quyˆe’n s´ach “Dˆo`i gi´o h´u” cu’a t´ac gia’ Emily Brownte*/

Cˆa´u tr´uc s´ach l`a mˆo.t dˆo´i cu’a kh˘a’ng di.nh trˆen v`a tham gia v`ao quan hˆe

“co” nhu l`a mˆo.t dˆo´i tu.o ng do.n

Viˆe.c biˆe’u diˆe˜n c´ac chu.o.ng tr`ınh Prolog nhu l`a c´ac cˆa´u tr´uc functor ( )c´o rˆa´t nhiˆ` u u.u diˆe’m, v`ı r˘e a`ng c´o thˆe’ thao t´ac c´ac th`anh phˆa` n cu’a mˆo.t chu.o.ngtr`ınh mˆo.t c´ach thˆo´ng nhˆa´t b˘a`ng mˆo.t sˆo´ cˆong cu du’ ma.nh, d´o l`a co chˆe´ dˆo`ng nhˆ a´t ho´ a (unification mechanism).

Viˆe.c thˆo´ng nhˆa´t c´ac h˘a`ng sˆo´ v`a c´ac cˆa´u tr´uc v`ao trong mˆo.t kh´ai niˆe.mchung du.o. c go.i l`a “object” (dˆo´i tu.o. ng) cu’a Prolog du.a dˆe´n mˆo.t u.u diˆe’m l´o.nl`a n´o cho ph´ep ngu.`o.i lˆa.p tr`ınh di.nh ngh˜ıa kiˆe’u d˜u liˆe.u m´o.i cu’a m`ınh, ngo`ainh˜u.ng kiˆe’u d˜u liˆe.u chuˆa’n cu’a ngˆon ng˜u., rˆo`i khai b´ao ch´ung v´o.i chu.o.ng tr`ınhbiˆen di.ch

Viˆe.c dˆo`ng nhˆa´t ho´a s˜e bao gˆo`m

- G´an gi´a tri cho c´ac biˆe´n (truyˆe` n tham sˆo´)

- Truy cˆa.p v`ao cˆa´u tr´uc d˜u liˆe.u b˘a`ng co chˆe´ dˆo´i s´anh dˆo´i tu.o ng tˆo’ng qu´at

- Kiˆe’m tra t´ınh b˘a`ng nhau (trˆen co so.’ c´ac nguyˆen t˘a´c cu’a t´ınh b˘a`ng nhau)

- C´o su. giˆo´ng nhau cu’a 2 qu´a tr`ınh dˆo`ng nhˆa´t ho´a v`a h`am cho c´ac dˆo´itu.o. ng b˘a`ng nhau

Trang 12

ten sach, tac gia=symbol

so trang=integerxuat ban=sach(ten sach, so trang)predicates

viet boi (tac gia, xuat ban)tieu thuyet dai(ten sach)clauses

viet boi (flemming, sach (“DR NO” , 210))viet boi (melville, sach (“X30” , 600))

tieu thuyet dai(Ten viet boi( , sach(Ten sach, So trang)),

sach):-So trang>300.

Sau dˆay l`a mˆo.t sˆo´ cˆau ho’i v`a tra’ l`o.i:

• Goal: viet boi (X, Y)

←-X=flemming, Y =sach(“DR NO”, 210)

Danh s´ach l`a mˆo.t cˆa´u tr´uc d˜u liˆe.u co ba’n cu’a Turbo Prolog v`a n´o tu.o.ng

tu. nhu l`a ma’ng (array) cu’a Pascal Turbo Prolog tr`ınh b`ay danh s´ach nhu.

Trang 13

headtail (H||T): –

write(“The head is H=”, H), nl, write(“The tail is T =”, T ).

goal

headtail([2, 4, 6])Khi cha.y chu.o.ng tr`ınh ta c´o kˆe´t qua’

H = 2

T = [4, 6]

4.2.3 C´ ac ph´ ep to´ an, quan hˆ e v`a h`am chuˆa’n

Ba’ng c´ac kiˆe’u cu’a to´an ha.ng v`a kˆe´t qua’

Trang 14

To´ an ha ng 1 To´ an tu ’ To´ an ha ng 2 Kˆ e´t qua’

integer or real / integer or real real

Ba’ng quan hˆe nhu sau

C´ ach viˆ e´t Quan hˆ e.

- abs(x) cho gi´ a tri tuyˆe.t dˆo´i cu’a x

- cos(x), sin(x), tan(x), arctan(x), exp(x), ln(x), log(x), sqrt(x)

- round(x) dˆo´i l`a sˆo´ thu. c, kˆe´t qua’ l`a sˆo´ nguyˆen do x du.o. c l`am tr`on, khˆongpha’i l`a sˆo´ nguyˆen l´o.n nhˆa´t nho’ ho.n ho˘a.c b˘a`ng x, dˆa´u l`a dˆa´u cu’a x.

Trang 15

4.3 Cˆ a´u tr´ uc cu’a chu.o.ng tr`ınh PROLOG 139

Chu.o.ng tr`ınh Prolog c´o phˆ` n duˆa oi mo.’ rˆo.ng l`a PRO v`a thu.`o.ng du.o c cˆa´uta.o bo’ i 3 ho˘. a.c 4 phˆa` n co ba’n l`a domains, predicates, clauses v` a goal (phˆ` na

goal c´o thˆe’ bo’ di khi cha.y chu.o.ng tr`ınh trong cu.’a sˆo’ Dialog – m´ay yˆeu cˆa`ucho biˆe´t Goal:-? )

Qua mˆo.t sˆo´ th´ı du trˆen, ta d˜a phˆa` n n`ao l`am quen v´o.i mˆo.t chu.o.ng tr`ınhviˆe´t b˘a`ng Prolog

• Phˆ` n domainsa

Dˆay l`a phˆ` n khai b´a ao kiˆe’u cu’a c´ac dˆo´i sˆo´ trong c´ac tˆan t`u cu’a chu.o.ngtr`ınh Tru.`o.ng ho. p c´ac tˆan t`u du.o. c viˆe´t du.´o.i da.ng khai b´ao kiˆe’u dˆo´itu.o. ng tru c tiˆ. e´p th`ı phˆ` n domains khˆa ong cˆ` n khai b´a ao

Nˆe´u goal viˆe´t s˘a˜n trong chu.o.ng tr`ınh th`ı n´o du.o c go.i l`a goal nˆo.i, c`on

khˆong th`ı cha.y ta.i cu’ a sˆ. o’ Dialog go.i l`a goal ngoa.i.

Trang 16

d`ung goal nˆo.i m`a muˆo´n c´o mo.i l`o.i gia’i, ta d`ung thˆem tˆan t`u fail (xem mu.csau) o.’ cuˆo´i c`ung trong goal nˆo.i.

Ngo`ai c´ac phˆ` n trˆen, c`a on c´o thˆe’ thˆem c´ac phˆ` n sau:a

• Phˆ` n database (co so.a ’ d˜u liˆe.u) du.o c d˘a.t tru.´o.c v`ung predicates, v`apha’i chı’ r˜o nh˜u.ng tˆan t`u n`ao liˆen quan dˆe´n co so.’ d˜u liˆe.u dˆe` u pha’i khaib´ao dˆ` y du’ o.a ’ v`ung n`ay

person(name, address, age)

• Phˆ` n constants cho tˆen v`a a gi´a tri c´ac h˘a`ng sˆo´, du.o c khai b´ao tru.´o.cv`ung predicates

pi=3.141592653ega=3

Tru.´o.c khi di.ch chu.o.ng tr`ınh Turbo Prolog thay thˆe´ mˆo˜i h˘a`ng (viˆe´tdu.´o.i da.ng mˆo.t chuˆo˜i ch˜u pi, ega ) b˘a`ng gi´a tri cu’a n´o

Trang 17

4.4 Tˆ an t` u FAIL, nh´ at c˘ a ´t (!) v`a tˆan t` u NOT 141

builds(X, computers), write(X), nl, fail.

Khi cha.y chu.o.ng tr`ınh ta c´o kˆe´t qua’ o.’ cu.’a sˆo’ Dialog:

badung

2 solutions

Ch´ u ´ y: nl l`a viˆe´t t˘a´t cu’a new line (xuˆo´ng d`ong).

4.4.2 Nh´ at c˘ a ´t (!) ng˘an khˆong cho quay vˆe` x´et la.i c´ac su kiˆe.n d´u.ng tru.´o.cn´o Ta d`ung nh´at c˘a´t khi muˆo´n chı’ c´o mˆo.t l`o.i gia’i trong goal ngoa.i

Trang 18

buy car(symbol, symbol)car(symbol, symbol, interger)color(symbol)

clauses

buy car(Model,

Color):-car(Model, Color, Price),color(Color), !,

- Nˆe´u cha.y chu.o.ng tr`ınh theo goal ngoa.i

Goal: buy car(X, Y)

←-th`ı ta du.o. c kˆe´t qua’ trˆen cu.’ a sˆo’ Dialog:

X=toyota Y =green

1 solution

- Nˆe´u ta bo’ nh´at c˘a´t ! v`a c˜ung cha.y theo goal ngoa.i

Goal: buy car(X, Y)

←-th`ı ta du.o. c kˆe´t qua’ trˆen cu.’ a sˆo’ Dialog:

X=toyota Y =green X=datsun Y =blue X=mazda Y =red

3 solutions

Trang 19

4.5 Phu.o.ng th´ u.c xuˆ a´t nhˆ a.p d˜u liˆe.u 143

predicates

male(symbol)smoker(symbol)sophie could darling(symbol)clauses

Khi cha.y chu.o.ng tr`ınh ta thu du.o c kˆe´t qua’:

A possible darling for Sophie is John

A possible darling for Sophie is Bill

2 solutions

4.5.1 Phu.o.ng th´ u.c xuˆ a´t d˜ u liˆ e.u

- Ta d`ung tˆan t`u sau dˆay:

write(Arg1, Arg2, , ArgN)

- Xuˆa´t theo khuˆon da.ng ta d`ung tˆan t`u sau:

write(Formatstring, Arg1, Arg2, , ArgN)

O’ dˆay c´ac dˆo´i sˆo´ Arg1, Arg2, ArgN l`a nh˜u.ng xˆau ho˘a.c biˆe´n, h˘a`ng..

Trang 20

Th´ ı du 4.5.1 /*Write.pro*/

constants

a=10goal

X=a+5, write(“a=” ,a), nl, write(“X=” , X), nl,

write(“Du.a cho tˆoi”, X, “dˆo`ng!” )

Khi cha.y chu.o.ng tr`ınh ta c´o kˆe´t qua’

a=10 X=15

Du.a cho tˆoi 15 dˆo`ng!

Tˆan t`u.writef l`a tu.o.ng dˆo´i ph´u.c ta.p Formatstring bao gˆo`m nh˜u.ng k´y

tu. thu.`o.ng, ho˘a.c d˘a.c tru.ng khuˆon da.ng sau dˆay:

% - m.pf

trong d´o:

- % chı’ thi khuˆon da.ng,

- Dˆa´u ga.ch ngang nho’ - chı’ c˘an lˆe` tr´ai (khˆong ga.ch ngang chı’ c˘an lˆe` pha’i)

- m dˆo d`ai tˆo’ng thˆe’ cu’a khuˆon da.ng lu.u tr˜u

- p chı’ sˆo´ c´ac ch˜u sˆo´ thˆa.p phˆan sau dˆa´u chˆa´m

- f cho ph´ep in gi´a tri da.ng khuˆon chuˆa’n

Goal

A=one B=432.7685

Ngày đăng: 02/07/2014, 20:21

TỪ KHÓA LIÊN QUAN

w