Tải bản đầy đủ (.docx) (17 trang)

Tiểu luận môn biểu diễn tri thức và suy luận MẠNG TÍNH TOÁN GIẢI BÀI TOÁN TAM GIÁC

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (991.35 KB, 17 trang )




BÁO CÁO:
MẠNG TÍNH TOÁN
GIẢI BÀI TOÁN TAM GIÁC
Môn học: Biểu diễn tri thức và ứng dụng
 !"
#$%&'()*+)+,-
./0*!1,+)2
Mục lục
,
1. GIỚI THIỆU
Ngày nay khi cuộc sống trở nên hiện đại, con người đòi hỏi các thiết bị càng trở nên
thông minh dẫn đến nhiều vấn đề được đặt ra cho lĩnh vực trí tuệ nhân tạo. Một trong
những vấn đề đó chính là việc giúp người dùng giải những bài toán tính toán cơ bản đồng
thời giúp người sử dụng hiểu được việc tính toán diễn ra như thế nào.
Xuất phát từ vấn đề đó đồng thời từ nhu cầu hỗ trợ trong việc giải bài tập giúp đỡ
học sinh, sinh viên học tập tốt hơn các môn có yêu cầu về việc tính toán. Em đề xuất
chương trình giúp người dùng giải tự động các bài toán đồng thời xuất ra lời giải. Qua
quá trình tìm kiếm em quyết định cài đặt mô hình Mạng Tính Toán(PGS.TS. Đỗ Văn
Nhơn đề xuất năm 1998) trên Maple. Mạng Tính Toán là mô hình biểu diễn tri thức tính
toán dựa trên các biến và các quan hệ trong khi Maple lại hỗ trợ tốt trong việc tính toán
và lập trình symbolic. Ở các phần dưới em sẽ trình bày về mô hình Mạnh Tính Toán và
việc lập trình nó trong Maple.
2. MẠNG TÍNH TOÁN
2.1. Khái niệm:
Mạng tính toán bao gồm một tập hợp các biến M và một tập hợp các quan hệ (tính
toán) F trên các biến. Có 2 loại quan hệ trên các biến là: quan hệ đối xứng (chủ yếu là có
hạng 1) và quan hệ không đối xứng. Mỗi mạng tính toán là một mạng ngữ nghĩa chứa các
biến và những quan hệ có thể cài đặt và sử dụng cho việc tính toán.


M = { x1, x2, x3, …, xn},
F = {f1, f2, f3, …, fm},
Đối với mỗi f F, ta ký hiệu M(f) là tập các biến có liên hệ trong quan hệ f. Nếu
viết f dưới dạng:
f : u(f)  v(f)
thì ta có: M(f) = u(f) v(f).
Quan hệ đối xứng có hạng k (k > 0) (rank) là các quan hệ mà ta có thể tính được k
biến bất kỳ từ m-k biến kia. Ví dụ: quan hệ f về chu vi p và 3 cạnh a,b,c của tam giác
ABC cho bởi hệ thức:
*
p = a+b+c
a c
f: p = a+b+c (quan hệ đối xứng hạng 1)
b p
Đối với quan hệ không phải là đối xứng có hạng k và quan hệ được xác định duy
nhất một hàm f với tập biến vào là u(f) và tập biến ra là v(f); ta gọi loại quan hệ này là
quan hệ không đối xứng xác định một hàm, hay quan hệ không đối xứng. Ví dụ: quan hệ
f là phương trình hóa học vô cơ mô tả mối quan hệ giữa H, O, H
2
O.
H
2
+ O
2
 H
2
O
H
2
H

2
O
O
2
2.2. Tính giải được của bài toán:
Bài toán A B được gọi là giải được khi có thể tính toán được các giá trị của các
biến biến thuộc B xuất phát từ giả thuyết A.
Cho mạng tính toán (M, F) và A là một tập hợp con của M. Thì tồn tại duy nhất
một tập hợp B lớn nhất là M sao cho bài toán A  B là giải được, và tập hợp B này
chính được gọi là bao đóng của A trên mô hình (M, F).
Như vậy: trên mạng tính toán (M, F), bài toán A  B là giải được khi và chỉ khi B
bao đóng của A.
Thuật toán tìm bao đóng của A trên mạng tính toán (M, F) với A M: ta lần lượt
mở rộng các biến trong A bằng cách áp dụng lần lượt tất cả các quan hệ f có thể áp dụng
được trong F. Viêc duyệt tất cả quan hệ trong F chỉ kết thúc khi tập A không mở rộng
thêm được nữa (tập hợp A không đổi sau một vòng lặp). Tập hợp A sau cùng chính là tập
bao đóng ta cần tìm. Lưu ý do chúng ta có 2 loại quan hệ nên việc xét tính áp dụng được
của các quan hệ phụ thuộc vào:
2
3
3
+ Quan hệ đối xứng: số lượng phần tử trong quan hệ f không xuất hiện trong tập
hợp A hiện tại hạng của quan hệ f ( hay số phần tử cực đại bất kỳ có thể tính được trong
f nếu các phần tử còn lại có giá trị xác định).
Ví dụ: xét quan hệ đối xứng bậc 1: a + b +c = 0. Rõ ràng nếu trong tập A chứa
(a,b) hoặc (b,c) hoặc (a,c) thì số phần tử trong M(f) không xuất hiện trong A là 1. Vì vậy
ta dễ dàng tìm được phần tử còn lại trong quan hệ trên.
+ Quan hệ không đối xứng: các phần tử trong quan hệ f không xuất hiện trong tập
hợp A hiện tại là một tập hợp v(f) (tập kết luận của quan hệ f) hay có thể nói tập hợp A
chứa đầy đủ các giả thuyết (u(f)) cần thiết của quan hệ f.

Ví dụ: trong các phản ứng hóa học một chiều. Nếu ta xác định được giá trị các
chất tham gia phản ứng thì ta có thể suy ra các chất tạo thành.
• Thuật toán tìm bao đóng của A M:
Nhập: Mạng tính toán (M, F),
A M .
Xuất:
A
Thuật toán:
1. B  A;
2. Repeat
B1  B;
for f F do
if (f đối xứng and Card (M(f) \ B) r(f) ) or
( f không đối xứng and M(f) \ B v(f) ) then
Begin
B  B M(f);
F  F \ {f};
end;
Until B = B1;
3.
A
 B;
4
2.3. Lời giải cho bài toán:
Ở phần trên ta đã đề cập đến tính giải được của bài toán A  B trên mạng tinh
toán (M, F) bằng cách tìm bao đống của A . Phương pháp tìm một lời giải cho bài toán
trên cũng thực hiện tương tự như đối với phương pháp tìm bao đóng của A. Tuy nhiên
thuật toán sẽ kết thúc ngay khi tìm được tập hợp A chứa tập B hay B là của tập A đang
mở rộng. Lời giải của bài toán chính là các quan hệ f đã được áp dụng để mở rộng tập A.
Tuy nhiên nếu sau khi mở rộng hết cỡ A tức là tìm được bao đóng của A mà vẫn không

chứa B thì ta kết luận bài toán A  B là không có lời giải.
Ta dễ dàng nhận thấy phương pháp tìm lời giải như trên là chưa tối ưu. Do việc áp
dụng lần lượt tất các quan hệ giải được trong F mà đôi khi chúng ta có thể lượt bớt một
vài quan hệ trung gian nhưng vẫn tìm được đáp án cho bài toán. Một lời giải tốt là lời giải
mà không thể lượt bỏ bất kỳ một quan hệ nào hay có thể hiểu là sau mỗi lần áp dụng quan
hệ thì ta lại càng tiến gần hơn đến đích. Để có được lời giải tối ưu ta càng phải thực hiện
phương pháp lọc bớt các quan hệ dư thừa được áp dụng trong thuật toán ở trên. Thuật
toán đơn giản là đi từ quan hệ cuối cùng đến quan hệ đầu tiên được áp dụng. Nếu việc
loại bỏ quan hệ đó là hoàn toàn không ảnh hưởng đến tính giải được của bài toán thì ta
xem nó là quan hệ trung gian không cần thiết và loại nó ra khỏi lời giải cuối cùng.
Một bài toán thì có thể có nhiều cách giải khác nhau. Tuy nhiên để tìm được lời
giải tối ưu nhất cho bài toán thì ta có thể áp dụng thuật giải Heuristic A* trong trường
hợp bài toán là giải được.
• Thuật toán tìm một lời giải cho bài toán A  B:
Nh pậ : M ng tính toán (M,F), t p gi thi t A ạ ậ ả ế ⊆ M, t p bi n c n tính B ậ ế ầ ⊆ M.
Xu tấ : l i gi i cho bài toán A ờ ả → B
Thu t toánậ :
1. Solution ← empty; // Solution là dãy các quan h s áp d ngệ ẽ ụ
2. if B ⊆ A then
begin
Solution_found ← true; // bi nế Solution_found = true khi bài toán
// gi i cả đượ
goto 4;
end
else
Solution_found ← false;
3. Repeat
5
Aold ← A;
Choïn ra m t f ộ ∈ F cho xem xét;

while not Solution_found and (ch n đ c f) ọ ư ợ do
begin
if ( f đ i x ng ố ứ and 0 < Card (M(f) \ A) ≤ r(f) ) or
( f không đ i x ng ố ứ and ∅ ≠ M(f) \ A ⊆ v(f) ) then
begin
A ← A ∪ M(f);
Solution ← Solution ∪ {f};
end;
if B ⊆ A then
Solution_found ← true;
Ch n ra m t f ọ ộ ∈ F ch xem xét;ờ
end; { while }
Until Solution_found or (A = Aold);
4. if not Solution_found then
Bài toán không tìm đ c l i gi i;ượ ờ ả
else
Solution là m t l i gi i;ộ ờ ả
• Tìm một lời giải tốt từ lời giải đã có:
Nhập : Mạng tính toán (M,F),
Lời giải {f
1
, f
2, …,
f
m
} của bài toán A B
Xuất : lời giải tốt cho bài toán A → B
Thuật toán :
) D  {f
1

, f
2, …,
f
m
};
, For i = m downto 1 do
if D \ {f
i
} là một lời giải then
D  D \ {f
i
};
* D là một lời giải tốt.
2.4. Định lý về phân tích quá trình giải:
Trong một số lời giải tốt mà ta tìm được bên trên rất có thể tồn tại việc áp dụng
quan hệ để tính toán các biến bị thừa hay biến được suy ra từ quan hệ không được sử
dụng tiếp theo để tìm ra lời giải hoặc là rẽ sang một hướng tính toán mới. Do đó chúng ta
cần phải xem xét quá trình áp dụng các quan hệ trong lời giải và chỉ tính toán các biến
-
thực sự cần thiết cho lời giải. Định lý sau đây cho ta tập các biến được xác định theo lời
giải và trên cơ sở đó có thể xây dựng quá trình tính toán các biến để giải quyết bài toán.
Cho {f
1
, f
2, …,
f
m
} là một lời giải tốt cho bài toán A  B trên một mạng tính toán
(M, F). Đặt:
A

0
= A, A
i
= {f
1
, f
2, …,
fi}(A), với mọi i = 1, …, m.
Khi đó có một dãy {B
0
, B
1
, …, B
m-1
, B
m
}, thỏa các điều kiện sau đây:
6)7 B
m
= B.
6,7 B
i
⊆ A
i
, với mọi i = 0,1, ,m.
6*7 Với mọi i = 1,…, m, {f
i
} là lời giải của bài toán B
i-1
 B

i
nhưng không phải là
lời giải của bài toán G  B
i
, trong đó G là một tập con thật sự tùy ý của B
i-1
.
2.5. Ví dụ minh họa:
Cho tam giác ABC có cạnh a và 2 góc là α, β được cho trước. Tính diện tích S của
tam giác.
Để giải bài toán này ta áp dụng mạng tính toán gồm có:
) Tập biến M = {a, b, c, α, β, γ, h
a
, h
b
, h
c
, S, p, R, r, …}
trong đó a, b, c là 3 cạnh; α, β, γ là 3 góc tương ứng với 3 cạnh; h
a
, h
b
, h
c
là 3
đường cao; S là diện tích tam giác; p là nữa chu vi; …
2. Caùc quan heä:
f
1
: α + β + γ = 180 f

2
:
a
sin
b
sin
α β
=
f
3
:
c
sin
b
sin
γ β
=
f
4
:
a
sin
c
sin
α γ
=
f
5
: p = (a+b+c) /2 f
6

: S = a.h
a
/ 2
f
7
: S = b.h
b
/ 2 f
8
: S = c.h
c
/ 2
f
9
: S = a.b.sinγ / 2

* Yêu cầu tính: S.
Theo đề bài ta có giả thuyết là: A = { a, α, β} và tập biến cần tính là B = {S}. Áp
dụng thuật giải như trên ta có:
{a, α, β} {a, α, β, γ} {a, b, α, β, γ} {a, b, c, α, β, γ} {a, b, c, p, α, β, γ} {a, b, c,
p, α, β, γ, S}
8
Nhận thấy lời giải trên chưa phải là lời giải tốt vì vẫn còn có những bước tính toán
thừa, chẳng hạn là f3 và f5. Ta dung thuật toán tìm lời giải tốt để thực hiện lược bỏ
các bước trung gian để thu được kết quả sau:
{a, α, β} {a, α, β, γ} {a, b, α, β, γ} { a, b, α, β, γ, S}
Theo lời giải này, ta có quá trình tính toán như sau:
Bước 1: tính γ (áp dụng f1)
Bước 2: tính b (áp dụng f2)
Bước 3: tính S (áp dụng f9)

γ
β α a S

b
3. CÀI ĐẶT MẠNG TÍNH TOÁN TRÊN MAPLE
3.1. Bài toán:
Ở phần demo mạng tính toán sử dụng maple, ta sẽ sử dụng mô hình mạng tính
toán đơn giản là mạng tính toán trên các kiến thức liên quan đến tam giác.
3.2. Cấu trúc dữ liệu:
- Các số đo độ lớn các cạnh, các góc được biểu diễn dưới dạng kiểu số thực
trong Maple. Độ đo góc ta sử dụng ở đây là radian. Bên cạnh đó Maple còn hỗ
trợ cho ta kiểu đẳng thức rất thuận tiện cho việc biểu diễn mạng tính toán.
- Tập hợp các biến ta sẽ lưu dưới dạng tập hợp. Lý do tao lưu dưới dạng tập hợp
là bởi vì các phần tử trong tập hợp không trùng nhau và tập hợp trong Maple sẽ
tự động sắp xếp thứ tự các phần tử giúp ta dễ dàng trong việc quản lý. Tập hợp
các biến ta đặt là Mset có dạng như sau: Mset := {A, B, C, S, a, b, c, ha, hb, hc,
p}
- Tập hợp các quan hệ ta biểu diễn dưới dạng như sau:
9
3)
39
3,
o Mỗi quan hệ có dạng một danh sách bao gồm: một tập hợp chứa các
biến đã được xác định, biến sẽ được xác định trong quan hệ, biểu thức
biểu diễn quan hệ giữa các biến.
o Ta sử dụng cấu trúc tập hợp để biểu diễn tập hợp các quan hệ có trong
hệ luật dẫn này.
o Tập hợp các quan hệ có dạng như sau: Fset := {[{A, B}, C, A+B+C =
Pi], [{A, C}, B, A+B+C = Pi], [{B, C}, A, A+B+C = Pi], [{S, a}, ha,
a*ha = 2*S], [{S, b}, hb, b*hb = 2*S], [{S, c}, hc, c*hc = 2*S]

- Giả thiết được biểu diễn dưới dạng tập hợp các đẳng thức, trong đó mỗi đẳng
thức có gồm có tên biến đã xác định và giá trị của nó. Ta gọi giả thiết này là
GTBD và có dạng như sau: GTBD := {b = 7, c = 9, ha = 6, hb = 5}
- Kết luận được biểu diễn dưới dạng tập hợp các biến cần được xác định. Ta đặt
tên cho tập biến mục tiêu là KL có dạng như sau: KL := {A, hc}
3.3. Các hàm thực hiện:
- Hàm LayGT: từ GTBD hàm này trả về tập hợp các tên biến đã được biết trước.
- Hàm Giai: từ GT được lấy từ hàm LayGT. Hàm này sẽ kiểm tra xem từ những
GT đã được xác định, ta có thể tìm được lời giải cho các biến trong hàm KL.
Hàm này như sau:
o Biến Sol là danh sách lưu các quan hệ dẫn đến lời giải. Ở đây ta sử dụng
danh sách bởi vì các luật thực hiện theo thứ tự, nếu như ta sử dụng tập
hợp để chứa các quan hệ thì các quan hệ dẫn đến lời giải sẽ được Maple
tự động sắp xếp trong Sol dẫn đến cho ta lời giải sai.
o Biến Known là tập hợp lưu các biến đã được xác định. Known sẽ được
gán mặc định cho GT.
o Biến flag là biến cờ hiệu giúp ta biết đã tìm ra lời giải hay chưa trong
vòng lặp.
o Biến temp cũng là một biến cờ hiệu giúp ta kiểm tra xem liệu có còn lời
giải nào trong tập các quan hệ có thể áp dụng không.
o Biến Luat chứa tập hợp các quan hệ trong mạng tính toán.
)+
o Đầu tiên sẽ kiểm tra xem KL đã ở trong GT chưa. Nếu đã có ở trong GT nghĩa
là ta không cần phải làm gì nữa và kết thúc chương trình tại đây.
o Thực hiện vòng lặp với điều kiện là biến flag khác true có nghĩa là chưa
tìm được lời giải.
o Chúng ta thực hiện tiếp một vòng lặp tìm luật có thể áp dụng được trên
tập biến đã biết là Known bằng cách kiểm tra xem các biến đã biết của
quan hệ r có nằm trong Known hay không. Nếu tìm được ta gán biến
))

temp = true còn không thì gán temp = false. Nếu chúng ta tìm được luật
r có thể áp dụng trên tập Known thì ta gán r vào tập Sol đồng thời loại r
ra khoải tập Luat.
o Sau khi thực hiện xong vòng lặp ta thực hiện viêc kiểm tra biến flag:
nếu flag=true nghĩa là tìm được lời giải và ta xuất ra tập Sol, nếu flag =
false nghĩa là chúng ta không tìm được lời giải như vậy chúng ta xuất ra
lời giải là tập rỗng.
- Hàm KTLoiGiai: Hàm này thực hiện việc kiểm tra xem sử dụng danh sách
LoiGiai trên tập GT có thể cho ra KL không. Bằng cách sử dụng từng luật
trong LoiGiai áp dụng trên tập Known. Sau khi hoàn thành xong việc mở rộng
tập Known ta kiểm tra xem KL có nằm trong tập Known không, nếu có thì trả
về True không thì trả về False.
- Hàm RutGon: Hàm này để loại bỏ lời giải thừa từ tập LoiGiai. Hàm này như
sau:
o Biến temp dùng làm biến tạm trong quá trình tính toán. Biến newSol là
biến cục bộ chứa lời giải sẽ xử lý trong chương trình.
o Hàm này thực hiện việc rút gọn lời giải như trong thuật giải rút gọn lời
giải của mạng tính toán.
o Vòng lặp chạy từ phần tử cuối của tập lời giải đến phần tử đầu. Với
những lời giải thừa thì nó sẽ loại bỏ ra khỏi tập lời giải.
o Hàm sẽ trả về lời giải đã được thu gọn.
- Hàm TinhToan: đây là hàm quan trọng nhất của chương trình. Từ GTBD và
KL hàm sẽ trình bày lời giải tựa như con người làm. Bên cạnh việc dùng
LoiGiai ở các hàm ở trên hàm còn thực hiện việc tính toán để cho ra kết quả là
số.
o Hàm sẽ kiểm tra xem từ GTBD có lời giải dẫn đến KL không. Nếu
không tìm được thì dừng thuật toán, nếu có thì tiếp tục.
o Hàm sẽ dùng biến KQ để lưu danh sách các đẳng thức của các biến đã
xác định và giá trị của từng biến.
o Trong vòng lặp sẽ thực hiện việc xuất lời giải ra theo từng bước. Hàm sẽ

thực hiện việc giải phương trình chứa trong các quan hệ để ra giá trị của
),
biến mục tiêu. Sau đó tạo một đẳng thức giữa biến mục tiêu và quan hệ
rồi gán vào vào KQ.
o Ta có hàm TinhToan như ở dưới.
3.4. Thể hiện kết quả:
- Ví dụ 1:Với giả thiết ban đầu: GTBD := {b = 7, c = 9, ha = 6, hb = 5}. Và
biến mục tiêu: KL := {A, hc}. Ta có chương trình thể hiện kết quả như sau:
+Yeu to da co:
+Yeu to can xac dinh:
- Buoc 1:
Su dung cong thuc:
)*
Ta tinh duoc:
- Buoc 2:
Su dung cong thuc:
Ta tinh duoc:
- Buoc 3:
Su dung cong thuc:
Ta tinh duoc:
- Buoc 4:
Su dung cong thuc:
Ta tinh duoc:
- Buoc 5:
Su dung cong thuc:
Ta tinh duoc:
- Ví dụ 2: Với giả thiết ban đầu GTBD := {C = (1/2)*Pi, S = 30, a = 8, b = 7}.
Tập biến mục tiêu KL:= {A, B, hc}. Ta có lời giải như sau:
+Yeu to da co:
+Yeu to can xac dinh:

)2
- Buoc 1:
Su dung cong thuc:
Ta tinh duoc:
- Buoc 2:
Su dung cong thuc:
Ta tinh duoc:
- Buoc 3:
Su dung cong thuc:
Ta tinh duoc:
- Buoc 4:
Su dung cong thuc:
Ta tinh duoc:
4. KẾT NỐI MAPLE VÀ C#
Phần lớn chức năng toán học của Maple được viết bằng ngôn ngữ Maple và được
thông dịch bởi nhân Maple. Nhân Maple được viết bằng C. Vì vậy việc kết nối
C# với Maple đơn giản là xâm nhập C .dlls từ C#. Kĩ thuật kết nối C# với Maple có
thể tóm tắt như sau:
+ Thêm file MapleEngine.cs vào project. Lớp này include những hàm API để kết nối
C# và Maple.
+ Thêm file OpenMaple.cs vào project. Lớp này dựa vào những hàm API từ file
MapleEngine.cs để thực hiện 2 hàm chính: Open và Run.
)4
 Hàm Open: kiểm tra việc kết nối và mở OpenMaple.
 Hàm Run: truyền lệnh từ C# sang Maple và lấy kết quả trả về từ Maple.
+ Sau đó sử dụng việc kết nối C# với Maple như sau:
string query = <các lệnh, biểu thức…trong Maple>;
OpenMaple openMaple = new OpenMaple();
openMaple.Open();
openMaple.Run(query);

Ví dụ:
string query = “solve(x^2-2*x+1, x)”;
OpenMaple openMaple = new OpenMaple();
openMaple.Open();
openMaple.Run(query);
)5
5. GIAO DIỆN CHƯƠNG TRÌNH
6. TÀI LIỆU KHAM KHẢO
- GS TSKH Hoàng Kiếm, PGS.TS Đỗ Văn Nhơn, TS. Đỗ Phúc - Giáo trình các hệ
cơ sở tri thức – Đại học Quốc gia TPHCM, 2006
- PGS.TS Đỗ Văn Nhơn - Computational Networks for Knowledge Representation
–World Academy of Science, Engineering and Technology 56 2009.
- Website: :;;<<<1=>?@3/@1;?@%/;>=;
)-
&AB
/'C/DE/@0
&FG/HC/IB
DE/@0
&AHC/=A
DE/@0

×