八数码问题求解「建议收藏」

八数码问题求解「建议收藏」(一)问题描述在一个3*3的方棋盘上放置着1,2,3,4,5,6,7,8八个数码,每个数码占一格,且有一个空格。这些数码可以在棋盘上移动,其移动规则是:与空格相邻的数码方格可以移入空格。现在的问题是:对于指定的初始棋局和目标棋局,给出数码的移动序列。该问题称八数码难题或者重排九宫问题。(二)问题分析八数码问题是个典型的状态图搜索问题。搜索方式有两种基本的方式,即树式搜索和线式搜索。搜索策略大体有盲…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

(一)问题描述

在一个3*3的方棋盘上放置着1,2,3,4,5,6,7,8八个数码,每个数码占一格,且有一个空格。这些数码可以在棋盘上移动,其移动规则是:与空格相邻的数码方格可以移入空格。现在的问题是:对于指定的初始棋局和目标棋局,给出数码的移动序列。该问题称八数码难题或者重排九宫问题。

八数码问题求解「建议收藏」

(二)问题分析

八数码问题是个典型的状态图搜索问题。搜索方式有两种基本的方式,即树式搜索和线式搜索。搜索策略大体有盲目搜索和启发式搜索两大类。盲目搜索就是无“向导”的搜索,(例如深度优先搜索,广度优先搜索),其效率极其低下。启发式搜索就是有“向导”的搜索,有更好的效率。

启发式搜索

    由于时间和空间资源的限制,穷举法只能解决一些状态空间很小的简单问题,而对于那些大状态空间的问题,穷举法就不能胜任,往往会导致“组合爆炸”。所以引入启发式搜索策略。启发式搜索就是利用启发性信息进行制导的搜索。它有利于快速找到问题的解。

由八数码问题的部分状态图可以看出,从初始节点开始,在通向目标节点的路径上,各节点的数码格局同目标节点相比较,其数码不同的位置个数在逐渐减少,最后为零。所以,这个数码不同的位置个数便是标志一个节点到目标节点距离远近的一个启发性信息,利用这个信息就可以指导搜索。即可以利用启发信息来扩展节点的选择,减少搜索范围,提高搜索速度。

  启发函数设定。对于八数码问题,可以利用棋局差距作为一个度量。搜索过程中,差距会逐渐减少,最终为零,为零即搜索完成,得到目标棋局。

(三)运行效果

八数码问题求解「建议收藏」

八数码问题求解「建议收藏」

代码: https://download.csdn.net/download/qq_32445015/10308698

采用 jsp+struts1 实现 bs 架构,前端通过 jsp 显示界面,后台通过Java 类封装核心算法。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/158874.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 5G 信道一览表

    5G 信道一览表各个地区2.4G及5G信道一览表美洲(FCC)2.412~2.462GHz:11个信道5.15~5.35GHz,5.725~5.825GHz;12个信道中国2.412~2.472GHz:13个信道5.725~5.825GHz:4个信道ETSI2.412~2.472GHz:13个信道5.15~5.35GHz:8个信道5470…

    2022年6月7日
    268
  • puycharm激活码_通用破解码

    puycharm激活码_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月16日
    48
  • oracle中sqrt函数的使用方法,PLSQL SQRT用法及代码示例[通俗易懂]

    oracle中sqrt函数的使用方法,PLSQL SQRT用法及代码示例[通俗易懂]SQRT函数是PLSQL中的内置函数,用于返回给定输入数字的平方根。用法:SQRT(number)使用的参数:该函数接受如下所示的参数:数字–这是要计算其平方根的输入数字。返回值:此函数返回一个数字,该数字是给定输入数字的平方根。下面给出了受支持的Oracle/PLSQL版本:甲骨文12c甲骨文11g甲骨文10g甲骨文9i甲骨文8i我们来看一些说明SQRT功能的示例:示例1:DECLARET…

    2022年5月13日
    117
  • 什么是ESLint?「建议收藏」

    什么是ESLint?「建议收藏」在我们学习ESLint之前,我们先来了解一下什么是ESLint?什么是ESLint?官网上告诉我们,ESLint是一个用来识别ECMAScript/JavaScript并且按照规则给出报告的代码检测工具,哦,所以我们可以知道,ESLint就是一个工具,而且是一个用来检查代码的工具。代码检查是一种静态的分析,常用于寻找有问题的模式或者代码,并且不依赖于具体的编码风格。对大多数编程语言…

    2022年6月18日
    36
  • JaxWsProxyFactoryBean调用WebService实例[通俗易懂]

    JaxWsProxyFactoryBean调用WebService实例[通俗易懂]WebServiceUtils工具类packagexxxx;importjava.util.ResourceBundle;importorg.apache.cxf.endpoint.Client;importorg.apache.cxf.frontend.ClientProxy;importorg.apache.cxf.jaxws.JaxWsProxyFactoryBean…

    2022年7月21日
    15
  • java中json字符串和java对象的转换「建议收藏」

    java中json字符串和java对象的转换「建议收藏」文章目录1、Java与前台的交互2、解析JSON的第三方工具3、JSON数据和Java对象的相互转换Java对象转换JSON字符串JSON字符串转为Java对象1、Java与前台的交互作为后台,Java不仅需要接收前台传递过来的数据,还需要将数据库中的数据查出来打包好发…

    2025年11月12日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号