關於邏輯學家的經典問題

2021-03-31 08:56:59 字數 1249 閱讀 7996

[原創]seafrog

一邏輯學家誤入某部落,被囚於牢獄,酋長欲意放行,他對邏輯學家說:「今有兩門,一為自由,一為死亡,你可任意開啟一門。現從兩個戰士中選擇一人負責解答你所提的任何乙個問題(y/n),其中乙個天性誠實,一人說謊成性,今後生死任你選擇。」邏輯學家沉思片刻,即向一戰士發問,然後開門從容離去。邏輯學家應如何發問?

本文對這道題進行的詳細的分析,希望能對各位朋友解數理邏輯題能提供一些思路。

山大計計算機學院的《離散數學(下)》課本第471頁上有這樣乙個問題:

一邏輯學家誤入某部落,被囚於牢獄,酋長欲意放行,他對邏輯學家說:「今有兩門,一為自由,一為死亡,你可任意開啟一門。現從兩個戰士中選擇一人負責解答你所提的任何乙個問題(y/n),其中乙個天性誠實,一人說謊成性,今後生死任你選擇。」邏輯學家沉思片刻,即向一戰士發問,然後開門從容離去。邏輯學家應如何發問?

一種合理的答案應該是這樣的:邏輯學家指著乙個門問乙個問題,不管他問的人是誠實的還是說謊的,如果這個門是自由之門則回答是,如果是死亡之門則回答否。對於對戰士問的問題,可以包含兩個簡單命題,不妨把這兩個簡單命題符號化:

p:這個門是自由之門;q:你是誠實的

對於這兩個命題有4種組合:

p q

0 0

0 1

1 0

1 1

把戰士的回答符號化:a:戰士的回答

如果邏輯學家指的這個門是自由之門則p=1則,不管他問的人是誠實的還是說謊的,總有a=1

如果邏輯學家指的這個門不是自由之門則p=0則,不管他問的人是誠實的還是說謊的,總有a=0

即對上面的4種組合,有:

p q a

0 0 0

0 1 0

1 0 1

1 1 1

考慮到當q=0時的回答是假的,所以實際的原子命題的真值應該是:

p q a

0 0 1

0 1 0

1 0 0

1 1 1

這樣就很清楚了,回想到那5個基本邏輯關係:非、合取、析取、蘊涵和等價的真值表,我們發現只有等價的真值表是和上面這個表是一樣的,所以,答案是:

邏輯學家應該問:

p ←→ q嗎?

即問題應該這樣問:「命題p等價於命題q這個命題是否是真命題?」或「我指的門是真的當且僅當你是誠實的嗎?」)

當然,對部落中野蠻人這樣的問他有可能聽不懂,邏輯學家就不知道該怎麼辦了,也許你也可以請語言學家出來幫忙:)

經典程序的同步問題之 哲學家進餐

哲學家進餐問題描述 由dijkstra提出並解決哲學家進餐問題 the dinning philosophers problem 是經典的同步問題。該問題是描述有五個哲學家共用一張圓桌,分別坐在周圍的五張椅子上,在桌子上有五個碗和五隻筷子,他們的生活方式是交替的進行思考和進餐。平時,乙個哲學家進行思...

關於大小端的經典問題

int ptr1 int a 1 可以這樣理解 a 1相當於a 5,相當於跨過了整個數值,然後ptr1 1 輸出其前乙個,就是結果5了。int ptr2 int int a 1 這個可以這樣理解 這個裡面 int a 1,a是指的乙個位址00h,當然位址也是由資料表示的,int a就是吧這個位址資料...

幾個關於GetMemory的經典問題

test1 void getmemory1 char p void test1 void 呼叫getmemory str 後,str並未產生變化,依然是null。改變的只是str的乙個拷貝的記憶體的變化 strcpy str,hello world 程式執行到這將產生錯誤。test2 char ge...