资源简介

基于A*算法,用python实现十五数码问题的求解。 十五数码问题:所要求解的问题:是给定一种初始布局(初始状态)和一个目标布局(目标状态),问如何移动数码实现从初始状态到目标状态的转变。

资源截图

代码片段和文件信息

import numpy as np
import random
import copy
import operator
import time

X = input(“维度[enter键默认为4]:“)
if X.isdigit():
    N = int(X)
else:
    N = 4
# opentb = []
# closedtb = []
class State(object):
    “““定义状态类“““
    weight = [1N+211]
    count = 0
    # 目前为止open和closed表中的总节点数

    def __init__(self s depth parent zero_place=[N-1N-1]id=0weight=weight):
        self.s = s
        self.zero_place = zero_place
        self.id = id
        self.parent = parent
        self.depth = depth
        self.hnself.hn1 = self.cal_hn()
        weight_space = N+N-self.zero_place[0]-self.zero_place[1]
        self.fn = weight[0]*self.depth + weight[1]*self.hn + weight[2]*weight_space + weight[3]*self.hn1

    def cal_hn(self):
        state_hn = 0
        stat

评论

共有 条评论