判断两个结构是否相同的一种方法
在行列可自由变换的平面上有两个结构
| 1 | 1 | 1 | 0 | 0 | 0 |
| 1 | 0 | 0 | 1 | 0 | 0 |
| 0 | 1 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 0 | 0 | 1 |
| 0 | 0 | 0 | 1 | 1 | 1 |
| 0 | 0 | 0 | 0 | 1 | 0 |
| ** | |||||
| 1 | 1 | 1 | 0 | 0 | 0 |
| 1 | 1 | 0 | 0 | 0 | 0 |
| 1 | 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 0 | 1 | 1 | 1 |
| 0 | 0 | 0 | 1 | 1 | 0 |
| 0 | 0 | 0 | 0 | 0 | 1 |
如何快速的判断他们是不是相同的,
| 2 | 3 | 1 | 2 | 2 | 2 | ||
| 1 | 1 | 1 | 0 | 0 | 0 | 3 | |
| 1 | 0 | 0 | 1 | 0 | 0 | 2 | |
| 0 | 1 | 0 | 0 | 0 | 0 | 1 | |
| 0 | 1 | 0 | 0 | 0 | 1 | 2 | |
| 0 | 0 | 0 | 1 | 1 | 1 | 3 | |
| 0 | 0 | 0 | 0 | 1 | 0 | 1 | |
| ** | |||||||
| 1 | 1 | 1 | 0 | 0 | 0 | 3 | |
| 1 | 1 | 0 | 0 | 0 | 0 | 2 | |
| 1 | 0 | 0 | 0 | 0 | 0 | 1 | |
| 0 | 0 | 0 | 1 | 1 | 1 | 3 | |
| 0 | 0 | 0 | 1 | 1 | 0 | 2 | |
| 0 | 0 | 0 | 0 | 0 | 1 | 1 | |
| 3 | 2 | 1 | 2 | 2 | 2 |
一种可能的办法是统计每行每列中点的数量
| 1 | 1 | 2 | 2 | 3 | 3 |
| 1 | 2 | 2 | 2 | 2 | 3 |
但这两个结构每行点的数量都是1,1,2,2,3,3.每列点的数量都是1,2,2,2,2,3区分不出来。
| 7 | 12 | 3 | 7 | 6 | 7 | ||
| 4 | 5 | 3 | 12 | ||||
| 3 | 3 | 6 | |||||
| 3 | 3 | ||||||
| 4 | 3 | 7 | |||||
| 4 | 4 | 4 | 12 | ||||
| 2 | 2 | ||||||
| 5 | 4 | 3 | 12 | ||||
| 4 | 3 | 7 | |||||
| 3 | 3 | ||||||
| 4 | 4 | 4 | 12 | ||||
| 3 | 3 | 6 | |||||
| 2 | 2 | ||||||
| 12 | 7 | 3 | 7 | 7 | 6 |
这种情况下可以统计每个点所在行列点的总数,可以得到两个数组
| 2 | 3 | 6 | 7 | 12 | 12 |
| 3 | 6 | 7 | 7 | 7 | 12 |
但两个数组是相同的。
| 25 | 46 | 12 | 25 | 20 | 26 | 91 | 176 | 46 | 89 | 70 | 96 | |||||
| 15 | 19 | 12 | 46 | 56 | 73 | 46 | 175 | |||||||||
| 10 | 10 | 20 | 35 | 35 | 70 | |||||||||||
| 12 | 12 | 46 | 46 | |||||||||||||
| 15 | 11 | 26 | 57 | 41 | 98 | |||||||||||
| 15 | 14 | 15 | 44 | 54 | 50 | 55 | 159 | |||||||||
| 6 | 6 | 20 | 20 | |||||||||||||
| 19 | 15 | 12 | 46 | 73 | 57 | 46 | 176 | |||||||||
| 15 | 11 | 26 | 57 | 41 | 98 | |||||||||||
| 12 | 12 | 46 | 46 | |||||||||||||
| 15 | 15 | 14 | 44 | 54 | 54 | 50 | 158 | |||||||||
| 10 | 10 | 20 | 35 | 35 | 70 | |||||||||||
| 6 | 6 | 20 | 20 | |||||||||||||
| 46 | 26 | 12 | 25 | 25 | 20 | 176 | 98 | 46 | 89 | 89 | 70 |
用同样的办法计算第二次得到
| 6 | 12 | 20 | 26 | 44 | 46 |
| 12 | 20 | 25 | 25 | 26 | 46 |
还是无法区分,
但计算到第3次,得到
上面的结构为
| 20 | 46 | 70 | 98 | 159 | 175 |
| 46 | 70 | 89 | 91 | 96 | 176 |
下面的结构为
| 20 | 46 | 70 | 98 | 158 | 176 |
| 46 | 70 | 89 | 89 | 98 | 176 |
两个结构得以区分。
但并不是所有的结构都可以这么区分
| 1 | 1 | 0 | 0 |
| 1 | 0 | 1 | 0 |
| 0 | 1 | 0 | 1 |
| 0 | 0 | 1 | 1 |
| 1 | 1 | 0 | 0 |
| 1 | 1 | 0 | 0 |
| 0 | 0 | 1 | 1 |
| 0 | 0 | 1 | 1 |
统计行列点的数量和
| 2 | 2 | 2 | 2 | ||
| 1 | 1 | 0 | 0 | 2 | |
| 1 | 0 | 1 | 0 | 2 | |
| 0 | 1 | 0 | 1 | 2 | |
| 0 | 0 | 1 | 1 | 2 | |
| 1 | 1 | 0 | 0 | 2 | |
| 1 | 1 | 0 | 0 | 2 | |
| 0 | 0 | 1 | 1 | 2 | |
| 0 | 0 | 1 | 1 | 2 | |
| 2 | 2 | 2 | 2 |
他们是相同的,
| 6 | 6 | 6 | 6 | 18 | 18 | 18 | 18 | |||||
| 3 | 3 | 6 | 9 | 9 | 0 | 0 | 18 | |||||
| 3 | 3 | 6 | 9 | 0 | 9 | 0 | 18 | |||||
| 3 | 3 | 6 | 0 | 9 | 0 | 9 | 18 | |||||
| 3 | 3 | 6 | 0 | 0 | 9 | 9 | 18 | |||||
| 3 | 3 | 6 | 9 | 9 | 18 | |||||||
| 3 | 3 | 6 | 9 | 9 | 18 | |||||||
| 3 | 3 | 6 | 9 | 9 | 18 | |||||||
| 3 | 3 | 6 | 9 | 9 | 18 | |||||||
| 6 | 6 | 6 | 6 | 18 | 18 | 18 | 18 |
统计每个点所在行列的点的数量和,他们也是相同的,
| 54 | 54 | 54 | 54 | 162 | 162 | 162 | 162 | |||||
| 27 | 27 | 54 | 81 | 81 | 162 | |||||||
| 27 | 27 | 54 | 81 | 81 | 162 | |||||||
| 27 | 27 | 54 | 81 | 81 | 162 | |||||||
| 27 | 27 | 54 | 81 | 81 | 162 | |||||||
| 27 | 27 | 54 | 81 | 81 | 162 | |||||||
| 27 | 27 | 54 | 81 | 81 | 162 | |||||||
| 27 | 27 | 54 | 81 | 81 | 162 | |||||||
| 27 | 27 | 54 | 81 | 81 | 162 | |||||||
| 54 | 54 | 54 | 54 | 162 | 162 | 162 | 162 |
计算到无限次都相同,用这种办法不足以区分这两个结构。
所以用点所在行列点的数量和的办法区分,如果得到的数组是不同的,则这两个结构一定是不同的,但如果是相同的还需要进一步区分。
