例如,我有以下集合(N = 4)。任何两行只有一个共同的数字:
1 2 3 4
2 5 6 7
3 5 8 9
4 6 8 10
1 5 10 11
2 9
...
有人建议用算法来生成这样的序列吗?使用最少数量的唯一数字(这些数字或多或少均匀分布)。
在一个小时内,我一无所获。我甚至无法在纸上创建足够长的序列。
例如,由于错误的数字分配,这不会起作用:
1 2 3 4
1 5 6 7
1 8 9 10
1 11 12 13
1 14 15 16
...
我发现了这个序列:
1 2 3 4
1 5 6 7
1 8 9 10
1 11 12 13
2 5 8 11
2 6 9 12
2 7 10 13
3 5 9 13
3 6 10 11
3 7 8 12
4 5 10 12
4 6 8 13
4 7 9 11
答案 0 :(得分:2)
我认为你的问题与一个名为“Dobble”的游戏中涉及的内容有关。请查看链接:https://math.stackexchange.com/questions/464932/dobble-card-game-mathematical-background
答案 1 :(得分:1)
你需要生成所谓的"块设计点#34; (见维基百科)。最有趣的解决方案是N-1是素数还是其幂。然后看看"投影飞机"。对于N = 4,您需要生成三阶投影平面。在这种情况下,所需的行数和符号数(数量)都是N * N-N + 1。因此,对于N = 4,它是13。
生成投影平面的方法是Paige-Wexler正规形式的共同入射矩阵(参见Paige LJ,Wexler Ch。,A Canonical Form for Incidence Matrices of Projective Planes ....,In Portugalie Mathematica,vol 12, fasc 3,1953)。然后对于每一行,您只需写下列索引,您可以在其中看到关联矩阵中的列索引。对于N = 4(阶数= 3),Paige-Wexler正规形式的共同关联矩阵的示例在维基百科中。对于其他素数阶,你需要使用相应阶数的伽罗瓦域的乘法组来旋转排列矩阵的行,这使得它有点棘手。对于非主要订单(即主要电力订单,如8或9),它更加棘手。
Dobble游戏是第7阶投影平面的一个例子。 Dobble Kids是5阶投射平面。不幸的是,游戏制作人通过故意省略打印2张牌(或者在Dobble Kids的情况下为1张牌)来削弱投影平面。幸运的是,这个游戏推广了投影平面,所以你会发现现成的投影场生成器作为Dobble生成器。例如:
在此链接中的所有正确答案中,您将注意到确实所有生成器都基于Paige-Wexler正规形式的关联矩阵。不幸的是,它们只适用于主要订单。
顺便说一句,如果你有Dobble(= SpotIt)游戏设置,你可以用数字替换符号,这将给你55行7阶投影平面。为了获得所有57行,丢失的两张牌(至少在我的集合中): (雪人,灯泡,狗,感叹号,瓢虫,锤子,眼睛,头骨)和 (雪人,冰,仙人掌,人类,问号,花,绿色恐龙,枫叶)。