Thuật toán giải bài toán suy diễn tiến

2 10.1K 187
Thuật toán giải bài toán suy diễn tiến

Đang tải... (xem toàn văn)

Thông tin tài liệu

Thuật toán giải bài toán suy diễn tiến

Suy diễn tiến - Một giải thuật thú vịLê Nhật QuangĐã bao giờ bạn muốn xây dựng một chương trình giải toán tự động, chỉ cần nhập một đề toán, sau đó, chương trình trình sẽ đưa ra phương pháp giải, hoặc hơn nữa, chương trình sẽ tự động tính toán luôn kết quả cho bạn. Nếu câu trả lời là ″có″ thì thuật giải này sẽ là công cụ tuyệt vời để hỗ trợ cho bạn đấy! Bây giờ, chúng ta cùng tìm hiểu về thuật giải này: I/ Giới thiệu thuật giải: 1/ Hệ luật dẫn: là luật phát biểu dưới dạng: If p1,p2,…,pn then q1,q2,…,qm Trong đó, các ký hiệu pi,qj là các sự kiện nào đó. VD : - If a>b, b>c then a>c - If a=b then b=a … 2/ Mô hình hệ luật dẫn: Gồm 2 thành phần cơ bản (F,R) F là tập sự kiện , R là tập luật dẫn, mỗi luật có dạng: A---->B (A là giả thiết, B là kết luận của luật) VD: Các liên hệ suy dẫn trên các yếu tố của một tam giác theo hệ luật dẫn: (1) Tập sự kiện: F={a,b,c,A,B,C,R,S,p,ha,hb,hc,…} Trong đó: sự kiện a tương đương với ″biết cạnh a″ sự kiện b tương đương với ″biết cạnh b″ … (2) Tập luật dẫn: R={ r1 : A,B-> C, r2: a,b,c->S, … } 3/ Vấn đề suy diễn: Giả sử có hệ luật dẫn (F,R). Cho trước một tập sự kiện giả thiết GT và một tập sự kiện mục tiêu G. Hỏi có thể suy ra các sự kiện mục tiêu G từ GT hay không? 4/ Suy diễn tiến: Là quá trình suy ra các sự kiện mới từ những sự kiện đang có dự trên sự áp dụng của các luật dẫn, tập sự kiện xuất phát là các sự kiện trong giả thiết. Quá trình suy diễn kết thúc khi đạt được các sự kiện mục tiêu hoặc khi không suy diễn thêm được sự kiện gì mớidựa trên các luật dẫn. VD: GT={a,b,A} G={S} Quá trình suy diễn: - a,b,A -> B (luật a,b,A -> B dựa trên định lý hàm số Sin) GT1={a,b,A,B} - A,B-> C (luật A,B->C dựa trên định lý tổng các góc trong tam giác ) - C,a,b->S (luật C,a,b->S dựa theo công thức S=1/2abSinC) -> từ a,b,A ta suy được S. II/ Thuật giải suy diễn tiến: Bước 1: Ghi nhận tập sự kiện ban đầu A=giả thiết và mục tiêu là B. Bước 2: Tìm luật dẫn r: GT->KL sao cho GT thuộc A Bươc 3: if (tìm được luật r) then 3.1 : Ghi nhớ luật r 3.2: Bổ sung luật r (KL của luật r) vào A. 3.3 if (B thuộc A) then Kết thúc end else Kết thúc: bị bế tắc. Bươc 4: Trở lại bước 2. Sau khi đọc xong thuật giải suy diễn tiến, bạn có thể tự xây dựng một chương trình giải toán đơn giản, ví dụ như giải toán hình học trong hệ luật dẫn tam giác. VD: Nhập giả thiết: a b c - mục tiêu: hc Chương trình cho ra kết quả: âb^c -> S (S=a*b*c/4*R) S^c -> hc (hc=2*S/c) Bạn nên tổ chức 1 file dữ liệu chứa tập sự kiện F và tập luật dẫn R. Chương trình sẽ dựa trên file dữ liệu này để giải một số bài toán. Đây là cấu trúc file dữ liệu đề nghị: - Dòng 1: Chứa tập sự kiện của tam giác a b c A B C ha hb hc p r R S - K dòng tiếp theo chứa các luật dẫn và các chú thích : ÂB -> C (C=180-B-A) C,a,b->S (S=1/2abSinC) … Đây là một thuật giải đơn giản và hay,với một chút khéo léo trong việc xử lý, tôi nghĩ bạn sẽ dễ dàng xây dựng được chương trình này. Một điều lưu ý nữa là thuật giải này có thể sẽ làm một số bước dư thừa, bạn có thể dùng phương pháp quay lui hay tìm kiễm theo chiều rộng để tìm ra kết quả một cách tối ưu và công việc này xin nhường lại cho bạn! Nếu có thắc mắc hay cân chưưong trình ví dụ thì xin lien lạc vối tôi tại địa chỉ: michealnest@hcmc.netnam.vn. . bước 2. Sau khi đọc xong thuật giải suy diễn tiến, bạn có thể tự xây dựng một chương trình giải toán đơn giản, ví dụ như giải toán hình học trong hệ luật. Suy diễn tiến - Một giải thuật thú vịLê Nhật QuangĐã bao giờ bạn muốn xây dựng một chương trình giải toán tự động, chỉ cần nhập một đề toán, sau

Ngày đăng: 07/09/2012, 10:55

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan