PHẠM VI VÀ ĐỐI TƯỢNG NGHIÊN CỨU Trong giới hạn của đồ án, với kiến thức của em, xin trình bày một số cài đặt giải một số bài toán mẫu về hình học giải tích, đại số, cài đặt thêm một số t
Trang 1PHẦN 1 GIỚI THIỆU TỔNG QUAN ĐỀ TÀI
I VẤN ĐỀ QUAN TÂM
Trí tuệ nhân tạo hay trí thông minh nhân tạo (tiếng Anh: artificial intelligence hay machine
intelligence, thường được viết tắt là AI) là trí tuệ được biểu diễn bởi bất cứ một hệ thống nhân
tạo nào Thuật ngữ này thường dùng để nói đến các máy tính có mục đích không nhất định và ngành khoa học nghiên cứu về các lý thuyết và ứng dụng của trí tuệ nhân tạo
Ứng dụng tin học vào sản xuất và đời sống con người đã đưa vấn đề trí tuệ nhân tạo trong ngành tin học lên một vị trí đặc biệt của những sự nghiên cứu Nhiều ý tưởng, thuật toán, thuật giải, phần mềm ra đời phục vụ cho trí tuệ nhân tạo Ở đồ án này, em xin trình bày những vấn đề lập trình liên quan đến phần mềm Maple
Maple là một gói phần mềm toán học phát triển lần đầu tiên vào năm 1980 bởi nhóm Tính
toán Hình thức tại Đại học Waterloo ở Waterloo, Ontario, Canada Maple cũng có một ngôn ngữ lập trình cấp cao đầy đủ, cũng có giao diện cho những ngôn ngữ khác (C, Fortran, Java, MatLab,
và Visual Basic) 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 Ngôn ngữ có hình thức lập trình hàm, nhưng cũng có hỗ trợ đầy đủ cho lập trình truyền thống, theo kiểu mệnh lệnh Tên
"Maple" không phải là tên viết tắt hoặc từ cấu tạo bằng chữ đầu, mà chỉ đơn giản là để chỉ hình tượng Lá phong (tiếng Anh: maple) trên Quốc kỳ Canada
II PHẠM VI VÀ ĐỐI TƯỢNG NGHIÊN CỨU
Trong giới hạn của đồ án, với kiến thức của em, xin trình bày một số cài đặt giải một số bài toán mẫu về hình học giải tích, đại số, cài đặt thêm một số thủ tục liên quan đến các bài toán hệ
Trang 2luật dẫn, bài toán giải tam giác Tất cả những vấn đề được nêu để chứng minh Maple là công cụ lập trình symbolic khá tốt
III MỤC TIÊU
- Phát biểu được các bài toán.
- Phân tích bài toán: tìm ý tưởng giải, tìm thuật toán để giải bài toán, cấu trúc dữ liệu để biểu diễn input, output
- Cài đặt thuật toán để giải bài toán bằng Maple
Trình bày đầy đủ các bước giải các bài toán:
- Một số bài toán mẫu trong hình giải tích trong không gian: Viết phương trình mặt cầu ngoại tiếp tứ diện, viết phương trình đoạn vuông gốc chung của hai đường thẳng chéo nhau trong không gian
- Một số bài toán mẫu trong đại số: giải và biện luận phương trình bậc nhất, bậc 2, hệ phương trình
- Một số bài toán liên quan đến trí tuệ nhân tạo: Suy diễn trong hệ luật dẫn, giải các bài toán tam giác
IV TÀI LIỆU THAM KHẢO
[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
Trang 3PHẦN 2 NỘI DUNG ĐỀ TÀI
I Viết phương trình mặt cầu ngoại tiếp tứ diện
1 Cấu trúc dữ liệu:
Tọa độ các đỉnh là các danh sách
Phương trình mặt cầu được định nghĩa là hàm số
Cài đặt câu lệnh bằng Maple:
Trang 42 Kết quả:
- Viết phương trình đoạn vuông gốc chung của hai đường thẳng chéo nhau trong không gian
Kết quả thu được như file source đính kèm
II Giải và biện luận phương trình bậc nhất.
Phương trình bậc nhất một ẩn có dạng: f(x)=ax+b=0
- Nếu a ≠ 0: phương trình có nghiệm duy nhất x= -
- Nếu a = 0:
+ Nếu b ≠ 0: phương trình vô nghiệm + Nếu b = 0: phương trình có vô số nghiệm đúng với mọi x
Trang 5Bài toán giải và biện luận phương trình bậc hai một ẩn:
Phương trình bậc nhất một ẩn có dạng: f(x)= ax 2 + bx + c = 0
* Trường hợp 1: Với a=0, ta có phương trình bx + c = 0 , đây là phương trình
bậc nhất một ẩn có hệ số cụ thể nên có thể kết luận được nghiệm của phương trình
* Trường hợp 2: Với a<>0, ta tính delta
+ Nếu 0 : phương trình vô nghiệm
+ Nếu 0 : phương trình có nghiệm kép x = -
+ Nếu > 0 : phương trình có 2 nghiệm
Cài đặt chương trình:
Trang 7III Giải và biện luận phương trình bậc hai:
IV Giải bài toán suy luận trên hệ luật dẫn:
1.Định nghĩa luật dẫn:
luật dẫn là những mệnh đề có dạng: LHS → RHS
Trong đó:
LHS: xác định các điều kiện hoặc hoàn cảnh phải được thỏa mãn cho luật được áp dụng, ta còn gọi là vế trái, tiền đề hay giả thiết
RHS: là những tác động phải xảy ra khi luật được áp dụng, ta còn gọi là vế phải hay kết luận
Mỗi vế của luật có thể là dạng kết hợp có dạng A1, A2, , An → B1, B2, , Bm hay IF A1, A2, , An THEN B1, B2, , Bm.
Trang 82.Định nghĩa hệ luật dẫn:
Một bộ chương trình máy tính xử lí các thông tin của vấn đề đang nằm trong bộ nhớ tạm thời thông qua một cơ sở tri thức chứa các luật dẫn và bộ phận suy diễn để suy ra các thông tin mới Hệ luật dẫn gồm 3 bộ phận cơ bản là:
• Cơ sở tri thức: là tập hợp các luật dẫn
• Bộ nhớ tạm thời: là các sự kiện khởi đầu của vấn đề, các sự kiện suy được trong quá trình suy diễn
• Động cơ suy diễn: mô hình hóa lập luận của con người bằng cách kết hợp các sự kiện của vấn đề với các luật trong cơ sở tri thức để suy diễn ra thông tin mới
Như vậy, ta thấy các luật sinh được xem là các luật dẫn trong cơ sở tri thức, quá trình suy diễn dừng khi các luật đã được đưa vào xử lí hết hoặc khi tìm thấy sự kiện mục tiêu
3.Bài toán suy diễn:
giả sử có tập giả thiết được cho trước H ⊆ F, ta muốn suy ra tập mục tiêu G Tìm dãy các luật để từ H ta suy ra được G.
Cấu trúc dữ liệu cho bài toán suy diễn:
Cấu trúc gồm 2 tập hợp:
- Tập sự kiện F: kiểu tập hợp, mỗi phần tử là một mệnh đề.
- Tập luật dẫn R: kiểu tập hợp, mỗi phần tử là một luật có dạng: If <giả thiết> then <kết luận>, trong đó giả thiết, kết luận là các tập con của F.
Thuật giải:
Input:
o Tập các sự kiện Ký hiệu: F
o Tập các sự kiện cho trước Ký hiệu: H
o Tập các luật Ký hiệu: R
Output:
o Tập sự kiện muc tiêu Ký hiệu G
Trang 9Các biến toàn cục:
Solution: danh sách luật áp dụng Facts_known: tập sự kiện đã biết
Thuật giải:
Bước 1: Khởi tạo:
Solution:=[]; // danh sách luật ban đầu là rỗng
Facts_known:=H; // tập sự kiện đã biết là tập H đã cho trước
Bước 2: while (chưa đạt được mục tiêu G) do
2.1: Tìm r∈R có thể áp dụng trên Facts_known;
2.2: If tìm không được r then dừng và kết luận “không tìm được lời giải”;
2.3: Thêm r vào Solution; //thêm luật tìm được vào Solution Thêm phần kết luận của r vào Facts_known; //bổ sung tập sự kiện đã
biết vào Facts_known sau khi áp dụng luật r;
end do;
Bước 3: xuất Solution; // xuất danh sách luật đã được áp dụng để suy diễn
Cài đặt và chạy thử:
Trang 10V Giải bài toán tam giác:
1.Mô tả bài toán:
Giả sử ta có một tam giác như sau:
Với:
- A,B,C: là các đỉnh của như các góc của tam giác
- a,b,c: là các cạnh tương ứng với các góc (a là ký hiệu cho cạnh BC, b là ký hiệu cho cạnh AC và c là ký hiệu cho cạnh AB)
- ma,mb,mc: là các đường trung tuyến từ các đỉnh A,B,C
- p: chu vi của tam giác
- S: diện tích của tam giác
Bài toán: giả sử ta biết được giá trị của một số thành phần trong tam giác (như trên) Ta cần tính giá trị của một thành phần khác
Ký hiệu bài toán: H G
Với H là phần giả thuyết còn G là phần kết luận của bài toán
Ví dụ bài toán được ký hiệu: H = {a=5,b=10,C=90}, G={S}
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.Phân tích bài toán:
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ủ:
Trang 11 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
o Đưa ra các bước giải (áp dụng công thức nào trong Formula và được gì từ công thức đó)
3.Thuật giải:
Để giải quyết bài toán trên, ta sẽ áp dụng thuật giải trên đối tượng tính toán (trong trường hợp này đối tượng đó là tam giác)
Input:
o Tập các biến cùng với giá trị (phần giả thuyết) Ký hiệu: GT
o Tập gồm 1 biến cần tìm (phần kết luận) Ký hiệu: KL
o Tập Fomular cho trước Ký hiệu: KL
Output:
o Khẳng định có thể tìm được đáp án không
o Nếu có, thì đáp án là gì và áp dụng công thức nào (thứ tự) để có đáp án
Thuật giải:
Bước 1:
- Khởi tạo Solution := [] (đây là danh sách các công thức được áp dụng để giải)
- Khởi tạo varsFoundSet := GT (đây là tập hợp các đẳng thức với vế trái là một biến và
vế phải là giá trị đã tìm được)
- Khởi tạo formulaFound := false (cờ hiệu để biết ta có tìm thấy một công thức có thể áp dụng dựa trên tập giá trị đã có hay không)
- Khởi tạo solutionFound := true (cờ để xác nhận có tìm thấy lời giải hay không)
- Khởi tạo SolutionValue := [] (danh sách các đẳng thức đã tính được nhờ các công thức trong Solution – dùng cho việc rút gọn lời giải và khác với varsFoundSet, SolutionValue coi trọng thứ tự )
Trang 12Bướ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
4.Chạy thử và kiểm lỗi:
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 đó
Trang 13Bài toán 1: Cho biết các giá trị như sau:
Ta thấy, điều đầu tiên giải thuật đã khẳng định là có đáp án
5.Đánh giá chương trình:
Do hạn chế về thời gian và kiến thức nên chương trình có một số lỗi/hạn chế nhất định Dưới đây là danh sách các hạn chế:
- Chưa xây dựng được giao diện chương trình
- Công thức về tam giác chưa đủ Cần bổ sung thêm các công thức khác
- Số lượng thành phần trong tam giác còn thiếu Ví dụ như đường cao, bán kính đường tròn nội tiếp…
- Chưa áp dụng thuật giải Heuristic vào chương trình, chỉ tìm công thức theo dạng vòng lặp
Tuy nhiên, chương trình cũng có số ưu điểm:
- Dễ dàng cài đặt
- Có thể bổ sung thêm các công thức mới, thành phần mới dễ dàng (thêm vào biến toàn cục Formula)