2014-02-12 62 views
0

我必須向我的班級解釋如何在小消息上進行基本算術編碼。我一直在調查大量的文件和閱讀很多,我可以說我理論上理解這種方法是如何工作的,但仍然有一些問題。基本算術編碼

我正在通過these examples(第一個例子,第二頁) - 我們有'eaii!'消息,我們希望使用算術方法對其進行編碼。

在這個例子中,它設置

Symbol  Probability  Range 
a    .2   [0 , 0.2) 
e    .3   [0.2 , 0.5) 
i    .1   [0.5 , 0.6) 
o    .2   [0.6 , 0.8) 
u    .1   [0.8 , 0.9) 
!    .1   [0.9 , 1.0) 

我的第一個問題是,它是如何設置的概率?我的邏輯告訴我,如果我有兩個「我」的符號那麼符號應該具有最高概率,不應該嗎?

另外,它是如何確定從哪個範圍開始以及之後的其他範圍?

另一個例子是編碼的消息「ABC」,這是這樣設置:

Symbol  Probability  Range 
a    .7   [0 , 0.7) 
b    .1   [0.7 , 0.8) 
c    .2   [0.8 , 1.0) 

我也不明白爲什麼第一個符號具有比其他人大得多的概率,即使它是一個出現順序的事情,我不明白它是如何設置爲0.7,爲什麼不是0.8或0.5。

我希望我明確自己,我會很感激任何幫助。

+0

你從哪裏獲得這些例子嗎?沒有上下文,如何設定概率沒有多大意義。範圍列似乎只是概率列的運行總數,從0開始到1結束。 – Krease

+0

http://www.stanford.edu/class/ee398a/handouts/papers/WittenACM87ArithmCoding.pdf –

+0

這是第一個例子,第二頁 –

回答

1

他們正在想象一個固定的模型,用於在特定消息被編碼之前很久建立的數據。該模型原則上是由大量這類信息構成的,因此沒有理由相信eaii!本身應該與模型中的概率相匹配。當然,該模型僅用於說明目的,並不比eaii!消息更真實。 (雖然我想我剛纔說的那天我正在從烤箱裏取出東西。)

模型中符號的順序是任意的。它只需要在兩端都是相同的模型。當然重要的是概率加起來爲1。

第二個模型是另一個任意模型,用來說明符號如何在不到一點的時候編碼,當它有一個大於1/2的概率時。對於該型號,a系列中的每個a都會略微超過一半。

0

我認爲概率是針對樣本的。

要確定針對特定樣本測試哪種概率,只需對每個字符進行計數,然後將其出現次數除以總字符數。 (總和爲1)。

請注意,算術算法是有效的,當有一個巨大的重複相同的字符。

例如:

aaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaabaaaaa將壓縮很好 abfpababbahnajdapkalamkmdamlkapaaapokpokpdq不會壓縮很好(試行霍夫曼)