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

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

?? chapter4.htm

?? 壓縮/解壓縮類源碼
?? HTM
?? 第 1 頁 / 共 2 頁
字號:
<p>你一定已經想到,如果信息內容特別豐富,我們要輸出的小數將會很長很長,我們該如何在內存中表示如此長的小數呢?</p>

<p>其實,沒有任何必要在內存中存儲要輸出的整個小數。我們從上面的例子可以知道,在編碼的進行中,我們會不斷地得到有關要輸出小數的各種信息。具體地講,當我們將區間限定在
0.6390 - 0.6501
之間時,我們已經知道要輸出的小數第一位(十進制)一定是
6,那么我們完全可以將 6
從內存中拿掉,接著在區間 0.390 - 0.501
之間繼續我們的壓縮進程。內存中始終不會有非常長的小數存在。使用二進制時也是一樣的,我們會隨著壓縮的進行不斷決定下一個要輸出的二進制位是
0 還是 1,然后輸出該位并減小內存中小數的長度。</p>

<p><strong>靜態模型如何實現?</strong></p>

<p>我們知道上面的簡單例子采用的是自適應模型,那么如何實現靜態模型呢?其實很簡單。對信息
bccb 我們統計出其中只有兩個字符,概率分布為 Pb
= 0.5,Pc = 0.5。我們在壓縮過程中不必再更新此概率分布,每次對區間的劃分都依照此分布即可,對上例也就是每次都平分區間。這樣,我們的壓縮過程可以簡單表示為:</p>

<pre>               輸出區間的下限      輸出區間的上限
--------------------------------------------------
 壓縮前           0.0                1.0
 輸入 b           0.0                0.5
 輸入 c           0.25               0.5
 輸入 c           0.375              0.5
 輸入 b           0.375              0.4375</pre>

<p>我們看出,最后的輸出區間在 0.375 - 0.4375
之間,甚至連一個十進制位都沒有確定,也就是說,整個信息根本用不了一個十進制位。如果我們改用二進制來表示上述過程的話,我們會發現我們可以非常接近該信息的熵值(有的讀者可能已經算出來了,該信息的熵值為
4 個二進制位)。</p>

<p><strong>為什么用自適應模型?</strong></p>

<p>既然我們使用靜態模型可以很好地接近熵值,為什么還要采用自適應模型呢?</p>

<p>要知道,靜態模型無法適應信息的多樣性,例如,我們上面得出的概率分布沒法在所有待壓縮信息上使用,為了能正確解壓縮,我們必須再消耗一定的空間保存靜態模型統計出的概率分布,保存模型所用的空間將使我們重新遠離熵值。其次,靜態模型需要在壓縮前對信息內字符的分布進行統計,這一統計過程將消耗大量的時間,使得本來就比較慢的算術編碼壓縮更加緩慢。</p>

<p>另外還有最重要的一點,對較長的信息,靜態模型統計出的符號概率是該符號在整個信息中的出現概率,而自適應模型可以統計出某個符號在某一局部的出現概率或某個符號相對于某一上下文的出現概率,換句話說,自適應模型得到的概率分布將有利于對信息的壓縮(可以說結合上下文的自適應模型的信息熵建立在更高的概率層次上,其總熵值更小),好的基于上下文的自適應模型得到的壓縮結果將遠遠超過靜態模型。</p>

<p><strong>自適應模型的階</strong></p>

<p>我們通常用“階”(order)這一術語區分不同的自適應模型。本章開頭的例子中采用的是
0 階自適應模型,也就是說,該例子中統計的是符號在已輸入信息中的出現概率,沒有考慮任何上下文信息。</p>

<p>如果我們將模型變成統計符號在某個特定符號后的出現概率,那么,模型就成為了
1 階上下文自適應模型。舉例來說,我們要對一篇英文文本進行編碼,我們已經編碼了
10000 個英文字符,剛剛編碼的字符是 t,下一個要編碼的字符是
h。我們在前面的編碼過程中已經統計出前 10000
個字符中出現了 113 次字母 t,其中有 47 個 t 后面跟著字母
h。我們得出字符 h 在字符 t 后的出現頻率是 47/113,我們使用這一頻率對字符
h 進行編碼,需要 -log<sub>2</sub>(47/113) = 1.266 位。</p>

<p>對比 0 階自適應模型,如果前 10000 個字符中 h
的出現次數為 82 次,則字符 h 的概率是 82/10000,我們用此概率對
h 進行編碼,需要 -log<sub>2</sub>(82/10000) = 6.930
位。考慮上下文因素的優勢顯而易見。</p>

<p>我們還可以進一步擴大這一優勢,例如要編碼字符
h 的前兩個字符是 gt,而在已經編碼的文本中 gt
后面出現 h 的概率是 80%,那么我們只需要 0.322
位就可以編碼輸出字符 h。此時,我們使用的模型叫做
2 階上下文自適應模型。</p>

<p>最理想的情況是采用 3
階自適應模型。此時,如果結合算術編碼,對信息的壓縮效果將達到驚人的程度。采用更高階的模型需要消耗的系統空間和時間至少在目前還無法讓人接受,使用算術壓縮的應用程序大多數采用
2 階或 3 階的自適應模型。</p>

<p><strong>轉義碼的作用</strong></p>

<p>使用自適應模型的算術編碼算法必須考慮如何為從未出現過的上下文編碼。例如,在
1 階上下文模型中,需要統計出現概率的上下文可能有
256 * 256 = 65536 種,因為 0 - 255
的所有字符都有可能出現在 0 - 255
個字符中任何一個之后。當我們面對一個從未出現過的上下文時(比如剛編碼過字符
b,要編碼字符 d,而在此之前,d 從未出現在 b
的后面),該怎樣確定字符的概率呢?</p>

<p>比較簡單的辦法是在壓縮開始之前,為所有可能的上下文分配計數為
1 的出現次數,如果在壓縮中碰到從未出現的 bd
組合,我們認為 d 出現在 b 之后的次數為 1,并可由此得到概率進行正確的編碼。使用這種方法的問題是,在壓縮開始之前,在某上下文中的字符已經具有了一個比較小的頻率。例如對
1 階上下文模型,壓縮前,任意字符的頻率都被人為地設定為
1/65536,按照這個頻率,壓縮開始時每個字符要用
16
位編碼,只有隨著壓縮的進行,出現較頻繁的字符在頻率分布圖上占據了較大的空間后,壓縮效果才會逐漸好起來。對于
2 階或 3 階上下文模型,情況就更糟糕,我們要為幾乎從不出現的大多數上下文浪費大量的空間。</p>

<p>我們通過引入“轉義碼”來解決這一問題。“轉義碼”是混在壓縮數據流中的特殊的記號,用于通知解壓縮程序下一個上下文在此之前從未出現過,需要使用低階的上下文進行編碼。</p>

<p>舉例來講,在 3
階上下文模型中,我們剛編碼過 ght,下一個要編碼的字符是
a,而在此之前,ght 后面從未出現過字符 a,這時,壓縮程序輸出轉義碼,然后檢查
2 階的上下文表,看在此之前 ht 后面出現 a
的次數;如果 ht 后面曾經出現過 a,那么就使用 2
階上下文表中的概率為 a
編碼,否則再輸出轉義碼,檢查 1 階上下文表;如果仍未能查到,則輸出轉義碼,轉入最低的
0 階上下文表,看以前是否出現過字符 a;如果以前根本沒有出現過
a,那么我們轉到一個特殊的“轉義”上下文表,該表內包含
0 - 255 所有符號,每個符號的計數都為 1,并且永遠不會被更新,任何在高階上下文中沒有出現的符號都可以退到這里按照
1/256 的頻率進行編碼。</p>

<p>“轉義碼”的引入使我們擺脫了從未出現過的上下文的困擾,可以使模型根據輸入數據的變化快速調整到最佳位置,并迅速減少對高概率符號編碼所需要的位數。</p>

<p><strong>存儲空間問題</strong></p>

<p>在算術編碼高階上下文模型的實現中,對內存的需求量是一個十分棘手的問題。因為我們必須保持對已出現的上下文的計數,而高階上下文模型中可能出現的上下文種類又是如此之多,數據結構的設計將直接影響到算法實現的成功與否。</p>

<p>在 1
階上下文模型中,使用數組來進行出現次數的統計是可行的,但對于
2 階或 3
階上下文模型,數組大小將依照指數規律增長,現有計算機的內存滿足不了我們的要求。</p>

<p>比較聰明的辦法是采用樹結構存儲所有出現過的上下文。利用高階上下文總是建立在低階上下文的基礎上這一規律,我們將
0 階上下文表存儲在數組中,每個數組元素包含了指向相應的
1 階上下文表的指針,1
階上下文表中又包含了指向 2 階上下文表的指針……由此構成整個上下文樹。樹中只有出現過的上下文才擁有已分配的節點,沒有出現過的上下文不必占用內存空間。在每個上下文表中,也無需保存所有
256 個字符的計數,只有在該上下文后面出現過的字符才擁有計數值。由此,我們可以最大限度地減少空間消耗。</p>

<p><strong>資源</strong></p>

<p>關于算術壓縮具體的設計和實現請參考下面給出的示例程序。</p>

<p>程序 Arith-N 由 League for Programming Freedom 的 Mark
Nelson 提供,由王笨笨在 Visual C++ 5.0
環境下編譯、調試通過。</p>

<p>Arith-N 包含 Visual C++ 工程 ArithN.dsp 和
ArithNExpand.dsp,分別對應了壓縮和解壓縮程序 an.exe
與 ane.exe。</p>

<p>Arith-N 是可以在命令行指定階數的 N
階上下文自適應算術編碼通用壓縮、解壓縮程序,由于是用作教程示例,為清晰起見,在某些地方并沒有刻意進行效率上的優化。</p>

<p>所有源程序包裝在文件 <a href="src/arith-n.zip">arith-n.zip</a>
中。</p>

<p> </p>
<div align="center"><center>

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

<p align="center"> </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一区二区三区免费野_久草精品视频
日韩美女视频在线| 在线观看www91| 9i在线看片成人免费| 色婷婷综合激情| 欧美一二三四在线| 欧美国产一区视频在线观看| 一区二区久久久久久| 美国毛片一区二区三区| 99久久精品国产网站| 欧美精品v日韩精品v韩国精品v| 精品福利视频一区二区三区| 亚洲精品视频在线| 久热成人在线视频| 中文字幕+乱码+中文字幕一区| 一区二区高清免费观看影视大全| 热久久国产精品| kk眼镜猥琐国模调教系列一区二区| 欧美色欧美亚洲另类二区| 久久综合色婷婷| 亚洲一区二区三区四区中文字幕| 久久99久久久欧美国产| 日本高清无吗v一区| 久久精品亚洲国产奇米99| 亚洲成人www| eeuss影院一区二区三区| 日韩一级大片在线观看| 亚洲久草在线视频| 成人在线综合网站| 日韩一二三区不卡| 一区二区免费在线| 成人av在线网| 亚洲精品一区二区三区精华液| 一区二区三区视频在线看| 懂色av一区二区在线播放| 欧美一级夜夜爽| 亚洲综合男人的天堂| 成人中文字幕在线| 久久久久青草大香线综合精品| 午夜精品久久久久| 91黄色免费看| 国产精品色在线观看| 激情丁香综合五月| 日韩精品专区在线| 午夜电影一区二区| 色婷婷久久久久swag精品| 国产精品午夜免费| 国产剧情一区在线| 欧美www视频| 日本亚洲电影天堂| 欧美日本在线视频| 一区二区三区欧美日| 99精品视频一区| 亚洲国产精品成人综合色在线婷婷| 久久电影网站中文字幕| 欧美一区二区三区精品| 日韩高清在线不卡| 91精品综合久久久久久| 午夜精品久久久久久久99水蜜桃| 日本高清无吗v一区| 一区二区三区在线影院| 94-欧美-setu| 17c精品麻豆一区二区免费| 国产99久久久精品| 国产欧美精品日韩区二区麻豆天美| 国内精品国产成人国产三级粉色| 欧美一二三区在线| 日本不卡不码高清免费观看| 欧美一区二区国产| 美女尤物国产一区| 欧美成人一级视频| 精品亚洲国内自在自线福利| 26uuu久久天堂性欧美| 国产精品亚洲视频| 久久精品人人做人人综合| 26uuu久久天堂性欧美| 国产电影精品久久禁18| 中文子幕无线码一区tr| 97se亚洲国产综合自在线观| 亚洲人123区| 欧美专区亚洲专区| 亚洲国产精品久久人人爱蜜臀| 欧美片网站yy| 蜜桃av噜噜一区| 久久色.com| 成人av午夜影院| 一区二区三区欧美激情| 欧美精品tushy高清| 精品一区二区三区在线观看国产| 久久久久国产免费免费| 成人av在线一区二区| 亚洲一区二区三区在线| 日韩丝袜情趣美女图片| 国产一区二区主播在线| 国产精品天美传媒| 色婷婷综合久久久中文字幕| 亚洲动漫第一页| 日韩精品一区二区在线| 国产精品1区2区3区在线观看| 国产精品免费观看视频| 色欧美日韩亚洲| 日韩成人精品在线| 久久免费精品国产久精品久久久久| 成人性色生活片| 亚洲精品少妇30p| 91麻豆精品国产91久久久久久久久| 国产又黄又大久久| 亚洲免费毛片网站| 欧美一区二区人人喊爽| 高潮精品一区videoshd| 亚洲综合无码一区二区| 久久影院午夜片一区| 91视频一区二区三区| 日本伊人色综合网| 国产精品女同互慰在线看| 欧美性受xxxx| 国产在线精品一区在线观看麻豆| 日韩毛片一二三区| 欧美一卡二卡在线观看| 成人18视频在线播放| 午夜精品久久久久久久99樱桃| 久久久国产精品麻豆| 欧美丝袜丝nylons| 福利一区福利二区| 青青草国产精品亚洲专区无| 国产精品免费aⅴ片在线观看| 欧美久久久久久蜜桃| www.久久久久久久久| 精品一区二区三区日韩| 亚洲视频每日更新| 日韩无一区二区| 欧美中文字幕不卡| 国产91丝袜在线18| 奇米影视7777精品一区二区| 1024成人网| 久久精品网站免费观看| 欧美精品在线一区二区三区| 99久久婷婷国产综合精品| 久久成人久久爱| 亚洲二区在线视频| 亚洲人成电影网站色mp4| 久久久久国色av免费看影院| 欧美精品久久一区| 91啪在线观看| 国产v日产∨综合v精品视频| 精品国产一区二区精华| 欧美日韩在线不卡| 99久久精品国产导航| 国产精品一区在线观看乱码 | 国产乱码精品一品二品| 日韩精品一二三四| 一区二区三区 在线观看视频| 国产午夜精品在线观看| 欧美成人猛片aaaaaaa| 欧美日韩一区二区三区四区五区 | 国产精品欧美极品| 久久久99精品免费观看不卡| 日韩一区二区在线观看视频播放| 欧美自拍偷拍一区| 色婷婷av一区| 99精品热视频| 成人爱爱电影网址| 国产成人福利片| 精品亚洲porn| 久久爱另类一区二区小说| 婷婷综合在线观看| 亚洲一区二区三区四区五区黄 | 色欧美日韩亚洲| www.欧美日韩| 波多野结衣亚洲一区| 国产成人在线电影| 国产在线国偷精品产拍免费yy| 乱中年女人伦av一区二区| 日韩av一区二区三区| 午夜精品成人在线视频| 亚洲一区免费在线观看| 一区二区不卡在线播放| 亚洲精品久久7777| 一区二区三区国产豹纹内裤在线| 亚洲视频电影在线| 樱桃国产成人精品视频| 亚洲品质自拍视频网站| 日韩美女视频一区二区| 亚洲欧洲色图综合| 国产精品每日更新| 国产精品久久久久久久久免费樱桃| 久久久久久久久久美女| 久久一区二区三区四区| 国产欧美日韩一区二区三区在线观看| 久久久国产午夜精品 | 99久久99久久综合| 91麻豆国产福利在线观看| 91久久人澡人人添人人爽欧美| 色一情一伦一子一伦一区| 色欧美日韩亚洲| 欧美日韩久久一区二区| 91精品国产综合久久精品| 日韩精品一区国产麻豆| 久久亚洲一区二区三区四区| 国产色一区二区| 最新高清无码专区|