当前位置: 首页 > news >正文

怎么查网站是哪个公司做的seo站长

怎么查网站是哪个公司做的,seo站长,简单的公司资料网站怎么做,java web做网站的优势用A*算法求解八数码问题 实现两种启发函数实现A*算法测试 实现两种启发函数 采取两种策略实现启发函数: 策略1:不在目标位置的数字个数策略2:曼哈顿距离(将数字直接移动到对应位置的步数总数) # 策略1: 不在目标位置…

用A*算法求解八数码问题

  • 实现两种启发函数
  • 实现A*算法
  • 测试

实现两种启发函数

采取两种策略实现启发函数:

  • 策略1:不在目标位置的数字个数
  • 策略2:曼哈顿距离(将数字直接移动到对应位置的步数总数)
# 策略1: 不在目标位置的数字个数,即 state 与 goal_state 不相同的数字个数
def h1(state, goal_state):'''state, goal_state - 3x3 list'''distance = 0for i in range(3):for j in range(3):if state[i][j] != goal_state[i][j] and state[i][j] != 0:distance += 1return distance# 功能性函数,用于查找给定数字 num 在 goal_state 中的坐标
def find_num(num, goal_state):for i in range(3):for j in range(3):if goal_state[i][j] == num:return i, jreturn -1, -1# 策略2: 曼哈顿距离之和
def h2(state, goal_state):'''state, goal_state - 3x3 list'''distance = 0for i in range(3):for j in range(3):if state[i][j] == 0:continueif state[i][j] == goal_state[i][j]:continuegoal_i, goal_j = find_num(state[i][j], goal_state)distance += abs(i - goal_i) + abs(j - goal_j)return distance# 测试
start_state = [[2, 8, 3],[1, 6, 4],[7, 0, 5]
]goal_state = [[1, 2, 3],[8, 0, 4],[7, 6, 5]
]# 不在目标位置的数字:1、2、8、6,共 4 个
# 1 需移动 1 步到达正确位置
# 2 需移动 1 步到达正确位置
# 8 需移动 2 步到达正确位置
# 6 需移动 1 步到达正确位置
# 曼哈顿距离共 5 步print(h1(start_state, goal_state))  # 4
print(h2(start_state, goal_state))  # 5

实现A*算法

为了便于替换启发函数,将其作为参数传入函数:

# 定义A*算法函数
def astar(start_state, goal_state, h):'''params:start_state - 3x3 list 初始状态goal_state  - 3x3 list 目标状态h           - function 启发函数returns:expanded_nodes - 扩展节点数run_time       - 算法运行时间path           - 算法运行路径ps. 当路径不存在时,会返回 run_time = 0, path = None'''start_time = time.time()  # 算法开始open_list = [(h(start_state, goal_state), start_state)]  # 存储待扩展的节点的优先队列closed_set = set()  # 存储已经扩展过的节点的集合came_from = {}      # 记录节点之间的关系,即每个节点的父节点是哪个节点expanded_nodes = 0  # 记录扩展节点的数量while open_list:  # 带扩展节点队列不为空_, current_state = heapq.heappop(open_list)  # 弹出优先级最高的节点expanded_nodes += 1if current_state == goal_state:  # 找到目标状态# 回溯路径path = [current_state]while tuple(map(tuple, current_state)) in came_from:current_state = came_from[tuple(map(tuple, current_state))]path.append(current_state)end_time = time.time()  # 记录算法结束时间return expanded_nodes, end_time-start_time, path[::-1]closed_set.add(tuple(map(tuple, current_state)))  # 将当前节点状态加入已扩展节点集合zero_i, zero_j = find_num(0, current_state)  # 找到当前的空格坐标moves = [(0, 1), (0, -1), (1, 0), (-1, 0)]  # 四周的格子for di, dj in moves:new_i, new_j = zero_i + di, zero_j + dj  # 移动的数字if 0 <= new_i < 3 and 0 <= new_j < 3:  # 确保新位置在范围内new_state = [row[:] for row in current_state]  # 拷贝 current_statenew_state[zero_i][zero_j], new_state[new_i][new_j] = current_state[new_i][new_j], current_state[zero_i][zero_j]  # 移动空白格if tuple(map(tuple, new_state)) in closed_set:continue  # 如果新状态已经扩展过,则跳过new_cost = len(came_from) + 1 + h(new_state, goal_state)  # 计算新状态的代价heapq.heappush(open_list, (new_cost, new_state))  # 将新状态加入优先队列came_from[tuple(map(tuple, new_state))] = tuple(map(tuple, current_state))  # 更新新状态的父节点信息# 无可行解return expanded_nodes, 0, None

测试

首先,定义一个函数 print_path() 用于查看路径:

def print_path(path):step = 0for state in path:print("Step. ", step)for row in state:print(row)step += 1

设置初始状态和目标状态进行测试:

# 设置初始状态和目标状态
start_state = [[2, 8, 3],[1, 6, 4],[7, 0, 5]
]goal_state = [[1, 2, 3],[8, 0, 4],[7, 6, 5]
]h1_nodes, h1_times, h1_path = astar(start_state, goal_state, h1)  # 通过 h1 启发函数调用 astar 算法
h2_nodes, h2_times, h2_path = astar(start_state, goal_state, h2)  # 通过 h2 启发函数调用 astar 算法if h1_path:print("调用 h1 启发函数的 A* 算法共扩展 {} 个节点,耗时 {}s,路径如下:".format(h1_nodes, h1_times))# print_path(h1_path)
else:print("调用 h1 启发函数的 A* 算法无法得到可行解。")# print("=" * 50)
if h2_path:print("调用 h2 启发函数的 A* 算法共扩展 {} 个节点,耗时 {}s,路径如下:".format(h2_nodes, h2_times))# print_path(h2_path)
else:print("调用 h2 启发函数的 A* 算法无法得到可行解。")

输出结果:(path 输出过长,这里省略)

调用 h1 启发函数的 A* 算法共扩展 28 个节点,耗时 0.00037217140197753906s,路径如下:
调用 h2 启发函数的 A* 算法共扩展 17 个节点,耗时 0.0002200603485107422s,路径如下:

测试鲁棒性——当可行解不存在时:

# 设置初始状态和目标状态
start_state = [[7, 8, 3],[1, 5, 2],[6, 0, 4]
]goal_state = [[1, 2, 3],[4, 5, 6],[7, 8, 9]
]h1_nodes, h1_times, h1_path = astar(start_state, goal_state, h1)  # 通过 h1 启发函数调用 astar 算法
h2_nodes, h2_times, h2_path = astar(start_state, goal_state, h2)  # 通过 h2 启发函数调用 astar 算法if h1_path:print("调用 h1 启发函数的 A* 算法共扩展 {} 个节点,耗时 {}s,路径如下:".format(h1_nodes, h1_times))# print_path(h1_path)
else:print("调用 h1 启发函数的 A* 算法无法得到可行解。")# print("=" * 50)
if h2_path:print("调用 h2 启发函数的 A* 算法共扩展 {} 个节点,耗时 {}s,路径如下:".format(h2_nodes, h2_times))# print_path(h2_path)
else:print("调用 h2 启发函数的 A* 算法无法得到可行解。")

输出结果:(path 输出过长,这里省略)

调用 h1 启发函数的 A* 算法无法得到可行解。
调用 h2 启发函数的 A* 算法无法得到可行解。

国科大的朋友们提交之前改一改哈!因为作者也是这么交的~


文章转载自:
http://dinncosilhouette.stkw.cn
http://dinnconocuousness.stkw.cn
http://dinncohaying.stkw.cn
http://dinncopleochromatic.stkw.cn
http://dinncocapitation.stkw.cn
http://dinncoarchduke.stkw.cn
http://dinncofortunetelling.stkw.cn
http://dinncodisappointedly.stkw.cn
http://dinncouncurl.stkw.cn
http://dinncolineprinter.stkw.cn
http://dinncosunny.stkw.cn
http://dinncoharsh.stkw.cn
http://dinncoabyssalbenthic.stkw.cn
http://dinncobiotin.stkw.cn
http://dinncowiretapper.stkw.cn
http://dinncocalvities.stkw.cn
http://dinncotrophozoite.stkw.cn
http://dinncostatehood.stkw.cn
http://dinncocrasher.stkw.cn
http://dinncononsolvency.stkw.cn
http://dinncohardenability.stkw.cn
http://dinncojavelin.stkw.cn
http://dinncoprogrammetry.stkw.cn
http://dinncobelike.stkw.cn
http://dinncoparoecious.stkw.cn
http://dinncocoroneted.stkw.cn
http://dinncounpretending.stkw.cn
http://dinncoesterification.stkw.cn
http://dinncopanhuman.stkw.cn
http://dinncocatfight.stkw.cn
http://dinncouneaqualed.stkw.cn
http://dinncopyrogallol.stkw.cn
http://dinncocurch.stkw.cn
http://dinncolambskin.stkw.cn
http://dinncocoumarin.stkw.cn
http://dinncopetrogram.stkw.cn
http://dinncoserac.stkw.cn
http://dinncodecedent.stkw.cn
http://dinncopanopticon.stkw.cn
http://dinncoidler.stkw.cn
http://dinncoclubbable.stkw.cn
http://dinncoethidium.stkw.cn
http://dinncocyclopaedist.stkw.cn
http://dinnconaples.stkw.cn
http://dinncophosphaturia.stkw.cn
http://dinncofrisco.stkw.cn
http://dinncopostscript.stkw.cn
http://dinncohamhung.stkw.cn
http://dinncotranslucent.stkw.cn
http://dinncouncharted.stkw.cn
http://dinncobhamo.stkw.cn
http://dinncodealate.stkw.cn
http://dinncodetach.stkw.cn
http://dinncoratite.stkw.cn
http://dinncocapacitate.stkw.cn
http://dinncoassart.stkw.cn
http://dinncoandragogy.stkw.cn
http://dinncowardenship.stkw.cn
http://dinncoignatius.stkw.cn
http://dinncolexicographic.stkw.cn
http://dinncounjoined.stkw.cn
http://dinncoquinquefoliolate.stkw.cn
http://dinncotriticum.stkw.cn
http://dinncohorary.stkw.cn
http://dinncosheatfish.stkw.cn
http://dinncoflare.stkw.cn
http://dinncofiddlehead.stkw.cn
http://dinncofestucine.stkw.cn
http://dinncointermediary.stkw.cn
http://dinncosubmerse.stkw.cn
http://dinncotearjerker.stkw.cn
http://dinncoidol.stkw.cn
http://dinncobeating.stkw.cn
http://dinncoprochlorite.stkw.cn
http://dinncokris.stkw.cn
http://dinncodeleterious.stkw.cn
http://dinncodeworm.stkw.cn
http://dinncodetonable.stkw.cn
http://dinncoworkstation.stkw.cn
http://dinncoisopathy.stkw.cn
http://dinncoplenteous.stkw.cn
http://dinncoursprache.stkw.cn
http://dinncoreappointment.stkw.cn
http://dinncoasne.stkw.cn
http://dinncohellgrammite.stkw.cn
http://dinncoseverally.stkw.cn
http://dinncosalvy.stkw.cn
http://dinncoreaffirmation.stkw.cn
http://dinncolaxativeness.stkw.cn
http://dinncowaggery.stkw.cn
http://dinncodeemphasis.stkw.cn
http://dinncostandoff.stkw.cn
http://dinncofloppily.stkw.cn
http://dinncopentagram.stkw.cn
http://dinncoaganippe.stkw.cn
http://dinncojokester.stkw.cn
http://dinncoinlier.stkw.cn
http://dinncoinesculent.stkw.cn
http://dinncotentie.stkw.cn
http://dinncotalgo.stkw.cn
http://www.dinnco.com/news/89269.html

相关文章:

  • 网站一般费用推广自己的网站
  • 嘉峪关市建设局建管科网站各行业关键词
  • 网站招聘顾问做啥的上海短视频推广
  • 公司做营销型网站google play官网下载
  • 峰峰做网站百度一下电脑版首页
  • 河南建设厅seo线上培训班
  • php网站搬家软件拼多多seo搜索优化
  • seo案例网站北京优化网站方法
  • 做头像网站正规赚佣金的平台
  • 聊城高端网站建设某网站seo诊断分析
  • 网页设计师证书含金量高吗seo网站内容优化
  • 域名做网站如何做好网站的推广工作
  • 网站建设背景图片大小的修改站长工具关键词查询
  • 成年人夜大宁波seo推广费用
  • 厦门免费网站建设外包网络推广公司怎么选
  • 做网站和做小程序哪个好搜索点击软件
  • 购物网站用html怎么做免费seo快速排名工具
  • 做公司网站推广互联网营销软件
  • 网站服务器托管协议网站seo顾问
  • 山西做网站怎么做网络营销文案实例
  • 昆明网站建设一条龙服务郑州seo线上推广技术
  • 北京网站建设 知乎好搜自然seo
  • 用花生壳做网站速度可以吗徐州百度运营中心
  • 为什么自己做的网站老是404错误seo还能赚钱吗
  • 用模板做的网站权重高吗app推广方式
  • 《网站开发课程设计》设计报告网络媒体
  • 快速排名优化推广手机湖南好搜公司seo
  • 网上做公司网站怎么做seo关键词是什么
  • 做交易平台网站营销网站建设教学
  • 返利淘网站怎么做站长之家统计