随机路径中的二维数组的老鼠

2024-09-30 18:24:23 发布

您现在位置:Python中文网/ 问答频道 /正文

这个问题类似于老鼠迷宫问题。我已经给出了一个二维数组MxN。数组的每个单元格为1或0,其中1表示阻塞。我给了2分(起点和终点)。我必须从开始索引到结束索引。但问题是路径应该是随机的。2) 应该有一些参数,让我来决定它可以有多随机(i、 在到达目的地之前,它应该多么疯狂地徘徊。)3)路径不应该相交。(就像蛇游戏一样)

该算法需要创建种群(随机),作为遗传模型的输入,以进一步优化遗传模型。 现在我已经使用bfs并创建了一个解决方案。但问题是,我不能用这个来创建任何随机路径(我稍后将使用它作为总体)+我无法形式化它应该是多少随机的想法

这是我的代码,它只使用bfs生成最小路径

def isSafe(x,y,length):
if ((x<length) and (x>-1) and (y<length) and (y>-1)):
    return True;
return False;
def path(room,x1,y1,x2,y2,distance):
roomSize=len(room);
if ((x1==x2) and (y1==y2)):
    room[x1][y1]=distance+1
    return
queue=[[x1,y1]]
room[x1][y1]=0
start=0
end=0
while start<=end:
    x,y=queue[start]
    start+=1
    distance=room[x][y]
    for i in [-1,1]:
        if isSafe(x+i,y,roomSize):
            if room[x+i][y]=="O":
                queue.append([x+i,y])
                room[x+i][y]=distance+1
                end+=1;
    for i in [-1,1]:
        if isSafe(x,y+i,roomSize):
            if room[x][y+i]=="O":
                queue.append([x,y+i])
                room[x][y+i]=distance+1
                end+=1;
def retrace(array,x1,y1,x2,y2):
roomSize=len(array)
if not (isSafe(x2,y2,roomSize)):
    print("Wrong Traversing Point");
if type(array[x2][y2])==str:
    print("##################No Pipe been installed due to path constrained################")
    return [];
distance=array[x2][y2];
path=[[x2,y2]]
x=0
while not (array[x2][y2]==0):
    if ((isSafe(x2+1,y2,roomSize)) and type(array[x2+1][y2])==int and array[x2+1][y2]==array[x2][y2]-1):
        x2+=1;
        path.append([x2,y2]);
    elif ((isSafe(x2-1,y2,roomSize)) and type(array[x2-1][y2])==int and array[x2-1][y2]==array[x2][y2]-1):
        x2-=1;
        path.append([x2,y2])
    elif ((isSafe(x2,y2+1,roomSize)) and type(array[x2][y2+1])==int and array[x2][y2+1]==array[x2][y2]-1):
        y2+=1;
        path.append([x2,y2]);
    elif ((isSafe(x2,y2-1,roomSize)) and type(array[x2][y2-1])==int and array[x2][y2-1]==array[x2][y2]-1):
        y2-=1;
        path.append([x2,y2]);
return path;

Tags: andpathreturniftypearraydistanceroom