《可汗學院公開課:腦筋急轉彎》簡要

網易公開課地址

一、誠實人與說謊者

問題:

兩個箱子,一個有財寶,另一個沒有;

有一個誠實人和一個說謊者,他們都知道哪個箱子有財寶;

但你不知道哪個是誠實人哪個是說謊者

如何問他們兩人問題,確定哪個箱子有財寶。

答案:

“如果問另一個人,哪個箱子有財寶,對方會怎么回答?”

分析:

可以把問題改為“如果問另一個人,箱子A有財寶是對的嗎”

“箱子A有財寶"這是一個斷言A。斷言A可能為真或假

假如有兩個布爾函數F和G,存在2種情況:

1、F(x) = x,G(x) = not x ?

2、F(x) = not x,G(x) = x?

要求用F和G構造一個函數H(x)=x

那么H(x)可以為H(x) = not F(G(x))


二、善變者

問題:

善變者----初始狀態隨機,可以為誠實人,也可以為說謊者。其每次回答一個問題后,就切換狀態,從城市人轉換為說謊者,或從說謊者轉換為誠實人。

五個人,四個善變者,一個誠實人。

能問兩個問題,可以對同一個人問兩個問題,或找兩個人分別問一個問題。

如何找到誠實人。

答案:

問題一:你是誠實人嗎?

問題二:問題一回答“是”(這輪肯定是誠實人)   你們當中誰是誠實人?

    問題一回答“不是”(這輪肯定不是誠實人)  你們當中誰不是誠實人?

分析:

問題二的第二個問的問法很有技巧。不過找不到比較合適的“數學”表示法

三、外星人來襲!

問題:

100個人,排隊,每人一頂帽子,帽子可能是紫色也可以是綠色。第i個人可以看見前i-1個人的帽子。

從第100個人開始至第1個人報帽子的顏色,如果他報錯了,則咔擦掉,如果報對了,則平安。

問用什么樣的策略報數,可以使得掛掉的人最少。

答案:

第100個人,如果前99個人紫色帽子的個數是奇數,則報紫色,否則報綠色。

對于1-99中的第i個人

1、他知道前i-1個人的紫色帽子個數是否是奇數;

2、如果第i+1至99報數的人都正確,那么他知道從i+1至99的紫色帽子個數是否是奇數;

3、根據第100個人,他知道前99個人中的帽子個數是否是奇數;

根據前面3個條件,第i個人可以計算出他頭上帽子是什么顏色的。

(注意第99個人我們可以認為從i+1至99中沒有人,也就是紫色帽子的個數是0,為偶數)

聯想:

用布爾運算表示會顯得更“準確”點,有點類似一個結構體用一個指針卻要表示雙向鏈表的方法。

四、藍額頭房間

問題:

100個邏輯學家參與游戲。

游戲規則:

1、100個邏輯學家蒙眼被帶進房間,然后至少一個邏輯學家額頭被涂成了藍色。最后去掉蒙眼布。

2、然后不斷的關燈,開燈;在關燈的時候,如果某個邏輯學家推斷出他是藍額頭,那么他離開房間。

3、全部藍額頭的人離開房間后,游戲結束。

如果每個人都被涂了藍額頭,會發生什么?

答案:

在第100次關燈的時候,全部人同時離開房間。

分析:

假如只有一個人是藍額頭,那么第一輪他會離開房間;

假如有2個人是藍額頭,那么第一輪沒有人離開房間。而這2個人只看到一個藍額頭,那么他會在這一輪離開房間。(他會這樣推理,另外那個藍額頭的人除非看到了自己是藍額頭,否則他會在上一輪離開房間)

以此類推。。

擴展:

http://www.newsmth.net/bbscon.php?bid=51&id=155695

一個島上有100個人,其中有5個紅眼睛,95個藍眼睛。這個島有三個奇怪的規則。

1. 他們不能照鏡子,不能看自己眼睛的顏色。

2. 他們不能告訴別人對方的眼睛是什么顏色。

3. 一旦有人知道了自己是紅眼睛,他就必須在當天夜里自殺。

某天,有個旅行者到了這個島上。由于不知道這里的規矩,所以他在和全島人一起狂歡

的時候,不留神就說了一句話:"你們這里有紅眼睛的人。"

假設這個島上的人足夠聰明,每個人都可以做出縝密的邏輯推理。請問這個島上將會發

生什么?

陶哲軒說,這個旅行者事實上講了一句廢話,沒有帶來任何新的信息。因為這島上有95個藍眼睛,5個紅眼睛。每個人都知道這島上有紅眼睛的人。無非是藍眼睛的人看到有5個紅眼睛,紅眼睛的人看到有4個紅眼睛而已。旅行者說的那句"島上有紅眼睛的人",沒有輸入任何新的信息,他說的就是島上的人每天都看到的景象。所以哪怕島上的人思維再縝密嚴謹,也不會有任何自殺的情況發生。

(神和人的區別太明顯了。。)

五、占位符

課程上對應的第5節是“藍額頭房間”的分析

六、數字額頭游戲

問題:

把3個邏輯學家放進房間里面,在3個邏輯學家頭上寫上3個不同的數字,其中某個數字是其他兩個數字之和。

A看見了B額頭上寫了20, C額頭上寫了30

A:我不知道我頭上寫的是多少?

B:我也不知道

C:我也不知道

A:我知道了

問:A額頭上寫的是多少?

答案:

A看到20和30=>A知道他頭上的數組不是10就是50

1、如果A頭上的數是10

B看到10和30=>那么B會知道他頭上的數字不是20就是40

C看到10和20=>C會知道他頭上的數字不是10就是30;但由于3個數都不相同,那么C會知道他頭上的數字就是30,那么C能確定他頭上的數字是30

結論:A頭上的數字不是10,那么就只會是50

聯想:

如果復雜到一定程度,人腦容不下這么復雜狀態,怎么寫程序解?

七、燈亮or燈滅

問題:

100個燈泡,起始全是滅的。

執行100次步驟:第i次步驟,對i,2*i,3*i 。。的燈全部切換一下開關(滅的開等,亮的關燈)

最后有多少燈是亮的

答案:

對第n個燈,假如他有k個因子,那么他會被切換k次開關;但k為奇數時,這個燈會是亮的。而只有平方數是有奇數個因子,100里面有10個平方數,所以答案為10

八、路徑計算

問題:

n*m網格,從(1,1)走到(n,m)有多少種走法?只能向下或向右走一步

答案:

組合數C(n+m-2, n - 1)。

視頻里面居然先用二維遞推解一遍,然后又用母函數解一遍

分析:

從(1,1)走到(n,m)需要n+m - 2步,其中有n-1步是向下的

聯想:

用來了解下遞推或母函數也是不錯的

九、三維路徑計算

問題:

x*y*z正方體,從(1,1)走到(x,y,z)有多少種走法?只能向下或向右走一步

解法:

同上題

聯想:

如果是在正方體表面行走,似乎遞推方便點,用組合數比較麻煩。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 問題一 “你面前有兩扇門,其中一扇門內藏著寶藏,但如果你不小心闖入另一扇門,只能痛苦地慢慢死掉……” 這一聽就是那...
    CoderBigBear閱讀 1,581評論 0 0
  • 因為那位穿藍色套裝戴黃色眼鏡的大齡清潔女工把一袋用過的姨媽巾扔在了她身上 發臭了還流著噁心的血
    莉本莉閱讀 213評論 0 0
  • 結論 識人查務,技巧出焉。 若有人隱藏過去的信息,就是過去不好,或者想躲避某人某事。隱藏現在、未來也是這樣。 隱藏...
    油炸了的ji閱讀 285評論 0 1
  • 查理·芒格,一個成功的商人,同時也是一位睿智的長者,他的智慧值得我們每個人學習。「得到」App整理了這位世界上最真...
    檸哥說書閱讀 182評論 0 1