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

Lập trình Symbolic cho trí tuệ nhân tạo

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 (1.48 MB, 13 trang )

MỤC LỤC
PHẦ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ệ
Lập trình Symbolic cho trí tuệ nhân tạo TH: Nguyễn Hữu Thành
luậ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 2
Lập trình Symbolic cho trí tuệ nhân tạo TH: Nguyễn Hữu Thành
PHẦ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 3
Lập trình Symbolic cho trí tuệ nhân tạo TH: Nguyễn Hữu Thành
2. 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
t
r
ì
nh


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 4
Lập trình Symbolic cho trí tuệ nhân tạo TH: Nguyễn Hữu Thành
Bà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
t
r
ì
nh
c
ó ngh
iệm
k
é
p x
=
-
+
N
ế
u
>

0
:
ph
ươ
ng
t
r
ì
nh
c
ó 2 ngh
iệm

Cài đặt chương trình:
Trang 5
Lập trình Symbolic cho trí tuệ nhân tạo TH: Nguyễn Hữu Thành
Trang 6
Lập trình Symbolic cho trí tuệ nhân tạo TH: Nguyễn Hữu Thành
III. 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 7

Lập trình Symbolic cho trí tuệ nhân tạo TH: Nguyễn Hữu Thành
2.Đị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 8
Lập trình Symbolic cho trí tuệ nhân tạo TH: Nguyễn Hữu Thành
Cá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 9
Lập trình Symbolic cho trí tuệ nhân tạo TH: Nguyễn Hữu Thành
V. 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)
- m
a
,m
b
,m
c:

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 10
Lập trình Symbolic cho trí tuệ nhân tạo TH: Nguyễn Hữu Thành
 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 11
Lập trình Symbolic cho trí tuệ nhân tạo TH: Nguyễn Hữu Thành
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
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 12
Lập trình Symbolic cho trí tuệ nhân tạo TH: Nguyễn Hữu Thành
Bà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)
Trang 13

×