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

LẬP TRÌNH MAPLE CÀI ĐẶT BÀI TOÁN VẬT LÝ ĐIỆN MỘT CHIỀU VÀ PHẢN ỨNG HÓA HỌ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 (252.31 KB, 28 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
o0o
BÁO CÁO TIỂU LUẬN
LẬP TRÌNH SYMBOLIC
ĐỀ TÀI:
LẬP TRÌNH MAPLE CÀI ĐẶT BÀI TOÁN
VẬT LÝ ĐIỆN MỘT CHIỀU VÀ
PHẢN ỨNG HÓA HỌC
Bộ Môn : LẬP TRÌNH SYMBOLIC
Giảng viên : PGS-TS ĐỖ VĂN NHƠN
Học viên : NGUYỄN NGỌC TÚ
Mã Số Học Viên : CH1101053
Lớp : CH CNTTQM - 06
TP. Hồ Chí Minh, tháng 01 năm 2013
MỞ ĐẦU
Có đôi lúc chúng ta gặp những vấn đề vô cùng khó khăn, nó đòi hỏi nhiều suy nghĩ,
cảm xúc, nghiên cứu. Đôi khi có một số vấn đề được chúng ta vận dụng những kiến thức đã
tìm hiểu, nghiên cứu để giải quyết khá dễ dàng. Tuy nhiên, một số vấn đề khác lại đòi hỏi
chúng ta phải có tư duy sáng tạo dựa trên những kiến thức đã biết. Việc vận dụng thành thạo
các công cụ trí tuệ nhân tạo trong việc giải quyết các vấn đề cũng là một trong những điều
quan tâm hiện nay. Các công cụ trí tuệ nhân tạo là những chương trình “thông minh” ở một
mức độ nào đó, nó có khả năng học hỏi, suy dẫn… và giải quyết vấn đề trên cơ sở ngôn ngữ
tự nhiên. Maple là một trong các công cụ trí tuệ nhân tạo được sử dụng khá phổ biến hiện
nay, với khả năng biểu diễn các vấn đề từ lĩnh vực phổ thông như toán học, vật lý, hóa
học…cho đến phức tạp như lập trình . Ngoài ra, với Maplets chúng ta còn có thể tạo ra các
giao diện người dùng tùy chon dễ dàng.
Lời cảm ơn
Tôi xin chân thành cảm ơn sự giúp đỡ nhiệt tình của thầy PGS.TS ĐỖ VĂN NHƠN trong
suốt thời gian học cũng như quá trình làm đồ án môn học:”LẬP TRÌNH SYMBOLIC”, và
cũng xin cảm ơn các bạn trong khoa đã có nhiều đóng góp để tôi hoàn thành môn học này.


Tuy nhiên do thời gian hạn hẹp, và sự hiểu biết của chúng em về môn học này chưa được
sâu, cho nên đề tài vẫn còn nhiều thiếu sót, nhiều vấn đề chưa được giải quyết hoàn chỉnh
và phù hợp với thực tế hiện nay. Vì vậy, tôi mong nhận được sự đóng góp của thầy và các
bạn để chương trình được hoàn thiện hơn.
Học viên thực hiện
Nguyễn Ngọc Tú
MỤC LỤC
A. ĐẶT VẤN ĐỀ 1
B. GIỚI THIỆU MAPLE 2
C. TRI THỨC ĐIỆN MỘT CHIỀU 5
I. Yêu cầu 5
II. Xây dựng mô hình tri thức 5
III. Một vài thủ tục được xây dựng trong chương trình 8
D. BIỂU DIỄN TRI THỨC HÓA HỌC 9
I. Tổng quan về cách biểu diễn tri thức hóa học lên mạng tính toán 9
II. Tạo package hóa học và các thủ tục trong package 11
III. Cách giải bài toán AB và lọc lời giải tốt từ lời giải đã biết 15
IV.Maplet và tạo ứng dụng giao diện trong Maple 18
E. KẾT LUẬN 23
TÀI LIỆU THAM KHẢO 23
A. ĐẶT VẤN ĐỀ
Ngày nay vấn đề biểu diễn tri thức ngày càng trở nên quan trọng và là một phần
không thể thiếu trong chuyên ngành khoa học máy tính nói riêng và ngành công
nghệ thông tin nói chung.
Việc các chương trình máy tính hỗ trợ và làm việc thay con người ngày càng trở
nên nhu cầu cấp bách và phải đáp ứng một cách nhanh chóng và triệt để.
Các chương trình giải toán thông minh cũng là một trong những ứng dụng mà
đặc biệt quan tâm. Vì toán học được xem là cha đẻ của mọi khoa học. Và việc
tạo ra những chương trình giải toán thông minh và chính xác sẽ góp phần giúp
cho con người dễ dàng hơn trong việc tính toán và giúp cải thiện hiệu quả công

việc một cách đáng kể.
Để tạo ra được một chương trình như vậy, ngày nay đã được hỗ trợ rất nhiều các
công cụ lập trình. Riêng trong lĩnh vực biểu diễn tri thức vì đặc thù riêng của bộ
môn nên các công cụ lập trình thông thường không đáp ứng được nhu cầu tính
toán ở mức độ khó và thông minh. Vì vậy đã có nhiều chương trình được tạo ra
cho mục dich này. Ngày hôm nay chúng tôi xin giới thiệu công cụ lập trình
Maple và ứng dụng cài đặt mạng đối tượng tính toán hóa học dựa trên công cụ
Maple này!

5
B. GIỚI THIỆU VỀ MAPLE
Khái niệm đầu tiên về Maple xuất phát từ một cuộc họp vào tháng 11 năm
1980 tại Đại học Waterloo. Những nhà nghiên cứu tại đại học muốn mua một
máy tính đủ mạnh để chạy Macsyma. Thay vào đó, người ta quyết định họ sẽ
phát triển hệ thống đại số máy tính riêng để có thể chạy được những máy tính
có giá thành hợp lý hơn. Do đó, dự án bắt đầu với mục tiêu là tạo ra một hệ
thống đại số hình thức mà các nhà nghiên cứu và sinh viên có thể truy cập
được.
Sự phát triển đầu tiên của Maple được tiến hành rất nhanh, với phiên
bản hạn chế đầu tiên xuất hiện vào tháng 12 năm 1980. Những nhà nghiên
cứu đã thử nghiệm và loại bỏ nhiều ý tưởng khác nhau để tạo ra một hệ thống
liên tục cải tiến. Maple được trình diễn đầu tiên tại những hội nghị bắt đầu
vào năm 1982.
Đến cuối năm 1983, trên 50 trường đại học đã cài Maple trên máy của
họ. Do số lượng hỗ trợ và yêu cầu giấy phép lớn, vào năm 1984, nhóm
nghiên cứu đã sắp xếp với WATCOM Products Inc để cấp phép và phân phối
Maple.
Vào năm 1988, do số lượng hỗ trợ ngày càng tăng, Waterloo Maple
Inc. được thành lập. Mục tiêu đầu tiên của công ty là quản lý những bản phân
phối phần mềm. Cuối cùng, công ty cũng phải mở ra phòng R&D ở đó khá

nhiều sự phát triển cho Maple được thực hiện đến ngày nay. Sự phát triển
đáng kể của Maple tiếp tục diễn rại những phòng thí nghiệm trường đại học,
bao gồm: Phòng thí nghiệm Tính toán hình thức tại Đại học Waterloo; Trung
tâm nghiên cứu Tính toán hình thức Ontario tại Đại học Tây Ontario; và
những phòng thí nghiệm khắp nơi trên thế giới.
Vào năm 1989, giao diện đồ họa người dùng đầu tiên của Maple được
phát triển và bao gồm trong bản 4.3 dành cho Macintosh. Những phiên bản
6
trước của Maple chỉ gồm giao diện dòng lệnh với ngõ ra hai chiều. Bản X11
và Windows với giao diện mới tiếp bước vào năm 1980 với Maple V.
Vào năm 1999, với việc phát hành Maple 6, Maple đã đưa vào một số
Thư viện Số học NAG, được mở rộng độ chính xác ngẫu nhiên.
Vào năm 2003, giao diện “chuẩn” hiện nay được giới thiệu trong
Maple 9. Giao diện này được viết chủ yếu bằng Java (mặc dù có nhiều phần,
nhưng luật cho việc gõ công thức toán học, được viết bằng ngôn ngữ Maple).
Giao diện Java bị phê phán là chậm; những sự phát triển được thực hiện trong
các bản sau, mặc dù tài liệu Maple 11 documentation khuyến cáo giao diện
(“cổ điển”) trước đây dành cho người với bộ nhớ vật lý ít hơn 500 MB. Giao
diện cổ điển này không còn được bảo trì.
Giữa 1995 và 2005 Maple đã mất khá nhiều thị phần vào tay đối thủ
do có giao diện người dùng yếu hơn. Nhưng vào năm 2005, Maple 10 giới
thiệu một “chế độ văn bản” mới, như một phần của giao diện chuẩn. Tính
năng chính của chế độ này là phép toán được đưa vào bằng ngõ nhập hai
chiều, do đó nó xuất hiện tương tự như công thức trong sách. Vào năm 2008,
Maple 12 đã thêm những tính năn giao diện người dùng giống như
Mathematica, gồm có những kiểu trình bày theo mục đích đặc biệt, quản lý
phần đầu và cuối trang, so trùng mở đóng ngoặc, vùng thực hiện tự động,
mẫu hoàn thành lệnh, kiểm tra cú pháp và vùng tự động khởi tạo. Những tính
năng khác được thêm để làm cho Maple dễ dùng hơn như một hộp công cụ
Maple.

Cho đến nay Maple đã được phát triển qua nhiều phiên bản khác nhau
và ngày càng hoàn thiện. với các tính năng mới được cập nhật maple đã trở
thành một phần mềm tính toán khá mạnh hỗ trợ rất nhiều trong việc tính toán
hình thức hiện nay.
7
Với phần mềm Maple, chúng ta có thể:
+ Thực hiện các tính toán với khối lượng lớn, với thời gian nhanh và
độ chính xác cao.
+ Sử dụng các gói chuyên dụng của Maple để giải quyết các bài
toán cụ thể như: vẽ đồ thị (gói plot), hình học giải tích (gói geometry),
đại số tuyến tính (gói linalg),
+ Thiết kế các đối tượng 3 chiều
+ v.v
8
C. TRI THỨC ĐIỆN MỘT CHIỀU
I. Yêu cầu
Xây dựng một chương trình giải toán điện một chiều với đoạn mạch không có
nguồn.
+Input : bài toán điện một chiều.
+Output : Lời giải.
Dựa vào đó xây dựng nên mô hình biểu diễn tri thức cho kiến thức điện một
chiều.
Cách thức tổ chức lưu trữ tri thức.
Xây dựng thuật giải và mô hình. Từ đó xem xét thử có thể xây dựng mô hình
chung cho các bài toán hay không ?
II. Xây dựng mô hình tri thức
Mỗi đoạn mạch sẽ được biểu diễn dưới dạng một mạng tính toán (V, F)
trong :
V là tập các thuộc tính còn F sẽ là tập biểu diễn các quan hệ của các thuộc
tính trên đoạn mạch. Ở đây là sự biểu diễn quan hệ định luật Ôm.

V = {U, R, I}
F = {U = R*I, R = U/I, I = U/R}
Đoạn mạch có thể được thành lập từ nhiều đoạn mạch có quan hệ nối tiếp
hoặc song song khác nhau. Và được biểu diễn dưới dạng là một biểu thức :
A = (V, F).
Trong đó công thức là một danh sách bao gồm các thành phần :
+Biểu diễn quan hệ của đoạn mạch là nối tiếp hay song song. ở đây
được thể hiện thông quan toán tử +(nối tiếp) và *(song song).
+Biểu diễn các đoạn mạch thành phần(tức là các đoạn mạch con trong
đoạn mạch lớn).
Chẳng hạn ta biểu diễn một file trong dienmotchieu.txt
Variables
X.U1
X.R1
X.I1
Endvariables
Áp dụng định luật Ôm cho đoạn mạch X
{X.I1,X.R1}
{X.U1}
9
"X.U1=X.I1*X.R1"
Áp dụng định luật Ôm cho đoạn mạch X
{X.U1,X.R1}
{X.I1}
"X.I1=X.U1/X.R1"
Áp dụng định luật Ôm cho đoạn mạch X
{X.U1,X.I1}
{X.R1}
"X.R1=X.U1/X.I1"
Tương tự cho các file nối tiếp và song song cũng được biểu diễn tương tự nhưng X

được thay bằng X1, X2.
Với file nối tiếp :
Variables
X1X2.U, X1.U, X2.U
X1X2.R, X1.R, X2.R
X1X2.I, X1.I, X2.I
Endvariables
Relation 0:
Áp dụng định luật Ôm cho đoạn mạch X1X2
{X1.U, X2.U}
{X1X2.U}
“X1X2.U =X1.U+X2.U”
Relation 1:
Áp dụng định luật Ôm cho đoạn mạch X1X2
{X1.I, X2.I}
{X1X2.I}
“X1X2.I=X1.I=X2.I”
Relation 2:
Áp dụng định luật Ôm cho đoạn mạch X1X2
{X1.R, X2.R}
{X1X2.R}
“X1X2.R=X1.R+X2.R”
Với file song song:
Variables
10
X1X2.U, X1.U, X2.U
X1X2.R, X1.R, X2.R
X1X2.I, X1.I, X2.I
Endvariables
Relation 0:

Áp dụng định luật Ôm cho đoạn mạch X1X2
{X1.U, X2.U}
{X1X2.U}
“X1X2.U =X1.U=X2.U”
Relation 1:
Áp dụng định luật Ôm cho đoạn mạch X1X2
{X1.I, X2.I}
{X1X2.I}
“X1X2.I=X1.I+X2.I”
Relation 2:
Áp dụng định luật Ôm cho đoạn mạch X1X2
{X1.R, X2.R}
{X1X2.R}
“1/X1X2.R=1/X1.R+1/X2.R”
Dựa trên sự biểu diễn này khi xử lí cho từng đoạn mạch có mối quan hệ nối tiếp
hay song song thì ta đọc từng file nối tiếp hay song song tương ứng đã được xử lí
ở trên.
Sau đó thay thê các điện trở tương ứng trong từng file sao cho phù hợp với những
kết quả được tính toán từ các quan hệ của các đoạn mạch trước đó.
Thuật giải
-Phân tách mạch điện :các mạch điện được phân tách dựa trên các quan hệ
nối tiếp hoặc song song rồi được lưu trữ vào một tập hợp.
Với mỗi mạch trong tập hợp :
+Nếu là mạch nối tiếp thì tiến hành đọc file nối tiếp.
+Nếu là mạch song song thì tiến hành đọc file song song.
-Áp các quan hệ từ file filename cho điện trở tương ứng của từng đoạn mạch
bằng cách thay thế X là điện trở của từng đoạn mạch tương ứng.
-Sau đó tiến hành áp dụng thuật giải tìm kết quả trong mạng tính toán.
11
III. MỘT VÀI THỦ TỤC ĐƯỢC XÂY DỰNG TRONG CHƯƠNG

TRÌNH
1. ReadObject:=proc(filename::string):dùng để đọc từ file
2. rutgon:=proc(str::string): rút gọn đoạn mạch đang xét.
3. CatMach:=proc(str::string): chia thành các đoạn mạch nhỏ.
4. TapLuat:=proc(str::string):xác định cách tập luật
5. TaoTapLuat:=proc(strRule::string):tạo các tập luật trong mạng đối tượng.
6. test:=proc(l::list): kiểm tra các luật.
7. TaoGiaThuyet:=proc(str::string, lis::list): tạo giả thuyết ban đầu cho các mạch
con.
8. SetVars:=proc(f): l;ấy cá gái trị biến trong biểu thức.
9. ChuyenDoiCacTapLuat:=proc(argD::list,a::array, loai::ineteger): chuyển các
luật phù hợp với mỗi mạch đã phân tích.
10.GiaiMachNoiTiep:=proc(A, B, temp)
11. GiaiMachSongSong:=proc(A, B, temp)
12.DanhChiMucChoCacQuanHe:=proc(l1::list,l2::list)
……………………
12
D. BIỂU DIỄN TRI THỨC HÓA HỌC
I. TỔNG QUAN VỀ CÁCH BIỂU DIỄN TRI THỨC HÓA HỌC LÊN
MẠNG TÍNH TOÁN
1. Tổng quan về mạng tính toán hóa học:
Mạng tính toán hóa học là mạng tính toán được sử dụng để biểu diễn các
tri thức về các vấn đề hóa học và được áp dụng để giải một số bài toán hóa học.
Các thành phần trong 1 mạng tính toán hóa học thường là các chất hóa học, các
mối quan hệ giữa các chất hóa học thông qua các phương trình phản ứng. Có rất
nhiều cách để biểu diễn mạng tính toán hóa học tuy nhiên làm thế nào để biểu
diễn mạng tính toán hóa học một cách phù hợp và dễ sử dụng trong quá trình giải
quyết các vấn đề hóa học cũng là điều cần quan tâm.
2. Tổng quan về cách biểu diễn mạng tính toán hóa học lên Maple:
Để biều diễn mạng tính toán hóa học lên maple, trước tiên chúng ta biểu

diễn mạng tính toán hóa học lên trên một file text theo quy tắc sau:
- File text có tên file toàn chữ hoa và nếu tên file có 2 từ
trở lên thì giữa các từ là là dâu gạch “_” . Ví dụ: HOA_HOC.txt.
- Hàng đầu tiên trong file được để trống. Hàng kế tiếp là
tên đối tượng có cấu trúc sau: object = <ten object>, name object
giống như tên file text. Ví dụ: object = HOA_HOC
- Hàng kế tiếp là danh sách các chất hóa học trong mạng
tính toán được biểu diễn theo cấu trúc sau:
variables
<ten variable 1> = “chu thich variable 1”
……
<ten variable n> = “chu thich variable n”
endvariables
13
Ví dụ:
variables
H2 = "Khi Hidro"
O2 = "Khi Oxi"
endvariables
- Hàng kế tiếp bỏ trống. Các hành tiếp theo biểu diễn các
mối quan hệ giữa các chất trong mạng tính toán theo cấu trúc sau:
relation <number>
Mf = <tập hợp các chất có trong quan hệ 1>
vf = <tập hợp các chất điều chế được trong quan hệ 1>
exp = `Phương trình phản ứng`
ví dụ:
relation 0
Mf = {Na,Cl2,NaCl}
vf = {NaCl}
exp = ` Na + Cl2 = 2NaCl`

Chú ý: giữa các mối quan hệ có 1 hàng trống ngăn cách.
14
II. TẠO PACKAGE HÓA HỌC VÀ CÁC THỦ TỤC TRONG
PACKAGE
1. Tạo Package Hóa Học:
Nhằm thuận tiện trong quá trình sử dụng để gọi các thủ tục mà không cần
phải lập trình lại từ đầu các thủ tục, chúng ta tạo ra package Hóa học. Package
được tạo ra một cách rất đơn giản thông qua thủ tục gọi hàm sau trong maple:
<tên Package> :=table();
<tên Package>[thủ tục 1]:=proc(<các tham biến>)
….
end:
<tên Package>[thủ tục 2]:=proc(<các tham biến>)
….
end:

<tên Package>[thủ tục n]:=proc(<các tham biến>)
….
end:
save(tên Package, “dir/tên Package.m”);
save(tên Package, “dir/Maple12/lib/tên Package.m”);
Ví dụ:
HoaHoc := table():
HoaHoc[ReadFile] := proc(filename::string)
….
end:
save(HoaHoc,"C:/Hoa_Hoc/HoaHoc.m");
save(HoaHoc,"C:/Program Files/Maple 12/lib/HoaHoc.m");
15
2. Các thủ tục trong Package Hóa Học:

a. HoaHoc[ReadFile] := proc(filename::string)
• Filename: tên của file chứa thông tin các quan hệ của mạng
tính toán.
• Chức năng: đọc dữ liệu trong file text trình bày các quan hệ
trong mạng hóa học
• Xuất ra: danh sách gồm
- Tên của object
- Danh sách các variable
- Danh sách các quan hệ, mỗi quan hệ gồm
+ chuỗi dạng “relation <number>”
+ tập các chất có trong quan hệ
+ tập các chất được điều chế trong quan hệ
+ ý nghĩa của các chất
b. HoaHoc[ResultSet]:=proc(F::list,A::set)
• F là danh sách các quan hệ (thành phần [3] trong ReadFile)
• A là tập hợp các chất
• Chức năng: Tìm tập hợp các chất được tạo ra từ A (bao gồm
A)
• Xuất ra: tập hợp các chất tạo ra từ A (gồm cả A)
c. HoaHoc[ResultRelate]:=proc(F::list,A::set)
• F là danh sách các quan hệ (thành phần [3] trong ReadFile)
• A là tập hợp các chất
• Chức năng: Tìm danh sách các quan hệ các chất được tạo ra
từ A
• Xuất ra: danh sách gồm
- Các chất A
- Các chất có thể điều chế từ A
16
- Các quan hệ có thể thể điều chế ra các chất trên
d. HoaHoc[ResultFormula]:=proc(F::list,A::set)

• F là danh sách các quan hệ (thành phần [3] trong ReadFile)
• A là tập hợp các chất
• Chức năng: Tìm tập hợp các phương trình phản ứng từ A
• Xuất ra: tập hợp các phương trình phản ứng có thể xảy ra từ A
e. HoaHoc[ResultB]:=proc(F::list,B::set)
• F là danh sách các quan hệ (thành phần [3] trong ReadFile)
• A là tập hợp các chất
• Chức năng: Tìm danh sách các quan hệ có thể tạo ra các chất
ở B
• Xuất ra: danh sách các quan hệ có thể tạo ra các chất trong B
f. HoaHoc[TestAB]:=proc(F::list,A::set,B::set)
• F là danh sách các quan hệ (thành phần [3] trong ReadFile)
• A là tập hợp các chất đầu vào
• B là tập hợp các chất cần điều chế
• Chức năng: Kiểm tra bài toán AB
• Xuất ra: true: nếu giải được và false: nếu không giải được
g. HoaHoc[SolutionAB]:=proc(F::list,A::set,B::set)
• F là danh sách các quan hệ (thành phần [3] trong ReadFile)
• A là tập hợp các chất đầu vào
• B là tập hợp các chất cần điều chế
• Chức năng: Tìm danh sách các quan hệ các chất được tạo ra
từ A có thể điều chế B
• Xuất ra: danh sách gồm
- true: nếu giải được và false: nếu không giải được
- danh sách các quan hệ các chất được tạo ra từ A có thể
điều chế B
17
h. HoaHoc[SolutionForAB]:=proc(F::list,A::set,B::set)
• F là danh sách các quan hệ (thành phần [3] trong ReadFile)
• A là tập hợp các chất đầu vào

• B là tập hợp các chất cần điều chế
• Chức năng: Tìm tập hợp các phương trình phản ứng có thể tạo
ra từ A để điều chế B
• Xuất ra: tập hợp các phương trình phản ứng có thể tạo nên từ
A để điều chế B
i. HoaHoc[CompleteSolAB]:=proc(F::list,A::set,B::set)
• F là danh sách các quan hệ (thành phần [3] trong ReadFile)
• A là tập hợp các chất đầu vào
• B là tập hợp các chất cần điều chế
• Chức năng: Tìm danh sách các quan hệ các chất được tạo ra
từ A có thể điều chế B (danh sách tốt nhất)
• Xuất ra: danh sách gồm
- true: nếu giải được và false: nếu không giải được
- danh sách các quan hệ các chất được tạo ra từ A có thể
điều chế B (danh sách tốt nhất)
j. HoaHoc[CompleteForAB]:=proc(F::list,A::set,B::set)
• F là danh sách các quan hệ (thành phần [3] trong ReadFile)
• A là tập hợp các chất đầu vào
• B là tập hợp các chất cần điều chế
• Chức năng: Tìm chuỗi phản ứng ngắn nhất tạo ra B từ A.
• Xuất ra: tập hợp các phương trình phản ứng có thể tạo nên từ
A để điều chế B (chuỗi phản ứng ngắn nhất)
18
III. CÁCH GIẢI BẢI TOÁN AB VÀ LỌC LỜI GIẢI TỐT TỪ LỜI
GIẢI ĐÃ BIẾT
1. Giải bài toán A  B:
a. Thuật toán:
• Nhập : Mạng các đối tượng tính toán (O,F), với tập biến là M, tập giả
thiết A ⊆ M, tập biến cần tính B ⊆ M.
• Xuất : lời giải cho bài toán A → B

• Thuật toán :
1.Solution

empty;
2. if B

A then
begin
Solution_found

true
goto 5;
end
else
Solution_found

false;
3. Repeat
Aold

A;
Chọn ra một f

F chưa xem xét (trong bước 3 lần nầy);
while not Solution_found and (choïn ñöôïc f) do
begin
if ( f đối xứng and 0 < Card (M(f) \ A)

r(f) ) or
( f không đối xứng and




M(f) \ A

v(f) ) then
begin
A

f(A);
Solution

Solution


{
f
}
;
end;
if B

A then
Solution_found

true;
Chọn ra một f

F chưa xem xét (trong bước 3 lần nầy);
end;

{
while
}
Until Solution_found or (A = Aold);
19
4. if not Solution_found then
begin
Chọn ra một O
i


O (theo thứ tự ưu tiên đã nói ở trên)
sao cho
O
i
(A)

A;
if (chọn được O
i
) then
begin
A

O
i
(A);
Solution

Solution



{
O
i

}
;
if (B

A) then
begin
Solution_found

true;
goto 5;
end;
else
goto 3;
end;
end;
5. if not Solution_found then
Bài toán không có lời giải;
else
Solution là một lời giải;
Giải bài toán A B trong mạng tính toán hóa học:
- Đối với mạng tính toán hóa học, các mối quan hệ thường là không đối
xứng với nhau, ta xem như không đối xứng vì thế trong quá trình giải
bài toán A B ta có thể bỏ bớt đi một số bước. Cụ thể là ta không cần
kiểm tra xem nó có đối xứng không, chỉ xét trường hợp nó không đối

xứng (∅ ≠ M(f) \ A ⊆ v(f))
- Giải bài toán thông qua thủ tục:
HoaHoc[SolutionAB]:=proc(F::list,A::set,B::set)
1. Lọc lời giải tốt từ lời giải đã biết:
Nhập : Mạng các đối tượng tính toán (O,F),
20
lời giải {t
1
, t
2
, , t
m
} của bài toán A→ B.
Xuất : lời giải tốt cho bài toán A → B
Thuật toán :
1. D


{
t
1
, t
2
, , t
m
}
;
2. for i=m downto 1 do
if D \
{

t
i
}
là một lời giải then
D

D \
{
t
i
}
;
3. D là một lời giải tốt.
2. Kiểm tra lời giải cho bài toán:
Nhập : Mạng các đối tượng tính toán (O,F),
bài toán A→ B,
dãy {t
1
, t
2
, , t
m
} ⊆ F ∪ O.
Xuất : thông tin cho biết {t
1
, t
2
, , t
m
} có phải là lời giải

của bài toán A→ B hay không.
Thuật toán :
1. for i=1 to m do
if (t
i
áp dụng được trên A) then
A

t
i
(A);
2. if A

B then
{
t
1
, t
2
, , t
m
}
là lời giải
else
{
t
1
, t
2
, , t

m
}
không là lời giải;
21
IV. MAPLETS VÀ TẠO ỨNG DỤNG GIAO DIỆN TRONG MAPLE
1. Cách sử dụng maplets:
Để tạo ra một ứng dụng với giao diện trong maple chúng ta có thể sử dụng
package Maplets có sẵn trong Maple. Để sử dụng các elements trong Maplets
như Button, Menu… chúng ta sử dụng thủ tục gọi sau:
with(Maplets[Elements]);
Sau đó chúng ta khởi tạo các đối tượng trong giao diện như Button,
TextField… thông qua các thủ tục khởi tạo. Ví dụ để tạo một button nhãn OK và
một button nhãn cancel chúng ta gọi thủ tục sau:
maplet := Maplet(["Select one:", [Button("OK", Shutdown("true")),
Button("Cancel", Shutdown())]])
Tuy nhiên với thủ tục như vậy chúng ta vẫn chưa hiển thị được giao diện,
cần gọi thủ tục hiển thị như sau:
result := Maplets[Display](maplet);
Ta có giao diện: . Để biết thêm về các thủ tục khởi
tạo các đối tượng elements khác của maplet chúng ta có thể bấm ctrl+F1 trong
giao diện Maple, và ở khung search đánh Maplets.
2. Ứng dụng maplets trong ứng dụng hóa học:
a. Giao diện:
22
b. Các thành phần và chức năng: bao gồm
i. TextField 1: nhập các chất ban đầu, có tooltip (“chú ý các chất
nằm trong dấu {}”) và lưu chất ban đầu A
ii. TextField 2: nhập các chất cần điều chế, có tooltip giống
TextFiled 1 và lưu chất cần điều chế B
iii. Button OK: khi click vào ngay lập tức sẽ giải ra bài toán AB,

lời giải là các phương trình phản ứng, giao diện lời giải như
sau:
iv. Button Cancel: thoát khỏi ứng dụng
23
v. Button Dieu che tu A: khi click vào sẽ giải bài toán điều chế các
chất từ A, lời giải là tập các chất có thể điều chế từ A, giao diện
như sau:
24
vi. Button Cac chat: khi click vào sẽ hiển thị danh sách các chất có
trong mạng tính toán, giao diện như sau:
25

×