求解算法的实现解决方案
求解算法的实现
亚瑟王打算请150明骑士参加宴会,但是有些骑士相互之间会有口角,而亚瑟王知道谁和谁不和。亚瑟王希望能让他的客人围着一张圆桌坐下,而所有不和的骑士相互之间不会挨着坐。回答下列问题:
1.哪一个经典问题能够作为亚瑟王问题的模型?
2.请证明,如果与每一个骑士不和的人数不超过75,则该问题有解。
3.设计回溯算法求解亚瑟王问题。
------解决思路----------------------
请问LZ,第2题的条件中,和每一位骑士不和的人数,是不超过75呢,还是少于75?
------解决思路----------------------
第2题 如果与每一个骑士不和的人数不超过75,则该问题有解。
是错的。
实际上,假设有A, B两个骑士,他们互相不和,那么和A骑士不和的人数是1,不是2。
现在假设将150位骑士编号为1~150,然后分成两队:
第1队包含所有的奇数号骑士再外加150号骑士。
第2对包含除150号骑士以外的所有偶数号骑士。
现在我们假设的情况是每一队里面的骑士之间两两不和,而不同队之间的骑士都可以相处融洽,这种情况刚好满足题意。
但是,根据不和者不相邻的原则,当排座位时,第1队的任意两位骑士之间都必须包含(且只能包含)1位第2队的骑士。
由于是圆桌,所以得出的结论是如果有解,则第2队的骑士数量要和第1队骑士数量相同,但是实际上第2队中的骑士比第1队少2人,这表明必定存在第1队中的两位骑士相邻,然后就不停的吵架。
所以第2题应该是
如果与每一个骑士不和的人数少于75,则该问题有解 (原题忘了算自己了)
亚瑟王打算请150明骑士参加宴会,但是有些骑士相互之间会有口角,而亚瑟王知道谁和谁不和。亚瑟王希望能让他的客人围着一张圆桌坐下,而所有不和的骑士相互之间不会挨着坐。回答下列问题:
1.哪一个经典问题能够作为亚瑟王问题的模型?
2.请证明,如果与每一个骑士不和的人数不超过75,则该问题有解。
3.设计回溯算法求解亚瑟王问题。
------解决思路----------------------
请问LZ,第2题的条件中,和每一位骑士不和的人数,是不超过75呢,还是少于75?
------解决思路----------------------
第2题 如果与每一个骑士不和的人数不超过75,则该问题有解。
是错的。
实际上,假设有A, B两个骑士,他们互相不和,那么和A骑士不和的人数是1,不是2。
现在假设将150位骑士编号为1~150,然后分成两队:
第1队包含所有的奇数号骑士再外加150号骑士。
第2对包含除150号骑士以外的所有偶数号骑士。
现在我们假设的情况是每一队里面的骑士之间两两不和,而不同队之间的骑士都可以相处融洽,这种情况刚好满足题意。
但是,根据不和者不相邻的原则,当排座位时,第1队的任意两位骑士之间都必须包含(且只能包含)1位第2队的骑士。
由于是圆桌,所以得出的结论是如果有解,则第2队的骑士数量要和第1队骑士数量相同,但是实际上第2队中的骑士比第1队少2人,这表明必定存在第1队中的两位骑士相邻,然后就不停的吵架。
所以第2题应该是
如果与每一个骑士不和的人数少于75,则该问题有解 (原题忘了算自己了)