这一章,作者主要向我们介绍了:
- 解析摩斯码的方式
- 增加摩斯码包含信息的方式
解析摩斯码的方式:
许多人发现,发送摩斯码比接收摩斯码容易。
图1 字符-编码表
根据这张表可以轻易地将字符转化成摩斯码。但是当我们将摩斯码转换回字符时,我们发现这并不容易。
当我没有往下看的时候,我认为这个问题的核心在于:
存在字符转换成摩斯码的表,不存在摩斯码转换成字符的表
我理所当然地想到将摩斯码提前,将其先以编码长度从短到长,再以先点后线(或先线后点)的方式进行排序,构建出一张新的表(此处偷懒不画那张表了)。
然后根据获取的摩斯码从那张表中对应查找,这样的查找难度应该比原来要小。
接着看书,发现我与作者想法大致相同。他将编码按长度1、2、3、4划分,并以先点后线的方式排序。但是,他与我所不同之处在于,他不以表格的形式进行表达,而是用一个树结构进行表示:
图2 编码-字符图
这种表达方式也更清晰,更易于理解。同时也避免了表格中可能出现手误将两个相同的编码表示不同字符(make the dumb mistake of using the same code for two different letters),或不同编码表示相同字符(make the sequences of dots and dashes unnecessarily long)。在编码短的时候,眼睛一扫可能就能发现问题,但是在编码长的时候,没有规律的排序则就不那么容易发现问题了。
增加摩斯码包含信息的方式:
作者在将摩斯码以长度排序时,让我们发现了n长度的摩斯码能够容纳2^n个不同的字符。若是允许出现不定长度的摩斯码,则n长度的摩斯码最多能够容纳2^(n+1) -2个字符。于是,增加摩斯码的长度就可以增加摩斯码包含的信息,增加一位基本就能使保存的信息翻倍。
本节思考(与本节无关,只是我的一些想法):
从图1我们也能够直接将摩斯码转换成字符,但是没有那么流畅。常人可能就停留于能用就行了,我也不例外。然而为了提高效率,减少错误的发生,有的人就想到了使用图2来让摩斯码转字符更加方便。这不禁让我想到了昨天看《暗时间》书中的一段话:
事实上,我们在解决问题的时候一般有两个思维步骤:一是根据问题情境线索从记忆系统当中提取以往成功过的方案(沿袭类似情境下用过的可行方法,这个也被称为 mental shortcut),然后评估该方案是否已经能够解决当前问题了,如果能够,就中止记忆搜寻(这个也被称为 satisficing 原则),在刚才提到的日记问题中,留言询问作者是我在成为 Google 重度使用者之前建立起来的、针对这类情境的特定习惯,甚至也可以说是我们每个人的第一习惯(如果一个人详细说到某件事情,他肯定知道个中究竟),而且这个方法的确满足可行原则,因此,在这样的思维方式下,我不假思索地就沿袭了旧习惯,而没有成功地将在另一个问题领域建立的更好的方法推广到这个问题中来。如前面所说的,如果这个日记是不允许留言的,并且我不认识这个作者,我可能就会立即想到去 Google 了。
如何解决这个“知识经验跨情境转移失败”的问题?除了多多反省观察自己之外,在面对问题的时候多抽象其本质也是一个有力的办法,因为前面提到,正是表面不相似性阻碍了知识的迁移运用,我们常说有些人善于看到事物的本质,这样的人往往就是那些聪明人,因为他们更能够举一反三,将一个地方领悟的道理推广到另一个看上去很不一样的地方。
文章链接:逃出你的肖申克(一)
举一反三,透过现象看本质,这也许就是普通人和聪明人的区别。