Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.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
Python 在矩阵中递归宽度优先搜索,最快路径(时间将花费在每个矩阵点上)_Python_Recursion_Graph_Matrix_Breadth First Search - Fatal编程技术网

Python 在矩阵中递归宽度优先搜索,最快路径(时间将花费在每个矩阵点上)

Python 在矩阵中递归宽度优先搜索,最快路径(时间将花费在每个矩阵点上),python,recursion,graph,matrix,breadth-first-search,Python,Recursion,Graph,Matrix,Breadth First Search,考虑下面这个矩阵,我应该从一个给定点(用户输入)移动到另一个点(用户输入)。例如,它可以是海洋[1][1]到海洋[2][4]。我需要找到到达终点的最短路径。现在,通过实现BFS可以很容易地解决这个问题。但在这种情况下,事情并不是那么简单。考虑矩阵中的每个点,它们每个都有不同的值。 我要驾驶一艘船从起点到终点。对于矩阵中的每个点,我有不同的风况,这将导致船在某些点行驶更快,在其他点行驶较慢。每个点的速度,以及通过一个点所需的时间,取决于我进入这些点的方向 这意味着在实际测试时,我只能知道通过一个点

考虑下面这个矩阵,我应该从一个给定点(用户输入)移动到另一个点(用户输入)。例如,它可以是海洋[1][1]到海洋[2][4]。我需要找到到达终点的最短路径。现在,通过实现BFS可以很容易地解决这个问题。但在这种情况下,事情并不是那么简单。考虑矩阵中的每个点,它们每个都有不同的值。

我要驾驶一艘船从起点到终点。对于矩阵中的每个点,我有不同的风况,这将导致船在某些点行驶更快,在其他点行驶较慢。每个点的速度,以及通过一个点所需的时间,取决于我进入这些点的方向

这意味着在实际测试时,我只能知道通过一个点的时间,而不是从一开始

说到这里,我的目标不再是寻找“最短”的路径,而是最快的路径

此外,还需要考虑另一个变量。我可以在8个方向移动,水平、横向和垂直(北、东北、东、东南等)。水平移动为sqrt(2)个移动单位,其他方向移动=1个移动单位

因此,计算在一个点上花费的时间,你可以选择你进入该点的方向(知道你移动了多少单位)以及该点的速度(根据风况计算)

为了找到最快的路径,我应该使用“递归宽度优先搜索”,这是作为一个指令给出的

我知道如何编写BFS以找到最短路径,但我不知道从何处开始编写递归BFS,以及如何考虑所有变量(时间等)

关于我在哪里可以收集这方面的信息,有什么提示吗?另外,对于这一点,递归BFS听起来是一种合乎逻辑的方法吗

这是一个示例矩阵:考虑所有具有“0”的点,它具有不同的值(通过该点所需的时间)。


可以将矩阵表示为图形(必要时展开节点数),然后使用查找最短路径。 我说的是最短路径,因为如果你也定义了你的图和它的节点的权重,计算最快路径就等于计算最短路径

使用Bellman Ford,您还可以在节点上设置负权重(例如,对于那个些可以提高速度的节点),否则您可以使用或BFS的一个变体作为加权图

ocean =[[0,0,0,0,0,0], 

        [0,0,0,0,0,0],

        [0,0,0,0,0,0],

        [0,0,0,0,0,0],

        [0,0,0,0,0,0],

        [0,0,0,0,0,0]]