是否有可能具有布尔矩阵的旋转不变标识符?

时间:2009-11-28 15:13:02

标签: algorithm matrix

假设我有一个1和0的矩阵,我希望这个矩阵的'标识符'取相同的值,无论矩阵是旋转90度,180度还是270度,即4到-1映射。理想情况下,此标识符应为矩阵大小的1/4。是否可以编写一个执行此映射的函数?

背景:我在UVa问题集上看this problem。我并不需要这样的功能来解决这个问题,但它确实存在似乎是合理的,并且使用它可以提供更优雅的解决方案。

2 个答案:

答案 0 :(得分:7)

是。您可以使用原始矩阵A,并将其旋转到所有可能的配置A',A''和A'''。然后你可以使用你选择的一些排序(只是保持一致)对它们进行排序,选择第一个,并使用你选择的任何哈希函数进行哈希(再次,实际的哈希函数无关紧要,只需保持一致)。

显然,这可以通过不实际进行完全旋转和排序来进行大量优化 - 您可以懒惰地进行比较,一旦知道哪个旋转首先排序就停止 - 但原理是相同的。

答案 1 :(得分:1)

你可以对所有旋转进行异或,这将是一个对称的标识符。