25匹馬的角逐

問題是這樣的:一共有25匹馬,有一個賽場,賽場有5個賽道,就是說最多同時可以有5
匹馬一起比賽。假設每匹馬都跑的很穩定,不用任何其他工具,只通過馬與馬之間的比
賽,試問最少得比多少場才能知道跑得最快的5匹馬。

注意:"假設每匹馬都跑的很穩定" 的意思是在上一場比賽中A馬比B馬快,則下一場比賽
中A馬依然比B馬快。

稍微想一下,可以採用一種競標賽排序(Tournament Sort)的思路。見《選擇排序》

(1) 首先將25匹馬分成5組,並分別進行5場比賽之後得到的名次排列如下:
              A組:  [A1  A2  A3   A4  A5]
              B組:  [B1  B2  B3   B4  B5]
              C組:  [C1  C2  C3  C4  C5]
              D組:  [D1  D2  D3  D4  D5]
              E組:  [E1  E2  E3   E4  E5]
      其中,每個小組最快的馬爲[A1、B1、C1、D1、E1]。
(2) 將[A1、B1、C1、D1、E1]進行第6場,選出第1名的馬,不妨設 A1>B1>C1>D1>E1. 此
時第1名的馬爲A1。
(3) 將[A2、B1、C1、D1、E1]進行第7場,此時選擇出來的必定是第2名的馬,不妨假設
爲B1。因爲這5匹馬是除去A1之外每個小組當前最快的馬。
(3) 進行第8場,選擇[A2、B2、C1、D1、E1]角逐出第3名的馬。
(4) 依次類推,第9,10場可以分別決出第4,5名的嗎。

因此,依照這種競標賽排序思想,需要10場比賽是一定可以取出前5名的。


仔細想一下,如果需要減少比賽場次,就一定需要在某一次比賽中同時決出2個名次,而
且每一場比賽之後,有一些不可能進入前5名的馬可以提前出局。當然要做到這一點,就
必須小心選擇每一場比賽的馬匹。我們在上面的方法基礎上進一步思考這個問題,希望
能夠得到解決。

(1) 首先利用5場比賽角逐出每個小組的排名次序是絕對必要的。
(2) 第6場比賽選出第1名的馬也是必不可少的。假如仍然是A1馬(A1>B1>C1>D1>E1)。那
麼此時我們可以得到一個重要的結論:有一些馬在前6場比賽之後就決定出局的命運了
(下面綠色字體標誌出局)。
       A組:  [A1  A2  A3   A4  A5]
       B組:  [B1  B2  B3   B4 B5]
       C組:  [C1  C2  C3 C4  C5]
       D組:  [D1  D2 D3  D4  D5]
       E組:  [E1 E2  E3   E4  E5]
(3) 第7場比賽是關鍵,能否同時決出第2,3名的馬呢?我們首先做下分析:
     在上面的方法中,第7場比賽[A2、B1、C1、D1、E1]是爲了決定第2名的馬。但是在
第6場比賽中我們已經得到(B1>C1>D1>E1),試問?有B1在的比賽,C1、D1、E1還有可能
爭奪第2名嗎?當然不可能,也就是說第2名只能在A2、B1中出現。實際上只需要2條跑道
就可以決出第2名,剩下C1、D1、E1的3條跑道都只能用來湊熱鬧的嗎?
    能夠優化的關鍵出來了,我們是否能夠通過剩下的3個跑道來決出第3名呢?當然可
以,我們來進一步分析第3名的情況?
     ● 如果A2>B1(即第2名爲A2),那麼根據第6場比賽中的(B1>C1>D1>E1)。可以斷定
第3名只能在A3和B1中產生。
     ● 如果B1>A2(即第2名爲B1),那麼可以斷定的第3名只能在A2, B2,C1 中產生。
     好了,結論也出來了,只要我們把[A2、B1、A3、B2、C1]作爲第7場比賽的馬,那
麼這場比賽的第2,3名一定是整個25匹馬中的第2,3名。
     我們在這裏列舉出第7場的2,3名次的所有可能情況:
     ①  第2名=A2,第3名=A3
     ②  第2名=A2,第3名=B1
     ③  第2名=B1,第3名=A2
     ④  第2名=B1,第3名=B2
     ⑤  第2名=B1,第3名=C1

(4)  第8場比賽很複雜,我們要根據第7場的所有可能的比賽情況進行分析。
      ①  第2名=A2,第3名=A3。那麼此種情況下第4名只能在A4和B1中產生。
           ● 如果第4名=A4,那麼第5名只能在A5、B1中產生。
           ● 如果第4名=B1,那麼第5名只能在A4、B2、C1中產生。
          不管結果如何,此種情況下,第4、5名都可以在第8場比賽中決出。其中比賽
馬匹爲[A4、A5、B1、B2、C1]
      ②  第2名=A2,第3名=B1。那麼此種情況下第4名只能在A3、B2、C1中產生。
           ● 如果第4名=A3,那麼第5名只能在A4、B2、C1中產生。
           ● 如果第4名=B2,那麼第5名只能在A3、B3、C1中產生。
           ● 如果第4名=C1,那麼第5名只能在A3、B2、C2、D1中產生。
          那麼,第4、5名需要在馬匹[A3、B2、B3、C1、A4、C2、D1]七匹馬中產生,
則必須比賽兩場才行,也就是到第9場角逐出全部的前5名。
      ③  第2名=B1,第3名=A2。那麼此種情況下第4名只能在A3、B2、C1中產生。
           情況和②一樣,必須角逐第9場
      ④  第2名=B1,第3名=B2。 那麼此種情況下第4名只能在A2、B3、C1中產生。
           ● 如果第4名=A2,那麼第5名只能在A3、B3、C1中產生。
           ● 如果第4名=B3,那麼第5名只能在A2、B4、C1中產生。
           ● 如果第4名=C1,那麼第5名只能在A2、B3、C2、D1中產生。
           那麼,第4、5名需要在馬匹[A2、B3、B4、C1、A3、C2、D1]七匹馬中產生,
則必須比賽兩場才行,也就是到第9場角逐出全部的前5名。
        ⑤  第2名=B1,第3名=C1。那麼此種情況下第4名只能在A2、B2、C2、D1中產
生。
            ● 如果第4名=A2,那麼第5名只能在A3、B2、C2、D1中產生。
            ● 如果第4名=B2,那麼第5名只能在A2、B3、C2、D1中產生。
            ● 如果第4名=C2,那麼第5名只能在A2、B2、C3、D1中產生。
            ● 如果第4名=D1,那麼第5名只能在A2、B2、C2、D2、E2中產生。
            那麼,第4、5名需要在馬匹[A2、B2、C2、D1、A3、B3、C3、D2、E1]九匹
馬中產生,因此也必須比賽兩場,也就是到第9長決出勝負。


總結:最好情況可以在第8場角逐出前5名,最差也可以在第9場搞定。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章