再论八数码

A*算法解决八数码问题 以下内容仅是我个人对八数码问题和A*寻路算法的理解,因为我是菜鸟一个,所以写的比较通俗。 八数码问题: 八数码问题也称为九宫问题。在3×3的棋盘,摆有八个棋子,每个棋子上标有1至8的某一数字,不同棋子上标的数字不相同。棋盘上还有一个空格,与空格相邻的棋子可以移到空格中。要求解决的问题是:给出一个初始状态和一个目标状态,找出一种从初始转变成目标状态的移动棋子步数最少的移动步骤。 阅读详情
对于给定八数码棋局的初始状态,我们的目标是通过交换空格与其相邻棋子使棋盘达到目标状态。
其中,游戏规则是只能交换空格与其上下左右四个方向的相邻棋子。

假设棋局目标状态为如下形式:(A、B、C、D、E、F、G、H表示棋子)
 A  B  C
 D  E  F
 G  H          
而初始状态就是A、B、C、D、E、F、G、H这八个棋子在这九个棋格上的任意分布。

并且我们对棋盘中每个棋格进行如下形式的编号:
 1  2  3
 4  5  6
 7  8  9

那么,对于一个任意的棋局状态,我们可以取得这八个棋子(A、B、C、D、E、F、G、H)的一个数列:棋子按照棋格的编号依次进行排列,记为p=c[1]c[2]c[3]c[4]c[5]c[6]c[7]c[8](即A、B、C、D、E、F、G、H的一个排列)。

在分析之前,先引进逆序和逆序数的概念:对于棋子数列中任何一个棋子c[i](1≤i≤8),如果有j>i且c[j]<c[i],那么 c[j]是c[i]的一个逆序,或者c i]和c[j]构成一个逆序对。定义棋子c[i]的逆序数为c[i]的逆序个数;棋子数列的逆序数为该数列所有棋子的逆序数总和。注:约定A<B<C<D<E<F<G<H。

现在,我们对一个任意的棋局状态p=c[1]c[2]c[3]c[4]c[5]c[6]c[7]c[8]进行分析:

引理1:如果交换任何两个相邻的棋子,那么棋子数列的逆序数将发生奇偶性互变(奇偶性互变是指由奇数变为偶数,或由偶数变为奇数,下同)。
   其证明很简单,假设交换的是c[i]和c[i+1],那么对于c[j](1≤j≤i-1或i+2≤j≤8)的逆序数并不改变。若交换之前 c[i]<c[i+1],那么交换之后,c[i]的逆序数不变,而c[i+1]的逆序数加1(因为c[i]成了它的一个逆序);同理,若交换之前 c[i]>c[i+1],那么交换之后,c[i]的逆序数减1,而c[i+1]的逆序数不变。所以,引理1成立。

引理2:如果棋子数列经过n次相邻棋子交换后,若n为偶数,则数列逆序数奇偶性不变;若n为奇数,则数列逆序数将发生奇偶性互变。
   其证明可以由引理1简单推出。

引理3:在满足上述约定的八数码问题中,空格与相邻棋子的交换不会改变棋局中棋子数列的逆序数的奇偶性。
   证明:显然空格与左右棋子交换不会改变棋子数列的逆序数(因为数列并没有改变)。现在考虑空格与上下棋子交换的情况:若空格与上方的棋子交换(假设交换是可行的),将得到一个新数列。若假设交换棋子为c[i]=X,那么原数列p=c[1]...X c[i+1]c[i+2]...c[8]将变为新数列q=c[1]...c[i+1]c[i+2]X ...c[8](注意:在棋盘中,上下相邻的两棋格之间隔有两个棋格)。由原数列p到新数列q的转变可以通过如下方式加以解释:用X与c[i+1]、 c[i+2]先后进行两次相邻交换而完成状态转变。所以根据引理2知,由p状态到q状态并不会改变改变棋子数列的逆序数的奇偶性。同理可证空格与下方棋子交换也不会改变棋子数列的逆序数的奇偶性。所以,空格与相邻棋子的交换不会改变棋局中棋子数列的逆序数的奇偶性。

定理1
(1)当初始状态棋局的棋子数列的逆序数是奇数时,八数码问题无解;
(2)当初始状态棋局的棋子数列的逆序数是偶数时,八数码问题有解。

   证明:由引理3知,按照八数码问题的游戏规则,在游戏过程中,棋局的棋子数列的逆序数的奇偶性不会发生变化。而上面规定的目标状态没有逆序存在,所以目标状态下棋局的逆序数为偶数(实际为0)。显然,可能的初始状态棋局的棋子数列的逆序数可能为奇数,也可能为偶数(因为把一个初始状态中任意相邻两个棋子交换,得到的新的状态作为初始状态,它们的奇偶性相反)。所以,对于任意一个初始状态,若其棋局的棋子数列的逆序数为奇数,则永远也不可能达到目标状态,即八数码问题无解;若其棋局的棋子数列的逆序数为偶数,(接下来如何证明)。


附一个题

http://poj.org/problem?id=2893



后续篇

ZJU2004 Commedia dell'arte 八数码问题有解的条件及其推广

题目描述:

此题是经典的八数码问题的推广。一个M×M×M的立方体,原始状态一次给方块编号1 ~ M^3-1,最后一个格子空缺。现在给定任意一个方块的排列,问能否通过合法变换回到原始状态。

解题思路:

题目要求一个三维空间的N数码问题,问是否有解。我们先从简单的情况考虑。

>从八数码问题入手

我们首先从经典的八数码问题入手,即对于八数码问题的任意一个排列是否有解?有解的条件是什么?

我在网上搜了半天,找到一个十分简洁的结论。八数码问题原始状态如下:

1 2 3
4 5 6
7 8

为了方便讨论,我们把它写成一维的形式,并以0代替空格位置。那么表示如下:

1 2 3 4 5 6 7 8 0

通过实验得知,以下状态是无解的(交换了前两个数字1 2):

2 1 3 4 5 6 7 8 0

八数码问题的有解无解的结论:

一个状态表示成一维的形式,求出除0之外所有数字的逆序数之和,也就是每个数字前面比它大的数字的个数的和,称为这个状态的逆序。

若两个状态的逆序奇偶性相同,则可相互到达,否则不可相互到达。

由于原始状态的逆序为0(偶数),则逆序为偶数的状态有解。

也就是说,逆序的奇偶将所有的状态分为了两个等价类,同一个等价类中的状态都可相互到达。

简要说明一下:当左右移动空格时,逆序不变。当上下移动空格时,相当于将一个数字向前(或向后)移动两格,跳过的这两个数字要么都比它大(小),逆序可能±2;要么一个较大一个较小,逆序不变。所以可得结论:只要是相互可达的两个状态,它们的逆序奇偶性相同。我想半天只能说明这个结论的必要性,详细的证明请参考后面的附件。

 

>推广二维N×N的棋盘

我们先来看看4×4的情况,同样的思路,我们考虑移动空格时逆序的变化情况。

1    2    3    4
5    6    7    8
9    A    B   C
D   E    F   

我们用字母A~F代替数字10~15。同样地,当左右移动的时候,状态的逆序不改变。而当上下移动的时候,相当于一个数字跨过了另外三个格子,它的逆序可能±3或±1,逆序的奇偶性必然改变。那么又该如何

1    2    3    4
5    6    7    8
9    A    B   
C   D   E    F   

可以证明,以上状态是一个无解的状态(将C移到了第四行)。该状态的逆序为0,和原始状态相同,但是它的空格位置在第三行。若将空格移到第四行,必然使得它的逆序±1或±3,奇偶性必然改变。所以它是一个无解的状态。

然而以下状态就是一个有解的状态(交换了前两个数字1 2):

2    1    3    4
5    6    7    8
9    A    B   
C   D   E    F

这个状态的逆序为1,和原始状态奇偶性不同,而空格位置在第三行。由于空格每从第三行移动到第四行,奇偶性改变。则该状态的可到达原始状态。

通过观察,得出以下结论:

N×N的棋盘,N为奇数时,与八数码问题相同。

N为偶数时,空格每上下移动一次,奇偶性改变。称空格位置所在的行到目标空格所在的行步数为空格的距离(不计左右距离),若两个状态的可相互到达,则有,两个状态的逆序奇偶性相同且空格距离为偶数,或者,逆序奇偶性不同且空格距离为奇数数。否则不能。

也就是说,当此表达式成立时,两个状态可相互到达:(状态1奇偶性==状态2奇偶性)==(空格距离%2==0)。

此结论只是由观察得知的,但是还没证明过,请高手指点。

另外再详细说明一下,无论N是奇数还是偶数,空格上下移动,相当于跨过N-1个格子。那么逆序的改变可能为一下值±N-1,±N-3,±N-5 …… ±N-2k-1。当N为奇数数时N-1为偶数,逆序改变可能为0;当N为偶数时N-1为奇数,逆序的改变不能为0,只能是奇数,所以没上下移动一次奇偶性必然改变。

 

>推广到三维N×N×N

其实,三维的结论和二维的结论是一样的。

考虑左右移动空格,逆序不变;同一层上下移动空格,跨过N-1个格子;上下层移动空格,跨过N^2-1个格子。

当N为奇数时,N-1和N^2-1均为偶数,也就是任意移动空格逆序奇偶性不变。那么逆序奇偶性相同的两个状态可相互到达。

当N为偶数时,N-1和N^2-1均为奇数,也就是令空格位置到目标状态空格位置的y z方向的距离之和,称为空格距离。若空格距离为偶数,两个逆序奇偶性相同的状态可相互到达;若空格距离为奇数,两个逆序奇偶性不同的状态可相互到达。

讨论到这里,题目问题也就解决了。

 

>解决题目

有了以上结论,解决题目就简单了。

统计出状态的逆序和空格距离,然后判断即可。

2007-12-27 22:40:2000:00.464416KC++Tiaotiao

用此方法程序运行时间0.46s,排名15。在我之前的运行时间都在0.1秒以下。也许此题还有更加优美的判定方法,期待知道朋友请过来吼一声~

 

参考资料:

水木清华BBS精华区: 关于八码数问题有解与无解的证明 http://www.cnw3.org/smth/AI/5/8/00000001.htm
豆瓣网BBS :http://www.douban.com/group/topic/1724083/

 

========================================

附: 关于八码数问题有解与无解的证明

转载自【水木清华BBS精华区】:http://www.cnw3.org/smth/AI/5/8/00000001.htm

发信人: YourMajesty (花痴~~~~小魔男), 信区: AI        
标  题: 关于八码数问题有解与无解的证明(zz) 
发信站: BBS 水木清华站 (Fri Nov 23 22:26:49 2001) 
 
    8数码难题搜索时,有时候是无解的,8数码问题总共有9!种状态,如果用计算机一 
个一个去搜索去判断哪些有解哪些误解,无疑要花费很长的时间,也没必要。作为一种 
智力游戏,玩之余,我在想,能否通过事先的分析来判断哪些问题有解,哪些问题无解 
呢?对于有解的问题,是否能通过一种固定的步骤来得到解?经过昨天晚上和今天的仔 
细分析,我觉得我已经得到了这个问题的初步解答,下面我公布一下我得到的结果和证 
明,抛砖引玉,如果大家发现其中有什么问题,欢迎来我宿舍一起讨论或者给我发Emai 
l。 
    我的证明分好几个步骤,恳请大家能够耐心的看下去,我会尽量说得简洁一点。 

     一、我的结论 
    我们将九宫格按行排成一行共九个数(空格也占一个位置,在本文种,我用@表示空 
格)。比如:    1 2 3     4 @ 5     =>   1 2 3 4 @ 5 6 7 8    6 7 8     这样 
,九宫格的每一种状态和上图的行之间是一一对应的。在代数上册我们学过逆序的概念 
,也就是对于任意一对数,如果前面的数比后面的数大,则为一对逆序。对于一个序列 
,我们定义其逆序奇偶性如下:    如果其中有奇数对逆序,称之逆序奇;如果其中有 
偶数对逆序,称之为逆序偶。这样,对于1,2,...,n这n个数,其所有的排列可以分为 
两类,逆序奇类和逆序偶类。相对应的,九宫图(除去空格)也有它的奇偶性,我们的定 
理是: 
    所有的奇九宫图之间是可达的,所有的偶九宫图之间也是可达的,但奇九宫图和偶 
九宫图之间互不可达。 

    二、问题的转化 
    为了证明上述定理,我想先对问题进行一下转化。我定义两种行序列的变换:一种 
是空格@和相邻的数对换,一种是空格@和前后隔两个数的数之间的对换,前者对应着空 
格在九宫图中的左右移动,后者对应着空格在九宫图中的上下移动。 

     引理一:在上述的两种对换下,序列的奇偶性不改变。    这个引理很容易证明。 
首先,相邻的对换肯定不改变奇偶性;其次,隔两格的对换也不改变奇偶性,它相当于 
三个数的轮换,我们可以自己列举一下几种情况验证一下。这就说明了奇九宫图和偶九 
宫图之间是互不可达的。 

     引理二:转化后行序列在上面定义的两种对换下的任意操作,可以转换成九宫图中 
空格的合法变化。    这个引理也是比较容易证明的。我们只要证明如下的几种状态之 
间是互达的:    a b c        a b @        a b c        a b c    @ d e  <=>   
 c d e        d e f  <=>   d e @    f g h        f g h        @ g h        f 
 g h    通过计算机搜索,可以发现上面两对状态之间的确是互达的。从而,我们可以 
假定上面两种状态之间的转换可以用行序列中的两种邻对换来代替。 
    想提一点的是,九宫图之间的变换是可逆的。下面,到了问题的核心部分了。 

     引理三:所有的奇状态可以转换为 @ 1 2 3 4 5 6 7 8, 所有的偶状态 
可以转换为 @ 2 1 3 4 5 6 7 8.    要证明这个引理,得分几个步骤。我的想法是先设 
法把8移到最后一个,然后8保持不动(注意,我们这里的不动只是形式上不动,但不管怎 
样,我们的每一个变换后,8还是保持在最后一个,余类似),再将7移到8之前,然后, 
保持7和8不动,依次移动6,5,4,3,得到 * * * 3 4 5 6 7 8这里 * * *是 @ 1 2 的 
一个排列。到这里,我想要得到前面的两种状态之一是显然的了。下面,我说明,上面 
的想法是可以实现的。如下:    
   1. 对于 a b c @ ,我们可以将其中的任意一个移到 
最后,并且对变换仅限于这四个位置上。显然,对于a,c是一步就可以做到的。对于b, 
步骤如下:   a b c @ -> @ b c a -> b @ c a -> b c @ a -> b c a @ -> @ c a b  
   2. 先把要移到最后位置的那个数移到最后四个位置之一,然后再将空格移到最后一 
个位置,用1的方法将待移动的数变换到最后一个位置。循环这样做即可。    引理三证 
毕。 

    证完了这三个引理,定理的成立就是显然的了。首先,将奇偶性相同的两种状态都 
变换到上述两种标准状态之一,然后对其一去逆变换即可。以上是我的所有证明,有些 
地方在计算机上写起来不是太清楚。 

==========================================

zoj 2004附上代码吧

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int mat[1000001];
int b[1000001];

long long g = 0;
void msort(int *a, int *t, int b, int e)
{
	int mid = (b&e) + ((b^e) >> 1), p1 = b, p2 = mid + 1, i = b;
	if (b >= e) return;
	msort(a, t, b, mid); msort(a, t, p2, e);
	while (p1 <= mid || p2 <= e)
	{
		if (p2 > e || (p1 <= mid && a[p1] <= a[p2])) t[i++] = a[p1++];
		else { t[i++] = a[p2++]; g += (mid + 1 - p1) & 1;}
	}
	for (i = b; i <= e; ++i) a[i] = t[i];
}

int n, m;
int main(void)
{
	int i = 0, j = 0, s = 0, t = 0, iter = 0, v, y, z;
	scanf("%d", &n);
	for (i = 0; i < n; ++i)
	{
		scanf("%d", &m); s = m * m * m; t = m * m;
		for (iter = j = 0; j < s; ++j)
		{
			scanf("%d", &v);
			(v ? (mat[iter++] = v) : (z = j / t, y = j % t / m));
		}

		g = 0;
		msort(mat, b, 0, iter - 1);
		g += (t - 1) * (m - 1 - z) + (m - 1) * (m - 1 - y);
		g &= 1;
		if (g) puts("Puzzle is unsolvable.");
		else puts("Puzzle can be solved.");
	}
	return 0;
}



A*算法解决八数码问题的C++实现 A*算法解决八数码问题的C++实现。 阅读详情

相关推荐

8数码难题(含代码,实验报告)

算法设计与分析,运用C语言编写,通过文件读写初态与终态,二者形态在num8.txt文件中,将实现一步步的转化。

python idea 插件安装包下载 安装

https://www.cnblogs.com/hezhiyao/p/8921568.html

happyqxt12345678的博客 4729

八数码问题实验报告

八数码问题,课程设计实验报告

八数码的有无解问题

为了方便讨论,我们把它写成一维的形式,并以0代替空格位置。那么表示如下: 1 2 3 4 5 6 7 8 0 通过实验得知,以下状态是无解的(交换了前两个数字1 2): 2 1 3 4 5 6 7 8 0 八数码问题的有解无解的结论: 一个状态表示成一维的形式,求出除0之外所有数字的逆序数之和,也就是每个数字前面比它大的数字的个数的和,称为这个状态的逆序。 若两个状态的逆序奇偶性相同,则可相互到达,否则不可相互到达。 由于原始状态的逆序为0(偶数),则逆序为偶数的状态有解。 也就是说,...

poptar的博客 5067

Python库 | juq-1.3.tar.gz

python库。 资源全名:juq-1.3.tar.gz

M×N扫描序列图像拼接、大视场图像拼接、全景图像拼接、2D网格拼图方法、累计误差消除(显微图像/航拍图像等)

M×N序列图像完整拼接方法前言一、最朴实的一般方法二、广度优先搜索算法1.引入库2.读入数据整体路径优化算法 前言 1、网上有很多介绍图像两两拼接的算法,但是缺少对M×N张子图两两相对位置关系获得整体误差较小,肉眼下无明显错位的完整图像的算法实现。 2、由于拼接算法的不稳定可能会产生不同程度的误差,那么如何需要选择(搜索)误差较小拼接路径。 一、最朴实的一般方法 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、广度优先搜索算法 1.引入库 代码如下(示

qq_37764141的博客 5407

人工智能-A*启发式搜索算法解决八数码问题 Python实现

八数码问题也称为九宫问题。在 3×3 的棋盘,摆有八个棋子,每个棋子上标有 1 至 8 的某一数字,不同棋子上标的数字不相同。棋盘上还有一个空格(以数字 0 来表示),与空 格相邻的棋子可以移到空格中。要求解决的问题是:给出一个初始状态和一个目标状态,找出一种从初始转变成目标状态的移动棋子步数最少的移动步骤。该问题可用A*启发式搜索算法求解。

SCY164759920的博客 3万+

OpenWebUI联网搜索实战:如何用SearXNG让本地大模型获取实时信息(附百度/360配置)

本文详细介绍了如何通过部署开源元搜索引擎SearXNG,为本地运行的OpenWebUI大语言模型(如Qwen、Llama)配置联网搜索功能,解决其知识库过时的问题。文章重点讲解了SearXNG的Docker部署、集成国内搜索引擎(如百度、360)的配置方法,以及如何与OpenWebUI无缝对接,从而实现本地大模型获取实时、准确的中文信息,提升其实用性。

weixin_28835583的博客 1872

Python基础入门 (四数据分析处理库Pandas应用)

1.Pandas简介 2.两种数据结构 3.相关操作(索引,查询,统计分析,SQL操作,对缺失值处理,excel的数据透视表功能,多层索引) 1.Pandas简介 Pandas是基于Numpy的一个开源python库,它被广泛用于快速分析数据,以及数据清洗和准备等工作。 2.两种数据结构 pandas中有两类非常重要的数据结构,就是序列Series和数据框DataFrame...

INFINITE POSSIBILITIES 1135

大模型训练方法全面解析:SFT、RFT、TRPO、DPO、PPO、GRPO、RLH、RLHF技术深度剖析

大模型训练方法全面解析 本文系统介绍了当前主流的大模型训练和对齐技术,包括监督微调(SFT)、拒绝采样微调(RFT)、信任域策略优化(TRPO)、直接偏好优化(DPO)、近端策略优化(PPO)等。这些方法各有特点:SFT简单高效但数据依赖性强;RFT通过质量筛选提升输出质量;TRPO训练稳定但计算复杂;PPO是RLHF核心算法,平衡探索与利用。文章详细分析了各方法的实现原理、优势劣势及适用场景,为开发者选择合适的大模型训练策略提供参考。

2795

库存管理系统项目部署方案(基于jdk17)

不需要安装到服务器,运维本地安装就行,主要是用来编译前端代码的。构建完成后将dist文件夹复制到服务器内。

程序员诚哥 6371

人工智能实验——八数码难题

人工智能实验 八数码难题 利用了BFS算法DFS算法A*算法

weixin_51735061的博客 2万+

汇川H5U PLC 实现直线插补、圆弧插补、直线圆弧混合连续插补

使用汇川H5UPLC实现直线插补,圆弧插补,直线圆弧混合路径插补,通过示教可以走出复杂的路径,仅供参考学习。

weixin_39832501的博客 4777

八数码问题

八数码问题 八数码问题也叫九宫问题,是人工智能中状态搜索中的经典问题,其中,该问题描述为:在3×3的棋盘,摆有八个棋子,每个棋子上标有1至8的某一数字,不同棋子上标的数字不相同。棋盘上还有一个空格,与空格相邻的棋子可以移到空格中。要求解决的问题是:给出一个初始状态和一个目标状态,找出一种从初始转变成目标状态的移动棋子步数最少的移动步骤。 这是一个典型的图搜索问题,但是该问题并不需要正在建立图数据结...

OCEANtroye的博客 4万+

YOLO创新点改进点的消融实验设计规范

YOLO改进的消融实验是一种重要的方法,用于评估和验证模型中不同组件的影响。在进行YOLO改进的消融实验时,我们可以选择一些可能的改进点,比如Backbone网络、Anchor框设计和损失函数设计,然后通过实验来分析它们对模型性能的影响。首先,我们需要确定实验设计。对于每个改进点,我们将设计多个实验组,并针对每个实验组训练模型并进行性能评估。这里以三个改进点为例进行说明:改进点1:Backbone网络 (改进点2:Anchor框设计 (改进点3:损失函数设计 (

crasher123的博客 2909

【嵌入式DIY实例-ESP32篇】-热成像仪

在本文中,我们将使用 MLX90640 热像仪和 1.8 英寸 ST7735 TFT 显示屏,构建一款基于 ESP32 的高性能紧凑型热像仪。本项目旨在打造一款便携、响应迅速的热像仪,具有增强的图像质量、优化的帧率和精准的温度读数。

视觉与物联智能 877

八数码难题的多种解法

蔡自兴老师的《人工智能及其应用》这本书的第3章里面讲解了很多种搜索方法,因为看的不是很懂,所以网上就找了资源来帮助理解。 为了帮助各位更好的理解,在此,仅以八数码难题为实例来解释说明。 #首先描述下八数码难题 一、宽度优先搜索 1. 宽度优先搜索 它是从根节点(起始节点)开始,按层进行搜索,也就是按层来扩展节点。所谓按层扩展,就是前一层的节点扩展完毕后才进行下一层节点的扩展,直到得到目标节点...

薰珞婷紫小亭子的博客 8988

Windows下Anaconda和PyTorch深度学习环境完整安装配置教程

本文详细介绍了在Windows系统下安装配置PyTorch深度学习环境的完整流程。主要内容包括:硬件环境检查(确认GPU支持)、Anaconda环境管理系统的安装与配置、虚拟环境的创建与管理方法、以及PyTorch及其相关组件的安装指南。特别强调了版本兼容性选择策略(如CUDA版本的确定)、显卡驱动更新、使用Anaconda创建隔离的PyTorch专用环境等关键步骤。无论是使用CPU还是GPU版本,读者都能按照教程快速搭建稳定的PyTorch开发环境,为深度学习项目打下坚实基础。

FJN110的博客 973

人工智能之八数码难题

推荐阅读: &nbsp;我的优快云 &nbsp;我的博客园 &nbsp;QQ群:704621321 八数码难题:33的9个方格中有1到8的整数,并用0表示空白格。非0数字可以向与之相邻的空白格(即0的位置)移动,同时空白格向这个数字原来的位置移动。通过若干步的移动,将33方格中的数字排列在指定的位置。用prolog写代码,求解八数码难题。 题目中的意思我们用数学的方式表示出来: 初始...

爱上游戏开发 2万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

八数码问题求解

一个人工智能的算法作业,仅供参考!八数码问题,从是否有解到如何求解,到A*启发式算法,到变种的情况怎么分析等等,如果帮到你,能点个赞吗?有关注就更好了^_^

m0_51361529的博客 2072

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

BFS求解八数码问题

问题描述 八数码问题。在3*3的方格盘上,放有八个数码,剩下第九个为空,每一个空格上下左右的数码可移至空格。问题给定初始位置和目标位置,要求通过一系列的数码移动,将初始位置转换为目标位置。求出从初始位置移动到目标位置的步骤,同时还给出了最短移动路径。 算法原理 首先将空格设为数字0,将3*3方格盘中的数字转换为一个字符串,如‘283104765’,将空格上下左右的数码移动看作空格的移动,这样...

婷子的博客 2303

有界深度优先搜索算法解决八数码问题

《人工智能导论》(第四版) 课后题5.3 C++实现 题目: 运行结果: C++代码: #include <iostream> #include <vector> using namespace std; struct Octal { int arr[4][4]; // 存储八数码 int parent; // 父亲的值 int current; // 当前的值...

ALTLI的博客 1万+

八数码实验报告

八数码实验报告问题简介:        所谓八数码问题是指这样一种游戏:将分别标有数字1,2,3,…,8的八块正方形数码牌任意地放在一块3×3的数码盘上。放牌时要求不能重叠。于是,在3×3的数码盘上出现了一个空格。现在要求按照每次只能将与空格相邻的数码牌与空格交换的原则,将任意摆放的数码盘逐步摆成某种特殊的排列。如下图表示了一个具体的八数码问题求解。问题分析:        首先,八数码问题包

1万+

Java实现八数码问题

这是本人第一次写博客,也是本人的第一份用Java语言实现的一个相对来说不是很难得一个问题,本来这个问题是人工智能的作业,只是想实现了就好,但是为了让自己进步的快点,还是发到博客上来请大牛们看看有什么还能提高的地方和注意的地方,也希望能对那些初学Java的同学有个帮助,谢谢大家!!

effort_02的博客 6361
上一篇: 八数码之广搜
下一篇: UARL 1011
ju136
博客等级 码龄19年 95粉丝 80原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值