Browse Source

update docs

master
Dnomd343 4 years ago
parent
commit
8031cac6ff
  1. 2
      docs/group_num.md
  2. 2
      docs/group_size.md
  3. 0
      docs/images/code_eg_1.png
  4. 0
      docs/images/code_eg_2.png
  5. 0
      docs/images/code_eg_3.png
  6. 0
      docs/images/step_eg_1.png
  7. 0
      docs/images/step_eg_2.png
  8. 0
      docs/images/step_eg_3.png
  9. 2
      docs/jiang_bing_count.md
  10. 145
      docs/klotski.md
  11. 8
      docs/klotski_code.md
  12. 4
      docs/style_count.md

2
docs/group_num.md

@ -1,3 +1,5 @@
## 群的数量统计
| jiang_num | bing_num | style_num | 群的数量 |
| :-: | :-: | :-: | :-: |
| 0 | 0 | 0 | 1 |

2
docs/group_size.md

@ -1,3 +1,5 @@
## 群包含的元素数量统计
| jiang_num | bing_num | style_num | group_num | group_size |
| :-: | :-: | :-: | :-: | :-: |
| 0 | 0 | 0 | 0 | 12 |

0
docs/images/code_exp_1.png → docs/images/code_eg_1.png

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

0
docs/images/code_exp_2.png → docs/images/code_eg_2.png

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

0
docs/images/code_exp_3.png → docs/images/code_eg_3.png

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

0
docs/images/step_exp_1.png → docs/images/step_eg_1.png

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

0
docs/images/step_exp_2.png → docs/images/step_eg_2.png

Before

Width:  |  Height:  |  Size: 6.4 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

0
docs/images/step_exp_3.png → docs/images/step_eg_3.png

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 5.5 KiB

2
docs/jiang_bing_count.md

@ -1,3 +1,5 @@
## jiang_num-bing_num分类的元素数量(64种)
| jiang_num | bing_num | COUNT |
| :-: | :-: | :-: |
| 0 | 0 | 12 |

145
docs/klotski.md

@ -24,16 +24,17 @@
### 合法布局举例:
<img src="/images/legal_1+2.png" alt="legal_1+2" style="zoom: 40%;" />
![legal_1+2](./docs/images/legal_1+2.png)
<img src="/images/legal_3+4.png" alt="legal_3+4" style="zoom: 40%;" />
![legal_3+4](./docs/images/legal_3+4.png)
### 非法布局举例:
<img src="/images/illegal_1+2.png" alt="illegal_1+2" style="zoom: 40%;" />
![illegal_1+2](./docs/images/illegal_1+2.png)
![illegal_3+4](./docs/images/illegal_3+4.png)
<img src="/images/illegal_3+4.png" alt="illegal_3+4" style="zoom: 40%;" />
**错误原因:**
@ -47,13 +48,13 @@
## 布局间的关系
## 棋子移动
+ 移动原则:棋子只能平行移动,不能进行旋转;
+ 移动原则:棋子只能平行移动,不能进行旋转,移动后棋子间不可重叠
+ **一步**:某一棋子做任意次移动的过程(或结果)
+ **一步**:某一棋子做任意次移动的过程;
+ **子布局**:某一布局通过一步移动可以得到的布局称为子布局;
+ **子布局**:某一布局通过一步移动得到的布局称为子布局;
+ **相邻布局**:两布局互为对方子布局时,两者为相邻布局;
@ -61,11 +62,37 @@
### 步的举例
<img src="/images/step_exp_1.png" alt="step_exp_1" style="zoom: 40%;" />
<img src="/images/step_exp_2.png" alt="step_exp_2" style="zoom:40%;" />
![step_eg_1.png](./docs/images/step_eg_1.png)
![step_eg_2.png](./docs/images/step_eg_2.png)
![step_eg_3.png](./docs/images/step_eg_3.png)
## 群
定义:群是有限个不同布局的集合,该集合中全部布局都可以由其中任一布局经过有限次移动得到;
性质1:群中任意一个布局无论如何移动,其结果仍在该群内;
性质2:只需群中任意一个布局,即可复原出群中的所有元素;
性质3:群是封闭的,群中所有元素无序且互异,同时构成一个关系网;
统计:29334498种布局可拆分出25422个群,其中元素数量存在两极分化现象;
[群的数量统计](./group_num.md)
<img src="/images/step_exp_3.png" alt="step_exp_3" style="zoom:40%;" />
### 群的种子
定义:群中任意一个布局称为该群的种子;
由上文性质2可知,群中任一布局进过多次移动可复原出整个群,故描述一个群仅需其中一个布局,常取其中编码最小的布局进行记录;
[25422个群的种子](./res/seed.zip)
@ -120,69 +147,107 @@
(注意不存在 *jiang_num-bing_num-style_num = 7-0-0* ,即七竖将的情况)
### 群
### 继续分类
定义:群是有限个不同布局的集合,该集合中全部布局都可以由其中任一布局经过有限次移动得到
对于一个特定的 *jiang_num-bing_num-style_num* 分组,可拆分出n个群;将分出的群按元素数量从大到小排列,若存在元素数量相同的群,则取其中的最小元素排序;对这些群进行编号得0 ~ (n - 1) 共n个群,编号记为group_num
性质1:任意一个布局无论如何移动,其结果仍在该群内
因而对于某一群,存在一个唯一编号 *jiang_num-bing_num-style_num-group_num* ;由于群中的元素个数是确定的,将其中的元素按编码从小到大排列,其中的元素可得唯一编号group_index
性质2:只需群中任意一个布局,即可复原出群中的所有元素
所以,对于任意布局,可得唯一编号 *jiang_num-bing_num-style_num-group_num-group_index*
性质3:群是封闭的,群中所有元素无序且互异,同时构成一个关系网;
[群包含的元素数量统计](./group_size.md)
统计:29334498种布局可拆分出25422个群,其中元素数量存在两极分化现象;一般情况下,布局的空格增加,其所在群的数量会急剧上升;
[群的数量统计](./group_num.md)
## 基本参数定义
### 按群继续分类
**最少步数**:布局A和布局B处于同一个群,从布局A移动到B所需最少的步数,该数值存在且是确定的;
对于一个特定的 *jiang_num-bing_num-style_num* 分组,可拆分出n个群;将分出的群按元素数量从大到小排列,若存在元素数量相同的群,则取其中的最小元素排序;对这些群进行编号得0 ~ (n - 1) 共n个群,编号记为group_num
性质1:布局A到B的最少步数与布局B到A的最少步数必定相同
因而对于某一群,存在一个唯一编号 *jiang_num-bing_num-style_num-group_num* ;由于群中的元素个数是确定的,将其中的元素按编码从小到大排列,其中的元素可得唯一编号group_index
性质2:若两布局不在同一个群中,则最少步数不存在
所以,对于任意布局,可得唯一编号 *jiang_num-bing_num-style_num-group_num-group_index*
[群包含的元素数量统计](./group_size.md)
**最短路径**:从布局A到布局B,所有满足最少步数的路径;
性质:最短路径在大多数情况下不止一条,且它们之间会相互交错,一般绘制多点层级路线图进行研究;
## 层级关系
**最远步数**:布局A到它所在群中任一布局均存在一最少步数n,其中最大的n称为`最远步数`;
### 基本定义
性质:标准华容道中不存在最远布局退化的情况,即最远步数至小为1;
**最少步数**:当布局A和布局B处于同一个群时,从布局A移动到B所需最少的步数,该数值存在且是确定的;
性质:布局A到B的最少步数与布局B到A的最少步数必定相同
**最远布局**:布局A到布局B的最少步数为`最远步数`时,称布局B为布局A的`最远布局`
**最短路径**:从布局A到布局B,所有满足最少步数的路径(最少路径可能不止一条)
性质:最远布局必然存在,且大多数情况下不止一个
**最远步数**:布局A到它所在群中任一布局均存在一最少步数,其中最大的最少步数称为最远步数;
**最远布局**:布局A到布局B的最少步数为最远步数时,称布局B为布局A的最远布局(一般情况下不止一个);
> 下称满足2 x 2方块在棋盘的最下方中间的布局拥有特征S(即2 x 2块所在位置编号为13,亦或编码以D开头);
(标准华容道中不存在最远布局退化的情况,即最远步数至少为1)
**布局无解**:布局A所在群中不存在满足`特征S`的布局;
**最少步解**:布局A所在群中存在一布局S,满足2 x 2方块在棋盘的最下方中间(即2 x 2块所在位置编号为13,亦或编码以D开头),记A到S的最少步数为n,此时不存在其他任何满足以上条件的S‘使得最少步数小于n,则称S为布局A的最少步解,n为最少步解的步数(亦简称为最少步)
**解**:布局A所在的群中存在布局T满足`特征S`,且布局A到T的任何最短路径上不存在满足`特征S`的节点,则称布局T为A的一个解
**解**:布局A所在群中存在一布局S满足2 x 2方块在棋盘的最下方中间,且有A到S的任意最短路径中均不存在符合2 x 2方块在棋盘的最下方中间的布局,此时称S为布局A的解
**最少步解的步数**:若布局存在解,布局A到解的最少步数为n,其中最小的n称为`最少步解的步数`
性质:布局的解可能是空集;最少步解属于解的子集(特定条件下两者可以相同)
**最少步解**:布局A的所有解中满足步数为`最少步解的步数`的布局,称为`最少步解`
性质1:布局的解可能是空集;
性质2:最少步解属于解的子集,满足`(最少步解的个数) ≤ (解的个数)`;
### 层模型
表述:存在一起始布局A,从它开始衍生出有限个布局,每个布局抽象为一个节点,同时称A为根节点;由于任一由A衍生出布局到根节点存在一个确定的最少步数,将其称之为到根节点的距离;将所有距离相同的布局称为一个层,层内元素无序且互异,根节点所在层称为第0层,之后依次排列可得有限个层;
记排列的最后一层为第n层,则共有n + 1个层(包括第0层);
## 层级关系
### 层模型
表述:存在一起始布局A,从它开始衍生出有限个布局,每个布局抽象为一个节点,同时称A为根节点;由于任一由A衍生出布局到根节点存在一个确定的最少步数,将其称之为到根节点的距离;将所有距离相同的布局称为一个层,层内元素无序且互异,根节点所在层称为第0层,之后依次排列可得有限个层;记排列的最后一层为第n层,则共有n + 1个层(包括第0层);
性质1:所有层中的元素集合即为根节点所在的群;
性质2:某一节点所在层数为其到根节点的最少步数;
性质2:第a层节点的子布局必定在第a - 1层,第a层或第a + 1层,其中a满足`1 ≤ a ≤ (n - 1)`;第0层的子布局必定在第1层;第n层的子布局必定在第n - 1层或第n层;
**层间联系**:若第a + 1层中存在第a层的子布局,则将两者链接起来,其中a满足`0 ≤ a ≤ (n - 1)`;
**向后传播**:在第a层存在一节点K,在第a + 1层取得其子布局K'(0个及以上),再将每个K'在第a + 2层取得K''(0个及以上),以此类推得到分层的有限个布局,这个过程称为`向后传播`;
**向前查找**:在第a层存在一节点J,在第a - 1层取得其子布局J'(1个及以上),再将每个J'在第a - 2层取得J''(1个及以上),以此类推直到第0层的根节点,查找的数据即为节点J到根节点的全部最短路径合集,这个过程称为`向前查找`;
性质3:若最后一层为第n层,则最远步数为n,且第n层的所有元素均为最远布局;
### 各参数在层模型中的体现
**最少步数**:某一节点所在层数为其到根节点的最少步数;
**最短路径**:对某一节点做`向前查找`,即可得到最短路径的合集;
**最远步数**:若共有n + 1层,则最远步数为n;
**最远布局**:最后一层的全部节点均为最远布局;
> 下方特征S的定义与上文一致,且下列讨论均为根节点有解的情况
**最少步解的步数**:第一次出现满足特征S的节点所在层数;
**最少步解**:在层数为`最少步解的步数`的层中,全部满足特征S的节点;
**解**
定义1:对满足特征S的节点`向前查找`,若得到的结果不存在任何满足特征S的节点,则该节点称为根节点的`解`;
定义2:对全部`最少步解`进行`向后传播`,将得到的结果进行标记;再向后逐层查找,若有满足特征S且未被标记的节点记为`解`,并进行`向后传播`,以此类推直到最后一层;整个过程得到的`解`与`最少步解`的集合称为根节点的`解`;
### 网模型
未完待续...
表述:网模型针对一个群,群中每一个布局称为节点,将每个节点与其子布局节点连接起来,整个群即可连成一个网状模型;
性质1:可在网模型中抽象出层模型及其层间连接;
性质2:层模型的节点等同于网模型,但节点间的连接是网模型的一个子集;
应用:选定网模型中的一个节点,可据此直接构建出该节点对应得层模型;

8
docs/klotski_code.md

@ -4,7 +4,7 @@
**位置编号**
<img src="/images/address.png" alt="address" style="zoom: 40%;" />
![address](./docs/images/address.png)
2 x 2棋子的左上角在棋盘中的位置编号有12种情况,对应编码分别为:0、1、2、4、5、6、8、9、A(10)、C(12)、D(13)、E(14),将其置于编码第一位;剩余8位十六进制位储存其他棋子信息。
@ -46,7 +46,7 @@
**例1:**
<img src="/images/code_exp_1.png" alt="exp-1A9BF0C00" style="zoom: 60%;" />
![eg-1A9BF0C00](./docs/images/code_eg_1.png)
<table style="text-align: center">
<tr>
@ -99,7 +99,7 @@
**例2:**
<img src="/images/code_exp_2.png" alt="exp-4FEA13400" style="zoom: 60%;" />
![eg-4FEA13400](./docs/images/code_eg_2.png)
<table style="text-align: center">
<tr>
@ -152,7 +152,7 @@
**例3:**
<img src="/images/code_exp_3.png" alt="exp-5DC02F800" style="zoom: 60%;" />
![eg-5DC02F800](./docs/images/code_eg_3.png)
<table style="text-align: center">
<tr>

4
docs/style_count.md

@ -1,3 +1,7 @@
## jiang_num-bing_num-style_num分类的元素数量(203种)
(不存在*jiang_num-bing_num-style_num = 7-0-0*)
| jiang_num | bing_num | style_num | COUNT |
| :-: | :-: | :-: | :-: |
| 0 | 0 | 0 | 12 |

Loading…
Cancel
Save