我们经常会遇到这样的情况:购买商品时,同样的商品有很多,怎样挑选出最满意的一个来呢?当然,营业员不可能把所有的商品都拿出来任你挑选,我们也就没有多大的挑选余地,但如果摆在你面前的商品有很多,你该如何挑选呢?又譬如说生产厂家要从自己的产品中,挑选一个最好的去参加评比,怎样从众多的产品中挑选呢?
所谓满意的标准有很多,对于顾客来说,商品的好坏大致有三个标准:一是商品的质量,二是商品的外观,三是商品的价格。而这三者往往不容易完全兼顾,顾客的心理也有差异,有人对外观的要求较高,而有人则更看重价格。这里,我们假定顾客心中已经有一定的标准,能够从两件商品中区分出好坏。
现在假定有n件商品供你挑选。一般的方法是采取两两比较,先对其中两个进行比较,再换两个进行比较,如此一直下去,直到最后选出最优的一个来。作两两比较,人们总是希望比较的次数越少越好,那么从n件商品中选出一个最优的至少要比较多少次呢?为了叙述方便,我们把这个次数记为f(n)。
如果n=2,即从两件商品中挑选一个最优的,只须进行一次比较就可以了,因此,f(2)=1.
如果n=3,可以先对其中两件商品作比较,选出的优胜者再与另一件相比,选出最优的,因而只须进行两次比较,即f(3)=2.
下面我们来看一般情形,n件商品,我们先任取两件作比较,选出一个再与下一个相比,如此继续,到最后一件,那么一共进行的比较次数是n-1次。这一方案所用的比较次数一定不比f(n)小,有f(n)≤n-1.
现在我们假设已经有一个方案,只需进行f(n)次比较。那么,第一次比较总是从其中的两个开始的,淘汰掉一个之后,优胜者与其它n-2件的最少比较次数是f(n-1),而原方案去掉第一次比较剩留的比较方案恰好是n-1件商品选优的一种方案。于是有f(n)——1≥f(n-1),即
f(n)≥f(n-1) 1≥f(n-2) 1 1
≥f(n-3) 3≥……≥f(n-(n-2)) n-2
=f(2) n-2=1 n-2=n-1.
前面已知f(n)≤n-1,现又有f(n)≥n-1,于是,f(n)=n-1.也就是说,从n件商品中挑选出一个最优的,至少要作n-1次比较。前面我们已经给出了一个作n-1次比较的方案,当还有其他的最佳方案。比如说我们可以把商品先分成若干个组,在组内先进行比较,然后每组的优胜者再拿到一起作比较。
下面我们来看如何从n件商品中挑选两个最优。我们只要求能找出两个最满意的商品,而不需要在两个商品中再区分最优。这时最少的比较次数是多少呢?我们先从n件商品中选出一个最优来,最少的比较次数是n-1,去掉这个最优,再从剩下的n-1件商品中选出一个最优,最少进行n-2次比较,这时我们保证了这两件商品确实比其他n-2件商品更优,由于不需要区分冠亚军,所以在这2n-3次比较中,我们还应去掉一次冠亚军之间进行的比较,于是我们最少的比较次数是2n-4.那么这些比较又如何进行呢?这一问题我们留给读者自己去思考。