亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? chapter2.htm

?? 壓縮/解壓縮類源碼
?? HTM
字號:
<html>

<head>
<meta http-equiv="Content-Type"
content="text/html; charset=gb_2312-80">
<meta name="GENERATOR" content="Microsoft FrontPage Express 2.0">
<title>笨笨數據壓縮教程</title>
</head>

<body bgcolor="#FFFFFF">

<p align="right"><a href="http://www.contextfree.net/">返回斷章取義堂</a>&nbsp;&nbsp;<a href="http://www.contextfree.net/wangyg/">返回詠剛的家</a></p>

<p style="background-color:#AAEEFF;font-size:14px;color:#0000AA">《笨笨數據壓縮教程》是我在1998年因工作需要研究壓縮算法時寫的文章(算是一種工作筆記吧,其中難免有許多疏漏),1999年初隨著項目變遷,就把壓縮技術的研究暫時擱置了。從那以后,一是工作太忙,二是自己懶惰,總之是沒能把半部壓縮教程補全。非常對不住大家。——王詠剛,2003年3月</p>

<p><img src="benben.jpg"
alt="笨笨數據壓縮教程(Benben's Data Compression Guide)"
width="370" height="129"></p>

<h2>第二章 技術準備:概率、模型和編碼</h2>
<div align="right">

<address>
    <a href="chapter1.htm">第一章</a> <a href="chapter3.htm">第三章</a>
</address>
</div>

<p align="left"><strong>什么是熵</strong></p>

<p align="left">數據壓縮不僅起源于 40 年代由 Claude
Shannon 首創的信息論,而且其基本原理即信息究竟能被壓縮到多小,至今依然遵循信息論中的一條定理,這條定理借用了熱力學中的名詞“熵”(
Entropy )來表示一條信息中真正需要編碼的信息量:</p>

<p align="left">考慮用 0 和 1
組成的二進制數碼為含有 n 個符號的某條信息編碼,假設符號
Fn <font size="3">在整條信息中重復出現的概率為 Pn,則該符號的熵也即表示該符號所需的位數位為:</font></p>
<div align="left">

<pre><font size="3">En = - log<sub>2</sub>( Pn )</font></pre>
</div>

<p align="left"><font size="3">整條信息的熵也即表示整條信息所需的位數為:E
= ∑En</font></p>

<p align="left"><font size="3">舉個例子,對下面這條只出現了
a b c 三個字符的字符串:</font></p>

<p align="left"><font size="3">aabbaccbaa</font></p>

<p align="left"><font size="3">字符串長度為 10,字符 a b
c 分別出現了 5 3 2 次,則 a b c 在信息中出現的概率分別為
0.5 0.3 0.2,他們的熵分別為:</font></p>
<div align="left">

<pre><font size="3">Ea = -log<sub>2</sub>(0.5) = 1</font></pre>
</div><div align="left">

<pre><font size="3">Eb = -log<sub>2</sub>(0.3) = 1.737</font></pre>
</div><div align="left">

<pre><font size="3">Ec = -log<sub>2</sub>(0.2) = 2.322</font></pre>
</div>

<p align="left"><font size="3">整條信息的熵也即表達整個字符串需要的位數為:</font></p>
<div align="left">

<pre><font size="3">E = Ea * 5 + Eb * 3 + Ec * 2 = 14.855 位</font></pre>
</div>

<p align="left"><font size="3">回想一下如果用計算機中常用的
ASCII 編碼,表示上面的字符串我們需要整整 80 位呢!現在知道信息為什么能被壓縮而不丟失原有的信息內容了吧。簡單地講,用較少的位數表示較頻繁出現的符號,這就是數據壓縮的基本準則。</font></p>

<p align="left"><font size="3">細心的讀者馬上會想到,我們該怎樣用
0 1 這樣的二進制數碼表示零點幾個二進制位呢?確實很困難,但<strong>不是沒有辦法</strong>。一旦我們找到了準確表示零點幾個二進制位的方法,我們就有權利向無損壓縮的極限挑戰了。不要著急,看到第四章就明白了。</font></p>

<p align="left"><font size="3"><strong>模型</strong></font></p>

<p align="left"><font size="3">從上面的描述,我們明白,要壓縮一條信息,首先要分析清楚信息中每個符號出現的概率。不同的壓縮程序通過不同的方法確定符號的出現概率,對符號的概率計算得越準確,也就越容易得到好的壓縮效果。在壓縮程序中,用來處理輸入信息,計算符號的概率并決定輸出哪個或哪些代碼的模塊叫做模型。</font></p>

<p align="left"><font size="3">難道對信息中字符的出現概率這么難以估計以至于有各種不同的壓縮模型嗎?對上面的字符串我們不是很容易就知道每個字符的概率了嗎?是的是的,不過上面的字符串僅有
10 個字符長呀,那只是例子而已。考慮我們現實中要壓縮的文件,大多數可是有幾十
K 甚至幾百 K 長,幾 M
字節的文件不是也屢見不鮮嗎?</font></p>

<p align="left"><font size="3">是的,我們可以預先掃描文件中的所有字符,統計出每個字符出現的概率,這種方法在壓縮術語里叫做“靜態統計模型”。但是,不同的文件中,字符有不同的分布概率,我們要么先花上大量的時間統計我們要壓縮的所有文件中的字符概率,要么為每一個單獨的文件保存一份概率表以備解壓縮時需要。糟糕的是,不但掃描文件要消耗大量時間,而且保存一份概率表也使壓縮后的文件增大了不少。所以,在實際應用中,“靜態統計模型”應用的很少。</font></p>

<p align="left"><font size="3">真正的壓縮程序中使用的大多是一種叫“自適應模型”的東西。自適應模型可以說是一臺具有學習功能的自動機。他在信息被輸入之前對信息內容一無所知并假定每個字符的出現概率均等,隨著字符不斷被輸入和編碼,他統計并紀錄已經出現過的字符的概率并將這些概率應用于對后續字符的編碼。也就是說,自適應模型在壓縮開始時壓縮效果并不理想,但隨著壓縮的進行,他會越來越接近字符概率的準確值,并達到理想的壓縮效果。自適應模型還可以適應輸入信息中字符分布的突然變化,可以適應不同的文件中的字符分布而不需要保存概率表。</font></p>

<p align="left"><font size="3">上面提到的模型可以統稱為“統計模型”,因為他們都是基于對每個字符出現次數的統計得到字符概率的。另一大類模型叫做“字典模型”。實際上,當我們在生活中提到“工行”這個詞的時候,我們都知道其意思是指“中國工商銀行”,類似的例子還有不少,但共同的前提是我們心中都有一本約定俗成的縮寫字典。字典模型也是如此,他并不直接計算字符出現的概率,而是使用一本字典,隨著輸入信息的讀入,模型找出輸入信息在字典中匹配的最長的字符串,然后輸出該字符串在字典中的索引信息。匹配越長,壓縮效果越好。事實上,字典模型本質上仍然是基于對字符概率的計算的,只不過,字典模型使用整個字符串的匹配代替了對某一字符重復次數的統計。可以證明,字典模型得到的壓縮效果仍然無法突破熵的極限。</font></p>

<p align="left"><font size="3">當然,對通用的壓縮程序來說,保存一本大字典所需的空間仍然是無法讓人忍受的,況且,任何一本預先定義的字典都無法適應不同文件中數據的變化情況。對了,字典模型也有相應的“自適應”方案。我們可以隨著信息的不斷輸入,從已經輸入的信息中建立合適的字典,并不斷更新這本字典,以適應數據的不斷變化。</font></p>

<p align="left"><font size="3">讓我們從另一個角度理解一下自適應模型。Cluade
Shannon 曾試圖通過一個“聚會游戲”(party game)來測定英語的真實信息容量。他每次向聽眾公布一條被他隱藏起一個字符的消息,讓聽眾來猜下一個字符是什么,一次猜一個,直到猜對為止。然后,Shannon
使用猜測次數來確定整個信息的熵。在這個實驗中,一種根據前面出現過的字符估計下一個字符概率的模型就存在于聽眾的頭腦中,比計算機中使用的自適應模型更為高級的是,聽眾除了根據字符出現過的次數外,還可以根據他們對語言的經驗進行猜測。</font></p>

<p align="left"><font size="3"><strong>編碼</strong></font></p>

<p align="left"><font size="3">通過模型,我們已經確定了對某一個符號該用多少位二進制數進行編碼。現在的問題是,如何設計一種編碼方案,使其盡量精確地用模型計算出來的位數表示某個符號。</font></p>

<p align="left"><font size="3">最先被考慮的問題是,如果對
a 用 3 個二進制位就可以表示,而對 b 用 4 個二進制位就可以表示,那么,在解碼時,面對一連串的二進制流,我怎么知道哪三個位是
a,哪四個位是 b 呢?所以,必須設計出一種編碼方式,使得解碼程序可以方便地分離每個字符的編碼部分。于是有了一種叫“前綴編碼”的技術。該技術的主導思想是,任何一個字符的編碼,都不是另一個字符編碼的前綴。反過來說就是,任何一個字符的編碼,都不是由另一個字符的編碼加上若干位
0 或 1 組成。看一下前綴編碼的一個最簡單的例子:</font></p>
<div align="left">

<pre><font size="3">
  符號        編碼
   A           0
   B           10
   C           110
   D           1110
   E           11110
</font></pre>
</div>

<p align="left">有了上面的碼表,你一定可以輕松地從下面這串二進制流中分辨出真正的信息內容了:</p>
<div align="left">

<pre>1110010101110110111100010 - DABBDCEAAB</pre>
</div>

<p align="left">下一個問題是:象上面這樣的前綴編碼只能表示整數位的符號,對幾點幾位的符號只能用近似的整數位輸出,那么怎樣輸出小數位數呢?科學家們用算術編碼解決了這個問題,我們將在第四章對算術編碼作詳細的討論。</p>

<p align="left"><strong>總結一下</strong></p>

<p align="left">不同的模型使用不同的方法計算字符的出現概率,由此概率可以得出字符的熵;然后使用不同的編碼方法,盡量接近我們期望得到的熵值。所以,壓縮效果的好壞一方面取決于模型能否準確地得到字符概率,另一方面也取決于編碼方法能否準確地用期望的位數輸出字符代碼。換句話說,壓縮
= 模型 + 編碼。如下圖所示:</p>
<div align="left">

<pre><font size="3">
---------  符號   ----------  概率   ----------  代碼   ----------
|  輸入 |--------&gt;|  模型  |--------&gt;|  編碼  |--------&gt;|  輸出  |
---------         ----------         ----------         ---------- </font></pre>
</div>

<p align="left"><font size="3"><strong>資源</strong></font></p>

<p align="left"><font size="3">我們已經知道,編寫壓縮程序往往不能對數據的整個字節進行處理,而是要按照二進制位來讀寫和處理數據,操作二進制位的函數也就成為了壓縮程序中使用最為普遍的工具函數。我們在此提供兩組函數集,使用它們可以有效的進行文件或內存中的二進制位操作。它們共有六個文件:</font></p>

<p align="left"><font size="3">bitio.h -
用于文件中二進制位操作的函數說明。</font></p>

<p align="left"><font size="3">bitio.cpp -
用于文件中二進制位操作的函數實現。</font></p>

<p align="left"><font size="3">errhand.h 和 errhand.cpp -
bitio.cpp 中使用的錯誤處理函數。</font></p>

<p align="left"><font size="3">wm_bitio.h -
用于內存中二進制位操作的函數說明。</font></p>

<p align="left"><font size="3">wm_bitio.cpp -
用于內存中二進制位操作的函數實現。</font></p>

<p align="left"><font size="3">它們被共同包裝在文件 </font><a
href="src/bitio.zip"><font size="3">bitio.zip</font></a><font
size="3"> 中。</font></p>

<p align="left"><font size="3"></font> </p>
<div align="center"><center>

<address>
    <a href="chapter1.htm">第一章</a> <a href="chapter3.htm">第三章</a>
</address>
</center></div>

<p align="left"> </p>
<div align="right">

<address>
    有問題嗎?有建議嗎?快給王笨笨寫信:wangyg@contextfree.net
</address>
</div><div align="right">

<address>
    <strong>章節書簽:</strong><a href="default.htm">前言</a>
    <a href="content.htm">目錄</a> <a href="chapter1.htm">1</a>
    <a href="chapter2.htm">2</a> <a href="chapter3.htm">3</a> <a
    href="chapter4.htm">4</a> <a href="chapter5.htm">5</a> <a
    href="chapter6.htm">6</a> <a href="chapter7.htm">7</a> <a
    href="chapter8.htm">8</a> <a href="chapter9.htm">9</a> <a
    href="chapter10.htm">10</a> <a href="chapter11.htm">11</a> <a
    href="chapter12.htm">12</a> 
</address>
</div>
</body>
</html>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区三区四区五区| 亚洲人成小说网站色在线 | 91精品国产aⅴ一区二区| 久久毛片高清国产| 亚洲成人自拍偷拍| www.亚洲激情.com| 26uuu国产日韩综合| 亚洲午夜私人影院| 99久久免费视频.com| 久久在线免费观看| 日本欧美久久久久免费播放网| 成人看片黄a免费看在线| 欧美成人伊人久久综合网| 亚洲国产成人91porn| 91亚洲午夜精品久久久久久| 精品福利一二区| 日韩黄色一级片| 在线观看视频一区| 亚洲免费观看高清| www.在线欧美| 欧美国产亚洲另类动漫| 国产在线精品一区二区不卡了| 制服丝袜中文字幕亚洲| 洋洋成人永久网站入口| 95精品视频在线| 综合激情网...| 一本到三区不卡视频| 亚洲男人的天堂在线aⅴ视频 | 午夜国产精品影院在线观看| 91麻豆免费在线观看| 亚洲欧美aⅴ...| 日本韩国一区二区三区| 亚洲欧美偷拍三级| 在线免费观看一区| 亚洲第一久久影院| 欧美美女直播网站| 天堂va蜜桃一区二区三区 | 久久精品一区二区三区四区| 精品一区二区三区免费毛片爱| 日韩无一区二区| 久久99蜜桃精品| 久久天堂av综合合色蜜桃网| 国产美女视频91| wwwwxxxxx欧美| 国产乱码精品一区二区三区忘忧草| 久久精品一区四区| 9人人澡人人爽人人精品| 亚洲欧美一区二区三区国产精品 | 国产原创一区二区三区| 久久综合久久99| 成人深夜福利app| 亚洲日本电影在线| 欧美巨大另类极品videosbest | 日韩欧美国产一区二区三区| 久久精品免费看| 国产欧美一区二区三区在线看蜜臀 | 色婷婷国产精品综合在线观看| 亚洲午夜精品网| 日韩欧美精品三级| eeuss国产一区二区三区| 亚洲精品v日韩精品| 欧美乱妇一区二区三区不卡视频| 捆绑紧缚一区二区三区视频 | 亚洲国产成人tv| 2欧美一区二区三区在线观看视频| 成人午夜av在线| 亚洲午夜免费视频| 精品日产卡一卡二卡麻豆| 99精品视频在线播放观看| 亚洲成av人片观看| 久久久久久久av麻豆果冻| 色婷婷久久久久swag精品| 另类的小说在线视频另类成人小视频在线 | 一区二区三区中文在线| 精品人在线二区三区| 97se狠狠狠综合亚洲狠狠| 日本成人在线看| 亚洲免费在线观看视频| 欧美成人video| 色吊一区二区三区| 国产麻豆一精品一av一免费| 午夜伊人狠狠久久| 国产精品不卡一区| 精品免费一区二区三区| 欧美视频在线不卡| 波多野结衣亚洲| 狠狠色丁香久久婷婷综合丁香| 夜夜嗨av一区二区三区四季av| 久久久99免费| 制服丝袜日韩国产| 色94色欧美sute亚洲线路二| 国产真实乱对白精彩久久| 午夜一区二区三区在线观看| 国产精品久久久久天堂| 精品久久久久99| 欧美美女一区二区三区| 在线免费观看一区| 91丝袜美腿高跟国产极品老师| 国产综合久久久久久鬼色 | 欧美一区二区三区视频免费播放 | 成人免费av资源| 国产一区二区在线观看视频| 日韩成人一区二区三区在线观看| 亚洲免费av观看| 欧美极品少妇xxxxⅹ高跟鞋| 欧美r级在线观看| 欧美电影精品一区二区| 7777女厕盗摄久久久| 欧美性做爰猛烈叫床潮| 色老汉一区二区三区| 91免费国产视频网站| 成人深夜福利app| 成人黄色免费短视频| 成人午夜视频免费看| 成人av在线影院| 成人18视频在线播放| 成人一区二区三区| 成人中文字幕电影| caoporn国产精品| 91在线观看地址| 日本久久电影网| 欧美日韩中文字幕一区二区| 欧美视频在线一区| 欧美美女一区二区三区| 日韩欧美黄色影院| 久久久精品影视| 国产精品第四页| 一区二区在线观看视频| 亚洲最新视频在线播放| 天堂在线一区二区| 麻豆91精品91久久久的内涵| 国产做a爰片久久毛片 | 久久国产精品色| 国产风韵犹存在线视精品| 99视频在线精品| 精品视频一区三区九区| 91精品国产福利在线观看| 久久女同精品一区二区| 国产欧美精品一区二区色综合朱莉| 国产精品沙发午睡系列990531| 国产精品国产三级国产aⅴ无密码| 一区二区三区四区在线播放| 五月激情综合网| 极品销魂美女一区二区三区| 成人综合激情网| 欧美日韩视频不卡| 国产色产综合产在线视频| 亚洲日本一区二区三区| 视频一区在线视频| 国产麻豆视频精品| 91久久一区二区| 欧美精品一区二区三区蜜臀| 亚洲欧洲在线观看av| 亚洲chinese男男1069| 国产一区二区成人久久免费影院 | 91精品久久久久久久91蜜桃| 久久久久国产精品免费免费搜索| 亚洲免费观看视频| 久久99九九99精品| 日本高清无吗v一区| 日韩精品一区二区三区视频 | 国产视频不卡一区| 亚洲高清在线精品| 国产成人精品在线看| 欧美日韩精品一区二区三区四区| 久久青草欧美一区二区三区| 亚洲成人av一区二区| 成人午夜在线视频| 日韩欧美一级在线播放| 亚洲一区二区三区中文字幕在线| 国产一区二区三区美女| 欧美久久久久久蜜桃| 亚洲免费观看高清完整版在线 | 91蝌蚪porny成人天涯| 国产亚洲欧美日韩日本| 视频一区二区不卡| 欧美在线免费观看亚洲| 亚洲国产精品黑人久久久| 免费高清视频精品| 欧美性感一类影片在线播放| 国产精品久久久久久妇女6080| 久久精品国产一区二区三| 欧美怡红院视频| 国产精品国产a级| 国产成人综合亚洲网站| 欧美一区二区三区免费视频| 亚洲综合一区二区三区| 91丝袜国产在线播放| 中文字幕欧美国产| 国产91精品一区二区麻豆亚洲| 精品国产一区二区三区久久影院 | 成人av在线影院| 国产亚洲精品bt天堂精选| 久久精品国产在热久久| 91麻豆精品国产91久久久 | 亚洲一区中文在线| 色乱码一区二区三区88 | 国产精品二区一区二区aⅴ污介绍| 国产麻豆精品theporn| 久久蜜桃av一区精品变态类天堂|