排序算法时间复杂度的下界

《算法导论》中有一节讲的是“(比较)排序算法时间的下界”,本文将论述同一个问题,思路略有差别。本文将从信息熵的角度论述排序算法时间复杂度的下界。若本文论述过程当中有错误或是不足,还请各位指正。算法

1. 问题归约

    排序,涉及到被排序的序列和排序的方法。(比较)排序算法时间的下界对被排序的序列和排序方法作了如下限制this

  • 没有关于被排序序列的先验信息,譬如序列内数据的分布、范围等,即认为序列内元素在一个开区间内均匀分布。同时,序列内元素互异。(能够从两个方面理解元素互异的限制,其一是对于随机的序列而言,两元素相同的几率约为0;其二是比较排序中没有对相同元素的特殊处理)
  • 排序方法中仅仅利用了比较运算来肯定元素的顺序。不失通常性,假设每次比较仅取2个元素,比较其大小。

    那么,对于输入序列为长度为的序列而言,比较的过程能够表示为从序列中选择,判断或是。排序算法的输出是。排序的过程是输入序列位置调整的过程,一旦给定输入序列和算法,那么这个调整的过程是肯定的,也就是说,结合排序算法和输出的有序序列,能够知道输入序列的排列方式。spa

    (比较)排序算法的算法时间复杂度等价为肯定输入序列的排列方式须要多少次比较操做。orm

2 . 信息熵

    香农对信息的定义是事物运动状态和存在方式的不肯定性描述。事件发生所含有的信息量(自信息量)能够表示为blog

    对于随机变量而言,定义其平均自信息量为信息熵,可表示为排序

    对于排序问题,咱们能够认为排序算法执行以前,对于待排列数据的没有得到任何信息。在排序过程当中,得到了信息使得待排列数据排列方式的不肯定度减少了。待排列数据的排列方式共有种,所以其信息量为(单位:比特)事件

    对于每次比较,能够得到或是,所以得到的信息量是(单位:比特)it

    所以最少须要次比较才可以解决这一问题。对应(比较)排序算法时间的下界为。因为,所以io

3. 另外一个问题

    关于信息、自信息、信息量、信息熵的一个经典的问题能够描述以下form

设有12枚同值硬币,其中有一枚为假币。只知道假币的重量和真币的重量不一样,但不知道到底是重仍是轻。现采用天平左右两边轻重的方法来测量(没有砝码)。为了在天平上称出哪一枚是假币,试问必须称多少次?

    因为不知道假币轻重,所以信息量为,每次测量能够得到的信息(轻-重、重-轻,同样重),所以须要称

    我开始一直不以为这个结果是对的,直到有人给出了各类数量硬币在不一样状况下须要称的次数,我才接受了这个方法和结果。也就是说,选择合适的测量方式,称3次必定可以找出哪一枚是假币。

相关文章
相关标签/搜索