Ejemplo n.º 1
0
    for i in range(0, len(array)):
        for j in range(i, len(array)):
            if array[i] > array[j]:
                reverseOrderNumber += 1

    return reverseOrderNumber


def isTransform(startNode, endNode):  #用于判断问题是否可解,用到了getStatus函数
    start = getStatus(startNode)
    end = getStatus(endNode)

    if start % 2 != end % 2:
        return False

    return True


if __name__ == '__main__':

    #构建初始状态、目标状态
    startNode = Node([[4, 8, 6], [3, 0, 7], [2, 1, 5]])
    endNode = Node([[1, 2, 3], [4, 8, 5], [6, 7, 0]])
    Astar = Algorithm.Astar(startNode, endNode)  #将Astar初始化为Algorithm中的Astar类

    #判断是否有解
    if isTransform(startNode, endNode) and Astar.start():  #如果问题有解则展开A*搜索
        Astar.showPath()  #调用showMap函数,把路径显示出来
    else:
        print("无解")
Ejemplo n.º 2
0
 # for index in range(6,9):
 #     li3.append(lio[index])
 # lli.append(li1)
 # lli.append(li2)
 # lli.append(li3)
 # print(lli)#图片序列 lio 是初始列表,lio0是目的列表
 # lli=[[1, 2, 3],[4, 5, 6],[7, 9, 0]]
 # lio4=[[1, 2, 3],[4, 5, 6],[7, 0, 9]]
 # lio = forceex(lio,swap1)
 # print(lio)
 myswap = []
 lli, oper = randomstep(lio, stepnow)
 lli = getjuzhen(lli)
 startNode = Node(lli)
 endNode = Node(lio4)
 Astar = Algorithm.Astar(startNode, endNode)
 if isTransform(startNode, endNode) and Astar.start():
     Astar.showPath()
     oper += Astar.showmotion()
     print(oper)
     print(myswap)
     # print(Astar.showPath().motion)
 else:
     lio = forceex(lio, swap1)
     print(lio)
     # print(lio)
     lli = getjuzhen(lio)
     startNode = Node(lli)
     endNode = Node(lio4)
     Astar = Algorithm.Astar(startNode, endNode)
     if isTransform(startNode, endNode) and Astar.start():