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

SỬ DỤNG MAPLE CÀI ĐẶT MẠNG ĐỐI TƯỢNG TÍNH TOÁN 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 (260.67 KB, 27 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
BIỂU DIỄN TRI THỨC VÀ ỨNG DỤNG
ĐỀ TÀI:
SỬ DỤNG MAPLE CÀI ĐẶT MẠNG ĐỐI
TƯỢNG TÍNH TOÁN HÓA HỌC
Bộ Môn : BIỂU DIỄN TRI THỨC VÀ ỨNG DỤNG
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.
Mạng tính toán là một dạng biểu diễn tri thức có thể dùng biểu diễn các tri thức về các vấn
đề tính toán và được áp dụng một cách hiệu quả để giải một số bài toán. Mỗi mạng tính toán
là một mạng ngữ nghĩa chứa các biến và các quan hệ có thể cài đặt và sử dụng cho việc tính
toán. Mạng tính toán Hóa học cũng là một mạng tính toán khá hay, vậy làm thế nào để trình
bày một mạng tính toán lên Maple? Và các thủ tục để tìm lời giải của một vấn đề hóa học


dựa trên mạng tính toán ấy ra sao?
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:”BIỂU DIỄN TRI THỨC VÀ
ỨNG DỤNG”, 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. GIỚI THIỆU MẠNG TÍNH TOÁN 5
1. Giới thiệu 5
2. Các quan hệ 5
3. Mạng tính toán và kí hiệu 6
D. GIỚI THIỆU MẠNG ĐỐI TƯỢNG TÍNH TOÁN 7
1. Định nghĩa 7
2. Các vấn đề trên mạng đối tượng tính toán 7
E. TỔNG QUAN VỀ CÁCH BIỂU DIỄN MẠNG TÍNH TOÁN HÓA HỌC LÊN
MAPLE 8
1. Tổng quan về mạng tính toán hóa học 8
2. Tổng quan về cách biểu diễn mạng tính toán hóa học lên Maple 8
F. TẠO PACKAGE HÓA HỌC VÀ CÁC THỦ TỤC TRONG PACKAGE 10
1. Tạo Package Hóa Học 10
2. Các thủ tục trong Package Hóa Học 10
G. 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 14

1. Giải bài toán AB 14
2. Lọc lời giải tốt từ lời giải đã biết 15
3. Kiểm tra lời giải cho bài toán 16
H. MAPLETS VÀ TẠO ỨNG DỤNG GIAO DIỆN TRONG MAPLE 17
1. Cách sử dụng maplets 17
2. Ứng dụng maplets trong ứng dụng hóa học, giao diện và chức năng 17
I. KẾT LUẬN 22
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. GIỚI THIỆU MẠNG TÍNH TOÁN
1. Giới thiệu
Mạng tính toán là một dạng biểu diễn tri thức có thể dùng tri thức về các vấn
đề tính toán và được áp dụng một cách có hiệu quả để giải một số dạng bài
toán. Mỗi mạng tính toán là một mạng ngữ nghĩa chứa các biến và những
quan hệ có thể cài đặt và sử dụng cho việc tính toán. Chúng ta xét mạng tính
toán gồm một tập hợp các biến cùng với tập quan hệ (chẳng hạn các công
thức) tính toán giữa các biến. Trong ứng dụng cụ thể, mỗi biến và giá trị của
nó thường gắn liền với một khái niệm cụ thê về sự vật, mối quan hệ thể hiện
một sự tri thức về sự vật.
2. Các quan hệ
Cho M ={x
1
,x
2,
x
3
} là một tập các biến có thể lấy giá trị trong các miền xác
định tương ứng D
1
, D
2
,… ,D
m
đối với mỗi quan hệ R

D
1

x D
2
x D
m
trên các
tập hợp D
1
, D
2
,… ,D
m ta nói
rằng quan hệ này liên kết các biến x
1
, x
2
, …,x
m

kí hiệu là R(x
1
, x
2
, …,x
m
) hay vắn tắt là R(x) với x dùng để chỉ bộ biến < x
1
,
x
2
, …,x

m
>). Ta có thể thấy rằng quan hệ R(x) có thể được biểu diễn bởi một
ánh xạ f
r,u,v
với u

v =x, và ta viết f
r,u,v
:uv .
Đối với các quan hệ dùng cho việc tính toán, cách kí hiệu trên bao hàm ý
nghĩa là một hàm mà ta có thể tính được giá trị các biến thuộc v khi biết được
giá trị của cá biến thuộc u.
Trong các phần sau ta xác định bởi các hàm số có dạng f: u  v trong đó u

v= ∅. Đặt biệt là các quan hệ đối xứng có hạng bằng một số nguyên dương
k. Đó là các quan hệ mà ta có thể tính được k biến bất kì từ m-k biến. Đối với
các quan hệ không phải là đối xứng có hạng k, không làm mất tính tổng quát
ta có thể xác định quan hệ xác dịnh duy nhất một hàm f với tập biến vào là
u(f) và tập biến ra là v(f). Ta gọi quan hệ này là quan hệ không đối xứng một
hàm hay còn gọi là quan hệ không đối xứng.
3. Mạng tính toán và kí hiệu
9
Như đã nói ở trên ta sẽ xem xét cá mạng tính toán bao gồm một tập hợp các
biến M và một tập các quan hệ F trên các biến. Trong trường hợp tổng quát
có thể viết :
M = {x
1
, x
2
,…. ,x

n
};
F = {f
1
, f
2
,…,f
3
};
Để mỗi f

F ta kí hiệu M(f) là tập các biến có quan hệ rong qua hệ f. Dĩ nhiên
M(f) là một tập con của M: M(f)

M. Nếu viết f dưới dạng :
F : u(f)  v(f).
Thì ta có M(f) = u(f)

v(f).
D. GIỚI THIỆU MẠNG ĐỐI TƯỢNG TÍNH TOÁN
1. Định nghĩa
10
Một mạng tính toán(M,F) được gọi là một mạng con của mạng tính toán
(M’.F’)nếu thõa các điều kiện sau đây:
(1) M ⊆ M’,
(2) F ⊆ F’,
(3) M(f) ⊆ M’(f), vôùi moïi f∈ F.
Một mạng tính toán còn được xem là một đối tượng tính toán
Trong đó có khái niệm về quan hệ giữa các đối tượng. Ta gọi một quan hệ f
giữa các biến của các đối tượng tính toán là một quan hệ giữa các đối tượng

đó. Quan hệ này cho phép ta tính được một hay nhiều biến của các đối tượng
từ một số biến khác.
2. Vấn đề trên mạng các đối tượng tính toán
Cho một mạng các đối tượng tính toán (O,F), trong đó O là tập hợp các đối
tượng tính toán và F là tập hợp các quan hệ giữa các đối tượng. Xét một tập hợp
biến M trên mạng:
M(O) ⊇ M ⊇ M(F).
Giả sử một tập biến A ⊆ M đã được xác định (tức là tập gồm các biến đã biết
trước giá trị) và B là một tập biến bất kì trong M.
Các vấn đề đặt ra là:
+Có thể xác định được tập B từ tập A nhờ các quan hệ trong F và các đối tượng
thuộc O hay không?Nói cách khác ta có thể tính được giá trị của các biến thuộc
B với giả thuyết đã biết giá trị của các biến thuộc A hay không?
+Nếu có thể xác định được B từ A thì quá trình tính toán giá trị của các biến
thuộc B sẽ như thế nào?
+Trường hợp không thể xác định được B thì cần cho thêm điều kiện gì để có thể
xác định được B.
E. TỔNG QUAN VỀ CÁCH BIỂU DIỄN MẠNG TÍNH TOÁN HÓA HỌC
LÊN MAPLE
11
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
Ví dụ:
variables
H2 = "Khi Hidro"
12
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.
F. TẠO PACKAGE HÓA HỌC VÀ CÁC THỦ TỤC TRONG PACKAGE
1. Tạo Package Hóa Học:
13
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");
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.
14
• 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
- 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

15
• 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
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ế
16

• 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)
G. 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:
17
• 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);
4. if not Solution_found then
begin
18
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),
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 :
19
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;
H. MAPLETS VÀ TẠO ỨNG DỤNG GIAO DIỆN TRONG MAPLE
1. Cách sử dụng maplets:
20
Để 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:
b. Các thành phần và chức năng: bao gồm
21
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
22
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:
23
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:
24
vii. Button Quan he: khi click vao sẽ hiển thị danh sách các quan hệ
trong mạng tính toán, giao dien nhu sau:
25

×