老鼠和毒药问题
有100只一模一樣的瓶子,編號1-100。其中99瓶是水,一瓶是看起來像水的毒藥。只要老鼠喝下一小口毒藥,一天后則死亡。現在,你有7只老鼠和一天的時間,如何檢驗出哪個號碼瓶子里是毒藥?
?
這兒把它叫做‘問題1’,解決此題的方法可謂二進制應用的經典:
?
首先,將瓶子的10進制編號數改成7位的2進制碼。然后,讓第1只老鼠喝所有2進制碼第1位是1的瓶子中的水;讓第2只老鼠喝所有2進制碼第2位是1的瓶子中的水;以此類推下去。這樣,每個老鼠第二天的死活情況就決定了毒水瓶子二進制碼這一位的數字:老鼠死,對應1,反之為0。換言之,將7只老鼠死活情況排成一排。比如說結果是“死活死死活活死”的話,毒水瓶子的二進制標簽就是:1011001,轉換成10進制,得到89。
?
這道題可以有很多種在各個參數方向的擴張和一般化。最“通-通-通-通”的解夠你研究好一陣子。比如,如果我們把題目稍加變化(問題2):
?
有100只一模一樣的瓶子,編號1-100。其中99瓶是水,一瓶是看起來像水的毒藥。只要老鼠喝下一小口毒藥,一天后則死亡?,F在,給你2天的時間,請你告訴我,你至少需要多少只老鼠,才能檢驗出哪個號碼瓶子里是毒藥?
?
比較原來的題目,這個題目有兩個變化:一是給你的時間多了一天。因為老鼠喝毒藥1天之后死去,2天意味著你可以做兩次實驗,這給了你一個時間方向(實驗次數)的空間,有可能讓你用更少數目的老鼠,達到同樣的目的。
?
第二個改變是提問的方式。這次的問題是:你‘至少’需要多少只老鼠?回答這類問題,是只要估計一個下限,對你來說,做實驗的小白鼠多多益善,但你的老板要花錢買它們,他得考慮經濟效益。當你還沒有完全把方案想清楚之前,你好歹給老板一個交代呀。這種時候,信息論能派得上一點用場。
?
剛才我說‘信息論’,實際上,我們完全用不上什么信息論的任何高深理論,用的只不過是由香農定義的計算信息量的一個公式而已。牛刀殺雞雖然太大,但用它鋒利的小尖給開個小口也未嘗不可。
?
不僅僅是這道題,還有幾星期前科學網討論熱烈的“稱球問題”,都是能用此‘牛刀’而有所受益的。實際上,我認為,許多問題的解決,都能和這‘牛刀’沾上邊。如果從‘信息’的角度來分析某些問題,可以使你更登高望遠,對問題能有更深層的理解,更容易融合各學科的間隙,達到借他山之石而攻玉的效果。
?
科學(不僅限于數學)上的大多數研究,說穿了就是一個處理‘信息’的過程。擯棄無用的信息,想辦法得到有用而正確的信息,用以消除原來課題中的不確定性,得到更為確定的科學規律。
?
那么,我們首先要明白,什么是信息?
?
這是一個古老的問題,又是一個現代的問題,也是一個迄今為止仍然眾說紛紜、懸而未決的問題,特別是在社會所認可的廣義信息的層面上。
?
你要是問:“什么是信息?”,人人都能列出一大串他稱之為‘信息’的東西:新聞、消息、音樂、圖片……。然而如果問:“信息是什么?”那就難以回答了。因為你可以說:“音樂是信息”,但你不能說:“信息是音樂”;你可以說:“照片是信息”,但你不能說:“信息是照片”。要給信息下個定義是不容易的?!畔ⅰ亩x需要從許多具體信息表現形式中抽象出它們的共性來。
?
中國古人理解的信息其實很簡單,正如李清照的名句中所述:“不乞隋珠與和璧,只乞鄉關新信息。”,看來這只是通俗意義上的‘音訊’或‘消息’而已。
?
現代人比較考究,注重科學。因此而成天琢磨:信息到底是什么?信息是主觀的還是客觀的?是相對的還是絕對的?
?
昨天北京發大水,你將這個消息,用電話告知你南京的兩個朋友,可是,A說他早知此事,B原來不知曉,因此,這條消息對A來說,沒有增加任何信息,對B來說就增加了信息。B抱著的小狗好像也聽見了電話中的聲音,但它不懂人的語言,這對它來說也不是信息。
?
信息是模糊的還是精確的?
?
你走到樹林里,艷陽高照、和風習習、桃紅李白、燕飛鳥鳴,大自然傳遞給我們許多信息,這些算是沒有精確度量過的、模糊的信息。
?
信息和‘知識’是一碼事嗎?也應該不是。眾所周知,我們的信息化社會雖然充滿了信息,但其中“魚龍混雜,良莠不齊”,以至于大家都希望自己的孩子不要整天沉迷于網上,許多人抱怨:“信息雖發達,知識卻貧乏”。所以,信息并不等同于知識!
?
文學家、哲學家、社會學家……,各家各派都對‘信息’?有不同的理解和說法。這其中,物理學家們,是如何理解和定義信息的呢?
?
物理學家們的研究對象是物質和物質的運動,即物質和能量。在他們看來,信息是什么呢?是否能歸類進這兩個他們所熟悉的概念呢?
?
信息顯然不是物質,它應該是物質的一種屬性,聽起來和能量有些類似,但它顯然也不是能量。物理學中的能量早就有其精確的、可度量的定義,它衡量的是物體(物質)做功的本領。信息與這種‘功’似乎無直接關聯。當然,我們又知道,信息是很有用的,個人和社會都可以利用信息來產生價值,這不又有點類似于‘做功’了嗎?對此,物理學家仍然搖頭:不一樣啊,你說的好像是精神上的價值。
?
信息屬于精神范疇嗎?那也不對啊,從科學家們的眼中看來,信息,仍然應該是一種獨立于人類的主觀精神世界、客觀存在的東西。因此,到了最后,有人便宣稱說:
?
“組成我們的客觀世界,有三大基本要素:除了物質和能量之外,還有信息。”
?
美國學者、哈佛大學的歐廷格(A.G.Oettinger)對這三大基本要素作了精辟的詮釋:
?
“沒有物質什么都不存在,沒有能量什么都不會發生,沒有信息什么都沒有意義?!?span style="font-family:Calibri">
?
盡管對“信息是什么?”的問題難有定論,但通過與物理學中定義的物質和能量相類比,科學家們恍然大悟:信息的概念如此混亂,可能是因為我們沒有給它一個定量的描述。科學理論需要物理量的量化,量化后才能建立數學模型。如果我們能將‘信息’量化,問題可能就會好辦多了!
?
于是,在二十世紀40年代后期,一個年輕的科學家,后來被人譽為信息和數字通訊之父的香農,登上了科學技術的歷史舞臺。
?
香農的兩大貢獻:一是信息理論、信息熵的概念;另一是符號邏輯和開關理論。香農的信息論為明確什么是信息量概念作出了決定性的貢獻。感謝香農,在定量研究的科學領域中,他將原來模模糊糊的信息概念,天才地給以了量化,使我們大家在解數學問題時也能‘牛刀小試’。
?
其實香農并不是給信息量化的第一人,巨人也得站在前人的肩膀上。1928年,哈特利(R.V. H. Harley)就曾建議用N log D這個量表示信息量。1949年,控制論創始人維納將度量信息的概念引向熱力學。1948年,香農認為,信息是對事物運動狀態或存在方式的不確定性的描述。并把哈特利的公式擴大到概率pi不同的情況,得到信息量的公式:
?
H=∑-pi log pi
?
如果計算中的對數log是以2為底的,那么計算出來的信息就以比特(bit)為單位。
?
根據香農的信息概念,信息能消除不確定性,而我們在解決數學題的時候,也是要消除不確定性,得到確定的答案。并不僅僅是老鼠問題和稱球問題如此,我認為大多數問題都多少是一個‘消除不確定性’?的過程。因此,我們為何不借用香農的工具,研究研究我們的問題有多少不確定性呢?也就是說,需要多少信息量才能解決這個問題?另外,根據題目所限制的手段,最多能夠得到多少信息量?有無可能完全解決這個問題?等等。
?
具體到老鼠和毒藥的問題。100瓶液體中1瓶有毒,每1瓶發生有毒的概率是1/100,這時候要確定毒藥瓶所需的信息量H = -(p1logp1+p2logp2+….+p100logp100)。
?
因為所有瓶子完全相同,這是一個等概率問題,p1 = p2 =…=p100 = 1/100。
?
得到H=-log(1/100)。
?
下面計算從老鼠能得到的信息量。
?
首先考慮問題1,即給定時間為1天的情況。一天后,每只老鼠或死或活,因此,能夠提供1比特的信息。7只老鼠則能提供7比特的信息。
?
再看看剛才列出的確定毒藥瓶所需的信息量H的公式:H=-log(1/100)<??-log(1/128)= 7比特。
?
因此,問題1應該可以解決。這個可能性是信息論提供給我們的。實際上,應該不僅僅是可能性,這種計算信息量比特數的方法能啟發我們的思維。在解題時,學習別人解題的方法固然重要,而探討別人是如何想到這種方法的,可能更為重要。在《大將軍數學題2》的討論中,就有博友說,如果提到2進制,此題就容易了。的確如此,如果不想到2進制,對此題往往好像有點束手無策,不知如何下手。
?
我們再來討論問題2。
?
所需要的信息量H的計算是和問題1一樣的。然而,從每只老鼠能得到的信息量的計算,卻可能會有所不同。這兒我用了‘可能’兩個字,是因為我們還絲毫未曾談及如何解決這個問題2。
?
問題2和問題1的差別是在于老鼠可以參加接連兩次實驗。問題1中,只能做一次實驗時,老鼠有兩種狀態:死或活。因此它可利用的信息量是1比特。如果能做兩次實驗,兩次實驗中都有生死的可能性,僅就邏輯而言,老鼠有四種可能情況:生生、生死、死生、死死。但其中的第三種情形:死生,是不可能發生的,因為在第一天的實驗中死了的老鼠,不可能在第二次實驗后又活過來。所以我們要將第一天實驗中死了的老鼠,排除在第二次實驗之外。所以,對問題2,老鼠有3種狀態,每種狀態的概率為1/3,因此,從一只老鼠得到的信息量
?
S=-(1/3log(1/3)+ 1/3log(1/3)+ 1/3log(1/3))= log(3)。
?
如果將這兒的對數取以3為底的話,可以說成,每只老鼠能得到的信息量是一個3進制位(trit)。
?
多少只老鼠才能使總信息量大于log(100)呢?
?
解方程:k*log(3)>log(100)??=>??3**k>100,可得到k>=5。
?
因此,至少要5只老鼠,這便是問題2的解。
?
問題2直接所問的問題已經有了答案:實驗至少需要用5只老鼠。況且,理論上來說,從5只老鼠能提供的最大信息量,轉換到可能檢驗的最多瓶子數:3**5 = 243,已經大大地超過了100,余量很多,將這個數目提供給老板,問題不大。
?
但是無論如何,5只老鼠到底能否判定出有毒的瓶子,還需我們想出具體檢驗的方案才成定論。
?
因此,我們繼續思考問題3(問題2的延伸):在能做兩次實驗的條件下,如何找出有毒的瓶子?
?
沿著剛才信息量計算的思路,問題1最優答案用2進制有關的實驗方法得到;問題2中估計老鼠數目的下界時,用到了3進制。那么,在能做兩次實驗的條件下,找出有毒的瓶子的最佳方案是否與3進制有關?
?
試試看吧。首先,將瓶子的號碼轉換成5位的3進制。為什么是5?5只老鼠?對,由于同樣的原因,最大的號碼100需要用‘5位的3進制’來表示。這100個5位3進制碼列表如下:
?
00000,
00001,
00002,
00010,
00011,
00012,
00020,
00021,
00022,
…………
10201
?
然后,第一次實驗:
從左到右:讓第1只老鼠喝所有3進制碼第1位是2的瓶子中的水;讓第2只老鼠喝所有3進制碼第2位是2的瓶子中的水;以此類推下去。這樣,每個老鼠第二天的死活情況就決定了毒水瓶子3進制碼這一位的數字是不是2:老鼠死,2;老鼠活,1或0。
?
第一次實驗中死去的老鼠沒有白死,它的死決定了毒水瓶3進制碼的這位數字是2!雖然這個老鼠為2而犧牲了,但很幸運,這一位的數字也被決定了,我們也不再需要這只老鼠。嘿嘿,我們讓這個老鼠作出了它的最大貢獻,要不然,就不是最優化的方案了。
?
第一次實驗中沒死的老鼠也沒有白白地冒險,也為我們提供了信息:毒水瓶子3進制碼的這一位的數字肯定不是2!所以,我們可以將3進制碼這位是2的瓶子去除,因為它們肯定無毒。然后……
?
第二次實驗:
讓沒死的老鼠喝下所有3進制碼的該位數字為1的瓶子中的水。這個老鼠一天后的死活情況便決定了毒水瓶子3進制碼這一位的數字是1還是0:老鼠死,1;老鼠活,0。
?
這個問題可以此類推地擴展成更一般的問題:假設有n個瓶子,其中1個瓶子中的水有毒,實驗的小白鼠喝了毒水1天后死去,給你i天的時間,k只老鼠。問n的最大值是多少?如何實驗,才能檢測出毒水瓶來。
?
答案:有i天的時間,你可以做i次試驗,因為死了的老鼠不能繼續試驗,i次試驗后,老鼠總共的可能狀態有(i+1)個:
?
第1次就死去、第2次死、第3次死、……、第i次死、一直活著。
?
能檢測的最多水瓶數n=(i+1)**k。檢測方法:將所有瓶子用k位的(i+1)進制數編碼,然后,遵循上面所述i=2類似的過程,i天之后,根據k個老鼠的狀態,可以確定毒水瓶的(i+1)進制數值。
?
通過用信息論解老鼠喝毒藥的這個簡單練腦題,說明科學思維方法之重要性。
?
作為信息論應用于數學題的另一個例子,再來分析“稱球”問題。
?
稱球問題是說,用天平稱k次,在n個球中找出唯一的一個重量不標準的次品球來,n最大是多少?如何找?有關這個次品球的說法,通常有3種變形:
?1.?已知次品球是更輕(或更重);
?2.?不知次品球的輕重,找出它并確定輕重;
?3、不知次品球的輕重。
?
利用信息熵的概念,可計算出這3種情形下n的最大值,并且幫助思考構成算法的過程:
1.?已知次品球是更輕(或更重),這時n的最大值?= 3**k;
2.?不知次品球的輕重,找出它并確定輕重,這時n的最大值?=?(3**k-3)/2;
3、不知次品球的輕重,這時n的最大值?=?(3**k-1)/2。
?
下面首先分析第1種問題。為解釋起來更為直觀,設定k=3。換言之,我們的問題是:如何用天平稱3次,從27個球中找出唯一的那個稍輕的球?
?
27個球中只有1個球稍輕,可能發生的情形為27種,每個球為次品的概率是1/27。類似于上面所說老鼠試藥的問題,要確定是‘哪一只’老鼠,所需的總信息量=log27。
?
在此題中的判定手段,限制了是天平。那么,天平每稱一次,最多可以提供多少信息量呢?或者是說,可以為解題消除多少不確定性?
?
天平稱一次后,有3種結果:左輕右重(A)、左重右輕(B)、平衡(C)。因此,稱一次所消除的不確定性=log3。接連稱3次后,所消除的不確定性=3*log3= log27。
?
根據剛才的分析,這個問題中,判定輕球所需的信息量與天平稱3次能獲得的信息量剛好相等。因此,用最佳的操作方法,有可能解決這個問題。
?
既然從信息論作出的估算給了我們解決問題的希望,我們就試試看吧。
?
天平似乎與3進制有關,我們便首先優選3進制。將27個球貼上3進制碼的標簽:
?
000、001、002、010、011、012、020、021、022、
100、101、102、110、111、112、120、121、122、
200、201、202、210、211、212、220、221、222。
?
將3進制碼中,第1位(左)為0的9個球放天平左邊,第1位為1的9個球放天平右邊,稱1次。如果天平平衡,則次品球3進制碼第1位是2;左輕右重,第1位是0;左重右輕,第1位是1??偠灾?#xff0c;稱這一次,確定了次品球3進制碼第1位的數字。
?
接下去,繼續稱,逐次確定次品球3進制碼各位的數字,問題解決了。這個第1類問題不難推廣到任意k的情形。
?
下面再分析第2類稱球問題:次品球不知輕重,最后需確定輕重的情況,具體來說就是,天平稱3次,要找出12個球中那個唯一的又‘不知輕重’的次品球。
?
將兩個問題對比一下,共同之處是都用天平,因此,天平稱3次能提供的最大信息量仍然是log27。不同之處是如何計算找出次品球所需要的信息量。
?
因為現在要找出的次品球‘不知輕重’,因此,對每個球來說,不確定性增多了,這也是能判定的球的數目大大減少了(從27變到12)的原因。
?
現在,考慮這12個球,其中一個是或輕或重的次品的各種可能性。如果這個球是‘輕’的次品,記為-,‘重’的次品,記為+,因此,可能的次品分布情況:
?
1+、1-、2+、2-、……、12+、12-。
?
共24種情形,所需要的信息量則為log24。這個值小于天平稱3次所能提供的最大值,所以,可能有解,那我們就試試看吧。有人說,你用什么信息論扯了半天,最后還是要一個一個地列舉,那你這信息論不是多余的嗎?科學定律是客觀的,但各人的觀點卻是見仁見智的,我不需要去強人所難,也并非想比較解稱球問題各種方法孰好孰壞,孰優孰劣,只是想將信息論用于分析此題,如此而已。
?
將12個球作如下編碼:
?
(000+,000-)、(001+,001-)、(010+,010-)、(011+,011-)、
(100+,100-)、(101+,101-)、(110+,110-)、(111+,111-)、
(200+,200-)、(201+,201-)、(210+,210-)、(211+,211-)、
?
這兒,除了抽取了部分3進制的編碼之外,還對每個球都給貼上了(+、-)兩個標簽,以表明此球‘或輕或重’而成為次品的兩種可能性,也可等效于另一層編碼。
?
然后,將第1位為0的4個球(第1行)放天平左邊,第1位為1的4個球(第2行)放天平右邊,稱第1次。
?
1?如果天平左輕右重,這也許是第1行中的某個球輕了、或是第2行中某球重了而造成的:
000-、001-、010-、011-、100+、101+、110+、111+。
?
2?反之,如果天平左重右輕,也許是第1行中的某個球重、或是第2行中某球輕而造成的:
000+、001+、010+、011+、100-、101-、110-、111-。
?
3?如果天平平衡,則次品球在第3行的‘毫不知輕重’的4個球(200、201、210、211)中。雖然是4個球,仍然有8種可能性:
200+、200-、201+、201-、210+、210-、211+、211-。
?
前面兩種情形類似,都是將次品球限制到了 ‘半知輕重’的8個球中。所謂半知輕重,是因為該球有一個已經確定的附加標簽(+或-)。
?
比如說,編碼為(000-)的球是個‘半知輕重’的球,而編碼為(000)的球是個‘毫不知輕重’的球。對(000-)來說,盡管尚未確定此球是否是次品,但有一點是明確的:如果它是次品的話,它只能是更輕的次品。而球(000)則有‘輕重’兩種次品的可能性。
?
因此,‘半知輕重’球比‘毫不知輕重’球少了一半的不確定性。判定所需的信息量也成為一半。
?
天平不平衡的情形,問題成為,“稱2次從這4個半知的‘輕球’,及4個半知的‘重球’中找出次品球”的問題。
?
為此,取2個輕球加1個重球放天平的一邊,另2個輕球加1個重球放天平的另一邊。稱第2次之后便將問題歸為稱1次從3個半知輕重球中找出次品的問題。
?
這個問題在David J.C. MacKay信息論的書中有敘述,借他的圖表貼在下面。其中稱球的過程看得很清楚,所以不再贅述。
?
指出一點:在天平平衡的情形,稱第2次時,需要用到稱第1次后確定的標準球,即天平上的8個球。標準球是能夠提供信息的,每個標準球在每次稱量中最多能提供1比特的信息。
?
?
下面再對第3類稱球問題稍加分析,就是,天平稱3次,要找出13個球中那個唯一的又‘不知輕重’的次品球的問題。
?
類似于第2類問題,將13個球作如下編碼:
(000+,000-)、(001+,001-)、(010+,010-)、(011+,011-)、
(100+,100-)、(101+,101-)、(110+,110-)、(111+,111-)、
(200+,200-)、(201+,201-)、(210+,210-)、(211+,211-)、(222+,222-)、
?
與第2類問題不同的是天平平衡的情況。這時需要從5個球,10種狀態中找出次品:
(200+,200-)、(201+,201-)、(210+,210-)、(211+,211-)、(222+,222-)
?
將5球中的3個放在天平一邊,3個標準球放另一邊。天平不平衡情形的最后一次稱法與第2類問題同,不同的又是天平平衡時的情形。
?
天平平衡的情形,留下了2個不知輕重的球。因為我們有標準球可用,取2個待定球中的任何一個與標準球比較,如果不平衡,此球則為次品,并知其輕重;如果平衡,另1球為次品,但不能判定其輕重。
?
讀者可能注意到了,在上面兩個用信息熵方法解數學題的例子中,我們經常說:“使用最佳方案”,只有使用最優化的操作方法,才能達到信息論所預期的上限。這兒所說的最佳方案,與信息論中的“最大信息熵原理”有關。
?
什么是最大信息熵原理?它來自于熱力學及統計物理中的熵增加原理。要講清楚這個問題需要太多篇幅,在此只簡單地科普一下。
?
用通俗的話來說,最大信息熵原理就是當你對一個隨機過程不夠了解時,你對概率分布的猜測要使得信息熵最大。熵最大就是事物可能的狀態數最多,復雜程度最大。換句話說,對隨機事件的預測要在滿足全部約束條件下,保留各種可能性。
?
比如,你的女朋友叫你猜猜她的生日是哪一個月?如果你曾經看過她出生不久的照片,是秋天,那你可以猜測她生日是夏季的幾率比較大;如果你對此完全沒有概念,你就最好是對一年中的每一個月都一視同仁,給予相同的可能性。
?
另一個例子是買股票投資的時候,專家會建議你買各種類型的不同股票。
?
“不要把雞蛋放在一個籃子里!”投資專家說。這句話的意思,其實就是警告你要遵循最大熵原理,對難以預測的股票市場,最好的策略是盡可能多地保留各種可能性,才能降低預測的風險。
?
在本文中所舉的老鼠毒藥問題中,盡量讓每個老鼠試喝相等數目瓶子的水;在稱球問題中,盡可能使天平‘左、右、下’的球的數目相等,這都是考慮最大信息熵原理而選擇的最優策略。
總結
- 上一篇: matlab2018a制图,MatLab
- 下一篇: matlab2013b下载安装包以及安装