Hỏi có thể điều chế được một chất theo yêu cầu hay không và cho biết các phản ứng nào được sử dụng trong quá trình điều chế.. Trong đó: M: tập hợp các biến F: tập hợp các quan hệ tín
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN TP.HCM
Tp.HCM, 03/2014
Tiểu luận Biểu diễn tri
thức và Suy luận
Ứng dụng Giải bài toán hóa học vô cơ chương trình THCS
bằng phương pháp Suy diễn tiến có Heuristic
Phan Hữu Phước (CH1301106)
Trang 2MỤC LỤC
I Vấn đề 3
II Đề xuất giải pháp 3
III Lưu trữ 3
IV Hàm Heuristic 4
IV.1 Giải thuật xây dựng Heuristic 4
IV.2 Ưu và khuyết điểm 4
V Giải thuật suy diễn tiến có Heuristic 5
VI Giao diện demo 6
VII Công cụ phát triển 6
VIII Nhận xét 6
IX Tài liệu tham khảo 7
Trang 3NHẬN XÉT
Trang 4
I Vấn đề
Từ các phản ứng có sẵn, cho trước một số chất ban đầu Hỏi có thể điều chế được một chất theo yêu cầu hay không và cho biết các phản ứng nào được sử dụng trong quá trình điều chế
Ví dụ:
Cho trước Na, Cl2, AgNO3 Yêu cầu điều chế NaNO3
Giải
1 Suy luận:
Na + Cl2 -> NaCl
NaCl + AgNO3 -> NaNO3 + AgCl
2 Kết luận: Điều chế được
II Đề xuất giải pháp
Sử dụng mạng tính toán với phương pháp suy diễn tiến có Heuristic
Mạng tính toán là một mô hình được biểu diễn bởi 2 thành phần <M,F> Trong đó:
M: tập hợp các biến
F: tập hợp các quan hệ tính toán
Trong vấn đề của bài tiểu luận này thì:
F: danh sách các phản ứng hóa học (dsphanung)
M: tập hợp các chất (được suy ra từ dsphanung)
III.Lưu trữ
Các phản ứng được lưu trong một tập tin dữ liệu “DuLieu.txt” Mỗi phản ứng được đặt trên một dòng theo cấu trúc tựa HTML như: dùng HTML element <sub> để tạo chỉ số dưới và <sup> để tạo chỉ số trên
Ví dụ:
Để lưu phản ứng Na + Cl2 NaCl thì phản ứng được lưu trong tập tin
“DuLieu.txt” như sau:
Na + Cl<sub>2</sub> = NaCl
to
Để lưu phản ứng Cl2 + KOH KCl + KClO + H2O:
Cl<sub>2</sub> + KOH=KCl + KClO + H<sub>2</sub>O <dk>t<sup>o</sup>
Trang 5(Điều kiện của phản ứng được đặt ở cuối dòng lưu phản ứng theo mẫu:
<dk>[Nội dung điều kiện]) Theo ví dụ trên thì <dk>t<sup>o</sup> biểu diễn cho điều kiện to của phản ứng
IV Hàm Heuristic
Mỗi phản ứng có một thuộc tính “uutien” để lưu trữ giá trị ưu tiên của phản ứng Quá trình suy diễn sẽ xét các phản ứng theo thứ tự giá trị “uutien” từ nhỏ đến lớn Mặc định, mỗi phản ứng chưa được gán giá trị “uutien” và có giá trị “uutien” ban đầu là 0
IV.1 Giải thuật xây dựng Heuristic
Input: “chatcuoi” là chất cần điều chế
Output: Các phản ứng được sắp xếp tăng dần theo giá trị “uutien”
Ý tưởng:
Ưu tiên phản ứng có ít chất ở vế trái
Ưu tiên phản ứng có vế phải chứa “chatcuoi”
B0: Gán giá trị “uutien” của mỗi phản ứng bằng với số chất bên trái của phản ứng
“giatriuutien”=1;
Sắp xếp các phản ứng tăng dần theo giá trị “uutien”
B1: muctieu = {chatcuoi} //lưu các mục tiêu trung gian
B2: Tìm phản ứng (pu) có “uutien” số chất vế trái và có vế phải muctieu Nếu
tìm thấy thì đến B3 Nếu không tìm thấy thì đến B4
B3: pu.uutien += giatriuutien; giatriuutien++; Quay lại B2
B4: Với mỗi phản ứng (pu) còn lại:
pu.uutien = pu.uutien + giatriuutien;
giatriuutien++;
B5: Sắp xếp các phản ứng tăng dần theo giá trị “uutien”
IV.2 Ưu và khuyết điểm
Ưu điểm: Ưu tiên được các phản ứng tạo ra chatcuoi và có ít chất ở vế trái.
Khuyết điểm: Do chưa cập nhật muctieu trung gian phù hợp trong quá trình duyệt
các phản ứng nên chưa xây dựng được giá trị heuristic (uutien) tối ưu cho các phản ứng trung gian
Trang 6V Giải thuật suy diễn tiến có Heuristic
Input:
Danh sách phản ứng (dsphanung)
Các chất đầu (chatdau)
Chất cần điều chế (chatcuoi)
Output:
Kết luận: Điều chế thành công hay không
Danh sách các phản ứng được sử dụng trong quá trình điều chế (solve)
Thuật giải
B0:
dsphanungchuaxet = dsphanung;
known=chatdau;
solve={};
B1: Nếu (chatcuoi known) và tìm thấy phản ứng (pu
dsphanungchuaxet) (ưu tiên từ nhỏ đến lớn của giá trị uutien) sao cho vetrai
known thì:
vephai = {các chất ở vế phải của pu};
Nếu vephai known thì
o known=known vephai;
o solve = sove pu;
dsphanungchuaxet = dsphanungchuaxet \ pu;
Ngược lại: đến B3
B2: Quay lại B1
B3: Nếu (chatcuoi known): Kết luận Điều chế không thành công
Ngược lại: Kết luận Điều chế thành công
Trang 7VI Giao diện demo
Bước 1: Nhập các các ban đầu (cách nhau bởi dấu phẩy “,”), không cần định dạng
chỉ số dưới vì chương trình tự xử lý
Bước 2: Nhập chất cần điều chế
Bước 3: Click chuột lên nút lệnh
VII Công cụ phát triển
Visual Studio 2010, NET Framework 2.0
Hiển thị các phản ứng: Web Browser Control
VIII Nhận xét
Chưa phân nhóm được các chất: Axit, Bazơ để tự học tạo ra các phản ứng giữa axit với bazơ
Chưa phân biệt được mức độ khử của các kim loại để tự tạo ra các phản ứng khử giữa kim loại với muối
Chưa tự cân bằng các phương trình phản ứng
Trang 8 Heuristic còn hạn chế, cần phải cải tiến.
Chưa tìm được các chất cần bổ sung khi không điều chế được
Trang 9IX Tài liệu tham khảo
Bài giảng của PGS.TS Đỗ Văn Nhơn
Luận văn Thạc sĩ Khoa học Tin học (1995) – Phần IVb – Đỗ Văn Nhơn
MSDN