基數和序數

這段時期工作稍微忙碌一些,今天終於啃下了大塊頭,內心也舒坦了許多,騰出一些時間,寫寫近來的一些心得體會。

和朋友聊天時,本來想着找一個簡單點兒的話題,後來我才發現:任何一個簡單的東西深入探討下去都是無比的複雜。朋友說她想學習編程,我問她:什麼是信息?給信息下個定義。沒有經過專業的訓練,確實很難能爲信息下一個準確的定義。我隨後舉了個例子,比如我對她說:“我愛你”,她收到了這個信息,知道了我愛她,那麼我再重複告訴她“我愛你”,我問她:“我傳達給你的信息有沒有變化”,她說沒有。那麼我再重複一次,我問她信息有沒有變化,她說沒有,我說不一定。如果說雙方都建立了“重要的事情說三遍”這種觀念,那麼當我重複說第三次“我愛你”這句話的時候,其實語言所要傳達的信息已經發生了變化,“我愛你”這件事是非常重要的,因此其對應的信息量也就增多了。在沒有重複第三次之前,那麼第二次的“我愛你”可以被視爲重複,或者數據的冗餘,除非我們事先爲重複兩次所要表達的意義做好約定。因此,信息就是用來消除不確定性的東西。

接着,我想應該從數制講起,因爲計算機的底層就是算術和邏輯運算。想到一些人經常會對計算機採用二進制感到困惑,我又覺得有關數字電路的知識也要講一些,但在之前也要明白二進制這種計數方法。也許是教育的緣故吧,我小時候的數學學習中缺乏有關數學歷史的學習,感覺所有的數學知識都是從天而降,有就是有,沒有的東西也不會引起我的懷疑。

如今很多人都明白十進制,但對其它進制卻有些疑惑。無論十進制、十六機制,還是二進制,其本質上都是一樣的。即使他很自信的認爲自己會熟練地進行十進制計數的各種運算,如果說不理解二進制,其實是自己根本沒搞清楚計數的基本原理。在開始下面閱讀之前,我們先在腦海中思考一下:什麼是基數和序數?

古埃及人對從1到1000之間的每個數都給出了對應的名字。隨着我們要處理的數量越來越多的時候,我們就必須藉助規則去減少符號的冗餘,因爲我們的大腦無法記住這麼多東西,但是通過規則我們可以剔除掉非常多的冗餘,簡化信息的存儲方式,因此組合計數就產生了。我們用十進制和十六進制作對比說明:

十進制:0、1、2、3、4、5、6、7、8、9、(10、11、12、13、14、15)
十六進制:0、1、2、3、4、5、6、7、8、9、(a、b、c、d、e、f)

當我們要計數到9的下一個數字時,十進制顯然就必須採取組合計數的方式,出現了位的概念:十位和個位,現在我們在十位計1,表示已經在個位累積了十個數,那麼個位此時就可以歸0,後面的計數從0又可以重複使用0至9這十個符號。因爲採取了這種組合計數的規則,那麼我們可以實現符號的重複使用,簡化我們記憶的負擔。而十六進制在數9的下一數字時,採用了a,此時我們還不需要採取組合計數的規則,直到們從a、b、c、d、e數到f時,再繼續往下數,就需要考慮組合計數的規則,向上一位進1。

爲什麼人類普遍採用了十進制,吳軍老師在《數學之美》中講到,概源於人們只有10個手指頭吧。但歷史上也曾出現過二十進制,這就是瑪雅文明所採用的瑪雅數字。對於今天的人們來說,二十進制似乎很複雜,這與我們從小到大的訓練有關,如果讓一個人從小就學習使用二十進制,那麼對於他來說二十進制也不是什麼複雜的東西。既然我們普遍採用了十進制,因爲路徑依賴的緣故,其他各個行業的計數算術都採用了十進制,那麼後來要重新改變規則,代價是極其昂貴的,除非能夠像秦始皇採用強制的手段統一度量衡那樣。

組合計數產生之後,也極大推動了我們思維的認知迭代速度。隨着後來數學的大部發展,組合計數也開始遭遇瓶頸。面對古希臘繁冗的數字表示方式,阿基米德首創了記大數的方法,突破了當時用希臘字母計數不能超過一萬的侷限,並用它解決了很多數學難題。科學計數法的產生對於人們的計數產生了革命性的改變,一下子就拓寬了我們人類的認知視野和尺度。只有當我們突破了計數的邊界,纔會有無窮大和無窮小的產生落地,進而纔會產生微積分,這也是事物的基本演化規律。

基數的1、2、3和序數的1、2、3在符號的表示上完全一樣,但是它們所記錄的信息完全不一樣。基數主要是用於計數,是量的累積。計數背後反映的還是人們的抽象思維。對於我們要計數的對象來說,它們肯定是被我們均質化了的東西,不然完全不同的兩個事物如何能夠被累積計算在一起?就好比你把1只兔子和1只老鼠要累加在一起計算,那麼這是2只什麼?你可以很輕鬆地回答:2只動物。對,它們兩個合在一起確實可以被計數爲2只動物。這就是人們的抽象歸納思維。

序數暗含着一種結構,序數記錄的是結構中的某個部分,既可以是時間上的位置關係,也可以是空間上的位置關係,總之使用序數描述時,我們都需要事先建造一個抽象結構。比如電影院第1排從左至右第3個座位,緊接着第3個人之後等等。其實對序數進行深層次的思考之後,我們會發現:序數思維比計數思維要更高一個層次。我們需要在大腦中首先構造一種確定的結構,通過序數來描述結構中的部分。顯然這需要更加高層次的抽象思維,序數中攜帶的信息量要更大。《複雜的引擎》作者約翰·E·梅菲爾德在書中特別提到:

一個對象如果存在比對象本身短(或小)的描述,就具有有序性。

基數和序數背後反映的是人們大腦思維的兩個工具,它們在符號上的相同給人們造成了它們都是數字的假象。我們很難知道這種思維是從什麼時候開始的,以及它的第一次出現是怎麼產生的。總之,我們正是依賴這種抽象歸納的能力,才走上了一條與其他動物貌似全然不同的道路。我有時候會突然的感到震撼,要是沒有組合計數、沒有科學計數,我們將是多麼的辛苦。不過,要是沒有它們,我會至於發出這樣的感嘆嗎?這就是蘊含其中的邏輯。

當我們真正的將自己還原到歷史的環境中去,將自己的認知保持與當時人們一致,我們纔會對自己現在認爲是常識和習慣性的東西發出驚歎。因此在感嘆歷史演化積澱的同時,我告訴自己:耐心的沉澱自己。這個時代的演化之道就是:“小步快跑、即時響應、持續迭代”。

文章開頭簡要的說了一些關於信息的問題,後面會作深入地探討,包括信息度量(香農定理)、編碼(哈夫曼編碼)、校驗(CRC校驗碼)、糾錯(海明威糾錯碼)等內容。歡迎持續關注,讓我們一起迭代自我!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章