NBA常规赛赛程安排建模和算法初探_专业资料。NBA 常规赛赛程安排建模和算法初探 一、 NBA 赛制的问题描述 NBA(National Basketball Association)是美国国家职业篮球比赛。它是全 世界篮球爱好者们最钟爱 NBA 常规赛赛程安排建模和算法初探 一、 NBA 赛制的问题描述 NBA(National Basketball Association)是美国国家职业篮球比赛。它是全 世界篮球爱好者们最钟爱的一项赛事,姚明、易建联加盟 NBA 以后,中国球迷 更加热爱这项运动,我就是火箭队的球迷。 NBA 目前共有 30 支球队,分为两个联盟,即东部联盟和西部联盟。每个联 盟各有三个赛区, 共六个赛区。 每个赛区有五支球队, 5 支球队 Х 6 个赛区 = 即 30 支球队。 NBA 比赛分为常规赛、季后赛和总决赛。每个球队在常规赛里都要参加 82 场比赛,一般是从每年的 10 月底到第二年的 4 月中旬,历时 165 天。常规赛结 束后,两个联盟分别选出排在前八名的 8 支球队参加季后赛。在季后赛里,东部 赛区的冠军和西部赛区的冠军进行总决赛,最后决出 NBA 冠军。 如何安排 NBA 比赛的赛程,使对各支球队都尽量公平呢。一方面,要使得 各支球队能够在一定的比赛周期内,每两场比赛中间间隔的休整时间比较均等; 另一方面,赛程安排中尽量不要出现在某些天比赛场次过多的情况,以防运动员 因为消耗体力太大,影响比赛结果。 我一直对 NBA 比赛非常感兴趣,因为这些比赛非常好看。所以我对 NBA 的赛制规则非常了解,也一直在猜测 NBA 联盟委员会是以什么原则安排比赛赛 程的。这篇论文总结了我在 NBA 赛程安排方面做的一些探讨研究。本论文只描 述常规赛的赛制和赛程安排。 在常规赛里,NBA 的 30 支球队,每只球队要参加 82 场比赛,因为每场比 赛有两支球队对抗,所以共有(82 Х 30)÷ 2 = 1230 场比赛。 每支球队都要与其余的 29 支球队进行 82 场比赛,具体规则是这样的: 1、 每支球队要与同一个赛区的另外 4 支球队各比赛 4 场, 两场主场, 两场客场。 所以与同一个赛区的球队共有 4 Х 4 = 16 场比赛。 2、 每支球队要与不同联盟的另外 15 支球队各比赛 2 场,一场主场,一场客场。 所以与不同联盟的球队共有 2 Х 15 = 30 场比赛。 3、 每支球队要与同一联盟不同赛区的另外 10 支球队中的 6 支各比赛 4 场,两 场主场,两场客场;10 支球队中的 4 支各比赛 3 场,两场主场,一场客场, 或一场主场,两场客场。所以与同一联盟不同赛区的球队共有 (4 Х 6)+ (3 Х 4) = 36 场比赛。 对于要与同一联盟不同赛区的另外 10 支球队中的 4 支各比赛 3 场的情 况,比赛规则是:设同一联盟的三个赛区分别为 P,Q,R,P 赛区的第 1 支球 队与 1) Q 赛区的第 2 支球队和第 4 支球队进行 3 场比赛 2) R 赛区的第 3 支球队和第 5 支球队进行 3 场比赛 二、 赛程安排的问题与 NBA 赛程安排的问题与假设 为了让赛程安排尽可能公平,在建立 NBA 赛程安排的模型和算法时,希望 能满足以下条件: 1. 每支球队不能一天比赛两场 2. 每支球队的两场比赛之间尽可能地间隔一天 3. 赛程安排尽可能对每支球队公平,即各球队比赛平均间隔的尽可能 接近 NBA 赛程安排的假设: 1. 由于每一支球队都有自己的球场,所以安排比赛不需要考虑球场问题。 即 30 支球队可以在同一天比赛, 也可以说一天最多可以安排 15 场比赛。 2. 因为不考虑球场,所以主场和客场比赛是对等的,在赛程安排中也不需 要考虑主客场问题。 另外,因为每支球队要在 165 天里比赛 82 场,所以平均每两天至少要比赛 一场。 三、 建立模型和算法的 建立模型和算法的准备 和算法 根据 NBA 赛制的描述,30 支球队分别表示为: 设东、西两个联盟分别表示为 E(Eastern)和 W(Western); 东部赛区 E 的三个赛区分别表示为:Ea,Eb,Ec。 西部赛区 W 的三个赛区分别表示为:Wa,Wb,Wc。 东部赛区 E 的三个赛区的 15 支球队分别表示为: Ea1,Ea2,Ea3,Ea4,Ea5 Eb1,Eb2,Eb3,Eb4,Eb5 Ec1,Ec2,Ec3,Ec4,Ec5 西部赛区 W 的三个赛区的 15 支球队分别表示为: Wa1,Wa2,Wa3,Wa4,Wa5 Wb1,Wb2,Wb3,Wb4,Wb5 Wc1,Wc2,Wc3,Wc4,Wc5 赛制规则 1 定义为规则 A,即每支球队与同赛区的球队进行 16 场比赛。 赛制规则 2 定义为规则 B,即每支球队与不同联盟的球队进行 30 场比赛。 赛制规则 3 定义为规则 C,即每支球队与同联盟不同赛区的球队进行 36 场 比赛。 第 i 支球队用 Ti(Team)表示,用于表示赛程安排的比赛次序。 两支球队比赛的场数用(数字)表示。 例如:规则 A,T1 支球队与 Ea 赛区的其余 4 支球队各比赛(4)场; 规则 B,T1 与 Wa、Wb、Wc 赛区的 15 支球队各比赛(2)场; 规则 C,T1 与 Eb、Ec 赛区的 10 支球队各比赛(3)场或(4)场。 赛程安排的比赛时间用数字表示,即 date = i,其中 i=1,2,…,165。表 示比赛安排在第 i 天。 四、 赛程安排的 建立 NBA 赛程安排的模型和算法 在建立 NBA 赛程安排模型中,设计了以下三个原则: 原则一、在确定球队和球队之间的比赛次序时,原则是联盟之间互相交叉,同时 原则一 赛区之间互相交叉,因为这样球队与球队之间比赛的次序比较均等。 图 1 是基于这个原则的一种安排次序,Ti 就是第 i 次安排的球队。 东部赛区: Ea Ea1 Ea2 Ea3 Ea4 Ea5 T1 T7 T13 T19 T25 Eb1 Eb2 Eb3 Eb4 Eb5 Eb T3 T9 T15 T21 T27 Ec1 Ec2 Ec3 Ec4 Ec5 Ec T5 T11 T17 T23 T29 -------------------------------------------------------------------------------------------------------------------------- 西部赛区: Wa Wa1 Wa2 Wa3 Wa4 Wa5 T2 T8 T14 T20 T26 Wb1 Wb2 Wb3 Wb4 Wb5 Wb T4 T10 T16 T22 T28 Wc1 Wc2 Wc3 Wc4 Wc5 Wc T6 T12 T18 T24 T30 图 1. 球队之间的比赛次序 因此,第 1 次安排的球队 T1(Ea1)与其余 29 支球队比赛;第 2 次安排的 球队 T2(Wa1)与其余 28 支球队比赛;第 3 次安排的球队 T3(Eb1)与其余 27 支球队比赛;…;第 i 次安排的球队 Ti(…)与其余 30 – i 支球队比赛;…; 第 29 次安排的球队 T29(Ec5)与剩下 1 支球队比赛;第 30 次安排的球队 T30 (Wc5)与 0 支球队比赛。所以,按照 T1、T2、…、T30 的比赛的次序,共需 要安排 435 个球队和球队之间的比赛(∑i,i=1,2,…,29)。 在这种比赛次序下, 每两支球队比赛的场数由规则 A、 规则 B、 规则 C 决定。 原则二、在原则一给出的比赛次序中,按照交叉的原则安排比赛时间。即 Ti 次 原则二 序的球队,要同(30 – i)支球队比赛。当 i 为奇数时,时间安排从前到 后;当 i 为偶数时,时间安排从后到前。这样可以使得一支球队一天比 赛两场的可能性比较小,并且一支球队两场比赛间隔一天的可能性比较 大。图 2 是在一种比赛次序下的比赛时间的安排。 图表中的数字为比赛时间 date,即第 i 天(i=1,2,...,165)比赛。 T1 T1 T2 T3 : : T2 1 X 0 T3 3 56 X T4 5 54 7 T5 7 52 9 T6 9 50 11 T7 11 48 13 T8 13 46 15 T9 15 44 17 T10 17 42 19 T25 47 12 53 T26 49 10 55 T27 51 8 57 T28 53 6 59 T29 55 4 61 T30 57 2 63 X 0 0 …… T29 T30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 X 0 85 X 图 2. 比赛时间安排 因为不考虑主客场,T1 对 T2 的比赛就是 T2 对 T1 的比赛,这里都设为 0。 原则三、两支球队之间有多场比赛,有的球队之间需要比赛 4 场(按照规则 A 原则三 或规则 C),有的需要比赛 2 场(按照规则 B),有的需要比赛 3 场(按 照规则 C)。不同场之间的时间安排原则是: 比赛 4 场的,时间安排间隔为 40 天; 比赛 2 场的,时间安排间隔为 80 天; 比赛 3 场的,时间安排间隔为 50 天; 这样可以使相同球队的几场比赛间隔尽可能大,比赛会比较好看。因为 比赛周期是 165 天,所以按照 150 或 160 的 2、3、4 倍数关系选择的间隔 。 NBA 赛程安排算法: 赛程安排算法 算法: 第一步:先按照原则一,以联盟和赛区为单位,设定出球队和球队比赛安排 的次序 Ti; 第二步:再按照原则二,在第一步设置的比赛次序中安排比赛时间 date。 第三步:再按照原则三,对两支球队的多场比赛,安排比赛时间 date。 第四步:对以上安排的比赛时间 date 进行判断: If(要比赛的两支球队中的任何一支球队在同一天已经有比赛了) Then { 这场比赛就向后顺移时间,即:date = 日期+1 If(date 165 天) then date = 1 } 五、 模型和算法的 模型和算法的分析 给出的算法的第四步判断一定能满足赛程安排的第一个条件,即每支球 队不可能一天比赛两场。理论上,一定有至少一种赛程安排。因为没有场地的限 制,一天最多可以比赛 15 场,所以,很多球队如果没有间隔地每天连续比赛, 就可以安排。但这种安排不太好。 我给出的原则和算法就是希望尽可能满足赛程安排的第二个条件,即每支球 队的两场比赛之间尽可能地间隔一天。 在算法的第二步就是先按照隔一天一场比 赛的情况安排, 算法的第三步是按照同一球队的场与场之间尽可能间隔的远的情 况安排的。如果判断出安排的比赛有冲突,就按照连续每天比赛的情况安排。 赛程安排的第三个条件没有考虑,即赛程安排尽可能对每支球队公平,各球 队比赛平均间隔的尽可能接近。待以后进一步完善。 另外,NBA 比赛的排名也有很多规则,要考虑很多因素。我希望能在以后补 充这部分模型和算法。 我们国家也有 CBA 篮球比赛,目前共有 18 个球队,但我们的赛区分配没有 NBA 那么复杂,可以简化这个模型,建立 CBA 赛程安排。 六、 参考文献 参考文献 【1】 韩中庚.数学建模竞赛—获论文精选与点评.:科学出版社,2007. 【2】 姜启源等.《数学模型(第三版)》习题参考解答.:高等教育出版 社,2003. 【3】 NBA 英文网. 【4】 全国大学生数模竞赛网. 附 1. 美国 30 支球队名单 东部联盟: 东部联盟: 东南区 迈阿密热队 奥兰多魔术队 亚特兰大老鹰队 奇才队 夏洛特山猫队 中区 活塞队 印第安纳步行者队 克里夫兰骑士队 公牛队 密尔沃基雄鹿队 大西洋区 凯尔特人队 76 人队 纽约尼克斯队 网队 猛龙队 ------------------------------------------------------------------------------------------------------- 西部联盟: 西部联盟: 西南区 圣安东尼奥马刺队 孟菲斯灰熊队 达拉斯小牛队 火箭队 黄蜂队 西北区 明尼苏达森林狼队 丹佛掘金队 尤他爵士队 波特兰开拓者队 俄克拉荷马雷霆队 太平洋区 萨克拉门托国王队 菲尼克斯太阳队 湖人队 快船队 金州勇士队 赛季, 月赛程安排 附 2. 2009-2010 赛季,2009 年 11 月赛程安排 01 日 类型 客队 比分 主队 07:00 常规赛 篮网 VS 奇才 07:30 常规赛 山猫 VS 骑士 07:30 常规赛 76 人 VS 尼克斯 08:30 常规赛 开拓者 VS 火箭 08:30 常规赛 活塞 VS 雄鹿 08:30 常规赛 国王 VS 马刺 10:30 常规赛 小牛 VS 快船 02 日 类型 客队 比分 主队 02:00 常规赛 魔术 VS 猛龙 07:00 常规赛 黄蜂 VS 凯尔特人 07:00 常规赛 公牛 VS 热火 08:00 常规赛 开拓者 VS 雷霆 09:00 常规赛 灰熊 VS 掘金 09:00 常规赛 森林狼 VS 太阳 10:30 常规赛 老鹰 VS 湖人 03 日 类型 客队 比分 主队 08:00 常规赛 篮网 VS 山猫 08:30 常规赛 黄蜂 VS 尼克斯 10:00 常规赛 火箭 VS 爵士 11:00 常规赛 灰熊 VS 国王 11:30 常规赛 森林狼 VS 快船 04 日 类型 客队 比分 主队 08:00 08:00 08:00 08:30 08:30 09:00 09:00 09:30 11:00 05 日 08:00 08:00 08:00 08:30 08:30 09:00 09:30 10:30 11:00 11:30 06 日 09:00 11:30 常规赛 凯尔特人 VS 76 人 常规赛 掘金 VS 步行者 常规赛 奇才 VS 骑士 常规赛 魔术 VS 活塞 常规赛 太阳 VS 热火 常规赛 雄鹿 VS 公牛 常规赛 湖人 VS 雷霆 常规赛 爵士 VS 小牛 常规赛 老鹰 VS 开拓者 类型 客队 比分 主队 常规赛 太阳 VS 魔术 常规赛 热火 VS 奇才 常规赛 活塞 VS 猛龙 常规赛 掘金 VS 篮网 常规赛 步行者 VS 尼克斯 常规赛 凯尔特人 VS 森林狼 常规赛 快船 VS 火箭 常规赛 小牛 VS 黄蜂 常规赛 老鹰 VS 国王 常规赛 灰熊 VS 勇士 类型 客队 比分 主队 常规赛 公牛 VS 骑士 常规赛 马刺 VS 爵士 07 日 类型 客队 比分 主队 08:00 常规赛 老鹰 VS 山猫 08:00 常规赛 篮网 VS 76 人 08:00 常规赛 活塞 VS 魔术 08:00 常规赛 奇才 VS 步行者 08:30 常规赛 太阳 VS 凯尔特人 08:30 常规赛 掘金 VS 热火 09:00 常规赛 骑士 VS 尼克斯 09:00 常规赛 雄鹿 VS 森林狼 09:00 常规赛 猛龙 VS 黄蜂 09:30 常规赛 雷霆 VS 火箭 11:30 常规赛 快船 VS 勇士 11:30 常规赛 灰熊 VS 湖人 11:30 常规赛 马刺 VS 开拓者 08 日 类型 客队 比分 主队 08:00 常规赛 掘金 VS 老鹰 08:30 常规赛 凯尔特人 VS 篮网 09:00 常规赛 山猫 VS 公牛 09:30 常规赛 猛龙 VS 小牛 09:30 常规赛 尼克斯 VS 雄鹿 10:00 常规赛 国王 VS 爵士 11:30 常规赛 灰熊 VS 快船 09 日 类型 客队 比分 主队 02:00 常规赛 太阳 VS 奇才 02:00 常规赛 76 人 VS 活塞 08:00 常规赛 魔术 VS 雷霆 10:00 常规赛 森林狼 VS 开拓者 10:30 常规赛 黄蜂 VS 湖人 11:00 常规赛 勇士 VS 国王 10 日 类型 客队 比分 主队 08:00 常规赛 太阳 VS 76 人 08:30 常规赛 爵士 VS 尼克斯 10:30 常规赛 猛龙 VS 马刺 11:30 常规赛 森林狼 VS 勇士 11:30 常规赛 黄蜂 VS 快船 11 日 类型 客队 比分 主队 08:00 常规赛 魔术 VS 山猫 08:30 常规赛 奇才 VS 热火 09:00 常规赛 掘金 VS 公牛 09:00 常规赛 开拓者 VS 灰熊 09:30 常规赛 火箭 VS 小牛 11:00 常规赛 雷霆 VS 国王 12 日 类型 客队 比分 主队 08:00 常规赛 勇士 VS 步行者 08:00 常规赛 公牛 VS 猛龙 08:30 常规赛 老鹰 VS 尼克斯 08:30 常规赛 76 人 VS 篮网 08:30 常规赛 山猫 VS 活塞 08:30 常规赛 爵士 VS 凯尔特人 09:00 常规赛 掘金 VS 雄鹿 09:00 常规赛 开拓者 VS 森林狼 09:00 常规赛 骑士 VS 魔术 09:30 常规赛 小牛 VS 马刺 09:30 常规赛 灰熊 VS 火箭 11:30 常规赛 雷霆 VS 快船 11:30 常规赛 黄蜂 VS 太阳 13 日 类型 客队 比分 主队 09:00 常规赛 骑士 VS 热火 11:30 常规赛 太阳 VS 湖人 14 日 类型 客队 比分 主队 08:00 常规赛 篮网 VS 魔术 08:00 常规赛 爵士 VS 76 人 08:30 常规赛 勇士 VS 尼克斯 09:00 常规赛 老鹰 VS 凯尔特人 09:00 常规赛 开拓者 VS 黄蜂 09:00 常规赛 小牛 VS 森林狼 11:00 常规赛 火箭 VS 国王 11:30 常规赛 湖人 VS 掘金 11:30 常规赛 猛龙 VS 快船 15 日 类型 客队 比分 主队 08:00 常规赛 开拓者 VS 山猫 08:00 常规赛 活塞 VS 奇才 08:00 常规赛 凯尔特人 VS 步行者 08:00 常规赛 黄蜂 VS 老鹰 08:30 常规赛 爵士 VS 骑士 08:30 常规赛 篮网 VS 热火 09:00 常规赛 森林狼 VS 灰熊 09:00 常规赛 76 人 VS 公牛 09:30 常规赛 勇士 VS 雄鹿 09:30 常规赛 雷霆 VS 马刺 16 日 类型 客队 比分 主队 07:00 常规赛 小牛 VS 活塞 08:00 常规赛 快船 VS 雷霆 09:00 常规赛 猛龙 VS 太阳 10:30 常规赛 火箭 VS 湖人 17 日 类型 客队 比分 主队 08:00 常规赛 开拓者 VS 老鹰 08:00 常规赛 山猫 VS 魔术 09:00 常规赛 小牛 VS 雄鹿 18 日 类型 客队 比分 主队 08:00 常规赛 勇士 VS 骑士 08:30 常规赛 雷霆 VS 热火 08:30 常规赛 步行者 VS 篮网 09:00 常规赛 快船 VS 黄蜂 09:30 常规赛 太阳 VS 火箭 10:00 常规赛 猛龙 VS 掘金 11:00 常规赛 公牛 VS 国王 11:30 常规赛 活塞 VS 湖人 19 日 类型 客队 比分 主队 08:00 常规赛 骑士 VS 奇才 08:00 常规赛 山猫 VS 76 人 08:00 常规赛 雷霆 VS 魔术 08:00 常规赛 尼克斯 VS 步行者 08:00 常规赛 热火 VS 老鹰 08:30 常规赛 勇士 VS 凯尔特人 09:00 常规赛 篮网 VS 雄鹿 09:00 常规赛 火箭 VS 森林狼 09:00 常规赛 快船 VS 灰熊 10:00 常规赛 猛龙 VS 爵士 10:30 常规赛 马刺 VS 小牛 11:00 常规赛 活塞 VS 开拓者 20 日 类型 客队 比分 主队 09:00 常规赛 太阳 VS 黄蜂 09:30 常规赛 爵士 VS 马刺 11:30 常规赛 公牛 VS 湖人 21 日 类型 客队 比分 主队 08:00 常规赛 热火 VS 猛龙 08:00 常规赛 灰熊 VS 76 人 08:00 常规赛 骑士 VS 步行者 08:30 常规赛 火箭 VS 老鹰 09:00 常规赛 魔术 VS 凯尔特人 09:00 常规赛 奇才 VS 雷霆 09:30 常规赛 国王 VS 小牛 09:30 常规赛 山猫 VS 雄鹿 11:30 常规赛 掘金 VS 快船 11:30 常规赛 开拓者 VS 勇士 22 日 类型 客队 比分 主队 02:00 常规赛 尼克斯 VS 篮网 08:30 常规赛 76 人 VS 骑士 09:00 常规赛 老鹰 VS 黄蜂 09:00 常规赛 雄鹿 VS 灰熊 09:30 常规赛 奇才 VS 马刺 09:30 常规赛 国王 VS 火箭 10:00 常规赛 公牛 VS 掘金 10:00 常规赛 活塞 VS 爵士 11:00 常规赛 森林狼 VS 开拓者 23 日 类型 客队 比分 主队 01:30 常规赛 魔术 VS 猛龙 02:00 常规赛 凯尔特人 VS 尼克斯 06:00 常规赛 步行者 VS 山猫 07:00 常规赛 黄蜂 VS 热火 09:00 常规赛 活塞 VS 太阳 10:30 常规赛 雷霆 VS 湖人 24 日 类型 客队 比分 主队 09:00 常规赛 国王 VS 灰熊 09:30 常规赛 雄鹿 VS 马刺 11:00 常规赛 公牛 VS 开拓者 11:30 常规赛 森林狼 VS 快船 25 日 类型 客队 比分 主队 08:00 常规赛 步行者 VS 猛龙 08:00 常规赛 76 人 VS 奇才 09:30 常规赛 勇士 VS 小牛 10:00 常规赛 篮网 VS 掘金 10:00 常规赛 雷霆 VS 爵士 11:30 常规赛 尼克斯 VS 湖人 26 日 类型 客队 比分 主队 08:00 常规赛 猛龙 VS 山猫 08:00 常规赛 快船 VS 步行者 08:30 常规赛 76 人 VS 凯尔特人 08:30 常规赛 热火 VS 魔术 09:00 常规赛 雄鹿 VS 黄蜂 09:00 常规赛 骑士 VS 活塞 09:00 常规赛 掘金 VS 森林狼 09:30 常规赛 勇士 VS 马刺 09:30 常规赛 小牛 VS 火箭 10:00 常规赛 灰熊 VS 太阳 11:00 常规赛 篮网 VS 开拓者 11:00 常规赛 尼克斯 VS 国王 27 日 类型 客队 比分 主队 09:00 常规赛 魔术 VS 老鹰 11:30 常规赛 公牛 VS 爵士 28 日 类型 客队 比分 主队 08:00 常规赛 骑士 VS 山猫 08:00 常规赛 老鹰 VS 76 人 08:00 常规赛 奇才 VS 热火 08:30 常规赛 猛龙 VS 凯尔特人 09:00 常规赛 快船 VS 活塞 09:00 常规赛 小牛 VS 步行者 09:00 常规赛 雄鹿 VS 雷霆 09:30 常规赛 马刺 VS 火箭 10:00 常规赛 尼克斯 VS 掘金 10:30 常规赛 太阳 VS 森林狼 11:00 常规赛 灰熊 VS 开拓者 11:00 常规赛 篮网 VS 国王 29 日 类型 客队 比分 主队 08:30 常规赛 小牛 VS 骑士 09:30 常规赛 山猫 VS 奇才 10:00 常规赛 开拓者 VS 爵士 10:00 常规赛 魔术 VS 雄鹿 11:30 常规赛 湖人 VS 勇士 30 日 类型 客队 比分 主队 02:00 常规赛 老鹰 VS 活塞 04:30 常规赛 灰熊 VS 快船 04:30 常规赛 太阳 VS 猛龙 07:00 常规赛 魔术 VS 尼克斯 07:00 常规赛 凯尔特人 VS 热火 08:00 常规赛 76 人 VS 马刺 08:00 常规赛 火箭 VS 雷霆 09:00 常规赛 森林狼 VS 掘金 10:30 常规赛 篮网 VS 湖人 11:00 常规赛 黄蜂 VS 国王 梦见家里被盗
|