Báo cáo xin trình bày một dạng ứng dụng của mô hình này trong giải quyết một số dạng toán đơn giản của hình học tam giác.. Bài toán hình học tam giác Bài toán hình học tam giác đơn giản
Trang 1Tr ường Đại học Công Nghệ Thông Tin – TP Hồ Chí Minh ng Đ i h c Công Ngh Thông Tin – TP H Chí Minh ại học Công Nghệ Thông Tin – TP Hồ Chí Minh ọc Công Nghệ Thông Tin – TP Hồ Chí Minh ệ Thông Tin – TP Hồ Chí Minh ồ Chí Minh
ng d ng l p trình
Ứng dụng lập trình ụng lập trình ập trình
giác
Lớp Cao học Khóa 06
Môn học: Lập trình Symbolic
Hướng dẫn: PGS TS Đỗ Văn Nhơn
Thực hiện: Nguyễn Hữu Việt Long
Mã số: CH1101101
02-2012
Trang 2M c l c ục lục ục lục
1 Bài toán hình học tam giác 1
2 Mô hình biểu diễn tri thức 2
3 Suy diễn trên mạng tính toán 4
4 Ví dụ minh họa 5
5 Triển khai 7
6 Giao diện và cách sử dụng 7
7 Kết luận và hướng phát triển 8
Tài liệu tham khảo 9
Mô hình mạng tính toán được ứng dụng nhiều trong những phần mềm hỗ trợ giải bài tập Báo cáo xin trình bày một dạng ứng dụng của mô hình này trong giải quyết một
số dạng toán đơn giản của hình học tam giác Kỹ thuật lập trình symbolic dựa trên Maple được áp dụng nhằm đơn giản hóa quá trình tính toán
1 Bài toán hình học tam giác
Bài toán hình học tam giác đơn giản được phát biểu như sau: trong một tam giác, cho trước các giá trị của một vài yếu tố, thuộc tính và yêu cầu tính một vài yếu tố, thuộc tính khác
Bài toán hình học tam giác đơn giản sẽ có dạng A B với A là tập hợp các giả thiết (bao gồm giá trị của các biến và các công thức liên hệ đơn giản giữa các biến), B là tập hợp các biến mục tiêu cần tính
Trang 3Ví dụ: Cho một hình tam giác có góc A=PI/6 và góc B=2A Tính góc C.
Giả thiết: {A=PI/6; B=2A}
Mục tiêu: {C}
2 Mô hình biểu diễn tri thức
Tri thức để giải những bài toán hình học tam giác đơn giản ở đây là các công thức, đẳng thức trong tam giác (A + B + C = Pi; S = a.ha/2 …)
Tri thức được tổ chức lưu trữ theo dạng file văn bản có cấu trúc như sau:
TENTRITHUC
……(Chú thích, nếu có)…
VARIABLES
Begin
…(Danh sách biến, mỗi biến 1 dòng)…
End
……(Chú thích, nếu có)…
FORMULAS
Begin
….(Danh sách hàm, mỗi hàm 1 dòng)……
Trang 4……(Chú thích, nếu có)…
Lưu ý: một số công thức có thể dùng phép biến đổi vế để tính một biến từ các biến còn lại nhưng một số công thức không thể làm được điều đó
Hình 1: File văn bản tri thức tam giác
Ta gọi những công thức có thể biến đổi vế để tính một biến bất kỳ từ các biến còn lại là công thức đối xứng (Symmetry)
Ví dụ: A + B + C = Pi ta có thể tính A khi có B, C; ta có thể tính B khi có A, C; ta
có thể tính C khi có A, B
Ta gọi những công thức chỉ có thể tính được duy nhất một biến từ các biến còn lại, không thể thực hiện các thao tác chuyển vế là công thức bất đối xứng (Asymmetry)
Ví dụ: a = (b2 + c2 – 2bccos(A))(1/2) là một công thức bất đối xứng vì chỉ có thể tính
a khi có b, c, A Không thể tính b, c hay góc A từ công thức này
Trang 53 Suy diễn trên mạng tính toán
Quá trình suy diễn trên mạng tính toán hình học tam giác được thực hiện bằng kỹ thuật lan truyền theo dạng suy diễn tiến
Về cơ bản, thuật giải tìm lời giải cho bài toán tam giác có dạng như sau:
+ Biến với kiểu dữ liệu nhất định:
Solution = []: là danh sách các công thức cần áp dụng để giải
Fknown = []: là danh sách các biến đã biết
B1: Solution:= [];
Fknown:= H;
B2: While (G không nằm trong map(x->lhs(x), Fknown) do
2.1 Tìm luật f thuộc Formula có thể áp dụng trên Fknown
2.2 if (không tìm được r) then
Dừng: không tìm được lời giải
2.3 Thêm f vào Solution:
Xác định biến mới sẽ tính ra: {View = V( f) – V( Fknown);
Thay thế và giải: newfact := solve (Subs( Fknown, f), Vnew);
Fknown: = Fknown union solve (Subs( Fknown, f), Vnew)
End do;
B3: Cho kết quả tìm được lời giải Solution
Trang 6Để kết quả lời giải được tốt, kỹ thuật tìm và loại bỏ các bước giải thừa được áp dụng nhằm tìm ra một lời giải tối ưu cho bài toán Nguyên tắc loại bỏ bước giải thừa là áp dụng kỹ thuật lan truyền ngược Từ các sự kiện mục tiêu, ta do ngược trên tập các công thức để suy ra tập sự kiện ban đầu Trong quá trình dò tìm, ta đánh dấu các công thức được duyệt qua Tập các công thức này chính là một lời giải tốt cho bài toán
4 Ví dụ minh họa
Ta xem xét một ví dụ sau: Cho tam giác ABC có cạnh a và 2 góc B, C được cho trước Hãy tính diện tích tam giác ABC;
Trong cơ sở tri thức, ta có:
- Tập sự kiện: M = {A, B, C, a, b, c, S, p, r, R…}
- Tập luật F = { f1: A + B + C = Pi; f2:
a
sin( A )=
b
sin (B ) ; f3:
c
sin(C )=
b
sin( B) ;
f4:
a
sin( A )=
c
sin (C ) ;f5: p = (a+b+c)/2; f6: S = a.ha / 2;f7: S = b.hb / 2; f8: S =
c.hc / 2; f9: S = a.b.sin(C) / 2; }
Theo đề bài ta có giả thiết là : GT = a, B, C, và tập biến cần tính là KL = S
Áp dụng thuật toán tìm lời giải ta có một lời giải cho bài tính là dãy luật sau:
f1, f2, f3, f5, f9 Xuất phát từ tập biến GT, lần lượt áp dụng các quan hệ trong lời giải ta có tập các biến được xác định mở rộng dần đến khi S được xác định :
Trang 7a, B, C ⃗f 1 a, B, C, A ⃗f 2 a, B, C, A, b ⃗f 3 a, B, C, A, b, c
⃗
f 5 a, B, C, A, b, c, p ⃗f9 a, B, C, A, b, c, p, S
Có thể nhận thấy rằng lời giải nầy không phải là lời giải tốt vì có bước tính toán thừa, chẳng hạn là f5 Thuật toán loại bỏ bước thừa sẽ lọc ra từ lời giải trên một lời giải tốt là f1, f2, f9:
a, B, C ⃗f 1 a, B, C, ⃗f 2 a, B, C, A, b ⃗f 9 a, B, C,
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 A (áp dụng f1)
bước 2: tính b (áp dụng f2)
bước 3: tính S (áp dụng f9)
Quá trình tính toán (gồm 3 bước) này có thể được diễn đạt một cách rõ ràng trên
sơ đồ mạng sau đây:
Trang 8Hình 2: Sơ đồ mạng tính toán
5 Triển khai
Thuật toán suy diễn tiến để giải toán tam giác được xây dựng một cách hình thức trên ngôn ngữ lập trình Maple
Sử dụng ngôn ngữ C# để xây dựng giao diện cũng nhưng tương tác với Maple C#
có nhiệm vụ đọc và phân tích dữ liệu bài toán và truyền tới Maple Maple sẽ cho ra lời giải và C# sẽ biểu diễn lời giải lên trên giao diện
Công cụ sử dụng: Microsoft Visual Studio 2010 và Maple 16.00
6 Giao diện và cách sử dụng
Trang 9Hình 3: Giao diện chương trình giải toán hình học tam giác
Hướng dẫn sử dụng:
- Nút Nạp Tri thức: cho phép chọn file chứa tri thức để thực thi
- DataGridView (Giả thiết + Mục tiêu): cho phép người dùng nhập bài toán Lưu ý:
Giả thiết phải có các biến trong danh sách biến, phải có giá trị hoặc là 1 hàm đối xứng (biết 1 số biến thì chắc chắn suy ra được biến còn lại)
- Nút Giải: thực hiện tính toán để xuất kết quả ra richtextbox
- Nút Cập nhật lại: cho phép người dùng nhập lại 1 bài toán khác.
- Nút Giúp đỡ: chỉ dẫn và hướng dẫn
7 Kết luận và hướng phát triển
So với việc phải sử dụng C# để viết tất cả các thủ tục và cấu trúc dữ liệu cho việc giải toán, việc áp dụng Maple vào đã giúp giảm thiểu thời gian triển khai, đơn giản hóa công việc lập trình Hơn thế nữa, kỹ thuật lập trình tính toán hình thức trên Maple giúp gia tăng mức độ chính xác của quá trình tính toán Đem lại hiệu quả cao
Trong tương lai, việc mở rộng triển khai áp dụng Maple trong các lĩnh vực tri thức khác sẽ có thể đem lại những phát triển đầy tiềm năng, đem lại nhiều lợi ích thiết thực
Trang 10Tài liệu tham khảo
1) GS TSKH Hoàng Kiếm, ThS Đinh Nguyễn Anh Dũng – Giáo trình Nhập môn Trí tuệ nhân tạo – Nhà xuất bản Đại học Quốc Gia Thành phố Hồ Chí
Minh, 2008
2) GS TSKH Hoàng Kiếm, PGS TS Đỗ Phúc, PGS TS Đỗ Văn Nhơn – Giáo trình Các hệ cơ sở tri thức – Nhà xuất bản Đại học Quốc Gia Thành phố Hồ
Chí Minh, 2008
3) GSTS Hoàng Kiếm, Đỗ Văn Nhơn – Mạng tính toán và ứng dụng – 1996.