Thiết kế bộ suy diễn

Một phần của tài liệu Phát triển một mô hình biểu diễn tri thức hàm và phương pháp giải quyết các vấn đề (Trang 52 - 65)

- Giá trị trả về kết quả: H: Diem

4.1.4.Thiết kế bộ suy diễn

4Phạm vi ứng dụng

4.1.4.Thiết kế bộ suy diễn

Chương trình giải tốn Hình học khơng gian sử dụng thuật giải suy luận của mơ hình COKB rút gọn được trình bày ở chương 3. Trong đó, thuật tốn kiểm tra và áp dụng vào bài tốn được cụ thể và chi tiết hóa hơn nhằm đáp ứng việc tìm kiếm và áp dụng luật đối với miền tri thức Hình học khơng gian. Bên cạnh đó, chương trình giải tốn hình khơng gian bổ sung thêm một phương pháp suy diễn heuristics là phương pháp hạn chế phát sinh đối tượng mới. Thuật toán kiểm tra và áp dụng

vào bài toán và phương pháp hạn chế phát sinh đối tượng mới tỏ ra rất hiệu quả

trong việc giảm đáng kể thời gian giải các bài tốn hình học khơng gian.

4.1.4.1. Thuật tốn tìm luật và áp dụng cho bài toán

Đầu tiên là việc phân chia tập luật thành các tập cụ thể hơn như sau: tập luật dùng để phát sinh đối tượng mới, tập luật xác định đối tượng, các luật tự nhiên (luật tự nhiên là luật mà theo như suy nghĩ của con người thì khơng cần chứng minh mà cũng có thể suy ra).

Chương 4. Ứng dụng thiết kế hệ giải tốn Hình học khơng gian

- Ưu tiên sử dụng các quy tắc xác định đối tượng và thuộc tính.

- Dùng luật biến đổi đối tượng thành đối tượng ở cấp độ cao hơn trong đồ thị phân cấp nếu có đủ dữ kiện.

- Sử dụng luật để sinh ra các đối tượng mới có quan hệ với các đối tượng đã có, đặc biệt là các mục tiêu.

- Ưu tiên sử dụng luật hay dạng suy luận để phát sinh ra sự kiện liên quan đến các sự kiện mục tiêu.

- Khi có một đối tượng mới được phát sinh trong quá trình sử dụng luật phát sinh đối tượng, ta tiến hành dị tìm luật có thể áp dụng nhằm phát sinh sự kiện mới trước khi thực hiện phát sinh đối tượng tiếp theo.

Tiếp đến là việc kiểm tra luật có thể áp dụng vào bài tốn hay khơng và nếu thỏa thì bước kế tiếp là việc áp dụng luật vào bài toán nhằm phát sinh sự kiện mới, các đối tượng mới và đạt đến trạng thái mới của quá trình suy luận.

a. Thuật toán

Sau đây là thuật toán kiểm tra và áp dụng một luật vào bài toán: - Ký hiệu các biến hỗ trợ trong việc tìm kiếm luật:

FactSet Lưu các sự kiện của bài toán

Hypos Tập sự kiện giả thiết của luật rule đang xét Goals Tập sự kiện kết luận của luật rule đang xét UnifyObjects Lưu trữ các đối tượng đồng nhất

FactSetTable Lưu bảng các sự kiện theo từng loại cấu trúc

FactSetStruct Lưu cấu trúc của tập FactSet kèm số lượng cụ thể của từng loại cấu trúc

Chương 4. Ứng dụng thiết kế hệ giải tốn Hình học khơng gian

- Thuật giải tìm luật áp dụng cho bài tốn:

Thuật tốn

Input: FactSet: Các sự kiện đang có của bài tốn và luật r

Các ký hiệu: Hypos: Tập sự kiện giả thiết của luật r đang xét Goals: Tập sự kiện kết luận của luật r đang xét

Output: Các sự kiện mới (nếu có) khi áp dụng luật r lên bài toán P

Bước 1: Xét khả năng áp dụng được của luật. Nếu áp dụng được luật (chỉ xét về

cấu trúc của luật, chưa có sự hợp nhất cụ thể) thì chuyển sang bước 2. Ngược lại thì KẾT THÚC và xét luật tiếp theo.

Bước 2: Dựa vào tập FactSet và tập sự kiện trong tập Hypos của luật, tạo các

bảng dữ liệu tương ứng với từng sự kiện trong tập Hypos.

Bước 3: Sử dụng Sort Merge Join để thực hiện kết các các bảng sự kiện theo các

cột chung (các đối tượng chung). Nếu kết quả bằng NULL thì luật khơng áp dụng được cho bài tốn, KẾT THÚC. Ngược lại thì luật hồn tồn có thể áp dụng cho bài toán. Chuyển sang Bước 4.

Bước 4: Thay thế các đối tượng thực tế áp dụng trên luật đang xét và đưa các sự (adsbygoogle = window.adsbygoogle || []).push({});

kiện trong phần Goals của luật vào tập FactSet (nếu sự kiện đó chưa có trong tập FactSet)

Dưới đây đề tài sẽ trình bày và cho ví dụ minh họa cụ thể từng bước trong thuật toán trên:

Bước 1: So sánh cấu trúc của các loại sự kiện trong tập Hypos của rule đang

xét và tập FactSet hiện tại của bài toán, nếu các cấu trúc sự kiện trong tập Hypos có tồn tại trong FactSet => rule được xét. Cách thực hiện:

- B1: Tìm cấu trúc của các sự kiện giả thiết trong rule lưu vào biến hypoStructs

Ví dụ: Xét luật P_13, ta có hypoStructs := [[["Diem", "TrungDiem", ["Diem", "Diem"], {"doi xung"}] = "Diem", [["Thuoc", "Diem", "Doan"], {}], [["SongSong", "Duong", "Duong"], {"doi xung"}]], [1, 1, 1]]

- B2: Thực hiện so sánh hypoStructs và FactSetStruct. Nếu kết quả bằng true thì luật sẽ được xem xét tiếp, ngược lại thì bỏ qua luật đó.

Bước 2: Dựa vào tập FactSet và tập sự kiện trong tập Hypo của luật, tạo các

bảng dữ liệu tương ứng với từng sự kiện trong tập Hypo. Việc tạo bảng dữ liệu tương ứng này là một phần quan trọng trong q trình áp dụng luật cho bài tốn.

Chương 4. Ứng dụng thiết kế hệ giải tốn Hình học khơng gian

- hypoFact là một sự kiện hiện tại của luật đang được xét

- realFacts là các sự kiện thực tế trong bài tốn đang có có cấu trúc giống như của hypoFact

Cách thực hiện tạo bảng cho mỗi sự kiện như sau:

Thuật tốn

Bước 1: Tìm tất cả các sự kiện realFacts trong FactSet mà có cấu trúc giống cấu

trúc của hypoFact

Bước 2: Tạo dòng header cho bảng từ hypoFact. Header là dòng gồm các đối

tượng cơ bản có thứ tự xuất hiện trong hypoFact

Bước 3: Tạo từng dòng dữ liệu cho bảng tương ứng với từng sự kiện trong

realFacts.

Đối với những sự kiện đối xứng:

Trường hợp 1: Các thành phần đối xứng có cùng loại => khơng phân biệt các

thành phần đó. Ví dụ: TrungDiem(A, B)=M, vì khi tạo bảng, sk trong realFacts sẽ ghi hết cả 2 trường hợp. Ví dụ: một sk trong realFacts như sau: TrungDiem(C, D)=O => phải phát sinh thêm 1 trường hợp nữa là TrungDiem(D, C)=O

Trường hợp 2: Các thành phần đối xứng không cùng loại => chuyển sự kiện

realFacts về dạng tương ứng với hypoFact. Ví dụ hypoFact: GiaoDiem(d, P)=A, sk trong realFacts là GiaoDiem(Q, a)=B => Phải chuyển lại thành: GiaoDiem(a, Q)=B.

Đối với đối tượng có cấu trúc: Phát sinh tất cả các tên gọi có thể của đối tượng đó.

Chú ý: Trong q trình tìm Header, ta lưu lại vết của nó. Xem 2 ví dụ bên dưới:

Ví d ụ 1:

- Với sự kiện giả thuyết trong luật như sau: GiaoDiem(d, P) = B => trace:= [[3], [4], [5]]

- Ta có sự kiện bài tốn như sau: GiaoDiem(Duong[A,B], Q) = C => Ta sẽ lấy [ [Duong[A, B]], [Q], [C] ] (adsbygoogle = window.adsbygoogle || []).push({});

- Nếu trace:= [3, [4], [5]] => Ta sẽ lấy [ [[A, B], [B, A]], [Q], [C] ], trong khi đó trong sự kiện này khơng cần cụ thể đường thẳng AB có bao nhiêu cách viết.

Ví d ụ 2 :

- Với sự kiện giả thuyết trong luật như sau: ["Thuoc", N, Doan[A, C]] = B => trace:= [[2], 3]

Chương 4. Ứng dụng thiết kế hệ giải tốn Hình học khơng gian

- Ta có sự kiện bài tốn như sau: ["Thuoc",H,Doan[B, C]] => Ta sẽ lấy [ H, [ [B, C], [C, B]] ]

- Nếu trace:= [[2], [3]] => Ta sẽ lấy [ [H], [B, C] ], trong khi đó trong sự kiện này cần bao quát hết cả 2 trường hợp của đoạn thẳng, vì đoạn BC có 2 cách viết là BC và CB.

Qua khảo sát luật về hình học khơng gian trong phạm vi cho trước, thì trong tập sự kiện giả thiết của luật khơng có dạng các sự kiện loại 2, 7, 8, 10, 11. Vì vậy đề tài sẽ khơng tìm cách tạo bảng dữ liệu tương ứng với các sự kiện này. Dưới đây là một số hình vẽ minh họa cho thuật tốn tạo các bảng dữ liệu tương ứng với từng loại sự kiện cụ thể loại 1, 3, 4, 5, 6, 9, 12.

- Sự kiện loại 1: Tạo bảng dữ liệu từ sự kiện của luật [HinhChopTuGiacDeu[S, A, B, C, D], “HinhChopTuGiacDeu”] cho một sự kiện của bài toán [HinhChopTuGiacDeu[S, E, F, C, D], “HinhChopTuGiacDeu”].

Hình 4.9 Kiểm tra và áp dụng luật vào bài toán: Tạo bảng dữ liệu cho sự kiện loại 1

- Sự kiện loại 3: Tạo bảng dữ liệu từ sự kiện của luật Goc[B, A, C]=90 cho một sự kiện của bài toán Goc[E, F, C]=90.

Chương 4. Ứng dụng thiết kế hệ giải tốn Hình học khơng gian

Hình 4.10 Kiểm tra và áp dụng luật vào bài toán: Tạo bảng dữ liệu cho sự kiện loại 3

Chương 4. Ứng dụng thiết kế hệ giải tốn Hình học khơng gian

- Sự kiện loại 4: Tạo bảng dữ liệu từ sự kiện của luật Doan[A, B]=Doan[A, C] cho một sự kiện của bài tốn Doan[M, N]=Doan[K, M].

Hình 4.11 Kiểm tra và áp dụng luật vào bài toán: Tạo bảng dữ liệu cho sự kiện loại 4

- Sự kiện loại 5:

Bước 1: Tạo bảng tìm tổ hợp các đối tượng thỏa các sự kiện của tập giả thiết luật (chưa xét tới sự kiện loại 5).

Bước 2: Sau đó ta sẽ thế tổ hợp các đối tượng tìm được ở bước 1 vào sự kiện loại 5 và lần lược xét xem sk loại 5 mới đó có nằm trong tập FactSet của bài tốn khơng. Nếu có thì giữ lại tập tổ hợp đó và kết thúc, ngược lại thì thực hiện tiếp cho tới hết.

Chương 4. Ứng dụng thiết kế hệ giải tốn Hình học khơng gian

- Sự kiện loại 6:

Tạo bảng dữ liệu từ sự kiện của luật [“Thuoc”, d, P] cho các sự kiện của bài toán [“Thuoc”, Duong[A, B], Q] và [“Thuoc”, Duong[A, B], MatPhang[A, B, C]].

Hình 4.12 Kiểm tra và áp dụng luật vào bài toán: Tạo bảng dữ liệu cho sự kiện loại 6

Tạo bảng dữ liệu từ sự kiện của luật [“Thuoc”, N, Doan[A, C]] cho một sự kiện của bài toán [“Thuoc”, H, Doan[B, C]].

Chương 4. Ứng dụng thiết kế hệ giải tốn Hình học khơng gian

Hình 4.13 Kiểm tra và áp dụng luật vào bài toán: Tạo bảng dữ liệu cho sự kiện loại 6

Tạo bảng dữ liệu từ sự kiện của luật [“SongSong”, Duong[A, B], Duong[C, D]] cho một sự kiện của bài tốn [“SongSong”, Duong[M, N], Duong[B, C]].

Hình 4.14 Kiểm tra và áp dụng luật vào bài toán: Tạo bảng dữ liệu cho sự kiện loại 6

Chương 4. Ứng dụng thiết kế hệ giải tốn Hình học khơng gian

Tạo bảng dữ liệu từ sự kiện của luật [“VuongGoc”, d, P] cho một sự kiện của bài toán [“VuongGoc”, Duong[S, A], MatPhang[A, B, C]].

Hình 4.15 Kiểm tra và áp dụng luật vào bài toán: Tạo bảng dữ liệu cho sự kiện loại 6 (adsbygoogle = window.adsbygoogle || []).push({});

- Sự kiện loại 9:

Tạo bảng dữ liệu từ sự kiện của luật TrungDiem(A, B)=M cho một sự kiện của bài toán TrungDiem(C, A)=N.

Chương 4. Ứng dụng thiết kế hệ giải tốn Hình học khơng gian

Tạo bảng dữ liệu từ sự kiện của luật GiaoDiem(d, P)=B cho các sự kiện của bài toán GiaoDiem(Duong[B, C], P)=C và GiaoDiem(Duong[A, B], MatPhang[A, B, C])=B.

Hình 4.17 Kiểm tra và áp dụng luật vào bài toán: Tạo bảng dữ liệu cho sự kiện loại 9

- Sự kiện loại 12:

Tạo bảng dữ liệu từ sự kiện của luật [“Thuoc”, A, GiaoTuyen(P, Q)] cho một sự kiện của bài toán [“Thuoc”, A, GiaoTuyen(MatPhang[A, B, C], MatPhang[A, B, D])].

Chương 4. Ứng dụng thiết kế hệ giải tốn Hình học khơng gian

Hình 4.18 Kiểm tra và áp dụng luật vào bài toán: Tạo bảng dữ liệu cho sự kiện loại 12

Bước 3: Phương pháp Sort Merge Join là phương pháp hiệu quả trong việc xử

lý và tối ưu hoá truy vấn dữ liệu. Và đây cũng chính là phần chính yếu của thuật tốn áp dụng luật vào bài tốn.

b. Ví dụ minh họa

Cho luật phát sinh điểm như sau: ["Thuoc", d, P], ["Thuoc", d1, P], ["Cat", d, d1] => Gọi H= GiaoDiem(d, d1) và bài toán P. Kiểm tra luật trên có áp dụng được cho bài tốn P hay khơng? Biết rằng tập UnifyObjects và tập FactSet của bài toán P tại thời điểm xét luật như sau:

UnifyObjects := table([

_I = {_I}, S = {S}, K = {K}, B = {B}, C = {C}, A = {A}, Duong[_I, K] = {Duong[K, _I], Duong[_I, K]}, Duong[_I, K] = {Duong[K, _I], Duong[_I, K]}, Duong[S, A] = {Duong[A, S], Duong[A, _I], Duong[S, A],

Duong[S, _I], Duong[_I, A], Duong[_I, S]}, Duong[B, K] = {Duong[B, K], Duong[K, B]},

Duong[C, _I] = {Duong[C, _I], Duong[_I, C]}, Duong[A, C] = {Duong[A, C], Duong[C, A]},

Duong[C, B] = {Duong[B, C], Duong[C, B]}, Duong[A, B] = {Duong[A, B], Duong[B, A]},

MatPhang[A, B, C] = {MatPhang[A, B, C], MatPhang[B, C, A], MatPhang[C, A, B]}, MatPhang[S, A, B] = {MatPhang[A, B, S], MatPhang[B, S, A],

Chương 4. Ứng dụng thiết kế hệ giải tốn Hình học khơng gian

MatPhang[S, A, C] = {MatPhang[A, C, S], MatPhang[C, S, A], MatPhang[S, A, C]},

MatPhang[S, B, C] = {MatPhang[B, C, S], MatPhang[C, S, B], MatPhang[S, B, C]} ] );

FactSet := {

A = GiaoDiem(Duong[A, C], MatPhang[S, A, B]), ["Thuoc", S, Duong[S, A]],

["Thuoc", Duong[B, K], MatPhang[S, B, C]], ["Thuoc", Duong[A, B], MatPhang[A, B, C]], ["Thuoc", Duong[C, _I], MatPhang[S, A, C]], ["Thuoc", Duong[K, _I], MatPhang[S, A, C]], ["Thuoc", Duong[C, B], MatPhang[S, B, C]], ["Thuoc", Duong[C, A], MatPhang[S, A, C]], ["Cat", Duong[_I, K], Duong[A, C]],

["ThangHang", A, S, _I] };

Các bước thực hiện như sau:

Bước 1: Xét khả năng áp dụng được của luật.

Bước 2: Dựa vào FactSet và 3 sự kiện của tập giả thiết để tạo 3 bảng dữ liệu

tương ứng (cách tạo đã trình bày phần trên). Trong đó header của bảng là các đối tượng cơ bản trong sự kiện giả thuyết luật, dữ liệu của bảng là các loại đối tượng tương ứng trong sự kiện thực tế bài toán thỏa sự kiện giả thuyết luật: (adsbygoogle = window.adsbygoogle || []).push({});

# ["Thuoc", d, P] fact1 := [ [d, P], [ [Duong[B,K], MatPhang[S,B,C]], [Duong[A,B], MatPhang[A,B,C]], [Duong[C,_I], MatPhang[S,A,C]], [Duong[K,_I], MatPhang[S,A,C]], [Duong[C,B], MatPhang[S,B,C]], [Duong[C,A], MatPhang[S,A,C]] ] ]; # ["Thuoc", d1, P] fact2 := [ [d1, P], [ [Duong[B,K], MatPhang[S,B,C]], [Duong[A,B], MatPhang[A,B,C]], [Duong[C,_I], MatPhang[S,A,C]], [Duong[K,_I], MatPhang[S,A,C]], [Duong[C,B], MatPhang[S,B,C]], [Duong[C,A], MatPhang[S,A,C]] ] ];

Chương 4. Ứng dụng thiết kế hệ giải tốn Hình học khơng gian # ["Cat", d, d1] fact3 := [ [d, d1], [ [Duong[_I, K], Duong[A, C]], [Duong[A, C], Duong[_I, K]] ] ];

Bước 3: Sử dụng Sort Merge Join để tìm tổ hợp các đối tượng của bài toán

thỏa luật đang xét

Một phần của tài liệu Phát triển một mô hình biểu diễn tri thức hàm và phương pháp giải quyết các vấn đề (Trang 52 - 65)