壓縮演算法悖論,不存在的壓縮演算法?

時間 2021-05-30 23:59:28

1樓:xsank mar

先說結論:的確沒有一種萬能的壓縮演算法可以壓縮任意資料(這裡的壓縮是指將資料壓縮至更小,而且可以還原)

再來列乙個簡單的證明:

壓縮的本質其實是二進位制串,那麼對於長度為n的字串,共有2^n種表達,如果存在萬能壓縮演算法將其壓短,那麼最多只有2^1+2^2+...+2^(n-1)=2^n-2種結果,意味著必然會發生碰撞導致無法還原

所以對於任意壓縮演算法,必然存在某種資料壓縮後,資料大小不變甚至更大的情況

2樓:老王

正確,沒有壓縮演算法可以使所有二進位制檔案變小或不變(所有檔案大小不變不算)。

壓縮演算法都是把小的變大,大的變小。

實際中的檔案型別少有二進位制格式的,因此其對映可以是兩個不同集合間的單值對映,因此能使某一格式檔案全部變小是可能的。

3樓:支浩宇

看了各位的回答,感覺完全不需要答這麼多。問題是"不存在的壓縮演算法?" 就是說你推算了半天,發現這個壓縮演算法不可能存在,那麼結論不就已經有了嘛。結論就是這個演算法不存在。

4樓:於墨

我集合論比較渣,很努力的試圖理解題主未果。只想問一下 f(m(a)) 是啥,感覺定義域不對啊。 f(m(a)) ==m(a) 兩邊的型別也不一樣。

5樓:石雨濃

大家可能都理解錯題主意思了,題主並沒有要求壓縮後檔案大小一定變小。忽略各種表述及邏輯錯誤(f怎麼能作用在m(a)

上,為什麼f(c)包含於(c-f(B')),如果我理解對了的話,他的問題翻譯成通俗易懂的語言就是:如果乙個壓縮演算法是「所有二進位制檔案」這個集合對自己的一一對應(他假設的是單射+滿射),那麼如果有乙個檔案被壓縮(對映到比自己小的乙個檔案),那麼肯定有乙個檔案會被對映到比自己大的檔案,不然就違背了單射+滿射的假設。

從這個角度來說,題主並沒有錯,這個結論也不難證明。舉個特殊例子就是如果檔案A被壓縮成了檔案B,檔案B不能再被壓縮了。那麼在解壓的時候我們怎麼知道是解壓成檔案A還是保持檔案B不變呢,只能通過加一位來告訴解壓程式是解壓成A還是保持B不變。

這樣的話確實B壓縮後在保持不變的情況下還加了乙個判斷位就膨脹了。

但是實際情況卻不是題主所說的。因為被壓縮後的檔案並不是單純的二進位制檔案,而是「某種格式」的檔案,所以f::A->A的假設應該是不對的。

不過有興趣的可以拿壓縮軟體壓縮一下只含「01」兩個bit的二進位制檔案或者類似的檔案,我相信題主說的檔案膨脹應該是存在。

所以題主是對的。

但是可以把大檔案幾百倍的壓縮,小檔案膨脹的代價實在是太小。

求助數學問題(矩陣面積 css壓縮演算法相關)?

Shuhai 鑑於題主要求計算出所有可能,這裡有乙個簡單明瞭的演算法 複雜度略高 1.設矩陣的橫座標為x1,x2,x3,x4,x5,xn,縱座標為y1,y2,y3,y4,yn。2.每個矩形都可唯一表示為S x xa1,xa2,xa3 xan y yb1,yb2,yb3,ybn 例如左上角的矩形是S ...

有哪些關於網路拓撲圖無失真壓縮演算法的研究?

Zhouxing Su 拓撲圖中存在很多重複的子結構。如圖 1 中乙個簡單的二分圖所示,節點 A B 均與節點 1 2 3 相鄰,反之亦然。圖 1 乙個可壓縮的簡單拓撲圖 那麼是否可以對鄰接表進行優化,從記錄所有相鄰節點,改為記錄相鄰的節點集合?通過合適的節點聚合或集合劃分,使得每個節點相鄰的節點集...

如何證明不存在的東西不存在?

已登出 不存在的東西無法感知,無法推理,它是自證的。我舉個例子,缸中大腦。你除了只能證明自己存在以外,無法證明其他存在,但也無法證明其他不存在。為什麼,因為只有自證才能證明自己存在。同樣,不存在只能自證自己不存在,無法數學方法去證明。 首先要說的是,這是乙個偽命題。這裡直接引用康德的理論 當我們說不...