音乐家观演问题通解初探
在上一篇 音乐家观演问题求解与拓展分析 里,已经把6位音乐家观演问题扩展到一般情形,并就[4,n]满观演得到一些结论。这里就一般情形的音乐家观演问题的通解做一些初步的探索。
一般情形的音乐家观演问题的描述如下:
有n个音乐家(n > 1)参加一系列演出。每场演出中,n个音乐家有若干人当观众,其余人以表演者身份出场。问:至少需要安排多少场演出才能使得每位音乐家都能够作为观众观看其他n-1位音乐家的表演?
把这个问题的解记为F(n)。由定义,有:
F(n) = min(k | 存在满足[k,n]满观演的实例)
n较小时,通过简单尝试可以很快求出F(n):
当n=2时,有满足[2,2]满观演的实例:C1:0-1, C2:1-0;且没有满足[1,2]满观演的实例,于是F(2) = 2
当n=3时,有满足[3,3]满观演的实例:C1:0-12, C2:1-02, C3:2-01;且没有满足[2,3]满观演的实例,于是F(3) = 3
从这两种情形的实例构造可以直观地看出F(n)的一个特性:
F(n) ≤ n
这个结论是显然的,只要安排第k场演出里让音乐家k当观众,其余人做表演即可满足[n,n]满观演(还可以安排第k场演出里让k做表演,其余人当观众)。
F(n)还满足如下特性:
F(n) ≤ F(n+1)
这个结论也是显然的。任取满足[F(n+1), n+1]满观演的一个实例,从F(n+1)场演出中拿掉音乐家n+1,剩余的n位音乐家构成了一个满足[F(n+1), n]满观演的实例,再由F(n)的定义便有 F(n) ≤ F(n+1)。也可以等价地表示为:
F(n) ≤ F(m), n < m
考察F(4),由上面的结论,可知:
F(3) ≤ F(4) ≤ 4
由F(3)=3,知F(4)的取值只可能是3或4。先考虑取3的可能,n=4,一场演出最大提供2·2=4个观演有序对,3场最大提供4·3=12个观演有序对。而n=4的满观演要求的不同观演有序对数是P(4,2)=4·3=12。但是实际构造很容易发现3场2对2的演出必然会有重复的观演有序对。所以:
F(4)=4
音乐家观演问题求解与拓展分析 里已经得出:F(6)=4 、F(8)=5 和 F(n) > 4, n > 6。
于是有F(5)=4,F(7)=5
F(2), ..., F(8)排在一起为:2, 3, 4, 4, 4, 5, 5
不知道一般情形下F(n)能否有通项公式的表示(网上查了一下,没有看到这方面的探讨)。随着n值变大,F(n)的值就越难求,难度在于最小实例的构造。
编程求解的话,可以考虑用累计重复有序对的方法去判断一种构造是否为满足条件的一个实例。
最后尝试求一下F(9)的值:
由F(9) ≥ F(8),知F(9)的最小可能为5。先看看能不能用排除法把取值为5的可能性排除掉。
一场演出提供的最大观演有序对数为4·5=20,而n=9要求不同的观演有序对总数为9·8=72。假设存在满足[5,9]满观演的实例,以下分情形考虑:
(1)若5场演出中有3场或更多场是1对8的演出
则这5场演出能提供的最大观演有序对总数为8·3+20·2=64 < 72,无法达到满观演的要求。
(2)若5场演出中有2场是1对8的演出
则这5场演出能提供的最大观演有序对总数为8·2+20·3=76 > 72,不能直接排除,还要进一步考察。
此情形下,有2人仅当了一次观众,其余人至少两次,5场演出的总观众数,记为Ta,满足:Ta ≥ 2+7·2 = 16,由此可知至少有一场演出的观众数不少于5(否则Ta ≤ 2+4·3 = 14)。不妨令:
C1:0-12345678
C2:1-02345678
C3:23456...-....
为使得有(2,3)和(3,2)两个观演有序对,不妨令:
C4:2...-3...
C5:3...-2...
为使得有(2,4)和(3,4),在C4和C5中,4都得是表演者。即:
C4:2...-34...
C5:3...-24...
但这样,就缺少了(4,2)和(4,3)。
综上可知,此情形无法达到满观演的要求。
(3)若5场演出中有1场是1对8的演出
不妨令:
C1:8-01234567
对这样的5场演出,记为A,做如下变换:去掉C1,并从其余的演出里拿掉8。新得到的4场演出记为B。
易知,若A是满足[5,9]满观演的实例,则B是满足[4,8]满观演的实例。
于是推出来 F(8) ≤ 4,这与 F(8)=5 矛盾。说明此情形无法达到满观演的要求。
这里用到的方法,说明上面的情形(1)和(2)的考虑是多余的。这是因为一方面,情形(3)涵盖了情形(1)和情形(2);另一方面,情形(3)无法达到满观演的要求的结论是直接推导出来的,并没有借助情形(1)和情形(2)推出的结论。
这里用到的结论可以拓展到一般情形,即:
若满足[k+1,n+1]满观演的一个实例里音乐家m仅当了一次观众,且没有m单独1人表演的演出;从这个实例中去掉m为观众的那场演出,并从其余的k场演出里去掉m。新得到的一组演出一定是满足[k,n]满观演的一个实例。 ①
这个一般性结论的证明是很直观的:开始的k+1场演出能提供(n+1)·n个不同的观演有序对,去掉m为观众的那场演出,剩下的k场演出再把m去掉,就去掉了所有有m参与的观演有序对,剩下k场演出,除去m后的n-1人之前任意两人的观演有序对都保留下来了,总共是P(n,2)=n·(n-1),由定义可知,新得到的这k场演出是满足[k,n]满观演的一个实例。
同样,①有如下对等结论:
若满足[k+1,n+1]满观演的一个实例里音乐家m仅做了一次表演,且没有m单独1人当观众的演出;从这个实例中去掉m为表演者的那场演出,并从其余的k场演出里去掉m。新得到的一组演出一定是满足[k,n]满观演的一个实例。 ②
综上分析,对于n=9的情形,有如下结论:
若存在满足[5,9]满观演的实例,则该实例中,每个音乐家至少要当两次观众,也至少要表演两次。9人合计的观众身份和表演者身份都至少要有18次。
这样的实例里,必有一场演出中至少有4个观众(不然3·5 < 18),不妨令:
C1:0123...-...
算了,不再往下分析了:(
有时间交给程序去弄吧:)