64馬8賽道取前4問題

2021-10-02 14:50:28 字數 3080 閱讀 6792

2. 總結

3. 更新

64馬8賽道問題常常以以下形式被描述:

現有64匹馬以及8條賽道,現在需要選出跑的最快的4匹馬。

有計時的情況十分簡單。64匹馬分8組測試,對每匹馬分別計時。最後統計用時,按用時從少到多排列,取前4名即可。

step1.將64匹馬分成8組,跑8趟,淘汰每組後4名。

step2.將剩餘的32匹馬分4組,跑4趟,淘汰每組後4名。

step3.將剩餘的16匹馬分2組,跑2趟,淘汰每組後4名。

step4.將最後8匹馬編成1組,跑1趟,取前4名即可。

總結:該方法共需跑15趟。思路比較簡單,比較麻煩,還有優化的空間。

step1.將64匹馬分成8組,跑8趟,淘汰每組後4名 【此時已跑:8趟】

編號規則:xy,x=組號,y=組內名次

step2.將每組第一名的馬編成1組,跑1趟,淘汰最後4名所在的組【此時已跑:9趟】

編號規則:xy,x=組間名次,y=組內名次

step3.此時可以確定11號是跑的最快的馬,取出放置一旁。

編號規則:xy,x=組間名次,y=組內名次

從圖中可以看出,組1中越靠近11越快,4組間越靠近組1越快

step4.取位於藍色陰影部分的馬匹,除去41號外的另外8匹編成1組,跑1趟【此時已跑:10趟】

step5.判斷

如果第10趟中位於第三名的馬匹,y位編號》=3,則可說明前三名,外加之前取到的11號,這4匹馬就64匹馬中跑的最快的4匹【此時結束:總趟數10趟】

如果本趟中位於第三名的馬匹,y位編號<3,則需淘汰第10趟中排名第8的馬匹,將41號編入再跑1趟,即可確定64匹馬中跑的最快的4匹【此時結束:總趟數11趟】

step1.將8條賽道均勻分成8等份,即獲取64條子賽道。

step2.將64匹馬分別分配在各個子賽道,同時起跑,取最先到達子賽道終點的4匹馬即為64匹馬中跑的最快的馬【此時結束:總趟數1趟】

該問題要求盡可能充分的利用已知資訊,在該題目中我們可以獲知的資訊分別是:

第一輪8趟中,我們可以知道馬匹的組內排名第二輪1趟中,我們可以知道馬匹的組間排名

我們可以獲知的控制條件分別是:

馬匹組內排名,如果組內無法跑進前4,則必無法進入整體的前四。

馬匹組內排名,如果本組排名相對靠後的馬位於前4,則本組排名在它之前的馬必在前4

馬匹組間排名,如果本組最快的馬無法跑進前4,則該組剩餘的馬必如法進入整體的前4。

充分利用這些資訊我們即可在用最少的輪次篩選出最快的馬匹

最少9次,

該演算法的基本思想為挑選標桿馬待定陣列,標桿馬參與下一輪比賽,名次高於標桿的馬記入待定陣列

當標桿馬落後時重新選舉標桿馬;並將名次在新標桿馬之前的馬匹記入待定陣列。

比如挑選第一組第4名[馬(1,4)]為標桿馬,第一組前三名記入待定陣列

更換標桿馬的情況:下一組時馬(1,4)落出前四,將馬(2,4)選舉為新標桿參與下一組比賽,以此類推

不更換標桿馬的情況:下一組時馬(1,4)仍在前4,則馬(1,4)繼續參加下一輪,以此類推

你是對的,在最好的情況下9輪即可完成比賽最好的情況(以第4名為標桿):

64匹馬中隨機抽取8匹,且真top4在這8匹中。這樣該組的第4名即為真第四名,比剩餘所有的馬跑的都快。

剩下的8輪中,它必跑第一,也就印證了第一組的前四是真top4。這是乙個非常巧妙的方法。

但是,我們可以進行一點簡單的組合運算。這4匹馬被分在一組中的排列組合有多少種呢,應當是

c 604

=487635

c^4_=487635

c604​=

4876

35即最好情況出現的概率約為2.05×1

0−42.05\times10^

2.05×1

0−4到此我們先按下不談,再來看看最壞的情況:

最壞的情況莫過於每次都要重新選舉標桿。這樣9輪後在待定陣列中會存留top27top27再次按照此規則進行比賽,13輪後,待定陣列內會存留top12top12比賽2輪後選出真top4,總過程***

基於正態分佈,該演算法最後大約穩定在12輪後選出真top4,比文中演算法多1輪

當然在你的演算法中也提出了標桿前移的優化演算法,但在這種情況下無法得出9輪的最優解,大約會穩定在10至12輪。與上文演算法基本一致。

就我個人而言,我認為應用於生產環境的演算法應當以穩定為大,即最優與最差的差距不應太大。因此我會選擇我在文中闡述的方法應用於生產。

64匹馬,8個賽道,找出前4名最少比賽多少場

最初的想法是最少9次 第一步 先選8匹馬為第一組比一場 第1次 然後將剩餘的56匹馬分為8組,每組7匹 第二步 將第一組比賽的第4名放入第二組,湊齊8匹馬進行比賽 第2次 如果第一組的第4名在第二組跑第一,繼續放入第三組進行比賽 第三步 假設第一組的第4名,在其餘的8組都跑第一,則總共9次可比出前4...

64匹馬,8個賽道,找出前4名最少比賽多少場

第一步 全部馬分8組,各跑一次,然後淘汰掉每組的後四名 8次 第二步 取每組第一名進行一次比賽,然後淘汰最後四名所在組的所有馬 1次 第三步 其實這時候紅色區域的馬也可以淘汰了,紅色區域的馬不可能進入前4名。a1可以直接晉級,因為他是跑的最快的 在以上的兩次比賽過後可以得出,a1 直接晉級,b1比b...

64匹馬,8個賽道,找出跑得最快的4匹馬

全部馬分為8組,每組8匹,每組各跑一次,然後淘汰掉每組的後四名,如下圖 需要比賽8場 取每組第一名進行一次比賽,然後淘汰最後四名所在組的所有馬,如下圖 需要比賽1場 這個時候總冠軍已經誕生,它就是a1,藍色區域 它不需要比賽了 而其他可能跑得最快的三匹馬隻可能是下圖中的黃色區域了 a2,a3,a4,...