UyHiP 往期趣题整理(2)2016 / 01~04

2016-01

在 n*n 的二维数组中填入 [0, n) 区间内的整数,如果数组中没有两个相同元素在同一行或同一列(即各行各列都是 0~n-1 的全排列),就称这个数组为 n 阶拉丁方

(既然是在程序员网站上写,当然要改成从 0 开始计数)

两个 n 阶拉丁方可以逐个位置配对,合成一个元素类型为有序对 (x, y) 的二维数组。x, y 都在 [0, n) 中取值,也就是说 (x, y) 的不同取值有 n^2 个。如果数组中恰好出现所有 n^2 个不同的有序对(每个有序对出现一次),就称两个 n 阶拉丁方正交

关于正交拉丁方有经典结论:2, 6 阶正交拉丁方不存在,其余阶数均存在。

现在请问,最多有多少个两两正交的 n 阶拉丁方?你只需回答(1)n 为素数;(2)n 为 2 的正整数次幂的情况。

2016-02

考虑 R^n 空间中所有各个坐标均为 0 或 1 的点(共有 2^n 个),它们构成一个 n 维单位超立方体的 2^n 个顶点。

现在用若干个 n-1 维超平面覆盖这些点(n-1 维超平面,即由方程 Sum( a_i*x_i | i=1..n) + b = 0 确定的超平面,其中所有 a_i 不全为零),显然用两个平面 x_1=0, x_1=1 就够了。

请问,若要覆盖除原点 (0, ... , 0) 之外的所有 2^n-1 个点(不能覆盖原点),最少需要几个超平面?

2016-03

做此题前请先看这里的 2015-12 题目,之后再看下面的加强题:

请问,C_4 在简单图 G 的出现次数与 G 的最常见子图的出现次数之比的最大值是多少?并举出一个取到最大值的 G 。

注意,这里的最常见子图允许并列第一

2016-04

Alice 和 Bob 的日常(误):Alice 手中有两个区间 [1, N] 内的不同整数,Bob 有这两个整数中的一个。以上规则以及 N 的值两人都知道。两人可以通过一条双向信道通信,问最少传输多少个二进制位,可以使 Alice 保证知道 Bob 拿到的是哪个整数?Alice 和 Bob 可以事先商定一个通信协议,但是一旦双方拿到自己手中的数,就只能通过信道进行交流。

再次提醒:对给定的通信协议,我们只考虑最坏情况。




答案

2016-01

先证明对任意大于 1 的 n ,最多有 n-1 个两两正交的 n 阶拉丁方。

首先注意到如果有两个正交拉丁方,将其中一个方阵的 0~n-1 随意置换仍然是拉丁方,且仍然与另一个拉丁方正交。因此对一组两两正交的拉丁方,可以将每个拉丁方各自进行符号置换,使得它们的第一行都变为 0, 1, ... , n-1 。

任取其中两个拉丁方进行组合,第一行是 (0, 0), ... , (n-1, n-1) ,集齐了所有形如 (x, x) 的有序对,因此在其他位置不可能再出现这样的有序对,即两个拉丁方在其他位置不能取相等的值;特别地,两个拉丁方在第二行第一列的值不等。另外,所有拉丁方在第二行第一列的值都不是 0(否则与第一行第一列的 0 冲突了),只能在 1, ... , n-1 中取值。这样就说明最多只能有 n-1 个两两正交的拉丁方。

对 n 是素数 p 的情况,上界 n-1 是可以取到的。如下定义拉丁方 A_k :

A_k[i][j] = (k*i + j) mod p

其中 k=1, ... , p-1 ,下标 i, j 范围均为 [0, n) 。利用同余的性质,容易验证 A_k 都是拉丁方且两两正交。

对 n=2^k 的情况,似乎模 n 的方法不管用了。但我们还有一样利器:有限域。上面的模 p 加法和乘法运算实际上就是在有限域 F_p 中做加法和乘法,同样可以推广到有限域 F_2^k 上,此时 k 遍历域中所有非零元素,i, j 遍历域中所有元素,以上所有定义和证明依然成立。最后如果有必要的话,把域中元素的符号改写为 0, 1, ... , n-1 就行了。

因为所有 p^k 阶有限域均存在(p 是素数,k 是正整数),故当 n=p^k 时都存在 n-1 个两两正交的 n 阶拉丁方。

2016-02

用代数方法解决组合问题的经典实例。

我们知道每个超平面都对应方程 Sum( a_i*x_i | i=1..n) + b = 0 。如果超平面不过原点,说明 b 不为零,将方程两边同除以 b 进行归一化,常数项将变为 1 。因此后面均假设常数项为 1 。

下一步求这些超平面的并集,这只需将所有方程的左边相乘就可以得到。结果一定形如 P(x_1, ... , x_n)=0 ,其中 P 是一个 k 次 n 元多项式(k 为超平面的个数),对应的曲面经过除原点外所有 2^n-1 个点但不过原点。

注意当 x=0 或 1 时,都有 x^t=x(t 为正整数)。如果只关心多项式 P 在单位超立方体顶点上的取值,将 P 中所有形如 (x_i)^t 的部分全部简化为 x_i 不会产生任何影响。简化后的方程形如 Q(x_1, ... , x_n)=0 ,其中 Q 是次数不超过 k 的 n 元多项式,且每一项都是若干个不同的 x_i 相乘再乘以常系数的形式,项数不超过 2^n 。

例如当 n=2 时,Q 必有 Axy + Bx + Cy + D 的形式。

别忘了 Q 的常数项一定为 1(多项式 P 是若干个常数项为 1 的多项式乘积,常数项仍为 1;P 简化到 Q 的过程不改变常数项),代入 2^n-1 个点的坐标,很容易看出所有系数是唯一确定的。

什么?你说不容易看出?下面先举 n=3 的例子:

Q(x, y, z) = Axyz + Bxy + Cxz + Dyz + Ex + Fy + Gz + H

首先有 H=1;

分别代入 (1, 0, 0), (0, 1, 0), (0, 0, 1),可得 E=F=G=-1;

分别代入 (1, 1, 0), (1, 0, 1), (0, 1, 1) ,可得 B=C=D=1;

代入 (1, 1, 1),可得 A=-1。

对其他的 n 也一样,先代入恰有一个坐标分量为 1 的点,再代入恰有两个坐标分量为 1 的点,依次平推过去,所有系数都可以确定。

显然能看出这些系数不是 1 就是 -1,好像有什么规律,实际上这个唯一的 Q 就是:

Q(x_1, ... , x_n) = (1-x_1)(1-x_2)...(1-x_n)

现在可以看出 Q 是 n 次多项式,因此 P 也至少是 n 次多项式,从而至少也要用 n 个超平面才能满足题目要求。

找到满足条件的 n 个超平面并不难,x_1=1, x_2=1, ... , x_n=1 就可以了。

2016-03

题解的前半部分依然要参照这里的 2015-12 题解。但是在最后一步,我们调整一下配凑的系数:

6/10*#(L_2) + 3/10*#(K_(2,3)) + 1/10*#(T+) = Sum( (i^2-i+12)/20 * X_i )

请注意式子左边各系数之和等于 1,因此它是图 G 最常见子图的出现次数的一个下界,二者相等的条件是 L_2, K_(2,3) 和 T+ 出现次数都一样,并且再没有其他出现次数更多的导出子图。

结合式子

#(C_4) = Sum( i*X_i/4 )

我们希望比值 (i/4) / ((i^2-i+12)/20) 尽可能大。注意 i 限制为非负数,用高中数学知识可以求出 i=sqrt(12) 时取最大值;再考虑到 i 是整数,可得 i=3, 4 时该比值同时取到最大值 5/6 。

这说明二式比一式的比值不大于 5/6(取等号当且仅当仅 X_3 与 X_4 可以不为零,其余 X_i 均为零;即对 G 的任意同构于 L_2 的导出子图,恰有 3 或 4 种方法可以添一顶点变为 C_4),从而 #(C_4) 与最常见子图出现次数的比值不大于 5/6 。

满足除 X_3 与 X_4 外其余 X_i 不为零的图是存在的,例如 C_3*C_4, K_(4,4) 和 K_(5,5) 。C_3*C_4 是 C_3 和 C_4“相乘”得到的 12 顶图,考虑一个左右边卷曲相连,上下边卷曲相连的 3*4 棋盘,将所有相邻(有一条公共边)和相接(有一个公共顶点)的格子对连接,就得到 C_3*C_4 。

如果不理解什么是卷曲,只要记住“一三行格子之间不连,二四行格子之间不连,其余所有格子对都相连”即可。


上图是 C_3*C_4,注意并没有把 12 个顶点按 3*4 棋盘摆放,而是将棋盘的 4 行平移到同一行首尾相接,将 12 个格子串成一条直线,再弯成一个圆就得到上图。

(简单说明一下为什么这三个图满足条件。C_3*C_4 的导出子图为 C_4 只有一种情况,就是选取的 4 个顶点分别位于棋盘的一二三四行。随意去掉其中一个顶点,可以看出只有添入同一行的任意一个顶点才能获得 C_4 ,这样的顶点有 3 个,因此只有 X_3 不等于 0 。从 K_(4,4) 中选取 L_2(不妨设选了两个 X 部顶点,一个 Y 部顶点),必须添入另一个 Y 部顶点才能获得 C_4 ,这样的顶点有 3 个,因此只有 X_3 不等于 0 。K_(5,5) 的情况完全类似,只有 X_4 不等于 0 。)

遗憾的是,这三个图都不满足“L_2, K_(2,3) 和 T+ 出现次数都一样”的条件。它们具体的出现次数如下表:

 L_2K_(2,3)T+
C_3*C_41080324
K_(4,4)48480
K_(5,5)1002000

接下来就是最精髓的一步了:我们把若干个图放在一起,合成一个不连通图!别忘了,虽然之前说过 G 的最常见子图一定是从连通图里找,但是 G 本身未必就一定是连通图。而连通图 H 在不连通图中的出现次数,自然就是 H 在各个连通分量中的出现次数之和。

具体的系数不难通过配凑得出:只要把 100 个 C_3*C_4 ,225 个 K_(4,4) 和 108 个 K(5,5) 放在一起,新图中 L_2, K_(2,3) 和 T+ 的出现次数就都一样了。具体地说,它们都出现了 32400 次。

至此先不要高兴得太早,万一还有出现次数更多的图,这个构造就失败了。首先考虑非二分图的出现次数,显然它不可能在 K_(4,4) 和 K_(5,5) 中出现,只能在 C_3*C_4 中出现,即只要出现次数不超过 324(T+ 的出现次数)就暂时没问题了。根据 C_3*C_4 的结构进行分类讨论,可以找到除 T+ 外两个同样出现了 324 次的图:

好在没有超过 324 次的图。

接下来只需考虑在 K_(4,4) 或 K_(5,5) 中出现过的图,这两个图的导出子图一定是完全二分图。请注意,C_3*C_4 的连通导出子图中二分图少得可怜(只要在相邻两行取至少 3 个顶点,就形成一个三角形),仅有 K_(1,1),K_(1,2) 和 K_(2,2) 三种。K_(1,1) 即两点一线图,它出现的次数即为边的总数:

100*48+225*16+108*25=11100

显然比 32400 少得多,而 K_(1,2) 和 K_(2,2) 实际上就是 L_2 和 C_4,无需考虑。最后只剩下那些没在 C_3*C_4 中出现的图。K_(5,5) 的导出子图中,K_(2,3) 出现了 200 次,遥遥领先第二名(K_(2,2), (3,3), (1,2), (1,3), (2,4), (3,4) 等一系列完全二分图并列第二,各出现 100 次),而 K_(4,4) 的导出子图中 K_(2,3) 与 K_(1,2) 并列第一,出现了 48 次。也就是说,K_(2,3) 完全压制其他所有完全二分图。

综上,我们终于可以下结论说这个图满足题目要求了。此图的最常见子图为 L_2, K_(2,3), T+, 一个 6 顶图和一个 7 顶图,它们各出现 32400 次,而 C_4 出现了 27000 次,恰好是最常见子图出现次数的 5/6 倍。

2016-04

以下协议最坏情况下需传输 log(log(N))+O(1) 位即可达到目的(回忆算法复杂度理论中常用的符号:log 是以 2 为底的对数,O(1) 表示有界函数):Alice 将手中两个数转化为二进制,它们必然在某些位上不同,将这些位中最右侧一位的序号(按从右往左的顺序编号为第 0 位,第 1 位,...)告诉 Bob,Bob 将自己手中相应位告诉 Alice 即可。

例如 Alice 手中有 2 和 10,Bob 手中有 10,首先 Alice 将两个数转为二进制(10 和 1010),发现右数第 3 位不同,于是发送 “11”(3 的二进制表示);Bob 读出手中数 10 的二进制第 3 位是 1,于是回复“1”,Alice 就知道 Bob 拿的是 10 了。

因为 [1, N] 中所有整数的位数不超过 log(N),Alice 传给 Bob 的位序号自然也不会超过 log(N),传输过程最多消耗 log(log(N)) 位,加上 Bob 回传的一位以及 log(log(N)) 中隐含的常数项,最多需传输 log(log(N))+O(1) 位。

为了证明这个传输位数不能再优化,UyHiP 的官方题解用了一种很有启发性的叙述方式。假设游戏过程中 Alice 和 Bob 不发送任何字节,而让一个能同时看到 Alice, Bob 两人手中数字的中间人 Eve 代替两人进行广播(Alice 和 Bob 都能听见)。Alice, Bob 和 Eve 事先可以商量一个通讯协议。也许有人会说这样太简单了,Eve 看 Bob 拿的是大数还是小数,发送一个二进制位不就行了。现在加一个条件:Eve 在游戏中可能会随便乱发消息,要求当 Eve 违背事先商定的协议时,Alice 和 Bob 至少有一人必须立刻发现错误。

可以看出,任何原先的 Alice-Bob 两人协议都可以移植成现在这个游戏的三人协议。原游戏中是 Alice 和 Bob 对话,在新游戏中 Alice 和 Bob 可以让 Eve 逐句模仿原游戏中的对话,如果 Eve 模仿 Alice 的某句话出错,Alice 立刻就能发现;对 Bob 也同理。还用上面的例子举例,Eve 必须模仿两人对话,即先发送“11”再发送“1”。如果第一句错,Alice 立刻就能发现(因为跟自己想发的 11 不一样);如果第二句错,Bob 立刻就能发现(因为收到“11”的 Bob 想发送 1,但 Eve 说的跟自己想发的不一样)。也就是说,三人协议最坏传输的位数一定不超过两人协议最坏传输的位数。

接下来是证明的关键部分,以 (a, b) 表示“Alice 拿到数字 a 和 b,Bob 拿到数字 b”的情况。

对情况 (x, y) 和 (y, z) ,Eve 发送的消息序列不可能完全相同。否则在情况 (z, y) 中,Eve 可以假装是情况 (x, y) 或者 (y, z) 发送消息,这样拿到数字 y 和 z 的 Alice 会认为 Bob 拿到的是 z(即情况 (y, z)),而手中有 y 的 Bob 会认为 Alice 拿到的是 x 和 y(即情况 (x, y)),双方都不会发现 Eve 作假,并做出错误的判断。

有了这个结论,就可以将原问题转化成图论问题。以 [1, N] 中所有整数为顶点,每两个顶点之间连正反两条有向边,得到一个含 N(N-1) 条边的有向图(即有向完全图)。边 x->y 代表情况 (x, y) 。给图中所有边染色,如果两种情况下 Eve 发送的消息序列相同,则对应的两条边染相同颜色,否则染不同颜色。这样问题就变成了:用尽可能少的颜色给图中所有边染色,使得任何首尾连接的两条边颜色均不同。

注意到对任意两个顶点 x, y,边 x->y 的颜色与顶点 y 的任一条出边颜色均不同。记 S(x) 为 x 的所有出边颜色之集,则 S(x) 中有不属于 S(y) 的颜色,从而 S(x) 不等于 S(y) 。因此所有 N 个顶点的 S(.) 集一定两两不同。但 k 种颜色的子集只有 2^k 个,故 2^k>=N,即 k 最小也不会小于 log(N) 。

颜色数不小于 log(N),即 Eve 发送的消息序列至少有 log(N) 种不同形式,这说明 Eve 最坏情况下一定要发送长度至少为 log(log(N)) 的二进制序列,而两人协议传输的位数不会小于这个数。这说明 log(log(N))+O(1) 的传输位数的确不能再优化了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园的建设目标是通过数据整合、全面共享,实现校园内教学、科研、管理、服务流程的数字化、信息化、智能化和多媒体化,以提高资源利用率和管理效率,确保校园安全。 智慧校园的建设思路包括构建统一支撑平台、建立完善管理体系、大数据辅助决策和建设校园智慧环境。通过云架构的数据中心与智慧的学习、办公环境,实现日常教学活动、资源建设情况、学业水平情况的全面统计和分析,为决策提供辅助。此外,智慧校园还涵盖了多媒体教学、智慧录播、电子图书馆、VR教室等多种教学模式,以及校园网络、智慧班牌、校园广播等教务管理功能,旨在提升教学品质和管理水平。 智慧校园的详细方案设计进一步细化了教学、教务、安防和运维等多个方面的应用。例如,在智慧教学领域,通过多媒体教学、智慧录播、电子图书馆等技术,实现教学资源的共享和教学模式的创新。在智慧教务方面,校园网络、考场监控、智慧班牌等系统为校园管理提供了便捷和高效。智慧安防系统包括视频监控、一键报警、阳光厨房等,确保校园安全。智慧运维则通过综合管理平台、设备管理、能效管理和资产管理,实现校园设施的智能化管理。 智慧校园的优势和价值体现在个性化互动的智慧教学、协同高效的校园管理、无处不在的校园学习、全面感知的校园环境和轻松便捷的校园生活等方面。通过智慧校园的建设,可以促进教育资源的均衡化,提高教育质量和管理效率,同时保障校园安全和提升师生的学习体验。 总之,智慧校园解决方案通过整合现代信息技术,如云计算、大数据、物联网和人工智能,为教育行业带来了革命性的变革。它不仅提高了教育的质量和效率,还为师生创造了一个更加安全、便捷和富有智慧的学习与生活环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值