BFS如何在无限棋盘中给骑士以最小的步伐达到目标

有一个问题,我们应该找出骑士在无限棋盘中到达目的地所需的最少移动次数。 BFS解决了这一问题,方法是将其移动到其所有8个相邻的可达顶点之一。我不明白BFS算法是如何实现的。能否请您解释一下BFS的工作原理。

askeric 回答:BFS如何在无限棋盘中给骑士以最小的步伐达到目标

据我了解,这是蛮力行径,因此请尝试所有可能的动作,直到到达目的地为止。

您可以将棋盘看成是一个图形,其中每个单元都是一个节点,边缘是骑士移动(L形的一个),例如(0,0),(1,0),(2,1 )是节点,并且(0,0)和(2,1)之间有一条边;但不在(0,0)和(1,0)之间

使用BFS,您可以通过这种方式进行探索:首先查看1步可到达的所有单元格,然后查看2步可到达的所有单元格,然后查看3步等。 这样,只要您到达一个新的单元格,就可以确保不能以少于您当前水平的移动来达到它(否则必须已经达到);这显然也适用于目标单元格;因此,在使用BFS进行探索时,到达目的地后停下来并返回当前水平(这是最小移动量)

本文链接:https://www.f2er.com/3110300.html

大家都在问