如果把乙個已經壓縮過的檔案和乙個很大的檔案的內容異或再壓縮,還能獲得高效率的壓縮嗎?

時間 2021-05-30 07:50:16

1樓:雲誰之思

我來說一句,壓縮後的資料再和乙個隨機資料異或,那不是熵變掉了嗎?就可能又有了冗餘。當然可能可以再次壓縮。

但是,當你解壓縮時,可不僅僅只需要壓縮演算法就夠了,還需要異或用的隨機資料。等於說,雖然第二次壓縮後資料更短了,但是解壓縮卻需要額外的資訊。這並不違背資訊熵的理論。

很久之前學了點資訊理論基礎,術語不準確的地方請見諒。

2樓:天雲海

給說不能繼續壓縮的回答來構造乙個反例。

乙個檔案被壓縮後,得到壓縮檔案R。我們讓壓縮檔案和乙個檔案異或,用哪個檔案呢?就用R自己吧。最後得到乙個二進位制序列0000000……

這個檔案應該能壓縮到幾個位元組吧…

當然這麼做有沒有意義就不太好說了。

3樓:劍川

曾經和室友進行過幾個對與壓縮包的再壓縮嘗試,發現把壓縮包再壓縮一次之後得到的壓縮包比以前的『大』,覺得很是神奇。

用的軟體是快壓。嘗試的數量不多,就幾個。

4樓:

把資料看做整數,把無失真壓縮看作乙個函式,那麼這個函式是一一對映,把乙個整對映到唯一的另乙個整數。僅此而已。

設計壓縮演算法就是找乙個合適的對映,能把比較可能用到的大整數對映成相對比較小的整數,把極不可能用到的整數對映到比較大的整數。

如果從整體整數的角度出發(每個整數用到的概率相同),沒有任何乙個對映有使用價值。

5樓:

不可行,即使能找到某些串使原資訊全部變為1,也只是相當於把資訊轉移到這些中間的串裡了。你是不是忘了這些中間的串也要算到壓縮後的體積裡

6樓:

如果壓縮完要無損解壓,那此壓縮方法為乙個一一對映,也就是在空間上維數相等。既然維數不能減小,那就決定了壓縮是有最小限度的(就是表達該維度空間元素的最簡表達法,可以理解為各種必要屬性的集合)

7樓:

首先,生成乙個隨機序列和檔案進行XOR操作之後的序列是有可能熵更低的,然而實際上生成乙個合適的隨機檔案是很難的。這主要是因為XOR後資料的熵取決於被壓縮檔案與參考檔案的相似度,相似度越高則XOR生成資料熵更低。

然而考慮壓縮的實際,你需要能恢復,那麼你算壓縮比應該要把那個隨機檔案也算進去。因為題主說這個參考檔案是隨機的,所以不儲存下來的話你肯定是沒法恢復原檔案的,那麼加上這個參考檔案的開銷的話,壓縮比是不會提公升的。乙個極限情況就是生成的隨機檔案(幾乎)和被壓縮檔案一樣,此時XOR生成的檔案幾乎是可以被完全壓縮,那麼儲存開銷就相當於你需要把參考檔案(也就是被壓縮檔案)存乙份。

這樣,很顯然,根本沒有壓縮比。

ieeexplore.ieee.org/document/7927181/

8樓:秦毅

當你要解壓縮的時候是不是需要之前進行異或運算的檔案,那麼儲存這個檔案也需要空間對吧,這樣一算下來實際需要的儲存空間並沒有減少,反而比進行異或運算之前的更多。

9樓:Sinaean Dean

我理解,這個抑或操作是會損失資訊量的,壓縮之後無法還原原來的檔案,所以壓縮率是會提公升的。相當於把乙個檔案的某些不是0的位強制變成了0

10樓:野龍

壓縮主要利用的是檔案裡面會出現大量重複位元組段,以及不同的位元組段在檔案裡出現的頻率不同這兩點,有失真壓縮還會利用心理學原理分析檔案中哪些部分相對資訊量沒那麼大,可以刪掉。

那麼出來的結果就是,乙個小檔案精闢的概括了乙個大檔案的內容或大致內容。那麼這個小檔案的資訊量是很大的,要繼續概況是很難的。

所以多次壓縮的效果不大。

至於和另乙個檔案異或後壓縮,那麼你得到的壓縮包總得包含那個「另乙個檔案」吧?於是不管你壓得多小,都無法得到比原來更小的檔案了。(那個「另乙個檔案」是高度隨機的,可以認為無法壓縮。)

如果你說,「那我用同乙個檔案來異或一堆壓縮包呢?」假如這能帶來效果,那。。。為什麼不直接把這些壓縮包直接打包成單個壓縮包呢?

11樓:maxdeath

不請自來。

我覺得大部分人沒理解題主的意思,答案沒有乙個對的。

題主你其實想問的是,某種壓縮演算法去冗餘之後,由於演算法問題並沒有達到最優,但是繼續去壓縮這個檔案沒有意義因為演算法認為已經是最優了。這個時候,通過異或得到乙個新的檔案,然後用同樣的演算法進行壓縮,是不是可能能去掉更多的冗餘。

所以你其實就是在問,乙個壓縮演算法對兩個熵相同的檔案的壓縮效率是否一定相同,即如果H(X)=H(Y),假設演算法是f(X),壓縮之後的檔案大小是g(X),是否可能出現G(X)我只能說這取決於演算法。

假設以上的情況可能出現,那麼,當你壓縮完Y之後,如果H(X)足夠大,根據通道編碼定理你可以設計乙個隨機編碼將壓縮結果f(Y)編碼成X,然後再壓縮X得到大小為g(X)即,存在一種異或檔案能夠使得題主所說的情況成立,得證。

12樓:乙指

可以的呢但是沒有意義

假如你要壓縮乙個10兆的檔案

第一次壓縮壓縮為1兆了

但問題是你想要解壓的時候需要這100K的壓縮檔案和用來反打亂它的10兆檔案

即10兆多的檔案解壓後得到10兆正常檔案也就沒有壓縮的功能了資料隨便舉的領會意思就行

13樓:zhangming30

題主用隨機文字xor是想用乙個可逆演算法改變文字內容再進行壓縮嗎。。這樣的話,本質上的問題是不是壓縮率的上限其實是與文字內容沒有關係的?。。

14樓:王健

感覺很簡單的乙個資訊熵的計算問題,首先要明確乙個問題,對於乙個N位0-1序列,怎麼求資訊熵。如果每一位位元是0的概率為p0,是1的概率為p1,那麼資訊熵就為H=N[p0*log2(1+1/p0)+p1*log2(1+1/p1)] (1)

當p0=p1=0.5時,H=N,其代表的物理含義為,完全隨機分布的檔案,無法被壓縮。當然這裡有個前提,N要足夠大。

當N比較小的時候,0和1的比率和概率嚴重不符,如極端情況下出現全0或者全1的情況,資訊熵為1,遠遠小於理論的N,這個不在資訊理論考慮的範圍內。

回到題主的問題,假設已壓縮檔案p0=a,p1=1-a,未壓縮檔案p0=b,p1=1-b,方便起見,假設兩個檔案等長,均為N。則壓縮後的檔案長度為N,且每一位位元為0或者為1的概率分別為

p0=ab+(1-a)(1-b);

p1=(1-a)b+a(1-b);

帶入公式(1)就可以得到壓縮後檔案等資訊熵。

需要特別指出,如果已壓縮檔案被無失真壓縮,則a=1-a=0.5,此時我們有ab+(1-a)(1-b)=0.5=(1-a)b+a(1-b),因而異或後的檔案熵為N,無法進一步壓縮。

15樓:張楷

占個坑吧,這個問題應該屬於資訊理論的範疇。不過資訊理論這東西太高深還沒完全搞懂。

首先不妨假設

1.第乙個檔案已經沒有冗餘了,從資訊理論的角度來說不能在不損失資訊的情況下再次壓縮。

2.第二個檔案還有很多冗餘可以壓縮。

這樣就引出了問題:

1.你異或完的檔案,做異或那部分在兩個原始檔都不知道的情況下實際上是恢復不出原始檔的,也就是說這一部分的資訊肯定損失了。

2.損失了多少資訊我們也是不知道的,至少我是不會算的,而且我懷疑在現在給出的條件下也無法計算。

所以可以粗略的得到以下結論:

1.沒做異或的那部分能壓縮到什麼程度實際上受影響不大,題主也說檔案很大。所以就正常壓縮就可以了,壓縮的極限就是這部分包含的資訊量。

2.異或的部分到底還剩多少資訊量不知道,所以也不知道能壓縮到什麼程度。

16樓:hjiayz

壓縮的原理是,假設檔案存在重複。

而無論是壓縮演算法,還是加密演算法,最終得到的結果肯定是缺乏規律性的。

xor本身對規律性沒有改變。

所以不會有什麼明顯效果。

用多種壓縮演算法可能會有一定的效果,因為可以找到不同方式的重複,但是這樣做並沒有明顯意義,實際上花了多倍的時間,卻只能增加個位數的壓縮率,得不償失。

另外,加入隨機,無疑是進一步破壞規律性,必然導致更糟糕的壓縮率。

如果把你和最愛的寵物一起關在乙個地方沒有食物只有水,最後你會吃了它還是它會吃了你,或者你們一起餓死?

陸小寶 看到這個問題,我轉頭瞄了瞄我家喵。它也眯起眼睛看了看我。它伸出壯實的腿腿,秀了秀上面糾結鼓起的肌肉。它舔了舔粉嫩的爪爪,有意無意地露出指縫間的低調鋒芒。它轉身一躍,跳上了兩公尺多高的電視櫃,暴露在我視野中的肥美的屁屁和豐密的毛毛一旦坐臉能讓我快速窒息。它居高臨下低喚兩聲,宣旨傳膳 不要貓糧,...

乙個思想實驗,如果把乙個資質平平的傻小子(智力普通)和愛因斯坦(天生最強大腦)分開進行這項實驗 ?

狼魂 個人感覺,乙個人的聰明與否與知識庫或智商的關係並不是太大 智商 智力年齡 實際年齡 100。這麼理解的話,在相同的年齡情況下,知識庫越大,智商就越高。但是話說回來 如果兩個人在相同年齡下掌握了一樣大的知識量的時候,那麼思維方式的不同,也是會影響其智力年齡。按照題主的實驗內容來說,我感覺普通小伙...

如果把人的一生比作乙個遊戲(地球Online),大家認為到目前為止,最難的關卡是什麼?

古拉格大酒店HR 這麼說的話 那可以分為 蒙蔽期抗壓期瞎幾把浪期發育懵逼期發育期有點後悔期和安度晚年期 蒙蔽期3 7歲 學齡前兒童,家裡快樂的拆家 抗壓期7 14歲 現代學習的壓力越來越大,周圍人的站著說話不腰痛,老師的扭曲還一本正經的性格,永遠都吃不到自己想吃的飯,家裡說句話就跟放屁一樣沒人聽。瞎...