题:著名的 N B A NBA NBA有东西区之分,各分区有15支球队,每支球队要去分区内的每支球队打4场比赛,与他区的每支球队打2场比赛,且要保证分区内和他区的比赛主客场数分别相等;设计一个算法满足这个条件且每个赛季可随机安排对阵球队。

解:

前言:这里只讨论算法的实现原理及其证明,不使用代码实现,因为算法本身才是最重要的,代码不过一实现的工具而已,世界缺的是想出算法的思维,而不是实现算法的奴隶.

说明:这里还是采用弗轮德(Freund,前人之伟岸望尘莫及)发明的循环赛赛程方法

解法:对各个分区的每支球队编号1~15,
1. 1. 1.赛区内赛程安排:对第k轮( k ∈ [ 1 , 15 ] k \in [1, 15] k∈[1,15]),有 i + j ≡ k ( m o d N ) ⋀ 2 i ̸ ≡ k ( m o d N ) , N = 15 , i 、 j 为 球 队 编 号 且 i 、 j ∈ [ 1 , 15 ] i+j \equiv k \pmod N \bigwedge 2i \not\equiv k \pmod N, N=15,i、j为球队编号且 i、j \in [1, 15] i+j≡k(modN)⋀2i̸​≡k(modN),N=15,i、j为球队编号且i、j∈[1,15]
对 于 2 i ≡ k ( m o d N ) 的 球 队 则 在 第 k 轮 休 息 , 且 对 每 支 球 队 都 有 这 个 情 况 对于2i \equiv k \pmod N的球队则在第k轮休息,且对每支球队都有这个情况 对于2i≡k(modN)的球队则在第k轮休息,且对每支球队都有这个情况
{ 2 ∣ ( i + j ) ⇒ i 、 j 中 较 大 者 为 主 场 2 ∤ ( i + j ) ⇒ i 、 j 中 较 小 者 为 主 场 \begin{cases} 2 \mid (i+j) \Rightarrow i、j中较大者为主场 \\ 2 \nmid(i+j) \Rightarrow i、j中较小者为主场 \end{cases} {2∣(i+j)⇒i、j中较大者为主场2∤(i+j)⇒i、j中较小者为主场​
2. 2. 2.他区赛程安排,对于他区赛事,则可以简单地选择为第一次为 N N N连客场,然后第二次为 N N N连主场,这里 N = 15 N=15 N=15
3. 3. 3.对于赛季随机安排对阵球队,可通过随机编号球队实现,甚至每一次循环都可以随机编号

证明:
1. 1. 1.赛区内赛程安排证明:
∵ \because ∵对于第 k k k轮有所有满足 i + j ≡ k ( m o d N ) ⋀ 2 i ̸ ≡ k ( m o d N ) i+j \equiv k \pmod N \bigwedge 2i \not\equiv k \pmod N i+j≡k(modN)⋀2i̸​≡k(modN)
∵ \because ∵如果存在 m m m球队使得 i + j ≡ i + m ≡ k ( m o d N ) i+j \equiv i +m \equiv k \pmod N i+j≡i+m≡k(modN)
∴ j ≡ m ( m o d N ) \therefore j \equiv m \pmod N ∴j≡m(modN)
∵ \because ∵又 j 、 m ∈ [ 1 , N ] j、m \in [1, N] j、m∈[1,N]
∴ j = m \therefore j = m ∴j=m
∴ \therefore ∴在第 k k k轮对于球队 i i i而言,要么休息( 2 i ≡ k ( m o d N ) 2i \equiv k \pmod N 2i≡k(modN)),要么只与另一支球队 j ≡ k − i ( m o d N ) j \equiv k - i \pmod N j≡k−i(modN)( j 存 在 且 唯 一 j存在且唯一 j存在且唯一)打一场比赛
∵ ( 2 , N ) = 1 , N = 15 \because(2, N) = 1,N=15 ∵(2,N)=1,N=15
∴ 2 i ≡ k ( m o d N ) 有 解 \therefore 2i \equiv k \pmod N有解 ∴2i≡k(modN)有解
∵ 2 i ≡ 2 m ( m o d N ) ⇒ i ≡ m ( m o d N ) ⇒ i = m \because 2i \equiv 2m \pmod N \Rightarrow i \equiv m \pmod N \Rightarrow i = m ∵2i≡2m(modN)⇒i≡m(modN)⇒i=m
∴ 对 于 第 k 轮 存 在 且 唯 一 支 球 队 休 息 \therefore 对于第k轮存在且唯一支球队休息 ∴对于第k轮存在且唯一支球队休息
接下来证明主客场:
∵ \because ∵对于任一支球队 i i i而言,有
{ 2 ∤ i ⇒ 所 有 小 于 i 的 球 队 有 偶 数 支 ⇒ i + j 奇 偶 同 数 , 同 理 大 于 i 的 球 队 也 有 i + j 奇 偶 同 数 2 ∣ i ⇒ 所 有 小 于 i 的 球 队 有 2 m + 1 支 ( 奇 数 ) , 则 对 于 第 2 m + 1 支 球 队 和 2 m + 3 支 球 队 可 实 现 互 补 , 这 是 存 在 的 , 因 为 N = 15 为 奇 数 \begin{cases} 2 \nmid i \Rightarrow 所有小于i的球队有偶数支 \Rightarrow i+j奇偶同数,同理大于i的球队也有i+j奇偶同数 \\ 2 \mid i \Rightarrow 所有小于i的球队有2m+1支(奇数),则对于第2m+1支球队和2m+3支球队可实现互补,这是存在的,因为N=15为奇数 \end{cases} {2∤i⇒所有小于i的球队有偶数支⇒i+j奇偶同数,同理大于i的球队也有i+j奇偶同数2∣i⇒所有小于i的球队有2m+1支(奇数),则对于第2m+1支球队和2m+3支球队可实现互补,这是存在的,因为N=15为奇数​
∴ 对 于 任 一 支 球 队 有 主 客 场 数 一 样 \therefore 对于任一支球队有主客场数一样 ∴对于任一支球队有主客场数一样
这样就结束了第一次循环的区内比赛赛程安排,第二、三、四次循环可依此进行。

2. 2. 2.他区赛程安排证明:显而易见
3. 3. 3.对于赛季随机安排对阵球队证明:显而易见

后言:据我所知, N B A NBA NBA的每支球队是打一天休一天,而且可以看到有球队连续休息 2 2 2天,这就符合了上面的算法( 2 i ≡ k ( m o d N ) 2i \equiv k \pmod N 2i≡k(modN)),所以说为何 N B A NBA NBA对于他区比赛不是 N = 15 N=15 N=15连客场,然后 N = 15 N=15 N=15连主场,而是交叉的几场来,这岂不是让运动员有时间嘚瑟了吗

初等应用:NBA常规赛的赛事安排分配算法相关推荐

  1. 骑士VS热火直播NBA常规赛骑士VS热火直播12月3日骑士VS热火视频直播

    ‍骑士VS热火直播NBA常规赛骑士VS热火直播12月3日骑士VS热火视频直播‍骑士VS热火直播NBA常规赛骑士VS热火直播12月3日骑士VS热火视频直播‍骑士VS热火直播NBA常规赛骑士VS热火直播1 ...

  2. python篮球比赛预测数据分析统计服_用python基于2015-2016年的NBA常规赛及季后赛的统计数据分析...

    nba球队的Elo score计算 特征向量 逻辑回归 python2.7 Xfce终端 python2.7 Xfce终端 本次课程我们将按照下面的流程实现NBA比赛数据分析的任务: 获取比赛统计数据 ...

  3. 【Python】基于竞赛图法的NBA常规赛球队排名

    背景 目前,NBA常规赛的球队排名按胜率从高到底依次排列.这样的排名方式非常简单,容易被大众普遍接受.但是,由于NBA常规赛赛制的非对称循环的特点,这样的排名规则并非完全公平,因此本文将尝试建立更合理 ...

  4. [2008-NBA-视频直播]NBA常规赛

    直播吧里面有实时的比赛直播表http://www.zhibo8.com/ 德甲--NBA常规赛--英超--英冠--F1--西甲--意甲--世界职业拳王争霸赛.很全

  5. HTML 表格排序 PHP 实现NBA常规赛数据统计

    用到jQuery Vue 目标: 步骤: 获取链接 爬取链接 public function get($url) {$this_header = array("content-type: a ...

  6. 归属感:2010-2011赛季NBA常规赛开幕随想

    By byteh 2010/10/26晚 明天上午(2010年10月27日,美国当地时间2010年10月26日晚)7:30分,随着凯尔特人和热火的开幕战的开始,2010-2011赛季NBA常规赛拉开了 ...

  7. 嵌入式操作系统内核原理和开发(内存分配算法)

    内存分配是操作系统必须面对的一个环节,除非这个系统本身不需要内存安排,所有业务可以通过全局数据和堆栈搞定.内存分配其实不困难,但是由内存引申出来的东西就比较复杂了.早前没有MMU,系统本身的空间和用户 ...

  8. 铁路购票系统的简单座位分配算法

    问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一节车厢有20排.每一排5个座位.为方便起见,我们用1到100来给所有的座位编号,第一排是1到5号,第二排是6到10 ...

  9. 2016CCF、CSP 第二题铁路购票系统的简单座位分配算法(JAVA版)

    问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一节车厢有20排.每一排5个座位.为方便起见,我们用1到100来给所有的座位编号,第一排是1到5号,第二排是6到10 ...

最新文章

  1. R语言tidyr包gather()函数实战详解:数据收缩、从宽表到窄表
  2. android studio 将文件打包成jar文件
  3. 5月30日,社区活动:SharePoint技术峰会
  4. node.js--exports和module.exports
  5. EXCEL数据汇总-数据透视图
  6. pycharm项目目录结构_「Actix-web项目」-项目整体目录结构
  7. 开源不等于免费!谷歌如何通过安卓开源成为移动时代霸主? | 涛滔不绝
  8. Q96:PT(3.1):基本的基于噪声的纹理(Basic Noise-Based Textures)
  9. 使用Spring.Net进行Webservice开发发布遇到的问题
  10. SPOJ 1811 Longest Common Substring
  11. 西门子S7-1200系列PLC Modbus通信的踩坑记录
  12. 做短视频的几个小技巧,助你吸粉引流
  13. 国产_系统_加油 by tmddebaba
  14. 微博开放平台-发微博测试
  15. java连接数据库,jdbc四要素,jdbc六大步
  16. Rasa课程、Rasa培训、Rasa面试、Rasa实战系列之Lexical Ambiguity、Fallback Detection
  17. 【历史上的今天】9 月 13 日:“海盗湾”创始人出生;第一台装载硬盘的超级计算机;《超级马里奥兄弟》发布
  18. Jmeter组件-线程组(Thread Group)
  19. 数字旋转方阵c语言主函数,数据结构——递归求数字旋转方阵
  20. 【NISP一级】考前必刷九套卷(一)

热门文章

  1. android聚合网站sdk,聚合数据Android SDK 全国加油站查询演示示例
  2. 认识EIT造形---android 架构
  3. 计算机组成原理——第三章存储系统(上)
  4. OpenStack Yoga 三节点部署指南
  5. iOS 通知中心扩展制作入门
  6. 视频监控系统智能识别分析
  7. Linux服务器Android环境配置,基于BusyBox+LinuxDeploy+JuiceSSH搭建Android上的Linux服务器教程...
  8. 计算机ai高校排名,高校人工智能专业哪家强?来看看高校人工智能专业综合排名...
  9. mybatis多租户实现
  10. PHP面试题型汇总【一】(附答案)