编码的基本过程
假使我们现在要传输一段英文,为了传输的方便要对其进行编码。英文内容是:I love coding. 要编码首先要想好码符号,最常见的码符号是0和1,把不同的0和1的组合与英文语句的每个字母对应起来,这就是编码的过程。现在规定每个代码长度是4,那我用最简单的方法来编码:0000代表I,0001代表空格,0010代表l,0011代表o ……
写个表格吧,清晰一点:
英文字母 | 代码 |
---|---|
I | 0000 |
空格 | 0001 |
l | 0010 |
o | 0011 |
v | 0100 |
e | 0101 |
c | 0110 |
d | 0111 |
i | 1000 |
n | 1001 |
g | 1010 |
okay, 所有的字母或空格都有了对应的代码,这就是编码第一步。我们把需要被编码的字母和空格都称为符号
.
把他们组合起来,英文语句I love coding
就变成了码长为4的代码:
0000000100100011010001010001011000110111100010011010
然后你可以对你的室友说:“我拍一下桌子就代表0,拍一下手代表1,你来看看我想表达什么。”你开心得拍了起来,室友很认真地记录你的拍打情况,按照编码的表格4个数字1个符号地破译,最终发现你是个代码爱好者。哈哈,不嫌累可以试试。
一些数学的表示方法
符号集
英文语句I love coding
是由字母和空格组成,把这些符号组成一个集合,我们称之为符号集
,用字母
S
来表示:
这是一个实例,一般表示符号集的方法是:
q
说明集合里一共有
码符号集
我们上述例子中的码符号是啥?是0和1,我们就是用它俩来编码的。这里再定义一个码符号集
:
X={0,1}
.
同样它是一个实际的例子,一般表示码符号集的方法是:
我们老师告诉我,用
r
来表示码符号的个数,虽然一会儿
代码组
0000
, 0001
之类是我们的代码,前者代表字母 I ,后者代表空格,把所有的代码放在一个集合里面,这个集合就叫做代码组
:
标准写法:
这里的
q
代表代码的数量,可以发现这个
每个代码
wi
是由若干个基本符号组成的,在这里是由两个基本符号0和1组成的,以
w1
为例:
标准写法:
你可以放大点看,最后一个元素的下标是 il , l 表示码长。
在上述例子中
我们有 x11=x12=x13=x14=0 .
从翻译上看编码理论
信息传输,一方面是编码,一方面就是翻译,两者缺一不可。我们设计的这组代码有一个好处,就是定长。翻译的人员很清楚地知道工作步骤,信息是一个数字一个数字发送的,那么可以每接受到4个数字就翻译一次,每接受到4个数字就翻译一次,步骤很鲜明,操作很简单,出错概率非常小。这种代码我们称之为即时码
,在传输的过程中就能够翻译,而是一个代码只能被翻译成一个符号,是唯一可译
的。
唯一可译码的条件
信源发布了
q
个符号,码符号集有
用我们上述的I love coding
的例子,符号有11个,码符号是0和1,因此码符号集有2个码元,每个代码长度为4;左边
q=11
,右边
rl=24=16
,
左边≤右边
,满足条件,所以它是唯一可译的编码。
信源拓展后的编码
再来复习一下拓展的概念,原来信源只能发两个符号,0和1,二次拓展以后能发几个符号?4个,00,01,10,11;那么三次拓展以后呢?8个;
N
次拓展呢?
举个例子啊,我们有符号集
S
:
二次拓展以后就有了
42=16
个元素,新元素用
α
来表示,于是有: