解決任何難題的關(guān)鍵是要敏銳捕捉那些能夠表明問(wèn)題性質(zhì)的關(guān)鍵線索。這些線索有多種表現(xiàn)形式——從問(wèn)題的遣詞造句和提問(wèn)人的語(yǔ)調(diào),到你對(duì)假設(shè)本身的邏輯推斷。
如果你在一艘很快就要沉沒(méi)的船上,最先扔掉的東西肯定是最重、最不值錢(qián)的東西。同樣,排除錯(cuò)誤假設(shè)的方法也應(yīng)該按照最無(wú)關(guān)到最本質(zhì)的順序進(jìn)行。所列的第一個(gè)假設(shè)(不能打開(kāi)瓶子)相對(duì)來(lái)說(shuō)很少有人感到困擾,題目中沒(méi)有明確說(shuō)明允許打開(kāi)瓶子,也沒(méi)有說(shuō)明不允許打開(kāi)瓶子。問(wèn)題問(wèn)的是哪一個(gè)“瓶子”污染了,而不是哪一瓶藥丸污染了。生性小心的人或者完美主義者尋找一流的解決方案,認(rèn)為可以把瓶子進(jìn)行整體稱(chēng)重。這種想法本身是沒(méi)有錯(cuò)的,解題的人初見(jiàn)這個(gè)問(wèn)題總是會(huì)有一種這樣強(qiáng)烈的感覺(jué)。
但是再仔細(xì)想一想,就會(huì)發(fā)現(xiàn)這個(gè)假設(shè)本身是不成立的。假定你選定2號(hào)瓶來(lái)稱(chēng)重,天平顯示重量為1 027克。那么瓶子的重量是多少呢?你無(wú)從得知。沒(méi)有人告訴你瓶子的重量。瓶子里有多少藥丸?你也無(wú)從得知。也沒(méi)有人會(huì)告訴你瓶子里有多少藥丸。除非瓶子里的藥丸數(shù)量很少,可以數(shù)得清楚,否則你就像一個(gè)通過(guò)猜測(cè)瓶子里的彈子數(shù)量來(lái)贏取自行車(chē)的孩子一樣,哪有什么準(zhǔn)頭呢?再說(shuō)了,你甚至不知道各個(gè)瓶子里的藥丸數(shù)目是否相同。
因此你應(yīng)該立刻對(duì)這個(gè)假設(shè)進(jìn)行分析。題目的內(nèi)容并沒(méi)有強(qiáng)烈地表明這些內(nèi)容,如果你采納了這個(gè)假設(shè),你就會(huì)發(fā)現(xiàn)并沒(méi)有足夠的信息支持你解決問(wèn)題。很明顯你必須對(duì)藥丸稱(chēng)重,而不是瓶子。
以上信息表明我們有必要轉(zhuǎn)移到假設(shè)2,也就是所有用來(lái)稱(chēng)重的藥丸必須是同一個(gè)瓶子中的。有時(shí)候有一種簡(jiǎn)化問(wèn)題的傾向:如果所有的藥丸都是來(lái)自于同一個(gè)瓶子,那么問(wèn)題似乎就容易得到解決。但是如果你接受了這種限定(在問(wèn)題中并沒(méi)有提及),問(wèn)題是不可能得到解決的。
你能很快地說(shuō)服自己這個(gè)假設(shè)是有問(wèn)題的。當(dāng)稱(chēng)重的藥丸都來(lái)自于同一個(gè)瓶子中,只有兩種可能性:你所稱(chēng)量的不是正常的藥丸,就是受污染的藥丸。假定你從第3號(hào)瓶中拿出10粒藥丸進(jìn)行稱(chēng)量,重量顯示為90克,那么就證明3號(hào)瓶是污染瓶,這樣只能說(shuō)是你很走運(yùn)。問(wèn)題是,如果你是從別的4個(gè)瓶子中拿藥丸呢?那么你用天平稱(chēng)出的10粒藥丸的重量就是正常的100克,這樣你就無(wú)法確定剩下的瓶子中哪一瓶有受污染的藥丸。無(wú)論你用何種方案從一個(gè)單個(gè)的瓶子取樣,都會(huì)面臨著這個(gè)問(wèn)題。這就表明,要想得到正確的答案,就必須對(duì)一個(gè)以上的瓶子中的藥丸進(jìn)行稱(chēng)量。
一些微軟的面試者常常在第三種假設(shè)上翻船(非程序員則很少這樣)。那些習(xí)慣于信息論的人很容易這樣推論:不管是對(duì)單一的藥丸還是對(duì)一組相同的藥丸稱(chēng)量,都只能得到一個(gè)是或否的結(jié)果。所得的重量不是正常的重量就是污染后的重量。這只是一個(gè)單一的信息,任何一個(gè)程序員都知道不可能用一個(gè)單一的信息來(lái)確定五個(gè)事物中的一個(gè)。
當(dāng)然這種分析是沒(méi)有意義的,這又陷入了第二個(gè)假設(shè)中。只有在所有的藥丸都相同的情況下(也就是都在同一個(gè)瓶子的情況下),才可以得到一個(gè)是或否的結(jié)果。