Bài toán suy diễn logic

Một phần của tài liệu Giáo trình kỹ thuật lập trình C (Trang 101 - 103)

II. LOGIC MỆNH ĐỀ

7. Bài toán suy diễn logic

Kỹ thuật lập trình nâng cao - 101 -

Quân tử luôn nói thật và tiểu nhân luôn nói dối. Một người hỏi một dân cư A trên đảo : "có phải anh là một quân tử ?". A đáp :"nếu tôi là quân tử thì tôi thua tiền anh ". Hãy chứng minh rằng : A nhất định phải thua tiền.

Ta mô hình hóa bài toán như sau :

Đặt các mệnh đề P : A là quân tử. Q : A phải trả tiền. Kết luận phải chứng minh là Q.

Khảo sát giả thiết của bài toán:

+ Mệnh đề khẳng định : " A là tiểu nhân " là not P

+ A phát biểu một mệnh đề S. giả thiết cho biết : Nếu A là quân tử thì S phải đúng tức là : P ==> S

+ Nếu A là tiểu nhân thì S phải sai : not p ==> not s

+ S là một hàm ý : " Nếu A là quân tử thì A phải trả tiền". Ta biểu thị S bởi : p ==> q

Như vậy tiền đề là : (P ==> S) and (not P ==> not S) theo luật tương đương (k) ta có thể viết là : P <==> S.

Bài toán được phát biểu dưới dạng thuần tuý logic như sau : Cho tiền đề P <==> (P ==> Q)

Có thể suy diễn được kết luận Q không ?

Ta sẽ xác lập rằng (lý luận trên là đúng) mệnh đề (P <==>(p ==> Q)) ==> Q là đúng với mọi bộ giá trị đúng sai của các mệnh đề thành phần .

Có hai cách : (a) Dùng bảng giá trị đúng sai . P Q ( P <==> ( P ==> Q ) ) ==> Q ––––––––––––––––––––––––––––––––––––– T T ( T <==> T ) ==> T F T ( F <==> T ) ==> T T F ( T <==> F ) ==> F F F ( F <==> T ) ==> F

(b) Dùng cách thay thế bằng các mệnh đề tương đương . P <==> (P ==> Q) P <==> (not P or Q) (hàm ý) ≡

≡ [(P and (not P or Q)] or [not P and not (not P or Q )] (tương đương)

mà not P and not (not P or Q) ≡ not P and (not not P and not Q) ≡ not P and ( P and not Q) ≡ (not P and P) and not Q ≡ false and not Q ≡ false và P and (not P or Q) ≡ (P and not P) or (P and Q) ≡ false or (p and Q) ≡ P and Q

Như vậy P <==> (P ==> Q) ≡ P and Q

Kỹ thuật lập trình nâng cao - 102 -

≡ not (P and Q) or Q ≡ (not P or not Q) or Q ≡ not P or (not Q or Q) ≡ not P or true ≡ true

Với các bài toán chỉ liên quan đến ít mệnh đề như trong ví dụ trên, cách dùng bảng chân trị đơn giản hơn . Nhưng nên cố gắng sử dụng cách biến đổi tương đương, bởi vì áp dụng thực tiễn của nó là lớn hơn nhiều.

Một phần của tài liệu Giáo trình kỹ thuật lập trình C (Trang 101 - 103)

Tải bản đầy đủ (PDF)

(109 trang)