我们把输入的数看作一个集合(多重集),如果这个集合中的元素都是相等的,那么显然任意一个元素都是The Most Frequent Number(以下简称TMFN),否则必定存在一对不等的元素,任意取出一对不等的元素将其丢弃,重复上述操作直到这个集合中的元素都是相等的。
在这个前提的保证下算法是正确的--it is assumed that there is a number X which has more than L / 2 instances in A.
因为每一次丢弃操作都丢弃了两个不等的数,所以至多丢弃了一个TMFN。
反证,假设最后剩下的元素不是TMFN,那么必定进行了L/2次以上的丢弃操作,也就是丢弃了大于L个数,而一共只有L个数,所以矛盾。所以最后剩下的是TMFN。