Python 找到两点之间的最短路径
我想写一个代码,可以找到起点和终点之间的最短路径。我写了一个代码,它没有bug,但它没有做我想要的 它显示“移动”,但不会在终点结束 我如何解决这个问题,我如何包括“路径”需要从开始到结束的条件 下面是“地图”和代码的示例 非常感谢 地图: 代码:Python 找到两点之间的最短路径,python,Python,我想写一个代码,可以找到起点和终点之间的最短路径。我写了一个代码,它没有bug,但它没有做我想要的 它显示“移动”,但不会在终点结束 我如何解决这个问题,我如何包括“路径”需要从开始到结束的条件 下面是“地图”和代码的示例 非常感谢 地图: 代码: 随机导入 def最短路径(n): minx=1 米尼=1 maxx=5 最大值=5 x_开始=1 y_开始=1 X_end=3 Y_端=5 对于范围(n)中的i: 方式=随机。选择([“向上”、“向下”、“向左”、“向右”]) 如果way==“向上
随机导入
def最短路径(n):
minx=1
米尼=1
maxx=5
最大值=5
x_开始=1
y_开始=1
X_end=3
Y_端=5
对于范围(n)中的i:
方式=随机。选择([“向上”、“向下”、“向左”、“向右”])
如果way==“向上”且y_startminy:
y_开始-=1
elif way==“左”和x_开始>最小值:
x_开始-=1
elif way==“right”和x_start从源点开始,向目标点“移动”,但不要“超出”目标点。根据源点和目标点定义“朝向”和“超出”。第一个函数“最短路径(n)”在随机方向上进行n次迭代,它可以降落在目标X,Y以外的其他位置,这显然是正常的。
例如,您应该根据当前距离目标X,Y的距离来制定算法。在每个步骤中,尝试使abs(X_开始-X_结束)和abs(Y_开始-Y_结束)尽可能小。地图图中的每个路径的距离相等。他们都要走六步才能完成。我认为你在追求寻路启发法(如果你的解决方案真的没有遵循最短路径)。我不清楚你的职责是什么。它进行n
随机移动,然后检查是否恰好在终点。不管成功与否,它都返回起点的坐标。然后添加这些坐标并将其报告为距离。我完全不确定您希望从这段代码中得到什么语义。我不知道如何编写条件,以便每一次随机行走都在终点结束。我把起点放在(1,1),终点放在(3,5),但起点和终点可以是其他坐标。我只是不知道如何设置条件,使随机行走总是从起点开始,在终点结束。如果你需要保持随机步数,你应该删除循环的n限制,并尝试有一个禁忌的移动列表,以避免被卡在某个地方。
import random
def shortestWay(n):
minx = 1
miny = 1
maxx = 5
maxy = 5
x_start = 1
y_start = 1
X_end = 3
Y_end = 5
for i in range (n):
way = random.choice(["up", "down", "left", "right"])
if way == "up" and y_start<maxy:
y_start +=1
elif way == "down" and y_start>miny:
y_start -=1
elif way == "left" and x_start>minx:
x_start -=1
elif way == "right" and x_start<maxx:
x_start += 1
if x_start == X_end and y_start == Y_end:
return(x_start,y_start)
x1 = x_start
y1 = y_start
return (x1, y1)
list1 = []
for i in range(25):
way = shortestWay(10)
theShortestWay = abs(way[0]) + abs(way[1])
list1.append(theShortestWay)
x = min (list1)
print(way, "distance from start: ", theShortestWay, "cells")
print ("Minimal distance: ", x)