145
TP CHÍ KHOA HC, Đại hc Huế, S 53, 2009
NG NGHĨA TH TC CA CHƯƠNG TRÌNH LOGIC CÓ RÀNG BUC
Tr
ươ
ng Công Tu
n
Tr
ư
ng
Đ
i h
c Khoa h
c,
Đ
i h
c Hu
ế
Tr
n Th
Ng
c Trang
Trung tâm Công ngh
thông tin,
Đ
i h
c Hu
ế
TÓM TT
L
p trình logic ràng bu
c (CLP) là m
t h
ư
ng ti
ế
p c
n m
i trong l
p trình logic,
đư
c
ra
đ
i b
i s
k
ế
t h
p tính khai báo c
a l
p trình logic v
i tính hi
u qu
c
a quá trình gi
i quy
ế
t
ràng bu
c. Trong bài báo này, chúng tôi t
p trung trình bày ng
ngh
ĩ
a th
t
c c
a ch
ươ
ng trình
logic có ràng bu
c thông qua các d
n xu
t và cây suy d
n t
đ
ích,
đ
ng th
i ch
ra nh
ng
đ
i
u
ki
n trên hàm x
ràng bu
c
đ
đ
m b
o r
ng ng
ngh
ĩ
a này là
đ
c l
p v
i các quy t
c ch
n
literal trong
đ
ích.
I. M đầu
Lp trình logic ràng buc (CLP) là mt hướng m rng ca lp trình logic, đã
được nhiu người đầu tư nghiên cu th m thy trong nhiu công trình [1], [2],
[3], [8]. Cơ chế lp trình này đưa ra mt khung hình thc vi vic tng quát hóa các h
phương trình hng thc trong lp trình logic thành các ràng buc t min tính toán đã
được định nghĩa trước. Vic nghiên cu ng nghĩa ca các ngôn ng CLP đã thc s
hu dng trong vic hình hóa h thng và gii quyết các bài toán ti ưu phc tp
trong cuc sng.
Trong bài báo y, chúng tôi nghiên cu ng nghĩa th tc ca chương trình
logic có ràng buc ch ra nhng điu kin trên hàm x lý ràng buc đ đảm bo rng
ng nghĩa này là độc lp vi các quy tc chn literal trong đích.
II. Mt s định nghĩa và khái nim cơ s
Phn này ch trình bày tóm tt mt s khái nim cơ s ca chương trình logic
ràng buc, chi tiết đầy đủ hơn cũng như mt s khái nim khác ca lp trình logic có th
xem trong [10].
2.1. Min ràng buc
Định nghĩa 2.1. B hiu mt tp hu hn, khác rng các ký hiu, bao gm
các ký hiu hàm ký hiu v t. Mi ký hiu mt s t nhiên kèm theo, gi bc
ca ký hiu. (B ký hiu thường được ký hiu là ).
146
Định nghĩa 2.2. Cho b ký hiu , mt -cu trúc, ký hiu , mt th
hin ca các ký hiu trong bao gm:
Mt tp D khác rng,
Mt phép gán mi ký hiu hàm f bc n trong vi mt ánh x t Dn vào D.
Mt phép gán mi ký hiu v t p bc n trong vi mt ánh x t Dn vào tp
{true, false}.
Các v t trong chương trình logic ràng buc được chia thành hai lp: các
ràng buc nguyên t các nguyên t do người s dng định nghĩa. Các ràng buc
nguyên t đã được định nghĩa vi ng nghĩa xác định.
Định nghĩa 2.3. Nếu p hiu v t bc n t1,...,tn các hng thc thì
p(t1,...,tn) được gi là mt nguyên t.
Định nghĩa 2.4.
Mt ràng buc nguyên t dng p(t1,… tn), trong đó t1,…, tn các hng thc
p
là mt ký hiu v t.
Mt ràng buc là hi ca các ràng buc nguyên t.
Mt literal là mt nguyên t hoc ràng buc nguyên t.
Định nghĩa 2.5. Mt -công thc mt công thc bc nht được xây dng t
các ràng buc nguyên t, các ký hiu kết ni logic
,
, ¬,
các ký hiu lượng t
.
Định nghĩa 2.6.
-công thc được gi là đóng nếu mi biến xut hin trong công thc đều thuc
vào phm vi ca các lượng t , .
-lý thuyết là mt tp các -công thc đóng.
Cơ chế lp trình logic ràng buc định nghĩa nên mt lp các ngôn ng CLP()
trên mt min ràng buc . Min ràng buc xác định các ràng buc tp các ký hiu
hàm, hiu hng để t đó các hng thc trong chương trình th được xây dng. Ta
định nghĩa min ràng buc như sau:
Định nghĩa 2.7. Vi bt k b ký hiu C nào, mt min ràng buc s bao
gm 2 thành phn sau:
Min tính toán, ký hiu là C, là -cu trúc, nghĩa là th hin ca các ràng buc.
Lp các ràng buc, ký hiu là C , là tp các -công thc.
Định nghĩa 2.8. Hàm x ràng buc đối vi tp C, hiu solvC hàm
gán mi công thc trong C vi mt trong các giá tr đúng, sai hoc chưa biết, ch ra
147
rng mt công thc là tha mãn, không tha mãn hoc không xác định.
Các s la chn khác nhau v min ràng buc và hàm x ràng buc s phát
sinh các ngôn ng lp trình khác nhau. Đối vi min ràng buc , ta gi CLP( )
ngôn ng lp trình ràng buc da trên .
d 2.1. Vi b hiu C bao gm 0, 1,
,
,
hiu v t =, ta
min ràng buc kiu boolean trên logic hai tr gm hai thành phn như sau:
Min tính toán C bao gm tp D tp các giá tr {true, false}. Lúc y C
xem các ký hiu trong C nhưcác hàm logic, chng hn
là mt toán t logic OR,
là toán t logic AND.
Lp các ràng buc C bao gm tp các công thc bc nht được to ra t các
ng buc nguyên t. Chng hn, tamt ràng buc trong C như sau: (x
y)
z = 0.
d 2.2. Vi b ký hiu C bao gm
,
, >, <, = là các ràng buc nguyên t,
các ký hiu hàm +, , * , /, và dãy các s vi du chm thp phân là ký hiu hng, ta có
min ràng buc trên tp các s thc gm hai thành phn như sau:
Min tính toán C là tp các s thc, ký hiu là .
Lp các ràng buc C bao gm các ràng buc nguyên t
,
, <, >, = được th
hin như các phép toán quan h trên , các ký hiu hàm +, , * và / là các phép toán s
hc trên . Các ký hiu hng được th hin như mt biu din thp phân ca các
thành phn ca .
Định nghĩa 2.9. Mt ràng buc nguyên t L được gi nht quán vi ràng
buc c trong hàm x ràng buc solv(c) nếu solv(c
L)
false, ngược li ta nói L
không nht quán vi solv(c).
2.2. Chương trình logic có ràng buc
Chương trình logic ràng buc là mt m rng ca chương trình logic bng
cách cho phép các ràng buc xut hin trong thân ca các quy tc đích. Mt chương
trình logic có ràng buc được định nghĩa như sau:
Định nghĩa 2.10. Mt chương trình logic ràng buc mt tp hu hn các
quy tc có dng:
A
c, B1, ..., Bn
trong đó:
A là mt nguyên t, được gi là đầu ca quy tc;
c, B1, ..., Bn hi ca ràng buc c và các literal Bi (i=1,…, n), được gi thân
ca quy tc.
Vi Pchương trình logic có ràng buc, ta ký hiu defnP(p(t1, …, tn)) là tp các
148
các quy tc ca P sao cho đầu ca mi quy tc có dng p(s1, …, sn).
Định nghĩa 2.11. Mt đích dng c, B1, ..., Bm hi ca ràng buc c các
literal Bi (i=1,…, m).
d 2.3. Cho mt chương trình logic ràng buc đích trong min ràng
buc s thc như sau :
p(X, Y)
X > Z, Y
1 + Z, Z
0, q(Z)
p(X, Y)
X < Z, Y
1 – Z, Z
-2, r(Y, Z)
Đích: X
0, p(X, Y)
III. Ng nghĩa th tc ca chương trình logic có ràng buc
3.1. Mô t ng nghĩa th tc
Ng nghĩa th tc ca chương trình logic ràng buc được định nghĩa dưới
dng các dn xut t đích. Ta có định nghĩa sau:
Định nghĩa 3.1. Mt dn xut là dãy các phép biến đổi gia các trng thái, đó
mi trng thái là mt b
|
G c
vi G đích hin thi, c ràng buc hin thi ca
trng thái đó.
Ti mi bước biến đổi, mt literal trong đích đưc chn theo mt quy tc chn
c định nào đó, thường là theo hướng t trái sang phi. Nếu literal mt ràng buc
nguyên t, nht quán vi ràng buc hin thi, thì được thêm vào kho ràng buc
hin thi. Nếu nó không nht quán thì dn xut s tht bi. Nếu literal là mt nguyên t,
thì nó được biến đổi bng cách s dng mt trong các quy tc định nghĩa nguyên t đó.
Như vy, mt trng thái
1
,..., |
m
L L c
th được biến đổi như sau: Chn mt
literal Li trong đích và xét các trường hp sau:
Nếu L là mt ràng buc nguyên t solv(c
L)
false, thì được biến đổi
thành
1 1 1
,..., , ,...,
|
i i m
L L L L c L
+
.
Nếu L là mt ràng buc nguyên t solv(c
L) = false, thì được biến đổi
thành
W| false
, trong đó W là ký hiu cho mt đích rng.
Nếu L là mt nguyên t, thì nó được biến đổi thành:
1 1 1 1 1
,..., , ,..., , , ,...,
|
i n n i m
L L s t s t B L L c
+
= =
vi (A
B)
defnP(L), trong đó L có dng p(s1, …, sn) và A có dng p(t1, …, tn).
Nếu L là mt nguyên tdefnP(L) = thì nó được biến đổi thành
W| false
.
Mt dn xut t đích G trong chương trình P mt dãy các trng thái S0
S1
149
Sn trong đó S0
|
G true
mt phép biến đổi t Si-1 thành Si bng cách s
dng các quy tc trong P. Chiu dài ca mt dn xut có dng S0
S1
Sn n.
Mt dn xut t G được gi kết thúc nếu đích cui cùng không th biến đổi
được na. Trng thái cui cùng trong mt dn xut được kết thúc t G phi có dng
W
|c
. Nếu c = false thì dn xut được gi là tht bi. Ngược li dn xut đó thành công.
Nhng câu tr li ca mt đích G cho chương trình P các ràng buc
var ( )
s G
c
trong
đó có mt dn xut thành công t G đến trng thái cui cùng vi ràng buc c.
d 3.1. Xét mt chương trình logic có ràng buc để tính giai tha ca mt s
như sau:
(R1) fac(0, 1)
(R2) fac(N, N * F)
N
1, fac(N – 1, F)
Mt dn xut thành công t đích fac(1, X) là:
(1, ) |
fac X true
2
R
1 , , 1, ( 1, ) |
N X N F N fac N F true
= = ×
, 1, ( 1, ) |1
X N F N fac N F N
= × =
1, ( 1, ) |1
N fac N F N X N F
= = ×
( 1, ) |1 1
fac N F N X N F N
= = ×
1
R
1 0, 1|1 1
N F N X N F N
= = = = ×
1|1 1 1 0
F N X N F N N
= = = × =
W|
1 1 1 0 1
N X N F N N F
= = × = =
Do các biến trung gian không được chú ý đến nên chúng được lượng hóa đ đưa
ra câu tr li như sau:
N
F(1 = N
X = N
×
F
N
1
N 1 = 0
F = 1),
tương đương logic vi X = 1.