跳到主要内容

方案设计

汉字特征概述

为了实现汉字编码的易学易用,我们通常将汉字的某些特征(如声母、韵母、声调、笔画和字根等等)提取出来用于编码。对于一个特定的特征来说,它可以取很多种不同的值,我们可以对这些值进行枚举,枚举得到的每种值称为一个字元。如:

  • 特征「声母」可以枚举得到【b p m f d t n l g k h j q x zh ch sh r z s c y w '】这 24 个字元;
  • 特征「第一笔」可以枚举得到【一,丨,丿,丶,乙】这 5 个字元。

一个特征枚举得到所有字元的总和称为该特征的字元集,如「24 种声母」、「5 种笔画」都是字元集。在有些情况下,汉字的不同特征可能对应着相同的字元集,例如「第一笔」和「最后一笔」的字元集是相同的。

基于汉字特征的编码

提取汉字特征 cc 和相应的字元集 RR 后,若给定一个可用的符号集 SS,我们可以选取一个子集 TST\subset S,并建立映射 φ:RT\varphi:R\to T 来将这些字元与符号关联起来,这样的映射称为一个布局

通常,我们要提取一个汉字的多个特征才能完成编码。在给定的输入方案下,提取的全部特征构成的序列称为全码(例如小鹤双拼的单字全码为【声韵形形】)。输入方案也可能对方案进行部分提取,得到的序列称为简码

用字符集子集的直积表示语言的子集

由于汉字特征提取过程的特点,不同长度和不同性质的编码对应的符号串往往在语言中的分布是非常有规律的,因此我们可以将一类编码用直积来表述。

同构原理

我们称 S=i=1NSSiS=\bigcup_{i=1}^{N_S} S_i 是符号集 SS 的一个划分,如果 ij,SiSj=\forall i\ne j, S_i\cap S_j=\emptyset。对于一个码 f:MLf:M\to L 来说,如果语言 LL 可以写成如下形式:

L=i=1NLLi;Li=j=1miSijL=\bigcup_{i=1}^{N_L} L_i;\quad L_i=\prod_{j=1}^{m_i}S_{ij}

那么我们可以对这个码建立一个简化的表达方式。

首先,我们建立一个大小为 NSN_S 的新符号集 SS',将划分得到的每个子集对应成一个符号;其次,我们建立一个大小为 NLN_L 的语言 LL',其元素为原先的各个 LiL_i 中各个直积的集合对应的新符号构成的串;最后,我们把原先对应于各个 LiL_i 的消息集子集分别对应到一个新消息,构成的集合为 MM',则

f:MLf':M'\to L'

也是一个码。容易验证,这个码和原来的码同时具有或不具有非奇异性、唯一性、前缀性和顶功性等性质。因此,在以下章节中我们将使用简化的同构码讲解各种顶功方案。