骑士之旅在回溯中花费了无限的时间

时间:2018-08-03 04:55:55

标签: python artificial-intelligence backtracking knights-tour

我的骑士的巡回代码花了很长时间才能生成输出,但是直到达到第61步为止,它似乎运行良好。是什么问题导致此代码运行缓慢且效率低下?这段代码对于5 * 5,6 * 6可以正常工作,但是当我尝试使用7 * 7或更高版本的代码时,它的运行速度会变慢。需要做哪些改进才能使其尽快运行而无需等待很长的时间8*8

def isSafe(x,y,array):
    return x>=0 and x<8 and y>=0 and y<8 and array[x][y]==-1

def knightsTour(x,y,moveI,x_move,y_move,solution):
    if moveI==65:        
        return True
    #try out all different configuration
    for k in range(8):
        x_value= x + x_move[k]
        y_value = y + y_move[k]

        for x1 in range(8):
            print(solution[x1])
        print()
        if isSafe(x_value,y_value,solution):
            solution[x_value][y_value] = moveI
            if knightsTour(x_value,y_value,moveI+1,x_move,y_move,solution) is True:
                return True
            else:
                solution[x_value][y_value]=-1
    return False          

x_move=[ 2, 1, -1, -2, -2, -1, 1, 2  ]
y_move=[1, 2, 2, 1, -1, -2, -2, -1]
solution = [[-1 for x in range(8)] for x in range(8)]
solution[0][0]=1
knightsTour(0,0,2,x_move,y_move,solution)

0 个答案:

没有答案