Python 找到两点之间的最短路径

Python 找到两点之间的最短路径,python,Python,我想写一个代码,可以找到起点和终点之间的最短路径。我写了一个代码,它没有bug,但它没有做我想要的 它显示“移动”,但不会在终点结束 我如何解决这个问题,我如何包括“路径”需要从开始到结束的条件 下面是“地图”和代码的示例 非常感谢 地图: 代码: 随机导入 def最短路径(n): minx=1 米尼=1 maxx=5 最大值=5 x_开始=1 y_开始=1 X_end=3 Y_端=5 对于范围(n)中的i: 方式=随机。选择([“向上”、“向下”、“向左”、“向右”]) 如果way==“向上

我想写一个代码,可以找到起点和终点之间的最短路径。我写了一个代码,它没有bug,但它没有做我想要的

它显示“移动”,但不会在终点结束

我如何解决这个问题,我如何包括“路径”需要从开始到结束的条件

下面是“地图”和代码的示例

非常感谢

地图:

代码:

随机导入
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)