LẬP TRÌNH SYMBOLIC VÀ ỨNG DỤNG GIẢI BÀI TOÁN VỀ TAM GIÁC - Pdf 26

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
 
BÀI THU HOẠCH MÔN LẬP TRÌNH SYMBOLIC
Đề tài:
LẬP TRÌNH SYMBOLIC VÀ ỨNG DỤNG GIẢI BÀI
TOÁN VỀ TAM GIÁC
Giảng viên hướng dẫn: PGS. TSKH. Đỗ Văn Nhơn
Học viên thực hiện: Vưu Văn Tòng (CH1101146)
Thành phố Hồ Chí Minh - Tháng 01 Năm 2013
Lập trình symbolic và ứng dụng trong việc giải tam giác
LỜI MỞ ĐẦU
Trí tuệ nhân tạo ngày càng trở thành một lĩnh vực nghiên cứu và có ứng
dụng thực tế nhất trong thời đại công nghệ ngày nay. Từ những phần mềm
thông minh, có khả năng mô phỏng hành vi của con người, đến các phần
mềm trợ giúp cho con người giải những bài toán mà nếu tính toán bằng sức
người thì rất mất thời gian.
Trên cơ sở đó, các ngôn ngữ lập trình và các phương pháp lập trình cũng
phát triển theo để xây dựng nên các chương trình trí tuệ nhân tạo. Trong đó,
đáng kể nhất là Prolog, LISP và Maple. Các ngôn ngữ trên được gọi là ngôn
ngữ lập trình symbolic.
Trong bài báo cáo này, em xin trình bày đề tài “lập trình symbolic và ứng
dụng giải bài toán về tam giác”. Trong đó bao gồm các phần: sơ lược về lập
trình symbolic, sử dụng Maple để lập trình symbolic và phần ứng dụng về
lập trình giải tam giác bằng Maple.
Em xin chân thành cảm ơn thầy Đỗ Văn Nhơn đã tận tình hướng dẫn chúng
em từ những bước cơ bản, giải đáp những thắc mắc một cách rõ rang và tạo
cho chúng em một nền tảng để có thể dễ dàng tiếp cận vào lĩnh vực lập trình
symbolic cho trí tuệ nhân tạo. Em cũng xin cảm ơn phòng đào tạo sau đại
học đã đưa môn học thú vị này vào chương trình.
Mặc dù đã cố gắng để hoàn thành bài thu hoạch, nhưng do hạn chế về thời
Lập trình symbolic Trang 3
Lập trình symbolic và ứng dụng trong việc giải tam giác
NỘI DUNG
Lập trình symbolic Trang 4
Lập trình symbolic và ứng dụng trong việc giải tam giác
1. MAPLE VÀ LẬP TRÌNH SYMBOLIC
1.1. Lập trình symbolic là gì?
Một trong những bước tiến hóa quan trọng của chương trình trên máy tính
trong những năm gần đây là những chương trình có khả năng thực hiện việc tính
toán đại số và các vấn đề toán học dựa trên ký hiệu (symbol) chứ không phải dựa
trên số, chuỗi hay các giá trị khác. LISP và Prolog là những ví dụ của ngôn ngữ
lập trình symbolic. Ví dụ, chúng ta hoàn toàn có thể tính toán rằng: (a+b) *
(c+d) = ac + ad +bc +bd mà không cần biết đến giá trị của a,b,c,d. Symbol là
thành phần cốt lõi của ngôn ngữ cũng như của lập trình symbolic.
Tóm lại, lập trình symbolic là sử dụng ngôn ngữ symbolic để thiết kế và
giải các bài toán. Những ngôn ngữ này thao tác trên các ký hiệu chứ không đơn
thuần dựa trên số, chuỗi như các ngôn ngữ khác (C,C++, )
1.2. Maple – công cụ lập trình symbolic
Maple là một hệ thống tính toán trên các biểu thức đại số và minh họa mạnh
mẽ. Maple có cách cài đặt rất đơn giản và hỗ trợ nhiều hệ điều hành khác nhau
như Window, Unix, Mac OS và thậm chí cả Maple.NET chạy trên mạng hỗ trợ
tính toán phân tán.
Maple là một ngôn ngữ lập trình hướng thủ tục – một dãy các lệnh Maple
được sắp xếp tuần tự để thực hiện một tác vụ nào đấy. Khi thực thi, các lệnh đó
sẽ được thực thi tuần tự và trả kết quả sau cùng.
Maple có các chức năng cơ bản:
- Tính toán trên các biểu thức đại số
- Có khả năng tính chính xác hoặc gần đúng

Thì ta hiểu là: cho trước giá trị của cạnh a, cạnh b và góc C. Hãy tính diện
tích của tam giác.
2.2. Phân tích bài toán
2.2.1. Quy ước
Với bài toán được mô tả như trên, ta sẽ sử dụng Maple để giải quyết. Tuy
nhiên, có một số quy ước cần được tuân thủ:
Lập trình symbolic Trang 6
A
c
b
m
b
m
c
m
a
a
C
B
Lập trình symbolic và ứng dụng trong việc giải tam giác
 H là tập giả thuyết của bài toán, mỗi phần tử trong tập hợp là một
cấu trúc gồm: <tên biến> = <giá trị>. Ví dụ: H := {a=5,b=10}
 G là tập kết luận của bài toán (biến mong muốn tìm được giá trị,
hiện nay chỉ hỗ trợ tìm một biến mỗi lần). Ví dụ: G := {S} hoặc G
:= {a}
 Một tập các công thức (Formula) được áp dụng trên tam giác (truyền
như biến toàn cục) với cấu trúc mỗi phần tử là một đa thức. Ví dụ:
Formular := {A+B+C=180, p=(a+b+c)/2}
 Nếu bài toán giải được ta cần:
o Đưa ra giá trị của thành phần cần tìm

với varsFoundSet, SolutionValue coi trọng thứ tự )
Bước 2:
- While KL not subsets varsFoundSet (tức là chưa tìm thấy)
o formulaFound := false (reset mỗi lần tìm một công thức mới)
o Tìm một công thức f từ Formular có thể áp dụng được (một công
thức được gọi là áp dụng được khi số lượng biến chưa biết giá trị
trong một công thức là 1. Ví dụ: A + B + C = pi thì ta phải biết
được ít nhất 2 giá trị: (A,B) hoặc (A,C) hoặc (B,C))
 If apdungduoc(f) = true then (tìm được công thức thỏa yêu
cầu)
• Thế các biến đã có vào công thức, giải bằng hàm
solve để tìm ra biến còn lại. Đặt là: newvars
• Solution := [op(Solution),f] (thêm f vào Solution)
• varsFoundSet := varsFoundSet union newvars
(thêm biến tìm được vào tập các biến tìm được)
• SolutionValue := [op(SolutionValue),newvars]
• Đặt formulaFound := true để tiếp tục vòng lặp
o If formulaFound = false then: solutionFound := false (không tìm
được công thức nào có thể sử dụng nữa và cũng chưa tìm được
kết quả.
 Goto bước 3;
Bước 3:
- If solutionFound = false then
o Printf(“Không tìm được kết quả”);
- Else
o Printf(“Tìm được kết quả”)
o Gọi hàm rút gọn để loại bỏ các bước dư thừa. Được newSol
o Lặp và in các công thức trong newSol để thể hiện các bước giải
2.3.2. Thuật giả rút gọn lời giải
Lập trình symbolic Trang 8

 newSolution[2] := [op(newSolution[2]),SolutionValue[i])]
 Bổ sung biến mới vào needvarset.
Lập trình symbolic Trang 9
Lập trình symbolic và ứng dụng trong việc giải tam giác
Bước 4:
- Return newSolution;
2.4. Kiểm tra với dữ liệu giả
Trước khi chạy chương trình để kiểm tra, ta cần đảm bảo rằng tất cả các
hàm và biến phải được load (bằng cách vào hàm hoặc biến nhấn ENTER để
Maple server tự động load các hàm và biến đó).
Giả sử ta có các công thức tính toán như sau:
Bài toán 1: Cho biết các giá trị như sau:
BAI TOAN DA DUOC GIAI QUYET
Ket qua : {S = 2*(-(cos(1/2*pi)^2-
1)*(32*cos(1/2*pi)^2+8*cos(1/2*pi)*(16*cos(1/2*pi)^2+9)^(1/2)+9))^(1/2)}
Cac buoc giai:
Ap dung cong thuc: a^2 = b^2+c^2-2*b*c*cos(A) ta co: c = 4*cos(1/2*pi)
+(16*cos(1/2*pi)^2+9)^(1/2)
Ap dung cong thuc: c^2 = a^2+b^2-2*a*b*cos(C) ta co: C = Pi-
arccos(4/5*cos(1/2*pi)^2+1/5*cos(1/2*pi)*(16*cos(1/2*pi)^2+9)^(1/2)-4/5)
Ap dung cong thuc: S = 1/2*a*b*sin(C) ta co: S = 2*(-(cos(1/2*pi)^2-
1)*(32*cos(1/2*pi)^2+8*cos(1/2*pi)*(16*cos(1/2*pi)^2+9)^(1/2)+9))^(1/2)
Ta thấy, điều đầu tiên giải thuật đã khẳng định là có đáp án.
Tiếp theo, giải thuật in ra đáp án của bài toán
Lập trình symbolic Trang 10
Lập trình symbolic và ứng dụng trong việc giải tam giác
Cuối cùng, giải thuật in ra các công thức và giá trị các biến tìm được theo
công thức (đã rút gọn).
Giờ, chúng ta sẽ thử trong trường hợp KL đã có sẵn trong phần GT xem.
Bài toán 2: kết luận đã được thêm trong phần giả thuyết

tòi và học hỏi mở rộng trên các bài toán trí tuệ nhân tạo khác nhau.
Theo em, hướng phát triển tiếp theo của bài thu hoạch này nên đi theo:
- Áp dụng Heuristic vào chương trình với thông tin thêm là độ phức tạp
của công thức. Công thức nào đơn giản nhất thì nên được chọn.
- Trong trường hợp không tìm ra được lời giải thì chương trình nên ít nhất
gợi ý cho người dùng như: “để giải bài toán này thì ta cần biết thêm giá
Lập trình symbolic Trang 12
Lập trình symbolic và ứng dụng trong việc giải tam giác
trị của một biến/tập biến nào đó” hoặc “biến a nên được thay đổi như
thế này để có lời giải”…
- Mở rộng chương trình từ một đối tượng tính toán thành mạng các đối
tượng tính toán để có thể giải quyết nhiều bài toán hơn, hoặc các bài
toán phức tạp hơn.
- Thiết lập giao diện trực quan bằng Maplet hoặc bằng cách kết hợp các
ngôn ngữ lập trình khác với Maple.
Lập trình symbolic Trang 13
Lập trình symbolic và ứng dụng trong việc giải tam giác
4. TÀI LIỆU THAM KHẢO
 Danh sách giáo trình và sách điện tử
[1]. Đỗ Văn Nhơn. Các bài giảng về Maple, lập trình Symbolic. Đại học
Công nghệ Thông tin.
[2]. Đỗ Văn Nhơn. Model for Knowledge Bases of Computational
Objects. Department of Computer Science, University of Information
Technology, Ho Chi Minh City, Vietnam.
 Danh sách website
[1]. (một số khái niệm về
tam giác)
[2]. (hướng dẫn sử dụng các
APIs của Maple)
[3]. (các công


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status