Python 在矩阵中递归宽度优先搜索,最快路径(时间将花费在每个矩阵点上)
考虑下面这个矩阵,我应该从一个给定点(用户输入)移动到另一个点(用户输入)。例如,它可以是海洋[1][1]到海洋[2][4]。我需要找到到达终点的最短路径。现在,通过实现BFS可以很容易地解决这个问题。但在这种情况下,事情并不是那么简单。考虑矩阵中的每个点,它们每个都有不同的值。 我要驾驶一艘船从起点到终点。对于矩阵中的每个点,我有不同的风况,这将导致船在某些点行驶更快,在其他点行驶较慢。每个点的速度,以及通过一个点所需的时间,取决于我进入这些点的方向 这意味着在实际测试时,我只能知道通过一个点的时间,而不是从一开始 说到这里,我的目标不再是寻找“最短”的路径,而是最快的路径 此外,还需要考虑另一个变量。我可以在8个方向移动,水平、横向和垂直(北、东北、东、东南等)。水平移动为sqrt(2)个移动单位,其他方向移动=1个移动单位 因此,计算在一个点上花费的时间,你可以选择你进入该点的方向(知道你移动了多少单位)以及该点的速度(根据风况计算) 为了找到最快的路径,我应该使用“递归宽度优先搜索”,这是作为一个指令给出的 我知道如何编写BFS以找到最短路径,但我不知道从何处开始编写递归BFS,以及如何考虑所有变量(时间等) 关于我在哪里可以收集这方面的信息,有什么提示吗?另外,对于这一点,递归BFS听起来是一种合乎逻辑的方法吗Python 在矩阵中递归宽度优先搜索,最快路径(时间将花费在每个矩阵点上),python,recursion,graph,matrix,breadth-first-search,Python,Recursion,Graph,Matrix,Breadth First Search,考虑下面这个矩阵,我应该从一个给定点(用户输入)移动到另一个点(用户输入)。例如,它可以是海洋[1][1]到海洋[2][4]。我需要找到到达终点的最短路径。现在,通过实现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]]