0

我正在寻找有关为什么这个问题有偶数个解决方案的指导:

一个怪人有他自己的野生动物收藏,包括熊、狮子、老虎、大象、狼獾、犀牛和野狗。这 7 只动物构成了他的危险动物收藏,并被安置在 7 个动物围栏中,并排成一排,最左边的围栏是 1 号,最右边的围栏是 7 号。

其中一些动物相互搅动,因此该人决定他必须将以下几对动物分开:

- 熊和金刚狼 - 犀牛和野狗 - 狮子和老虎 - 熊和大象 - 大象和野狗 - 大象和熊

如果两只动物不相邻,即如果它们之间有另一只围栏,则它们是分开的。所有动物必须放在不同的围栏中。

我想知道为什么这个问题总会有偶数个解决方案?据我了解,约束问题通过对称获得效率——也就是说,只要对称完成,您就可以轻松地交换围栏中的动物以获得不同的解决方案。但我不太明白这一点,如果有人能提供更清晰的解释,那将非常有帮助。先感谢您。

4

2 回答 2

0

您需要更精确地定义“解决方案的数量”。比如说,你有 N 个解决方案,将熊分配给最左边(或第一个)笔。通过左右颠倒(将熊分配给最后一支笔),您可以获得两倍的解决方案。两倍的数量总是能被二整除。

于 2014-05-22T16:29:32.133 回答
0

因为您只提供了两次其中一对(大象和熊+熊和大象)。也就是说,您要么在代码中排除了其他对,要么添加了不可预测的额外约束。要么提供所有这些,要么编写正确的代码,不会在每一对中排除相反的代码。

于 2014-08-11T08:59:02.210 回答