Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 矩阵寻路算法的搜索_Php_Algorithm_Vector_Matrix - Fatal编程技术网

Php 矩阵寻路算法的搜索

Php 矩阵寻路算法的搜索,php,algorithm,vector,matrix,Php,Algorithm,Vector,Matrix,我正在用php开发一个棋盘游戏,现在我在编写算法时遇到了问题 游戏板是一个多维数组($board[10][10]),用于定义棋盘矩阵或向量的行和列 现在我必须在整个电路板上循环,但要有一个动态的起点。例如,用户选择单元格[5,6],这是循环的起点。目标是找到选定单元周围的所有可用板单元,以找到移动方法的目标单元。我想我需要一个高效的方法来做到这一点。是否有人知道一种循环遍历矩阵/向量的算法,只知道在每个字段中循环查找可用和使用的单元格的算法 额外规则。。。 在附加的图片中选择了一个蓝色区域(比另

我正在用php开发一个棋盘游戏,现在我在编写算法时遇到了问题

游戏板是一个多维数组($board[10][10]),用于定义棋盘矩阵或向量的行和列

现在我必须在整个电路板上循环,但要有一个动态的起点。例如,用户选择单元格[5,6],这是循环的起点。目标是找到选定单元周围的所有可用板单元,以找到移动方法的目标单元。我想我需要一个高效的方法来做到这一点。是否有人知道一种循环遍历矩阵/向量的算法,只知道在每个字段中循环查找可用和使用的单元格的算法

额外规则。。。 在附加的图片中选择了一个蓝色区域(比另一个稍大)。可用字段仅在右侧。左侧可用,但无法从当前选定位置到达。。。我认为这是一个额外的信息,这使得算法有点复杂

大thx到目前为止


亲切问候

如果你的地图只有10x10,我会从[0][0]循环,收集玩家移动的所有可能空间,然后根据距离将这些空间分级到当前玩家位置。N很小,因此算法有O(N^2)这一事实应该不会对性能有太大影响


也许有人在算法方面有更多的背景,他们有一些秘密

我不完全确定我是否正确满足了要求,所以让我重申一下:

您需要一个高效的算法来循环遍历nxn矩阵的所有元素,其中n约为10,从给定元素(i,j)开始,按距离(i,j)排序

我将循环通过一个从0到n/2的距离变量d 然后对于l到-(2*d)到+(2*d)-1的d循环的每个值 选择单元格(i+d,j+l),如果i>=0,也选择(i+l,j-d),(i+l,j+d) 对于每个单元格,必须应用模n,以将负索引映射回矩阵

这认为矩阵基本上是一个圆环体,将上边缘和下边缘以及左边缘和右边缘粘合在一起

如果你不喜欢,你可以让d运行到n,而不是模运算,忽略矩阵之外的值

这些aproach以正确的顺序直接为您提供字段。对于小领域,我确实怀疑,在大多数情况下,这种级别上的任何类型的优化都会产生很大的效果,尼古拉斯方法可能同样好

更新
我稍微修改了单元格,以便遵守规则“只考虑从当前栏或同一列中正确的字段”

不知道这个站点存在^ ^,但让SESESETES有一个额外的规则我忘了写…我将编辑主评论如果我得到了正确的需求,您仍然需要对字段进行排序,这将为复杂性增加另一个nlogn因素。比我的解决方案更令人印象深刻。如果N意外变大,我会有问题。;]+我想我不明白。这是否尊重我前面描述的左右两边的问题?现在考虑额外的约束。