生成所有可能的拉丁方阵的算法

4
我需要帮助编写一个算法,以创建所有n=10的拉丁方阵。 我已经创建了n!个拉丁方阵,并尝试在之后对行和列进行排列,这样就会得到n!* n!* n!个拉丁方阵,但根据维基百科(https://en.wikipedia.org/wiki/Latin_square),这种扩展方式是错误的。 有没有人知道如何获得所有可能的拉丁方阵?
1个回答

3

很遗憾,你的努力注定要失败。我们仍然不知道如何计算大小为n的拉丁方阵数量的公式。但是,有个可怜的人已经计算出了n=10的数量。虽然生成拉丁方阵是可能的(你总是可以生成所有可能性,并检查它们是否是拉丁方阵),但你会得到

9,982,437,658,213,039,871,725,064,756,920,320,000

答案(维基百科)。

所以,我希望你有一个大硬盘和充足的时间。


我之前表述问题有些不准确。我们正在尝试编写一个算法,可以创建尽可能多的拉丁方阵。拉丁方阵的边长为n=1,2,...10。对于n=6,根据维基百科上的数据,数量并不是很高。 - preneond
@prone666:'尽可能生成拉丁方阵'是指在固定时间内吗?你也可以参考这个链接:http://math.stackexchange.com/questions/145228/formula-for-the-number-of-latin-squares-of-size-n。 - gilleain
最好也检查一下这个链接:http://math.stackexchange.com/questions/63131/generate-random-latin-squares - cpicanco

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接