骑士以最小的动作捕捉女王和车

时间:2014-02-10 14:40:50

标签: algorithm breadth-first-search

你会得到一个包含骑士,车和女王的国际象棋棋盘。你应该确定骑士需要捕捉车和女王的最小移动次数,假设它们都没有移动。您可以按任意顺序捕获它们 - 先行先行或先行先行。

Complete problem statement

在这个任务中,可以证明从骑士到车的路径加上从车到女王的路径等于/小于/大于从骑士到女王的路径加上从女王到路径的路径车吗?或者我必须计算它们并采取最小值?

2 个答案:

答案 0 :(得分:3)

你必须计算骑士和骑士女王的最低骑士。

从女王到白车的路径等于从车到女王的路径,所以你只需要计算一个方向。

答案 1 :(得分:0)

由于起始位置都是任意的,因此理论上可以交换Queen和Rook来生成相同问题的替代版本。因此,默认情况下,您不能假设一种方法比另一种方式短,您必须同时计算它们。无论哪个是哪个,但所有3个距离都是相关的。

以下内容仅在您希望实施智能算法而非广度搜索时才有意义。

请注意,总共有4条可能的路径(K是Knight,R是Rook,Q是女王):

1. K -> R -> Q
2. K -> Q -> R
3. K -> R -> K -> Q
4. K -> Q -> K -> R

你需要这些之间的最小值4.所以如果你计算了距离

a = K -> Q
b = K -> R
c = R -> Q

然后您要查找a+cb+c2*a+b2*b+a之间的最小值。
如果以足够稳健的方式计算距离,则路径3和4将变得过时,因为它们的长度分别大于或等于1和2。但是,如果您不确定,可以使用它们来确认结果。如果3或4是最短路径,如果算法正常工作,它必须与1或2完全一样长。