2013-05-14 35 views
12

不知道這是這麼一個合適的問題,但在這裏有雲:算法來確定在聯賽中球隊的最高和最低的名次

我感興趣的是能所需的必要邏輯計算聯盟中球隊最高和最低的終點位置。以英格蘭超級聯賽爲例。這個聯盟有20支球隊。每個隊都有一次在家聯盟的其他球隊。這意味着每支球隊在對方打兩次(一次在主場和一次客場),所以一個賽季可以打38場比賽。

一場比賽可以以三項結果之一結束 - 主場勝利,平局或客場勝利。團隊獲得3分,贏得1分,平局1分。這意味着一個團隊在單個賽季能夠達到的最高分數是114(38 * 3)。

今年的超級聯賽表的底部目前看起來是這樣的(位置,球隊的名字,比賽使用了,淨勝球[進球 - 失球]分):

Premier League as at 14/5/13

我想知道紐卡斯爾最高和最低的終點位置。

認爲紐卡斯爾本賽季最低的終點位置是18號將是合理的,就好像紐卡斯爾失去了剩餘的比賽,並且他們下面的所有球隊(除了QPR和Reading都無法趕上紐卡斯爾)贏得他們的比賽,那麼他們的總分將高於紐卡斯爾(維岡的將是相同的,但事實是他們將有兩場勝利,而紐卡斯爾將會有一場失利,這意味着維岡將有一個更高的目標差距[分離平分的團隊的機制])。

但是 -(這是複雜的一點) - 阿斯頓維拉本賽季的最後一場比賽是對陣維岡。出於這個原因,兩支球隊都不可能獲得最高分。

所以我的問題是,哪一個是最好的方法來準確確定聯盟中給定球隊的最高和最低可能的完成位置,同時考慮到對手球隊的其餘裝置?我應該只查看每個剩餘的燈具並計算每個排列?還是有更聰明的方法來做到這一點?

+2

只有一輪蠻力應該很好地處理它,因爲只有3^10個可能的結果。然而,很容易看到,如果您嘗試進行更多輪次,它將很快失去控制。 – amit 2013-05-14 09:08:03

+0

有一回合很簡單,但我想知道是否有更聰明的方法來做到這一點。 – 2013-05-14 09:15:53

+0

事實上,可能出現的結果稍微少一些,因爲如果我們想知道紐卡斯爾的最高或最低的位置,那麼我們應該總是分別給他們一個輸贏 – 2013-05-14 09:17:16

回答

4

您可以通過忽略不相關的組合來減少組合的數量。

以下步驟是爲了找到儘可能最低的位置。尋找最高可能的職位將以類似的方式處理。

當考慮儘可能低的位置時,前面的球隊是不相關的。

在其他比賽中無法獲得足夠的積分以抵達紐卡斯爾的球隊無關緊要。

對於其餘的球隊,考慮每場比賽對不相關的球隊贏得比賽。

以上步驟可能會使更多團隊無關緊要。如果是這樣,請重複上一步!

對其餘遊戲進行暴力破解,即相關團隊彼此面對面的遊戲。