ÁNH GIÁ I M QUÁ TRÌNH
Gi ng viên: TS. Ph m V n H i, HUST
BÀI T P V NHÀ (SV l p ào t o qu c t ):
Sinh viên cài t b ng ngơn ng l p trình tùy ý mơ t thu t tốn suy di n
ti n và lùi, v cây lu t kèm các các phương th c: t o m i, xem xóa, s a
c a các nút.
BÀI T P D ÁN:
D a vào các cơ ch suy di n ti n và lùi, sinh viên xây d ng bài t p d
án theo nhóm cho mi n ng d ng th c ti n. Yêu c u h th ng bao g m
các ch c n ng qu n tr , c p nh t lu t, thay i và s a i tri th c trong
cơ s tri th c. Mi n ng d ng do sinh viên t
xu t.
N i dung tham kh o:
1. Suy di n ti n:
i t! gi thi t ta s suy di n d"n t i k t qu mong mu n. Suy di n ti n là
quá trình suy di n b#t
c như v y cho
u t! t p s ki n ã bi t, rút ra nh ng s ki n m i và
n khi có ư$c s ki n c n ch ng minh ho c khơng có.
Q trình suy di n ti n là quá trình xem xét các lu t, v i m%i lu t ta xét ph n
i u ki n ( v trái) v i ph n k t lu n ( v ph i) và khi mà t t c các i u
ki n c a lu t
l
u th&a mãn thì ta suy ra s ki n trong ph n k t lu n. Chính vì
ó mà có tên là suy di n ti n. Trong m%i bư c c a th t c, ngư'i ta xét
m(t lu t trong t p lu t. So sánh m%i i u ki n ( v trái) c a t p lu t v i các
s ki n trong cơ s s ki n, n u t t c các i u ki n c a lu t ư$c tho mãn
thì s ki n trong ph n k t lu n ư$c xem là s ki n ư$c suy ra. N u s
ki n này là s ki n m i (khơng có trong b( nh làm vi c) thì nó ư$c ưa
vào b( nh làm vi c. Quá trình trên c l p l i cho
1
n khi nào khơng có lu t
nào sinh ra s ki n m i. Quá trình suy di n ti n không
quy t m(t v n
nh hư ng t i gi i
nào c , không hư ng t i tìm ra câu tr l'i cho m(t câu h&i
nào c . Suy di n ti n ch) là quá trình suy ra các s ki n m i t! các s ki n
có trong b( nh làm vi c.
Thêm thông tin vào b(
nh làm vi c
Xét lu t
Xét lu t ti p theo
u tiên
True
False
Gi thi t kh p
v i b( nh
Còn lu t
True
False
K t lu n vào b( nh
làm vi c
D!ng suy di n
S
suy di n ti n t ng qt
u i m:
• Ưu i+m chính c a suy di n ti n là làm vi c t t khi bài toán v b n
ch t i thu th p thông tin r i th y i u mình c n suy di n.
2
• Suy di n ti n cho ra s lư$ng l n các thông tin t! các thông tin ban
u. Nó sinh ra nhi u thơng tin m i.
• Suy di n ti n là ti p c n lý tư ng v i các lo i bài toán c n gi i quy t
các nhi m v như l p k ho ch, i u hành, i u khi+n và di n d ch.
Nh
c i m:
• H th ng suy di n không c m nh n ư$c m(t vài thông tin quan
tr,ng. H th ng h&i các câu h&i có th+ h&i mà khơng bi t r ng ch) c n
n k t lu n ư$c.
m(t ít câu thơi ã có th+ i
• H th ng có th+ h&i c câu h&i khơng liên quan. Có th+ các câu tr l'i
quan tr,ng, nhưng làm ngư'i dùng lúng túng khi ph i tr l'i các câu
khơng dính dáng
n ch
.
Thu t toán suy di n ti n: [5]
Trong gi i thu t sau R = { ,…., }, là các lu t s n xu t.
- Tgian là các t p s ki n úng
- Vet là t p các lu t s n xu t ã s d ng.
- Loc(F, Rule) là th t c cho t p các lu t r ∈ Rule, r:left → q sao cho
left ⊆ F.
Phương pháp:
{
Tgian = GT; Vet = 0; Thoa = Loc(Tgian,R);
While ((Thoa ≠ 0) and (KL ⊄ GT)) do
/*r: left →q*/
{
r ← Get(Thoa)
Vet = Vet ∪ {r}; R=R\{r};
Tgian = Tgian ∪ {q}; Thoa = Loc(Tgian, R)
}
If (KL ⊂ Tgian) Then exit (“Thành công”)
Else exit (“Không thành công”);
}
u tiên h th ng l y các thơng tin v các bài tốn do ngư'i s d ng cung
c p và t chúng vào b( nh làm vi c. Suy lu n quét các lu t theo dãy xác
3
nh trư c; xem ph n gi thi t có trùng kh p v i n(i dung trong b( nh
không. N u phát hi n m(t lu t như mô t trên thì b sung k t lu n c a lu t
này vào b( nh . Lu t này g,i là cháy. Ti p t c quá trình này, có th+ b& qua
các lu t ã cháy. Q trình d!ng l i khi không kh p ư$c lu t nào hay th y
i u c n ch ng minh. Lúc này b( nh có các thơng tin c a ngư'i dùng và
thông tin do h th ng suy lu n.
2. Suy di n lùi:
Ý tư ng c a suy di n lùi là xu t phát t! k t lu n ta s suy di n d"n t i m(t
i u gì ó úng trong gi thi t ã cho. Là quá trình xu t phát t! s ki n c n
ch ng minh và thay vào ó là nh ng s ki n
v trái c a 1 lu t có v ph i là
s ki n c n ch ng minh. Quá trình này ư$c th c hi n cho
n khi ưa v các
s ki n là t p s ki n con c a t p s ki n gi thi t. Ta có bi+u
suy di n lùi
t ng quát như sau:
Thêm thông tin vào
b( nh làm vi c
Ki+m tra b( nh
làm vi c
Tìm ích m i
True
ích kh p
v i gi thi t
False
True
Quay lui
Còn lu t
False
True
False
D!ng suy di n
K t lu n vào ích
S
suy di n lùi t ng quát
4
u i m:
• M(t trong các ưu i+m chính c a suy di n lùi là phù h$p v i bài toán
ưa ra gi thuy t r i xem hi u qu c a gi thuy t ó có úng khơng.
•
Suy di n lùi t p trung vào ích ã cho. Nó t o ra m(t lo t câu h&i ch)
liên quan
nv n
ang xét,
n hoàn c nh thu n ti n
i v i ngư'i
dùng.
• Khi suy di n lùi mu n suy di n cái gì ó t! các thơng tin ã bi t, nó ch)
tìm trên m(t ph n c a cơ sơ tri th c thích áng
Nh
i v i bài tốn ang xét.
c i m:
• Như$c i+m cơ b n c a lo i suy di n này là nó theo u i m(t dịng suy
lu n, thay vì úng ra ph i d!ng
ó mà sang ch% khác. Tuy nhiên,
ngư'i ta có th+ dùng nhân t tin c y + kh#c ph c hi n tư$ng này.
• So v i suy di n lùi, suy di n ti n ơn gi n hơn. Song quá trình suy di n
ti n ph i huy (ng m,i lu t có th+ áp d ng ư$c, mà không lưu ý
n
li u lu t có liên quan
i
n k t lu n mong mu n hay không. Do v y,
v i các cơ s tri th c l n v i s lu t ngày càng t ng, thu t gi i này d"n
t i bùng n t h$p. Ngư$c l i, suy di n lùi ph c t p hơn, nhưng có ưu
i+m là ch) ch,n nh ng lu t hư ng t i ích
suy di n lùi ư$c cài
t
t ta. V th c ch t cơ ch
ây tương ng v i tìm ki m sâu trên
th .
Thu t tốn suy di n lùi: [5]
- Goal là t p s ki n c n ph i ch ng minh (t ch c dư i d ng Stack).
- Vet là t p lu t ã s d ng (t ch c dư i d ng Stack).
- Tìm lu t (f, j, Rule, i) là th t c xác nh , m ≥ j ≥ i+1 sao cho có
d ng :left →f. N u khơng tìm th y thì j = m +1, m là s lu t trong
Rule.
5
{
If (KL ⊆ GT) then exit(“Thành công”)
Else
{
Goal = KL\GT; Vet=0; back =false;
f →get(goal);
repeat {if f ∉GT then
{tìm lu t (f, j, r, 0) //Tìm lu t th j sao cho :
If (j≤m) then
{ Vet= Vet ∪{(f, j)}
goal = goal ∪
\GT;
}
Else // s quay lui theo các lu t
{
back=true;
While ((f ∉ KL) and (back)) do
{
repeat {(g, k) ←get(vet);
goal = goal \
}
;
until f ∉
Tìm lu t (g, l, r, k);
// Tìm phương án khác i v i g
If (l<=m) then
{
goal=goal \
;
goal=goal ∪
\ GT;
Vet = Vet ∪{(g, l)};
Back = false;
}
Else f = g;
}
}
}
If (goal = 0) then break
Else f ←get(goal);
}
Until f ∉ KL;
6
⇒
If ((f ∉ KL) and back) then exit(“Không thành công”)
Else exit (“Vet”);
}
}
7