用資訊理論的方法求出至少是5,其他各種想找出5頭豬以下的人可以省點力氣。
在1000桶水中找一桶水,需要的資訊量是-log(1/1000)。而一頭豬所能提供的資訊是它在什麼時間死,因此能提供的資訊量是-log(1/5)。4頭豬能提供的資訊量是-4log(1/5)=-log(1/625),不夠。5頭豬能提供的資訊量是-log(1/3125),剛好夠。
至於用什麼資訊編碼方式就見仁見智了,樓上有的回答就很好。
這裡只是嚴謹地證明一下“至少”。
================= update 5.30 =================
(就用最簡單的座標法,把題目簡化為25桶水用2頭豬的情況。)
兩頭豬可以表示的情況有(0,0),(0,1),(0,2)...(4,2),(4,3),(4,4),也就是說每種情況要對應某桶水有毒。可以用z=x*5+y的編碼方式,z表示桶號碼,x表示餵給第一頭豬的時刻,y表示餵給第二頭豬的時刻。也就是說,第一頭豬0時刻喂的水為0,1,2,3,4;1時刻喂的水為5,6,7,8,9,以此類推。第二頭豬0時刻喂的水為0,5,10,15,20;1時刻喂的水為1,6,11,16,21,以此類推。這樣,如果豬在(i,j)點死,即第一頭豬在i時刻死,第2頭豬在j時刻死,那麼說明第(i*5+j)桶水有問題。顯然,豬如果在前四個時刻都不死,那一定會在假設的第五個時刻死。
(題目中1000桶水的情況可以將2維空間擴充套件成5維空間類似編碼)
顯然這樣的話豬必定在五個時刻中有且只有一個時刻會死,不會浪費資訊。
2.有人說恰好第一頭豬第一個時刻餵了一桶水就死了,這樣立刻就能確定是哪桶水,所以“至少”是一頭豬。需要注意的是,“至少”指的是在任何情況下都要能夠確定出來,就像演算法的時間複雜度,指的是對任何情況都要在這樣的時間複雜度內解決問題。
================= update 5.31 =================
3.詳細解釋一下這裡資訊量的含義。資訊熵的計算公式為 。1000桶水中有一桶水有毒的情況有1000種,要麼是0號水有毒,要麼是1號水有毒。。。因為沒有先驗知識,所以只能假設每種情況等機率,用資訊熵公式計算資訊量就是 ,即log(1000)。
4.在實驗中,“豬死”不是意味著後面的資訊就獲取不到,謝謝 @Sleor Chen 的評論,我5.30的更新欠妥。豬死的情況有5種,由資訊理論知識,等機率下資訊量最大,最大資訊量是log(5)約=2.3,(以2為底)。當然這就和實驗設計就有關係了,假如有一個極端的實驗,對某頭豬0時刻喂的水是0-995,1、2、3時刻喂的水分別為996、997、998,(假想的4時刻喂的水為999),那麼所得資訊量就是 約=0.05,這樣的實驗設計就不夠好。因為它在後4個時刻都只喂一桶水,導致獲取的資訊量很少。意思就是如果有毒的水在0-995之間,那麼你這次實驗相當於白費。所以在設計實驗時,就要儘量考慮到讓豬在這5個時刻喂水的數量平均,總共1000桶水每個時刻就喂200桶的混合,這樣獲得的資訊量是最大的。一隻豬表示一個實驗,那麼一個實驗的資訊量在設計時就已經確定了,與豬什麼時刻死無關。順便說一下,多隻豬為了能確定出更多資訊,需要使各個實驗相互獨立(各實驗間互資訊要小)。
================= update 6.07 =================
用資訊理論的方法求出至少是5,其他各種想找出5頭豬以下的人可以省點力氣。
在1000桶水中找一桶水,需要的資訊量是-log(1/1000)。而一頭豬所能提供的資訊是它在什麼時間死,因此能提供的資訊量是-log(1/5)。4頭豬能提供的資訊量是-4log(1/5)=-log(1/625),不夠。5頭豬能提供的資訊量是-log(1/3125),剛好夠。
至於用什麼資訊編碼方式就見仁見智了,樓上有的回答就很好。
這裡只是嚴謹地證明一下“至少”。
================= update 5.30 =================
(就用最簡單的座標法,把題目簡化為25桶水用2頭豬的情況。)
兩頭豬可以表示的情況有(0,0),(0,1),(0,2)...(4,2),(4,3),(4,4),也就是說每種情況要對應某桶水有毒。可以用z=x*5+y的編碼方式,z表示桶號碼,x表示餵給第一頭豬的時刻,y表示餵給第二頭豬的時刻。也就是說,第一頭豬0時刻喂的水為0,1,2,3,4;1時刻喂的水為5,6,7,8,9,以此類推。第二頭豬0時刻喂的水為0,5,10,15,20;1時刻喂的水為1,6,11,16,21,以此類推。這樣,如果豬在(i,j)點死,即第一頭豬在i時刻死,第2頭豬在j時刻死,那麼說明第(i*5+j)桶水有問題。顯然,豬如果在前四個時刻都不死,那一定會在假設的第五個時刻死。
(題目中1000桶水的情況可以將2維空間擴充套件成5維空間類似編碼)
顯然這樣的話豬必定在五個時刻中有且只有一個時刻會死,不會浪費資訊。
2.有人說恰好第一頭豬第一個時刻餵了一桶水就死了,這樣立刻就能確定是哪桶水,所以“至少”是一頭豬。需要注意的是,“至少”指的是在任何情況下都要能夠確定出來,就像演算法的時間複雜度,指的是對任何情況都要在這樣的時間複雜度內解決問題。
================= update 5.31 =================
3.詳細解釋一下這裡資訊量的含義。資訊熵的計算公式為 。1000桶水中有一桶水有毒的情況有1000種,要麼是0號水有毒,要麼是1號水有毒。。。因為沒有先驗知識,所以只能假設每種情況等機率,用資訊熵公式計算資訊量就是 ,即log(1000)。
4.在實驗中,“豬死”不是意味著後面的資訊就獲取不到,謝謝 @Sleor Chen 的評論,我5.30的更新欠妥。豬死的情況有5種,由資訊理論知識,等機率下資訊量最大,最大資訊量是log(5)約=2.3,(以2為底)。當然這就和實驗設計就有關係了,假如有一個極端的實驗,對某頭豬0時刻喂的水是0-995,1、2、3時刻喂的水分別為996、997、998,(假想的4時刻喂的水為999),那麼所得資訊量就是 約=0.05,這樣的實驗設計就不夠好。因為它在後4個時刻都只喂一桶水,導致獲取的資訊量很少。意思就是如果有毒的水在0-995之間,那麼你這次實驗相當於白費。所以在設計實驗時,就要儘量考慮到讓豬在這5個時刻喂水的數量平均,總共1000桶水每個時刻就喂200桶的混合,這樣獲得的資訊量是最大的。一隻豬表示一個實驗,那麼一個實驗的資訊量在設計時就已經確定了,與豬什麼時刻死無關。順便說一下,多隻豬為了能確定出更多資訊,需要使各個實驗相互獨立(各實驗間互資訊要小)。
================= update 6.07 =================