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

Ứng dụng lập trình symbolic trong giải bài toán hình học 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 (208.76 KB, 10 trang )

Trường Đại học Công Nghệ Thông Tin – TP. Hồ Chí Minh
Ứng dụng lập trình
symbolic trong giải bài
toán hình học tam 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
Mục lục
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.
Ví 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
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)……
End
……(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 đó.
3
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 = (b
2
+ c
2
– 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.
3. 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:
4
+ 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
Để 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.
5
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 = { f
1
: A + B + C = Pi; f
2
:
)(sin
b
)(sin
a
BA
=
; f
3
:
)(sin
b
)(sin
c
BC
=
; f
4
:
)(sin
c
)(sin
a
CA
=
;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(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:
{f
1
, f
2
, f
3
, f
5
, f
9
}. 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 :
{a, B, C}
1
f
 →
{a, B, C, A}
2
f
 →
{a, B, C, A, b}
3
f
 →
{a, B, C, A, b, c}
5
f
 →
{a, B, C, A, b, c, p}
9
f
 →
{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à f
5
. 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à {f
1
, f
2

, f
9
}:
6
{a, B, C}
1
f
 →
{a, B, C, α}
2
f
 →
{a, B, C, A, b}
9
f
 →
{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 f
1
).
bước 2: tính b (áp dụng f
2
).
bước 3: tính S (áp dụng f
9
).
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:

Hình 2: Sơ đồ mạng tính toán
5. Triển khai
7
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
Hì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:
8
- 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.
Tài liệu tham khảo
9
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.
10

×