八数码的有无解问题

2023-05-16

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

1 2 3 4 5 6 7 8 0

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

2 1 3 4 5 6 7 8 0

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

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

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

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

八数码的有无解问题 的相关文章

  • RT Thread studio同时生成bin和hex文件

    一 RTT默认生成bin文件 默认选择Raw binary xff0c 则项目对应的debug文件夹下生成bin文件 xff1b 修改成intel的话 xff0c 则项目对应的debug文件夹下生产hex文件 xff1b 二 同时生成bin
  • 使用CJSON 解析JSON 结构体数组【典型】

    1 CJSON数据结构定义 define cJSON False 0 define cJSON True 1 define cJSON NULL 2 define cJSON Number 3 define cJSON String 4 d
  • RTThread:静态线程&动态线程

    一 静态线程创建 rt thread init rt err t rt thread init struct rt thread thread const char name void void parameter entry void p
  • C指针传参的一些思考

    一 仅操作变量名的子函数 xff0c 在主函数中无法真正实现值传递 如下 xff1a void swap 1 int num1 int num2 作为主函数的子函数 xff0c 被main函数调用 xff1b 在子函数内部实现了num1 和
  • 再论指针数组与数组指针

    一 二者的区别 xff08 一 xff09 直观的差异 int p 5 指针数组 xff0c 元素为指针 int p 5 数组指针 xff0c 指向数组的指针 xff08 二 xff09 非直观差异 1 xff09 数组指针 xff1a 待
  • Anaconda Prompt工作路径的切换

    Anaconda Prompt工作路径的切换 缘由进入Anaconda Prompt激活 labelme所在环境退出到现在所在盘的根目录进入目标盘输入目标文件路径 缘由 数据集制作过程中 xff0c 想要进入D盘下的存放json的文件夹 x
  • 认识一下 Azure DevOps

    目录 新手入门 认识 安装入门 Azure Board 敏捷面板Azure Repos 代码仓库Azure Pipeline CI CD 管道Azure Test Plan 测试管理Azure Artifact 包托管 Azure DevO
  • 10个数比大小(排序)——冒泡和选择

    10个数比大小 xff08 排序 冒泡和选择 一 冒泡法 xff08 起泡法 xff09 冒泡排序的基本概念是 以升序排序为例 xff1a 依次比较相邻的两个数 xff0c 将小数放在前面 xff0c 大数放在后面 即在第一趟 xff1a
  • vue3 实现界面数据实时变化

    技术支持 xff1a Vue3 ElementUI WebSocket 库引用 pinia websocket 1 创建pinia文件夹 xff0c 目录如下 src pinia index js modules wsdata js 2 编
  • javascript BOM

    一 什么是BOM xff1a BOM xff08 Browser Object Model xff09 的意思是浏览器对象模型 BOM方法一般指的都是在浏览器 xff08 window xff09 中的方法 二 常见的BOM方法 事件 xf
  • Flutter 利用 FFI,绕过 Android JNI 直接调用 C++ 层!

    坏de牧羊人 作者 承香墨影 校对 https juejin cn post 6976824832595853342 原文 大家好 xff0c 这里是承香墨影 xff01 今天和大家聊聊 Flutter 与 C C 43 43 直接调用的方
  • 前端请求接口浏览器发起option预请求而导致405的问题

    记一次前端请求后端接口出现405的问题 xff1a 问题描述 xff1a 首先阐述http的405状态码 xff0c 405的直接提示是method not allowed xff0c 即前端请求的方法不被后端接受 xff08 如下图 xf
  • 如何变现?互联网商业产品模式详解

    本文由作者 海贝学姐 发布于社区 变现 商业化 商业模式 这些词相信大家都耳熟能详了 懂商业 xff0c 往往能让你在职场上更容易获得上升空间 xff0c 毕竟赚钱是每家企业最重要的目的之一 本文会对互联网商业产品的类型 模式 定价策略和角
  • 连接PC桌面和android手机的神器--scrcpy

    无意中发现一个手机调试和自动化测试的神器 xff0c Scrcpy xff0c 甚是强大 xff0c 探索了一番 xff0c 配合minitouch可以实现更自动化的操作 xff0c 但是也可以用python的pythonautogui这样
  • ubuntu配置远程桌面登录(两端都是ubuntu)

    1 从机 xff08 被访问端 xff09 安装x11vnc 可以ssh登录后安装 sudo apt get install x11vnc y 2 设置访问密码 sudo x11vnc storepasswd etc x11vnc pass
  • Linux下执行一些命令前加sudo时出现command not found的原因

    转载请注明来自 柳大的CSDN博客 xff1a http blog csdn net poechant 当我们用sudo来执行cd ls等命令时 xff0c 会出现command not found的提示 xff1a sudo cd hom
  • gcc-c++安装—使用系统自带的源yum install gcc-c++和本地源进行相应的安装

    进行yum本地源配置之前 xff0c 需要在虚拟机设置中将本地光盘设置为已连接状态 1 挂载光盘 一旦关机仍需重新挂载 xff08 指令挂载 xff09 su root切换到管理员并切换到其家目录 span class token name
  • WSL的使用与迁移

    WSL的使用与迁移 1 什么是WSL WSL是Windows Subsystem for Linux的简称 也就是说在window中运行的linux子系统 WSL最早是在windows10中引入的 xff0c 原始版本称为WSL1 WSL1
  • 为什么要使用cmake+VS重新编译的opencv库?

    为什么要使用cmake 43 VS重新编译的opencv库 xff1f 使用opencv需要编译源码 xff0c 得到库文件 可以用cmake构建项目后编译 xff0c 也可以直接用官方提供的编译好的版本 官方提供的编译库一般只是标准版本
  • 华为交换机难点学习:导出配置文件/同步时间

    华为交换机难点学习 span class token operator lt span HEXIN SWH span class token operator gt span dir all Directory of flash Idx A

随机推荐