我想在N * N大小的正方形网格中运行BFS。有一个单独的起始节点。我只能向上/向下/向左/向右移动(而不是对角线)。 电网中可能存在障碍物。网格中BFS队列的大小
当然,我想用一个队列来存储我必须访问的节点。它将被实现为大小为S(固定大小)的圆形数组。我的阵列的最小尺寸是多少?即使在最坏的情况下,我也不希望它溢出。
一个类似的问题是:给定网格中的一个节点,在距离起始节点确切距离K处的节点的最大数量是多少(对于任何0 < K < 2 * N)?
我认为很难找到这个问题的确切答案,所以一个好的近似就足够了。
见这个例子中(最右边的图片):
这不是一个网格,但我们可以使格栅具有相同的模式(其中白色代表的障碍和黑色的分形是步行的节点)。我们可以看到,我们有很多节点在确切地说是与中心节点的距离相同(实际上这个数字在每次路径分裂为两倍的时候加倍)。 所以我想知道这个数字有多大,以及是否有其他配置可以产生相同的情况。
为了弄清楚我的问题是:这个数字可以大于2 * N,其中N是N * N正方形网格的大小。
你可以通过一个网格中的同一个节点更多一次,直到你必须清空你的队列?如果不是,在最坏的情况下,你可以运行整个网格,或N^2个位置。否则,有什么限制,因为你可能需要停止一段时间? – Rubens
这是一个BFS,因此每个节点只会添加(并弹出)一次。我不能同时拥有N * N个职位。 – user1637030
我很抱歉,但我并没有真正解决问题。你有一个网格,NxN,从给定的角度来说,你执行一个BFS。网格中确定节点的子节点是什么?他们的邻居没有被视为兄弟姐妹?有什么障碍?在3x3的网格中,如果您从网格中最左边的最顶端节点开始,那么您的搜索跨度如何?你能举个例子吗? – Rubens