Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 13 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
13
Dung lượng
2,08 MB
Nội dung
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH ỨNG DỤNG MẠNG TÍNH TOÁN TRONG BÀI TOÁN HÓA HỌC BÀI THU HOẠCH BIỂU DIỄN TRI THỨC VÀ ỨNG DỤNG Giảng viên : TS. Đỗ Văn Nhơn Học viên : Trịnh Hoàng Việt Quốc MSSV : CH1101127 Lớp : Cao Học K6 Mục lục 1. Gới thiệu mạng tính toán: 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 có hiệu quả để giải quyết các vấn đề nầy. 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 được cho việc tính toán. Có thể nói rằng mạng tính toán là một sự tổng quát hoá của kiểu dữ liệu trừu tượng có khả năng tự xây dựng các hàm dùng cho việc tổng hợp thành các chương trình. 2. Định nghĩa: a) Các quan hệ: Cho M = {x 1 ,x 2 , ,x m } là một tập hợp các biến có thể lấy giá trị trong các miền xác định D 1, D 2 , ,D m . Mỗi quan hệ R trên M được xác định bởi một (hay một số) ánh xạ có dạng: f R,u,v : D u → D v trong đó u,v là các bộ biến được phân chia từ bộ biến x = <x 1 ,x 2 , ,x m >; D u và D v là tích của các miền xác định tương ứng của các biến trong u và trong v. Quan hệ R(x) có thể được biểu diễn bởi một (hay một số) ánh xạ f R,u,v và ta viết vắn tắt là: f : u ⇒ v. Cách ký hiệu trên bao hàm ý nghĩa như một luật suy diễn: ta có thể xác định hay suy ra được các biến thuộc v khi biết các biến thuộc u. Quan hệ là đối xứng và có hạng k khi ta có thể tính được k biến bất kỳ từ m-k biến kia. Ví dụ: quan hệ f giữa p là chu vi và a, b là các cạnh của hình chữ nhật. p = 2*a + 2*b là một quan hệ đối xứng có hạng là 1 trên các biến p, a, b. b) Mạng tính toán: là một cấu trúc (M, F) gồm 2 tập hợp: - M = {x 1 ,x 2 , ,x n }, là tập hợp các thuộc tính hay các biến lấy giá trị trong các miền xác định nào đó. - F = {f 1 ,f 2 , ,f m }, là tập hợp các luật suy diễn (các quan hệ) có dạng: f : u(f) → v(f) trong đó u(f) và v(f) là các tập hợp con khác rỗng của M sao cho u(f) ∩ v(f) = ∅. Ký hiệu: M(f) = u(f) ∪ v(f). Ví dụ: mạng tính toán cho một hình vuông (ABCD) f 1 : c = a f 2 : b = a f 3 : d = a f 4 : AC = a f 5 : BD = a f 6 : S=a 2 f 7 : p= 4*a 3. Các vấn đề cơ bản: Cho mạng tính toán (M,F), Giả sử có 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), và B là một tập biến bất kỳ trong M. Các vấn đề được đặt ra là: - Có thể xác định được B từ tập A nhờ các quan hệ trong F hay không. - Nếu có thể tìm được B thì quá trình tính toán như thế nào? - Trong trường hợp không thể xác định B, thì cần thêm điều kiện gì để có thể tìm được B. • Các định nghĩa và ký hiệu: - Bài toán xác định B từ A trên mạng tính toán (M, F) được viết dưới dạng AB - Cho D = {f1, f2, , fk} là một dãy quan hệ của mạng tính toán (M,F), A là một tập con của M. Ta nói dãy quan hệ D là áp dụng được trên tập A khi và chỉ khi ta có thể lần lượt áp dụng được các quan hệ f1, f2, , fk xuất phát từ giả thiết A. - Với D = {f 1 , f 2 , , f k }, đặt: A 0 = A, A 1 = A 0 ∪ M(f 1 ), . . . , A k = A k-1 ∪ M(f k ), và ký hiệu A k là D(A). Có thể nói rằng D(A) là sự mở rộng của tập A nhờ áp dụng dãy quan hệ D. Ví dụ: Trong mạng suy diễn cho một hình chữ nhật, với A = { b 1 , b 2 }và D = { f 1 : S = b 1 * b 2 ; f 2 :p = 2*(b 1 +b 2 )} ta có D(A) = { b 1 , b 2 , S, p}. - Định nghĩa lời giải: + D = {f 1 , f 2 , , f k } là một lời giải của bài toán A → B khi lần lượt áp dụng các quan hệ f i (i=1, ,k) xuất phát từ giả thiết A thì sẽ suy ra được các biến thuộc B. Nói cách khác D là một lời giải của bài toán khi D(A) ⊃ B. + Bài toán A → B là giải được khi nó có một lời giải. + Lời giải {f 1 , f 2 , , f k } được gọi là lời giải tốt nếu không thể bỏ bớt một số bước tính toán trong quá trình giải, tức là không thể bỏ bớt một số quan hệ trong lời giải. + Lời giải ngắn nhất: có số bước suy diễn thấp nhất. 4. Tìm lời giải: a) Tính giải được: • Định nghĩa “Bao đóng”: Cho mạng tính toán (M,F), và A là một tập con của M. Ta có thể thấy rằng có duy nhất một tập hợp B lớn nhất ⊆ M sao cho bài toán A → B là giải được, và tập hợp B nầy được gọi là bao đóng của A trên mạng (M,F). • Định lý: Trên một mạng tính toán (M,F), bài toán A → B là giải được khi và chỉ khi B ⊆ (bao đóng của A). • Mệnh đề: Trên một mạng tinh toán (M,F), giả sử A, B là hai tập con của M. Ta có các điều sau đây là tương đương: (1) B ⊆ . (2) Có một dãy quan hệ D = {f 1 , f 2 , , f k } ⊆ F thỏa các điều kiện : (a) D áp được trên A. (b) D(A) ⊇ B. * Thuật toán tìm bao đóng của A trên mạng (M,F). 1. B ← A; 2. Repeat B1 ← B; for f ∈ F do //Card (X) là số phần tử của tập X if ( f đối xứng and Card (M(f) \ B) ≤ r(f) ) or (f không đối xứng and M(f) \ B ⊆ v(f) ) then begin B ← B ∪ M(f); F ← F \ {f}; // loại f khỏi lần xem xét sau end; Until B = B1; 3. Closure(A) ← B; b) Tìm lời giải: • Mệnh đề: Dãy quan hệ suy diễn D là một lời giải của bài toán A → B khi và chỉ khi D áp dụng được trên A và D(A) ⊇ B. ⇒ Để tìm một lời giải ta có thể làm như sau: Xuất phát từ giả thiết A, ta thử áp dụng các quan hệ để mở rộng dần tập các biến được xác định (được biết); và quá trình nầy tạo ra một sự lan truyền tính xác định trên tập các biến cho đến khi đạt đến tập biến B. Thuật toán tìm một lời giải của bài toán AB 1. Solution ← empty; // Solution là dãy các quan hệ sẽ áp dụng 2. if B ⊆ A then begin Solution_found ← true; // biến Solution_found = true khi // bài toán là giải được goto bước 4; end else Solution_found ← false; 3. Repeat Aold ← A; Chọn ra một f ∈ F chưa xem xét; while not Solution_found and (chọ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 ← A ∪ M(f); Solution ← Solution ∪ {f}; end; if B ⊆ A then Solution_found ← true; Chọn ra một f ∈ F chưa xem xét; end; { while } Until Solution_found or (A = Aold); 4. 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; • Nhận xét: Khi cần trình bày quá trình giải (hay bài giải) ta có thể xuất phát từ lời giải tìm được dưới dạng một dãy các quan hệ để xây dựng bài giải. Lời giải (nếu có) tìm được trong thuật toán trên chưa chắc là một lời giải tốt. Ta có thể bổ sung thêm cho thuật toán ở trên một thuật toán để tìm một lời giải tốt từ một lời giải đã biết nhưng chưa chắc là tốt. c) Tìm một lời giải tốt của bài toán: Lưu ý: ta có thể tìm một lời giải tốt từ một lời giải biết trước bằng cách lần lượt xem xét các quan hệ trong tập lời giải đã biết và chọn ra các quan hệ để đưa vào một lời giải mới sao cho trong lời giải mới nầy không thể bớt ra bất kỳ một quan hệ nào. Giả sử {f 1 , f 2 , , f m } là một lời giải của bài toán A→ B. Tìm một lời giải tốt cho bài toán. 1. D ← {f 1 , f 2 , , f m }; 2. for i=m downto 1 do if D \ {f i } là một lời giải then D ← D \ {f i }; 3. D là một lời giải tốt. Thuật toán kiểm tra lời giải của bài toán: 1. for i=1 to m do if ( fi đối xứng and Card (M(fi) \ A) ≤ r(fi) ) or ( fi không đối xứng and M(fi) \ A ⊆ v(fi) ) then A ← A ∪ M(fi); 2. if A ⊇ B then {f1, f2, , fm} là lời giải else {f1, f2, , fm} không là lời giải; d) Phân tích quá trình giải: Đối với một lời giải, rất có khả năng một quan hệ nào đó dẫn tới việc tính toán một số biến thừa, tức là các biến tính ra mà không có sử dụng cho các bước tính phía sau. Do đó, chúng ta cần xem xét quá trình áp dụng các quan hệ trong lời giải và chỉ tính toán các biến thật sự cần thiết cho quá trình giải theo lời giải. Định lý sau đây cho ta một sự phân tích tập các biến được xác định theo lời giải và trên cơ sở đó có thể xây dựng quá trình suy diễn để giải quyết bài toán. • Định lý: Cho {f 1 , f 2 , , f m } là một lời giải tốt cho bài toán A → B trên một mạng tính toán (M,F). Đặt : A 0 = A, A i = {f 1 , f 2 , , f i }(A), với mọi i=1, ,m. Khi đó có một dãy {B 0 , B 1 , , B m-1 , B m }, thỏa các điều kiện sau đây: (1) B m = B. (2) B i ⊆ A i , với mọi i=0,1, ,m. (3) Với mọi i=1, ,m, {f i } là lời giải của B i-1 → B i nhưng không là lời giải của G → B i , trong đó G là một tập con thật sự tùy ý của B i-1 . 5. Lời giải tối ưu của bài toán: a) Mạng tính toán có trọng số: - Với mỗi quan hệ để đại diện cho độ phức tạp của việc suy diễn ta có một tham số gọi là trọng số của quan hệ, tham số này đóng vai trò quan trọng trong tính hiệu quả của bài toán. Ký hiệu: w(f) là trọng số của quan hệ f. - Mạng tính toán có trọng số là mô hình: (A, D, w) gồm: + A: tập các thuộc tính. + D: tập các quan hệ (luật suy diễn) + w: hàm trọng số dương w:DR + . Với mỗi quan hệ r thuộc D có dạng r:uv thì u là phần giả thiết, ký hiệu hypothesis(r) và v là phần kết luận goal(r). b) Định nghĩa lời giải tối ưu: - Đặt: w(S) = w(f 1 ) + w(f 2 ) + + w(f k ). - Ta gọi w(S) là trọng số của S. - Cho một bài toán A → B. dãy các luật suy diễn S được gọi là một lời giải tối ưu của bài toán khi nó thỏa mãn các điều kiện sau đây: (1) S là một lời giải của bài toán A → B. (2) Trọng số của S nhỏ hơn hoặc bằng trọng số của bất kỳ một lời giải nào khác của bài toán. Nói một cách khác là w(S) = min { w(S’) | S’ là một lời giải của bài toán A → B } c) Tìm lời giải tối ưu: Mệnh đề: Nếu bài toán HG là giải được thì sẽ tồn tại một lời giải tối ưu cho bài toán. Áp dụng thuật giải A* để tìm lời giải tối ưu: cần có một biểu diễn thích hợp cho không gian trạng thái của bài toán. • Không gian trạng thái: Với mỗi luật r mà ta có thể áp dụng trên H để suy ra những thuộc tính mới sẽ dẫn tới một tập thuộc tính mới H’ = H ∪ goal(r).Ta nói rằng r là một cạnh nối từ đỉnh H đến đỉnh H’. Như thế, tập hợp gồm tất cả các tập con (hay đỉnh) H’ của A sao cho có một dãy S gồm các luật (hay cạnh) thỏa mãn điều kiện H’ = S(H), cùng với các cạnh trong các dãy S sẽ cho ta một không gian trạng thái của bài toán có dạng đồ thị. Hơn nữa đồ thị nầy có trọng số được định nghĩa bởi: trọng số của cạnh r (tức là một luật suy diễn) là w(r). Đồ thị có trọng số nầy sẽ được ký hiệu là Graph(H→G). • Việc tìm lời giải tối ưu cho bài toán H→G tương đương với việc tìm một đường đi ngắn nhất trên đồ thị Graph(H→G) từ H đến một đỉnh mục tiêu H’ thỏa điều kiện H’ chứa G. Đối với mỗi đỉnh N trên đồ thị, đặt h(N) = min {w(r) | hypothesis(r) ⊂ N} Giá trị h(N) nầy có thể xem là một ước lượng cho lộ trình từ N đến một đỉnh mục tiêu. • Thuật toán tìm lời giải tối ưu: Bước 1: Khởi tạo trạng thái xuất phát. Open ← {H}; // danh sách đỉnh mở ban đầu //chỉ có đỉnh xuất phát Close ← {}; // danh sách đỉnh đóng g(H) ← 0; // độ dài lộ trình đến H là 0 f(H) ← h(H); // độ dài lộ trình ước tính từ H //đến mục tiêu là h(H) found ← false; // biến kiểm tra quá trình tìm lời giải Bước 2:Thực hiện quá trình lặp để tìm lời giải tối ưu While (Open ≠ {}) do begin Bước 2.1: Chọn một đỉnh N trong Open với ước tính đường đi f nhỏ nhất. Bước 2.2: Chuyển N từ danh sách Open sang danh sách Close. Bước 2.3: if (N là một mục tiêu) then begin Found ← true; Break; // Kết thúc quá trình lặp end Bước 2.4: else // N không là một mục tiêu Begin Duyệt qua các đỉnh kế S của N (tức là có cung r nối N và S) mà S ∉ Close, và xét các trường hợp sau: 1. S ∉ Open: Tính g(S) = g(N) + w(r); f(S) = g(S) + h(S); Bổ sung S vao Open; 2. S ∈ Open: If g(N) + w(r) < g(S) then begin g(S) ← g(N) + w(r); f(S) ← g(S) + h(S); Cập nhật về đỉnh kế trước của S trên lộ trình; end End End // // Kết thúc vòng lặp while Bước 3: Kiểm tra kết quả việc tìm kiếm. If Found then Kết quả là tìm được lời giải tối ưu và thiết lập lời giải Else Kết quả là bài toán không có lời giải. 6. Ứng dụng mạng tính toán trong việc giải bài toán chuỗi phản ứng và điều chế trong hóa học: a) Giới thiệu: - Áp dụng mô hình mạng tính toán của thầy TS. Đỗ Văn Nhơn để giải các bài toán hóa học. - Ngôn ngữ sử dụng: Maple (sử dùng maple 12) - Ngôn ngữ lập trình sử dụng viết giao diện chương trình: java - Có thể giải quyết hai loại bài tập trong hóa học phổ thông là: • Bài tập loại điều chế chất hóa học: Cho một số chất hóa học, và điều chế một số chất hóa học khác từ các chất cho trước đấy. - Ví dụ: Cho Na, Cl2, và H2O làm thế nào để điều chế nước javel (NaClO, NaCl,H2O). Bài làm: 2Na + Cl2 = 2NaCl NaCl + H2O = Cl2 + H2 + NaOH Cl2 + 2NaOH = NaClO + NaCl + H2O • Bài tập tìm chuỗi phản ứng Ví dụ: thực hiện chuỗi phản ứng sau: Na->NaCl->NaOH->Na2SO4 Bài làm: Ta có 3 phản ứng trong chuỗi trên là: 2Na + Cl2 = 2NaCl //Na->NaCl NaCl + H2O = Cl2 + H2 + NaOH //NaCl->NaOH CuSO4 + 2NaOH = CuOH2 + Na2SO4 //NaOH->Na2SO4 b) Cơ sở tri thức: - Gồm một tập biến và tập quan hệ. • Tập biến: tập các chất và hợp chất hóa học Mỗi biến bao gồm: Ví dụ: variables Na = "Natri" Cl2 = "Clo" NaCl = "Natri Clorua" NaHCO3 = "- NaHCO3 la muoi cua axit yeu, khong ben (axit cacbonic)." Fe = "Sat" FeCl3 = "Sat III Clorua" Cu = "Dong" CuCl2 = "Dong Clorua" H2O = "Nuoc" HCl = "Axit Clohidric" Zn = "Kem" H2 = "Hidro" O2 = "Oxy" NH4HCO3 = "Muoi amoni hidro cacbonat" CO2 = "khi cacbonic" NH4Cl = "muoi amoni" NH3 = "amoniac" - Ta thấy mỗi phản ứng hóa học đều không đối xứng nên mối quan hệ trong mạng tính toán hóa học thì chỉ gồm: Mf, tập các chất trong phản ứng; vf, tập các chất tạo thành và expf một phản ứng. Ví dụ: relation 0 Mf = `{Na,Cl2,NaCl}` vf = `{NaCl}` expf = `2Na + Cl2 = 2NaCl` relation 4 Mf = {NaCl, H2O, Cl2,H2,NaOH} vf = {Cl2,H2,NaOH} expf = ` NaCl + H2O = Cl2 + H2 + NaOH` Công thức hóa học = “Định nghĩa” c) Thuật toán: • Thuật toán cho bài toán điều chế: Để giải quyết vần đề điều chế chất hóa học ta dùng thuật toán tìm lời giải trong mạng tính toán. Từ một số chất cho trước đi tìm các “bước giải” (tức các phương trình phản ứng) để có được chất điều chế. Tuy nhiên có một điểm khác là chỉ xét các quan hệ không đối xứng (theo quan hệ trong cơ sở tri thức). Hàm tìm chuỗi phản ứng trong maple: [...]...• Thuật toán cho bài toán Tìm chuỗi phản ứng (phần này khác với mạng tính toán) : - Phát biểu: chất thứ i (trong dãy đưa vào) là các chất tham gia và chất thứ i + 1 thuộc các chất tạo thành trong cùng một phản ứng thì phản ứng đó hợp lệ - Mã giả: tìm chuỗi phản ứng (F:list,chuoipu:list) //F: danh sách các phản ứng có trong quan hệ //chuoipu: danh sách các chất trong chuỗi phản ứng for i=1 to chuoipu.length-1... //Trả về kết quả nếu số phản ứng bằng tổng các chất -1 thì tìm được if (result.length = chuoipu.length - 1) thực hiện được chuỗi phản ứng return result; else không thực hiện được chuỗi phản ứng Hình 2: Thuật toán tìm chuỗi phản ứng trong maple • Lưu ý: Khi lập trình trong Maple thì chuỗi đưa vào phải là danh sách vì nếu là Set(tập hợp) thuật toán sẽ sai vì các thành phần trong tập hợp sẽ sắp xếp lại... xếp lại theo thứ tự a,b,c Tài liệu tham khảo: [1] Giáo trình các hệ cơ sở tri thức – trường ĐH công nghệ thông tin, biên soạn: GS TSKH Hoàng Kiếm, TS Đỗ Phúc, TS Đỗ Văn Nhơn [2] Presentation – Mạng suy diễn tính toán, TS Đỗ Văn Nhơn [3] Maple Help: http://www.maplesoft.com/support/help/ . Else Kết quả là bài toán không có lời giải. 6. Ứng dụng mạng tính toán trong việc giải bài toán chuỗi phản ứng và điều chế trong hóa học: a) Giới thiệu: - Áp dụng mô hình mạng tính toán của thầy. HỌC CÔNG NGHỆ THÔNG TIN ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH ỨNG DỤNG MẠNG TÍNH TOÁN TRONG BÀI TOÁN HÓA HỌC BÀI THU HOẠCH BIỂU DIỄN TRI THỨC VÀ ỨNG DỤNG Giảng viên : TS. Đỗ Văn Nhơn Học. thấy mỗi phản ứng hóa học đều không đối xứng nên mối quan hệ trong mạng tính toán hóa học thì chỉ gồm: Mf, tập các chất trong phản ứng; vf, tập các chất tạo thành và expf một phản ứng. Ví dụ: relation