小松鼠嚇了一跳,有了魔法眼鏡後,這世界看起來完全不一樣了

1998年12月28日 星期一

壓縮 (1)

壓縮這種東西在現在看起來也許已經很平常了, MP3,MPEG ,ARJ,ZIP,DOUBLE SPACE,REAL AUDIO等等,即使不必懂電腦的人也許都聽過一些,或者瞭解一點,但是,當我第一次碰到壓縮這種東西的時候,的確受到了一點震撼,甚至還受到某種程度的 打擊。

  高一的時候,參加建中電研社學習 C語言,第一次上課後看了一點書大致上就學會了,上那個課比較大的收穫反倒在於接觸到了一些電研社的人和一些拿軟體的管道。

  壓縮就是在這個時候接觸的。整套 TURBO C 2.0放在軟碟片中,由於容量的關係,整個TC是用PKZIP 壓起來的。那時完全沒有見過這類的東西,帶著懷疑的心態使用磁片中所負的PKUNZIP 把TC解開,詳細比較大小,發現真的所言不需,真的可把大的檔案變小,簡直就像魔術一樣。

  為什麼?為什麼會這樣?如果真的是這樣的話,那不是可以用小小的磁片裝很多的東西嗎?那電腦的效能不是可以提高很多嗎?如果連續壓很多次,那不是會變得更小嗎?

  好奇心的驅使之下,找人拿到了 PKZIP回來玩玩看,(那時還拿了一些其他有趣的東西,包括用pc speaker念英文的軟體等等),發現真的效果宏大,戰無不克,不過有一個小例外,重複壓縮,把檔案壓縮到非常小的這種理想無法達成。

  受到 PKZIP威力的震撼,問題還是在是,同樣大小的檔案,比方說 10k好了,現在我差不多都能用 PKZIP把它壓成了5k,那 PKZIP是怎麼做到的?所有 10K的檔案有2^(10k)個,把它壓成了 5k的話,只有2^(5k)個,少了很多,怎麼可能壓成功?由鴿籠原理知道那是不可能的啊?

  那個時候,學長的解釋是,壓縮的原理就好像是縮寫,比方說"1111111111",壓縮之後我們用 "10個1"來表示,就能夠節省很多空間。這當然還帶來很多疑惑,"1111111111"這種東西太過特殊,一般哪有這麼好,再來後面的符號中用到了 個,而前面只有數字,顯然後面的每一個符號需要更多的位元來儲存,實際上真的能夠達到壓縮的作用嗎?更詳細的解釋學長也做不到,我只好自己去找答案了。

  一開始找到了一些資訊量的東西,瞭解了原來真實世界上,資訊是不平均的,瞭解了可以把一些常用的字元用比較短的碼來表示。但要如何編 碼?我想一些演算法也實作出來了,但都不滿意,直到我看到了霍夫曼碼,才恍然大悟。令人挫折的是,我是看到了才知道,而不是自己想到的,而且那時看到了之 後我也沒有概念要如何想出這類的東西,實在很洩氣。稍微扳回一點顏面的是我能夠證明他是最短的編碼法。能證明他是對的和能發明的差距不可以道里計。

  除了面對自己無法想出答案的洩氣之外,知道這樣的答案還是令人興奮的。不過,及使知道這樣的答案還是不夠的,一兩階的霍夫曼碼,或 者,即使是計算他的一兩階熵量也知道,至少要三階甚至更高階才能達到 PKZIP的壓縮率。以當時640k的記憶體來說,根本做不到,即使是現在也不容易。明顯的, PKZIP還有我不知道的秘密。

  當然那個時候資訊不多,我能找到的資訊也不多,除了上面的之外,了不起也只知道pcx 的run length這類的東西。差不多高中畢業的時候,才學到了Lempel-Ziv(簡稱LZ)一類的方法,然後才瞭解了混和LZ法,熵量法和run length才能達到逼近 pkzip 的能力。當然這時的pkzip也不是我高一時的pkzip,壓縮率和稍後出來的ARJ等等的壓縮器一樣高了,速度又快。

  ARJ當然是pkzip的一個歷史上的強敵,兩者並立至今。我高中時有所謂的ARJ壓縮的比較小但zip比較快的說法。其他知名的壓 縮器還有差不多的LZH,其他如ARC等等的比較老舊的壓縮器。 zip,arj,lzh,主要都是用LZ+霍夫曼來壓縮的,效率雖有差距但差距不大。我閱讀了zip,gzip 的原始碼和一些文件,並且利用了一些自己的技巧,做出了壓縮率高過 pkzip和 arj一點但速度差很多的壓縮器,有得時候壓縮率甚至還會好蠻多的。但差不多這個時候,出現了一個更厲害的壓縮器了,ultra compressor ,壓縮率之高讓zip,arj 至今望塵莫及。當然除了UC之外,還有好幾個壓縮氣得壓縮率也比arj和zip好很多,包括HA等等,好幾個名字我都記不起來了,因為現在包括UC在內, 這些壓縮器都已經沒有什麼人在用了。

  為什麼?因為他們都有一個共同的特點,慢。大部分也都沒有什麼新的版本出來(話又說回來,ZIP和ARJ也沒有什麼長足的進步)。

1998年10月11日 星期日

511 梯的最後一支陸籤

運氣這種東西是很難瞭解的,有些事情看起來像是運氣,其實卻不是,比方說我來技校這十幾天,天天三餐猜拳,六個人中輸的兩個人收餐盤,我總共只有輸 過兩次。有的人可能會說我運氣好或者作弊,其實不然,猜拳這種東西其實是有點技術的,每個人出拳之前,多半會有一點預備動作,或者從神情中透露一點訊息, 敏感一點的人可以感覺的出來,配合一點心理上的訓練,可以提高勝率。另外,一般人出拳的順序也不完全混亂,多少都有一點規律,也是有可能在幾拳之內不自覺 的熟悉對方的規律,這時如果你在氣勢上抱著必勝的把握,你的潛意識就會帶領你往勝利的方向走。

  不過,像這種六個人的猜拳,有更簡單的方法獲勝,一般人第一拳以出剪刀的機率為最高,大約在一半以上,其次是石頭,所以前幾拳只要出 石頭就行了,多半在第一個回合就進入勝部了。我輸的那兩次都是恍惚出布而輸的。(第一回合的樣式常常是四石頭兩剪刀,或者兩石頭四剪刀,有趣的是,三石頭 三剪刀或者其他樣式很少見。)

  小胖所說的『當兵運氣很重要』是有點道理的。當然,拿拿餐盤只是小事情,拿餐盤與否影響不大,但是有些事情的影響就很大了,比方說單 位抽籤好了,影響著往後超過一年半的命運,運氣好壞就差很多了,抽到「陽字號」,就要自求多福了,船上有淡水管制,一天只能使用一個小時的淡水,任務多的 船,一個月甚至會出海到二十八天之多,澡當然是沒得洗的了,據說下船時,襪子內衣會因鹽分而黏到身上,脫下來的時候,襪子甚至會因鹽分過多,可以直立站在 地上。當然抽籤這種事情,就像猜拳一樣,表面上是完全隨機的,實際上如何,很難說。也許能靠我魔術上面的知識取得一定的優勢。

  抽籤當天,努力的調整心情,但由於影響過於重大,心情仍然十分的緊張,這種緊張和表演之前的那種緊張完全不同,沒有激烈的反應,有的 只有一種潛藏在內心的一種不安,由於我的兵科帆纜屬於船上的兵科。所以船籤必然不少,但到底多少很難說,至於船的種類,由於陽字號上面的編制較大,所以我 的推測是陽字號的機會較大,其他兵科抽籤的時候,實際上觀察也是如此沒錯。

  觀察他們抽籤的動作程序,先宣布什麼種類的籤有多少支,然將籤數好數目,丟入透明的箱子(這裡可以作弊),然後用不透明的紙套蓋住透 明箱子,然後混和均勻,當然這裡也是可以做手腳的,不過至少我沒有發現確實的證據,再接來,讓大家隨便排隊,然後排頭排尾猜拳,決定從哪一頭先抽。整個程 序,如果和工作人員配合,是很有機會作弊的,但是如果單兵作業的話,不容易做手腳。唯一的機會就是如果籤沒有混勻的話,看準方位可以增加中獎機率,但弄不 好也會弄巧成拙。

  技術上的層面能做的有限,接下來就是運氣上的問題了,當兵後到那時候,運氣一直都還不錯,一般都相信運氣有連續性,我也相信如此,況 且抽籤的前一天,放假出去,找了一個抽籤輪盤試試手氣,幾十個號碼中,小球神奇的滾到了 00 這個號碼,根據抽出來的籤上面所寫的預測,是事事如意的上上籤,運氣方面,應該到達了一個高峰,另外,抽籤的前幾天,我也寧可信其有的多做善事,熱心助 人,善有善報應該是不成問題的。

  雖然在技術上,運氣上,都已經做好了萬全的準備,但無可避免的還是很緊張,即使是故做輕鬆的與人交談,仍然能夠感覺的到心理的不安, 心理上一方面似乎自信滿滿的相信自己一定會抽到好籤,一方面也已經在打算如果抽到陽字號的時候要怎麼辦了。偏偏不斷的看著別的兵種被叫上去抽籤,我們帆纜 科仍然要無止境的等待,不安和焦慮不斷的累積。不過漫長的等待還是有一點小小的代價,觀察其他兵科,果然先前覺得籤沒混勻的猜測是正確的,籤的連續性蠻顯 著的,心中多少有個底了。

  看著其他兵科一個一個的被叫上去抽籤了,我們帆纜果然戲劇性的成了最後一組抽籤的兵科,經過長時間的觀察,我已經對抽籤的程序相當熟 悉了,聽到前面工作人員的宣布,發現我能抽到陸籤的機率只有三十一分之三而已,馬上有三個害怕上船的人自願外島,機率一下子增到了二十八分之三了,當然我 一來要試試手氣,一來詳細的計算各種籤的比率之後,發現抽籤的期望值比自願外島要好一點,所以明智的放棄自願外島。

  皆下來就是緊張的時刻了,先要排隊,我根據自己那時一點點的預感,排到了最後一個,猜拳的時候,如願猜輸,成了最後一個抽籤的人。其 實所謂的預感也沒什麼,只是那時一想到抽籤,手就有一點軟,害怕做個選擇,又怕弄巧成拙,還不如最後一個抽,避免做選擇。數學上面來說,機會也是相同的。 事實上,機會可能還比二十八分之一要大一點,因為陸籤是最先放進箱子中的,然後才放下二十五支空白籤。

  我唯一的機會當然是前面二十七個人只抽走兩支陸籤,情況真的會這樣嗎?前面批哩啪啦一下子,七八個人過去了,一支陸籤也沒有中,情況 似乎還不錯,又過了好幾個人,大約到了十六七個人的時候,第一支陸籤才出現,正如我所希望的最好情形,但我的心情,並不因為情況變的好一點而輕鬆一點,反 而是希望越大,越緊張,又過了幾個人,剩下五支籤的時候,第二支陸籤才被抽走,也就是說我抽中的機會已經升高到 25%了,倒數第四人打開籤條,嘆了口氣,是隻空白籤,機會變成 33%了,但另外兩人也有同樣高的機會,心跳已經不自主的加快了,真的會是我嗎?倒數第三人,努力的摸了蠻久的,很可惜,剩下的兩個人各有一半的機會抽中 了,已經可以看到前面一個人露出了笑容了,當然我也是一樣的,一面高興,一面緊張。

  雖然箱內的籤越來越少,不過似乎是越來越難抽了,倒數第二人,面臨了一個最困難的選擇,二選一,毫無線索的二選一,選哪支似乎都可 以,但是只能選一支。摸了半天,總算摸出來了,根據越少籤越難抽的說法,最後一支籤應該最難抽了,基本上,我甚至不太有意願伸手進去抽了,因為只要看看前 面的那支籤,就知道剩下什麼了,如果他抽中了,我伸手進去也是白費力氣而已。靠近看了一下他的籤,糟糕,上面有字。仔細看清楚,才發現所謂的空白籤並不是 說完全空白的,而是只有單位那一欄空白而已,也就是說,我虛驚了一場。正當我高興之時,前面的小姐提醒我還是要把籤抽出來,這時突然又跑出一點恐懼出來, 萬一抽出來的也是空白籤怎麼辦?應該不會吧?抽出籤之後,慢慢的打開仔細的看,還好沒有發生靈異事件,上面有字,確實是三軍區沒錯,當場興奮得有點得意忘 形的接受道賀。

  至此,511 的最後一支北部陸籤,在能夠抽中北部陸籤的最後一個機會,跑進了我的手中。

1998年8月3日 星期一

無奈

無奈,是棋評常用語之一,一個典型的例子:
12 炮五平七 馬 3退 5  黑方退馬無奈,如改走馬 3進 4,則紅車一平六,馬 4進 6,炮三進七,紅方得子大優。又如改走車 2進 2,則紅方傌三進四,後有車九平八硬兌車的手段,黑方難以應付。

  無奈當然不能算是好的評語,不過相較於敗著,軟著,失先,緩著等等為數不少的負面評語,無奈仍然算是相當失先,緩著等等為數不少的負面 評語,無奈仍然算是相當好的了,至少,評者此刻並無指責此步棋的意思,如果有錯,也是前面犯下的,相反的,既然評出無奈兩字,評者與奕者之間,多少有些惺 惺相惜之意,表示此步雖然不能滿意,但至少奕者此步已經盡了努力了,而且還能在眾多似優實劣的選擇中,克服自己的貪念,走出忍辱負重、知錯能改的正確變 化。

  無奈之後呢?結局是不一定的的,可勝,可和,可敗。堅忍不拔,步步為營,等著對手犯錯,總是有機會可勝的。無奈之後一直無奈下去的, 也是常見的情形,但如果能記取教訓,以後下的時候還有機會的。也有無奈個幾次之後,終於忍不住了,走些騙著碰碰運氣,對方如果沒有中陷井,前面的忍耐也白 費了。

  無奈的發生,往往代表存在一些選擇,或者說看起來還有一些其他的選擇,但實際上,你只能選你不想選的。在下棋時,還能因為洞悉局勢,泰然自若的接受,在實際生活上,更容易發生的無奈也更難讓人接受。

1998年7月18日 星期六

顏色

小時後的記憶已經很模糊了,但還是有一些印象比較深刻的事情,有一段時間,忘了多大的時候,常常在坐車或走在路上時,希望突然能夠看到『從來沒有看過的顏色』。

  什麼是從來沒有看過的顏色?紅,黃,藍,等等常見的顏色當然不是,比較複雜一點的深藍,亮綠,紅棕色等等,也不算,因為雖然可能比較少 見,但本質上並不稀奇,也不算,那到底什麼是『沒有看過的顏色』,那就不清楚了,既然沒有看過,當然也說不出來,那時總覺得只要多找找,等我看到時一定會 知道。看到沒看過的顏色是一種什麼什麼樣的感覺呢?大蓋和一個從未過綠色和藍色組成顏色的人,第一次看到紅色時的感覺相同吧?但那又是一種什麼樣的感覺? 從我出生睜開眼睛到現在,總有第一次看到紅色的時候吧?那個時候的感覺大概也差不多吧,回想一下那時的感覺好了,卻又偏偏毫無印象,有誰能保有自己第一次 看到東西記憶?當你想要體驗這種感覺而不可得,又知道其實已經體驗過但毫無印象,這種感覺的難過好比忘了熟人的名字或者明明記得口袋內有錢卻又不見了,方 向類似,但程度上又大大的超過。

  當然那時的願望理論與實際上都難以實現,既然從未實現,我又是為何放棄追求這個目標的,早已忘記。

1998年5月25日 星期一

夜乘捷運

到現在為止,搭乘台北捷運的次數相當的稀少,屈指可數,正確的數字應該是三次的樣子。第一次是專程為了嘗試捷運,第二次好記不太清楚了,應該是因為捷運蠻方便的樣子,第三次就是前一陣子,是我首次晚上搭乘捷運的經驗。

  和我相當熟悉的搭乘公車的經驗比起來,坐捷運似乎和坐公車的感覺有點類似,但也有許多不同。全自動機械化的收票方式,漂亮能遮雨的等車 環境,擔心走的太慢被機器門卡住的緊張感覺,身為能夠享受現代化快速大眾交通工具的文明人的優越感,在特別架設的高架橋上,完全不用擔心會塞車的輕鬆感, 都令人覺得新鮮帶著一點興奮。

  那天,列車來了之後,首先第一個問題是,有好多車廂,要選擇上哪個車廂呢?如果人很多很擠那就不會考慮那麼多了,擠上就好了,但我不 會在尖峰期人擠人的時候去湊熱鬧搭捷運的,現在人不很多,至少三個車廂可以毫不費力的搭上。以前搭公車的時候,雖然偶而也會有兩三輛車同時來,但機會並不 大。火車的話要不然有劃位,要不然就算上了一節不想上的車廂,你還有機會走到另外一個你比較喜歡的車廂。這算是捷運的一個設計上的缺失。

  不過這種經驗還不算還全陌生,就用以前選擇同時來的公車的準則,選擇人數較少的一節車廂上去就可以了。

  車廂內剩的座位不多,大概三四個,差不多和上車的人差不多,我順利的坐到了一個左邊靠窗的位置,相當自然的頭左轉四十五度,準備欣賞窗 外的風景。嗯,不對,看不到什麼風景,車廂內的燈光非常明亮,現在天色已暗,加上這一帶沒有那麼的繁榮,外面燈光不多,相較之下相當的暗,再加上車在高橋 之上,與其他的景物有一段距離,所以能看到的景物相當的有限,實在沒有什麼可以看的。不過呢,現在車內靠窗的人,卻大多仍然向窗外望去,也不知道他們能看 到什麼我無法看到的東西。

  既然轉頭向左四十五度無趣,那就沒有必要繼續維持這種不自然的姿勢了,那就轉回到原位好了。前面坐著一個大約十七八歲的少女。和公車 不同的,捷運的座位是一列向前,一列向後的兩兩相對,你的前面就是等於是你的對面。兩兩相對的位置距離並不很大,這也還算是合理的設計,這樣可以方便相對 的兩人交談,不用使用太大的音量。但現在,面對的兩人互不認識,在這近距離之下,面向前方,感覺上就像是一直瞪著對方看一樣,根據人類一般的社會規範和生 物特性,瞪著別人看,不太禮貌,而且帶有侵略性的意義,但在這種距離下,要避開這種嫌疑相當困難,而且對面的少女穿著涼快,身材豐滿,像我們這樣的讀書人 自然瞭解不宜維持這樣的狀態,所以很自然的把頭往下一低,應該可以簡單的化解這樣有點尷尬的狀態。沒想到往下四十五度,眼光很自然就投向該少女因為穿著短 褲而露出的大腿之上,這樣雖然比剛剛的狀況要好一點,但畢竟不是長久之計,而且我也很快的瞭解,只要我面向前方,不管頭的仰角多少,只要盯著一點看,總是 不恰當,若是一直改換方位,反而會更加引人注目,總不能抬頭看著天花板吧?

  只好把頭向右轉了一點角度,這樣,雖然不免目光有時仍然會射向坐在右前方之人,但一來距離已經較為遠了點,二來也可以選擇合適的空 隙,不會直視他人,算是個可以放心的位置。右前方坐著一個中年婦人,也許我是太敏感了,覺得他發現我轉向這裡時,略有怒容,難道我又犯了什麼社會禁忌?應 該不會吧?這個姿勢可是經過我的深思熟慮之後才做的。等一下,這個動作本身還好,但是當其他所有靠窗坐的人,都望著窗外的時候,你一個人偏要逆其道而行, 反方向而看,難免令人猜疑,沒什麼也變成有什麼了,況且現在社會上變態那麼多,表面上又不容易看出來,從你怪異小動作來懷疑你,也是很自然的事情。

  沒有辦法,只好又回向了左方四十五度,雖然有點進退失先,但也無可奈何,看著窗上反射車廂內的影像。

1998年4月12日 星期日

貓的實驗

好像是大三的時候,跑去修哲概,沒有特別把這門課當成營養學分,選了一個沒有聽過名字的老師,叫做何什麼的,忘了。(所以後面的記憶也不見得完全準確)

  課堂上,有幾堂課會上到有關心靈哲學的問題,比方說動物有沒有靈魂,心智的問題,那個老師好像十分認定動物是沒有像人類一樣的心智,只 有一些本能,天生的一些能力而已,也就是說,動物如果有所謂的心智,那麼和人類的心智之間有本質上的,類別上的差異,而不僅僅是程度上的差異而已。

  他舉了一個例子來佐證他的論點,他說,比方說數的概念,像這樣人類心智中的重要概念,動物就沒有,因為有科學家做了一些實驗,比方說 貓,一隻母貓生了一窩小貓,如果小貓有兩隻,我們偷偷拿走了一隻,母貓會發現,然後表現出不安的狀態。小貓有三隻的時候,拿走一隻,母貓也會有反應,一直 加,加到五隻的時候都還可以,不過,當小貓有六隻以上的時候,母貓就分不清處了,這時,偷拿走一隻,母貓不會有反應。他的結論是,對貓來說,五、六、七、 八、九……和無窮大是一樣的,貓沒有數的概念。

  乍看之下好像很有道理,人類的優越感油然而生。事實上,這個實驗用而解釋貓和人類之間本質上的差異是毫無意義的。如果一個班上有十五 個學生,散坐在教室中,在老師轉頭寫黑板時,跑走了一個,我想,老師也很難憑他的數的概念察覺十四和十五的不同吧?,如果就根據這個事實,說明對人類來說 十五和無限大沒有什麼不同,我想沒有什麼人會同意吧?當然人類可以算人頭,但會算這件事情,是經過學習的事情,貓當然沒有學過算術,因為還沒有人有教貓算 術的能力,所以,公平的實驗下來說,人類和貓的差異不過是十五和五的差別而已,也許,我還太高估人類了。

  那個老師還常常舉一些類似這樣不通的例子,可惜大都忘了。我修這門課的結局也當然不是什麼好結局,最後以五十(?)分結束。