怎么样判断一个八数码问题有解还是无解啊?不会连一个知道的人也没有吧.满意的会追加分数.谢谢.

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/06 06:27:02

怎么样判断一个八数码问题有解还是无解啊?不会连一个知道的人也没有吧.满意的会追加分数.谢谢.
怎么样判断一个八数码问题有解还是无解啊?
不会连一个知道的人也没有吧.
满意的会追加分数.谢谢.

怎么样判断一个八数码问题有解还是无解啊?不会连一个知道的人也没有吧.满意的会追加分数.谢谢.
利用奇偶性判断所给出的初始状态有无解.
判别方法是:
以数组为一维的举例子.
将八数码的一个结点表示成一个数组a[9],空格用0表示,设临时函数p(x)定义为:x数所在位置前面的数比x小的数的个数,
其中0空格不算在之内,那设目标状态为b[9],那r=sigma(p(x)) sigma()表示取所有的x:1-8并求和,
那对于初始状态a[9],t=sigma(p(x)),如果r和t同为奇数或者同为偶数,那么该状态有解,否则无解.
考虑到四种移动方法对sigma(p(x))的影响,左移和右移是不会影响它的值的,
更不会影响奇偶性,如果是上移或者下移就会影响:
上移:一次上移会使一个元素向前跳两个数字的位置,设这两个数字为a1,a2,
不妨设a1