《算法導論》中有一節講的是「(比較)排序算法時間的下界」,本文將論述同一個問題,思路略有差別。本文將從信息熵的角度論述排序算法時間複雜度的下界。若本文論述過程當中有錯誤或是不足,還請各位指正。算法
排序,涉及到被排序的序列和排序的方法。(比較)排序算法時間的下界對被排序的序列和排序方法作了如下限制this
那麼,對於輸入序列爲長度爲的序列
而言,比較的過程能夠表示爲從序列中選擇
,判斷
或是
。排序算法的輸出是
。排序的過程是輸入序列位置調整的過程,一旦給定輸入序列和算法,那麼這個調整的過程是肯定的,也就是說,結合排序算法和輸出的有序序列,能夠知道輸入序列的排列方式。spa
(比較)排序算法的算法時間複雜度等價爲肯定輸入序列的排列方式須要多少次比較操做。orm
香農對信息的定義是事物運動狀態和存在方式的不肯定性描述。事件發生所含有的信息量(自信息量)能夠表示爲blog
對於隨機變量而言,定義其平均自信息量爲信息熵,可表示爲排序
對於排序問題,咱們能夠認爲排序算法執行以前,對於待排列數據的沒有得到任何信息。在排序過程當中,得到了信息使得待排列數據排列方式的不肯定度減少了。待排列數據的排列方式共有種,所以其信息量爲(單位:比特)事件
對於每次比較,能夠得到或是
,所以得到的信息量是(單位:比特)it
所以最少須要次比較纔可以解決這一問題。對應(比較)排序算法時間的下界爲
。因爲
,所以io
關於信息、自信息、信息量、信息熵的一個經典的問題能夠描述以下form
設有12枚同值硬幣,其中有一枚爲假幣。只知道假幣的重量和真幣的重量不一樣,但不知道到底是重仍是輕。現採用天平左右兩邊輕重的方法來測量(沒有砝碼)。爲了在天平上稱出哪一枚是假幣,試問必須稱多少次?
因爲不知道假幣輕重,所以信息量爲,每次測量能夠得到
的信息(輕-重、重-輕,同樣重),所以須要稱
我開始一直不以爲這個結果是對的,直到有人給出了各類數量硬幣在不一樣狀況下須要稱的次數,我才接受了這個方法和結果。也就是說,選擇合適的測量方式,稱3次必定可以找出哪一枚是假幣。