Bài tốn suy diễn logic

Một phần của tài liệu Giáo trình kỹ năng lập trình nâng cao (Trang 100 - 102)

II. LOGIC MỆNH ĐỀ

7. Bài tố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 tố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 tố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 tố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 tố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ỹ năng lập trình nâng cao (Trang 100 - 102)