Các vấn đề trên mạng tính toán bao gồm: [5] - Vấn đề 1: Xác định được tập B từ tập A nhờ các quan hệ trong F hay không?. Trong đó, bài toán xác định B từ A trên mạng tính toán M, F được
Trang 1Lập trình Symbolic
Mạng tính toán – Giải toán tam giác Giảng viên:PGS.TS Đỗ Văn Nhơn
Trần Nguyên Phong MSHV: CH1101028 MSSHV: CH1101028
Trang 2LỜI CẢM ƠN
Em xin chân thành gửi lời cảm ơn đến thầy PGS.TS Đỗ Văn Nhơn đã dành nhiều thời gian quý báu để truyền đạt cho lớp CH CNTT K6 những kiến thức quý giá về lập trình Symbolic Từ những kiến thức về lập trình Symbolic và yêu cầu vận dụng kiến thức phổ thông vào thực tế đã thôi thúc em thực hiện tiểu luận “Giải toán tam giác bằng mạng tính toán”
Ngoài ra, em cũng xin chân thành cảm ơn các bạn bè, anh chị, những người đã thảo luận và đóng góp ý kiến, động viên, giúp đỡ trong suốt quá trình làm tiểu luận Tuy nhiên, trong quá trình làm tiểu luận không thể tránh khỏi những sai sót nên rất mong nhận được
sự đóng góp nhiệt tình từ thầy và các bạn
Học viên thực hiện
Trần Nguyên Phong
CH1101028 – lớp CH CNTT K6
Trang 3Mục lục
Trang
1 Mạng tính toán và các thuật giải 3
1.1 Mô hình mạng tính toán 3
1.2 Vấn đề trên mạng tính toán 3
1.3 Quá trình tính toán 4
1.3.1 Quá trình tìm lời giải trên mạng tính toán 4
1.3.2 Quá trình tìm lời giải tốt từ lời giải đã biết 5
1.3.3 Kiểm tra lời giải 6
1.3.4 Phân tích lời giải từ lời giải đã biết 6
2 Ứng dụng và cài đặt 8
2.1 Ứng dụng giải toán tam giác 8
2.2 Cài đặt thử nghiệm 8
3 Phụ lục 11
3.1 Quan hệ đối xứng 11
3.2 Quan hệ không đối xứng 11
3.3 Định lý về quá trình phân tích lời giải 11
4 Tài liệu tham khảo 12
Trang 41 Mạng tính toán và các thuật giải
1.1 Mô hình mạng tính toán
Mạng tính toán là một dạng biểu diễn tri thức có thể dùng để biểu diễn các tri thức về vấn đề tính toán và được áp dụng một cách có hiệu quả để giải một số bài toán Mỗi mạng tính toán là một mạng ngữ nghĩa chứa các biến và các quan hệ có thể cài đặt và sử dụng cho việc tính toán
Mạng tính toán là một mạng gồm có một tập các biến và một tập các quan hệ dùng để tính toán giữa các biến
M = {x1, x2, … , xn}
F = {f1, f2, … , fm}
Đối với mỗi f F, ký hiệu M(f) là tập các biến có liên hệ trong quan hệ f
1.2 Các vấn đề trên mạng tính toán
Cho một mạng tính toán (M, F), M là tập các biến và F là tập các quan hệ, Giả sử có một tập biến A ∈ M đã được xác định Các vấn đề trên mạng tính toán bao gồm: [5]
- Vấn đề 1: Xác định được tập B từ tập A nhờ các quan hệ trong F hay không ? Nói cách khác, có thể xác định được giá trị của các biến thuộc B với giả thiết đã biết giá trị của các biến thuộc A hay không ?
- Vấn đề 2: Nếu có thể xác định được B từ A thì quá trình tính toán giá trị của các biến thuộc B như thế nào ?
- Vấn đề 3: Trong trường hợp không thể xác định được B, thì cần cho thêm điều kiện
gì để có thể xác định được B
Trong đó, bài toán xác định B từ A trên mạng tính toán (M, F) được viết dưới dạng:
A B
A được gọi là giả thiết, B được gọi là mục tiêu tính toán (hay tập biến cần tính) của vấn
đề
Định nghĩa về 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 giá trị các biến thuộc B,
Trang 5xuất phát từ giả thiết A Ta nói rằng một dãy các quan hệ {f1, f2, … , fk} ∈ F là một lời giải của bài toán A nếu như ta lần lượt áp dụng các hệ fi (i = 1…k) xuất phát từ giả thiết
A thì sẽ tính được các biến thuộc B
Lời giải {f1, f2, … , fk} được gọi là một lời giải tốt nếu không thể bỏ bớt một số bước tính toán trong quá trình giải, tứ là không thể bỏ bớt một số quan hệ torng lời giải
Lời giải được gọi là lời giải tối ưu khi nó có số bước tính toán ít nhất, tức là số quan hệ
áp dụng trong tính toán là ít nhất
Việc tìm lời giải cho bài toán là việc tìm ra một dãy quan hệ để có thể áp dụng tính ra được B từ A Trong đó, quá trình tìm lời giải cho bài toán khi cần xét một dãy quan hệ nào
đó để xem có thể tính thêm được các biến từ một tập biến cho trước nhờ dãy quan hệ này hay không
Định nghĩa về dãy quan hệ trên mạng tính toán
Cho D ={f1, f2, … , fk} là một dãy quan hệ của mạng tính toán (M, F) A là một tập con của M Ta nói dãy quan hệ D là áp dụng được trên tập A khi và chỉ khi có thể lần lượt áp dụng được các quan hệ f1, f2, … , fk xuất phát từ giả thiết A
1.3 Quá trình tính toán
Các quá trình tính toán trên mạng tính toán xuất phát từ các vấn đề trên mạng tính toán ở phần trên Bao gồm 4 quá trình chính: quá trình tìm lời giải trên mạng tính toán, quá trình tìm lời giải tốt từ 1 lời giải đã biết, quá trình kiểm tra lời giải cho bài toán và quá trình phân tích quá trình phân tích lời giải từ lời giải đã biết
1.3.1 Quá trình tìm lời giải trên mạng tính toán
Quá trình tìm lời giải trên mạng tính toán thực chất là việc “lan truyền” để mở rộng tập giả thiết đến khi nào phủ được tập kết luận hay đã mở rộng đối với tất cả các quan hệ trên mạng tính toán
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 (tập kết luận)
Xuất: lời giải cho bài toán A B (S)
Thuật toán:
Trang 6S { } // lời giải của mạng tính toán
While not B A do
Ffound false
Sold S // kiểm tra
For f in F do
if ( 0 < Card(M( f ) \ A ≤ r( f ) then
Ffound True Break
End
End for
if (Ffound = True ) then
S S { f }
A A M( f )
End
If (S = Sold) Then
Dừng thuật toán (vì không tìm được quan hệ nào để mở rộng tập giả thiết)
End
End while
( Ký hiệu: Card(X) chỉ số phần tử của tập X và r(f) là hạng của quan hệ đối xứng f )
1.3.2 Quá trình tìm lời giải tốt từ lời giải đã biết
Quá trình tìm lời giải trên là quá trình mở rộng tập giả thiết nên trong quá trình mở rộng sẽ nảy sinh một số bước thừa Do đó, cần thu gọn lời giải trên thành một lời giải tốt hơn Mạng tính toán cung cấp thuật toán tìm lời giải tốt từ lời giải đã biết với cách thức tổng quát dành cho các quan hệ tổng quát (đối xứng hạng k, quan hệ không đối xứng)
Nhập: Mạng tính toán (M, F)
Lời giải { f1, f2, … , fm} 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:
Trang 7D { f1, f2, … , fm }.
For i = m down to 1 do
If D \ {fi} là một lời giải then
D D \ {fi} D là một lời giải tốt.
1.3.3 Kiểm tra lời giải cho bài toán
Nhập: Mạng tính toán (M, F) Bài toán A B
Dãy các quan hệ {f1, f2, … , fm};
Xuất: thông tin cho biết {f1, f2, …, , fm} có phải là lời giải của bài toán A B hay
không
Thuật toán:
For i =1 to m do
If (fi đối xứng và Card( M( fi ) \ A ≤ r( fi ) ) then
A A M(fi) End for
If B A then
{ f1, f2, … , fm } là một lời giải
Else
{ f1, f2, … , fm } không là lời giải
1.3.4 Phân tích lời giải từ một lời giải đã biết
Quá trình phân tích lời giải sẽ giúp loại bỏ các biến tính toán thừa – biến tính toán thừa là biến không được dùng cho các bước tính phía sau Do đó, cần 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ật sự cần thiết cho quá trình giải theo lời giải
Dựa trên định lý về quá trình phân tích lời giải (phụ lục 3) sẽ có thủ tục phân tích lời
giải từ lời giải đã biết sau đây:
Nhập: Mạng tính toán (M, F)
Sol = { f1 , f2 , …, fm } là một lời giải tốt cho bài toán A B
Xuất: Tập các biến được xác định theo lời giải.
Trang 8Thuật toán:
Gt1 A
kl card(Sol) +1 B
kq { }
// lấy các biến từ các quan hệ trong tập lời giải
For i = 1 to card (Sol) Mi M( Soli)
End for
// quá trình mở rộng tập giả thiết
For i = 1 to card (Sol)
Gt i+1 Gt i M i
End for
// quá trình suy ngược về tập kết luận
For i = card( Sol ) to 1
Temp (Mi \ kl i+1 ) Gt i
kli ( kli+1 Gt i ) temp
End for
// quá trình tính các biến theo các lời giải
For i = 1 to card (Sol)
kqi kl i+1 \ kl i
End for
Return kq;
Trang 9Ứng dụng được minh họa được sử dụng trong tiểu luận, liên quan đến phần “Giải toán tam giác”
Input:
1 Tập công thức
2 Tập giả thiết (chứa các biến đã biết)
Ví dụ: Đã biết các biến a, beta, delta
3 Tập kết luận (chứa các biến cần tìm)
Ví dụ: các biến cần tìm (S)
Output: là các bước tìm ra lời giải
2.2 Cài đặt thử nghiệm
Cài đặt chính về mạng tính toán (các bước giải) được thực hiện trên Maple, giao diện sử dụng được cài đặt bằng C# (.Net)
Một số hình ảnh về giao diện chương trình và cách sử dụng
S = (1/2)*a*ha
S = (1/2)*b*hb
S = (1/2)*c*hc
S = (1/2)*a*b*sin(delta)
S = (1/2)*b*c*sin(alpha)
S = (1/2)*c*a*sin(beta)
S = sqrt(p*(p-a)*(p-b)*(p-c))
p = (a+b+c)*(1/2) a/sin(alpha) = b/sin(beta) a/sin(alpha) = c/sin(delta) c/sin(delta) = b/sin(beta) alpha+beta+delta = Pi a*a = b*b + c*c - 2*cos(A) b*b = a*a + c*c - 2*cos(B) c*c = a*a + b*b - 2*cos(C)
Bước 1: từ công thức alpha+beta+delta = Pi Suy ra: alpha
Bước 2: từ công thức a/sin(alpha) = b/sin(beta) Suy ra: b
Bước 3: từ công thức S = 1/2*a*b*sin(delta) Suy ra: S
Trang 10- Sau khi nhập các công thức liên quan Các biến của các công thức hiện ra ở phần
“Danh sách các biến” Nhập vào các biến đã biết (Giả thiết) và các biến cần tìm (Kết luận)
- Nhấn nút “Tìm lời giải” sẽ có giao diện như sau:
Trang 12A2> Q uan hệ không đối x ứ ng [1]
Quan hệ không đối xứng là quan hệ 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 v(f)
A3> Đ ị nh l ý v ề quá t r ì nh p hân t í ch lời g i ả i [2]
Cho {f1, f2, … , fm} 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: A0 = A, Ai = {f1, f2, … , fi} (A), với mọi i = 1, … , m
Khi đó một dãy { B0, B1, … , Bm-1, Bm }, thỏa các điều kiện sau đây :
(1) Bm = B
(2) Bi Ai, với mọi i = 0, 1, , m
(3) Với mọi i = 1, … , m, {fi} là lời giải của bài toán Bi-1 Bi, nhưng không phải là lời giải của bài toán G Bi, trong đó G là một tập con thật sự tùy ý của Bi-1
Từ định lý trên, sẽ có định lý có quá trình tính toán các biến để giải toán A B như sau: Bước 1: tính các biến trong B1 \ B0 ( áp dụng f1 )
Bước 2: tính các biến trong B2 \ B1 ( áp dụng f2 )
…
Bước m: tính các biến trong tập Bm \ Bm-1 ( áp dụng fm )
Trong đó, Bi được tính như sau:
Bi = ( Bi+1 Ai ) A’i
A’i = một tập con gồm max (0, ti) phần tử của tập hợp ( M(fi+1) \ Bi+1 ) Ai
Với ti = card ( M( f i+1 ) ) – r( f i+1 ) – card ( M( f i+1 ) Bi+1 Ai )
4 Tài liệu tham khảo
[1] Hoàng Kiếm, Đỗ Văn Nhơn, “Mạng tính toán và ứng dụng”, trang 3 – 4
Trang 13[5] Hoàng Kiếm, Đỗ Văn Nhơn, Đỗ Phúc, “Giáo trình các hệ cơ sở tri thức”, trang 98
-100