能否把1GB的資料壓縮到1MB甚至更小的體積?

時間 2021-05-07 05:20:17

1樓:小逼格

我可以把1gb資料D1和D2總共兩G資料,壓縮成乙個位元表示

做法如下,我另外記錄資料D1和D2,然後,當我收到位元值為1的壓縮包時,我就輸出資料D1,收到位元值為0的壓縮包時我就輸出D2

或許你覺得這很無聊。但實際上,這就是壓縮程式的本質。你結合資訊理論細品……

2樓:

可以但是根據夏農第三定理(保失真度準則下的有失真信源編碼定理)保真度準則下的信源編碼定理,或稱有損信源編碼定理。只要碼長足夠長,總可以找到一種信源編碼,使編碼後的資訊傳輸率略大於率失真函式,而碼的平均失真度不大於給定的允許失真度,即D'<=D.

R(D)為一離散無記憶信源的資訊率失真函式,並且選定有限的失真函式,對於任意允許平均失真度D>=0,和任意小的a>0,以及任意足夠長的碼長N,則一定存在一種信源編碼W,其碼字個數為M<=EXP,而編碼後碼的平均失真度D'(W)<=D+a。

不可能把資料壓縮的比夏農熵還小,否則資訊就會丟失所以要麼資訊量很小要麼有損

3樓:少年

不談資料的實際情況,就這樣提問,說明提問者在耍流氓。

1TB的資料都是0000000000,那我壓縮的模型就可以設為1024*1024-1024等個0,估計1kb都不到。。

4樓:

理論上可以,當數學科技夠強或者計算能力達到某個標準,任何儲存的資料可以找到乙個無理數或者某方程結果的第x位到第y位相對應,比如二進位制1010 0010 0111 1000可以找到π的小數點第2位到第6位相對應寫成π(2,6)占用空間就小,當然也有5*√2(17443,583124)這些,占用空間少,內容多。

5樓:王若非

三體裡面講過這樣乙個故事。把地球上所有書籍變成一系列資料,然後加上乙個小數點,變成乙個數。三體人帶著一根棍子,在棍子上點乙個點,點到一端的長度就是剛才的數。

這樣把棍子帶回三體星球,在用精密的測量儀器量出長度,就把資料翻譯出來了。

當然這種辦法在地球上無法實現,因為在精密的測量儀器,小數點7位後面就是原子級別了,測不准。

這是乙個思路。比如圓,乙個簡單的圖形,裡面的π就攜帶了無窮無盡的資料。

我在想能不能,把一系列很長的資料,揉進乙個方程,變成乙個方程的解。又或者,類似圓這種圖形,變成圖形的乙個引數。

這樣只要傳輸乙個方程,或者乙個圖形,告訴他資料就是方程的解或者圖形某個邊長。不就行了。

6樓:羅治平

大部分回答都是基於目前現實的計算機技術來說的,答案很明顯,看情況,有可能可以,極大可能不可以。

但其實問題本身是個數學問題,答案也很明顯,一定能。並且還可以擴充套件,只要是「有限大」的資料,都可以無失真壓縮到不太大的體積(1GB的話1MB肯定夠了)並不會丟失任何資訊。

我這不太靈光的腦子都能隨便想到辦法來實現。

1GB的資料不大不小,這沒關係,只要是有限的就行。1GB的資料有限,那麼它的可能的型別也是有限的,我定乙個規則按照一種唯一的次序把這些資料乙個乙個的排列下去。然後我比對好了,我只需要告訴你排列的規則和這1GB的資料排在第幾位就可以了。

你可以無損的還原出這個資料。

來粗略估算一下大概需要多大空間,規則可以定得很簡單,1KB是肯定夠了的。最大的序數應該是2的***次方,也不會佔多少空間的。

哈哈,如果你對大數有多大有點點譜。你立馬就能意識到,儘管過程不複雜,但是壓縮和解壓所需的計算資源是宇宙都承受不起的。對於一些特殊的資料,可以很快的算出來這個序數,那麼壓縮和解壓都很快,這就比較對應現實中的電腦程式壓縮和解壓的過程了,

7樓:黑煙的圈

能否把資料壓縮更小,是通過資料的統計特徵和所應用的演算法所決定的。

關於資料壓縮,舉個例子:

由10個字母組成的4種資料:

1,aaaaaaaaaa

2,abcdefghig

3,adobeadobe

4,hnwlxidkge

其中對應的資料壓縮是

1:a=0,得出的結果是000000000

2:a=0,得出結果是0111111111(內含順序讀取an+1=公升序1+an)方式是:增量編碼

3,adobe=0,得出結果是00,編碼方式是:符號分組

4,h=0001,n=0010。。。。得出結果是[0001,0010,00111010],通過資訊熵進行編碼。

我們可以比較不同的資料所佔的二進位制位元組,第一種和第二種是一樣的。第三種最少,第四種最多。但是他們的編碼是不一樣的。

那麼回到資料壓縮裡面,你需要把資料進行壓縮,那麼你就需要判定你所需要的壓縮的資料是通過什麼格式進行儲存的,就像一般mp4格式的壓縮效果是比mov格式要好的。

就拿第三種情況來說,採用一般壓縮情況,給adode五個字母進行分配正常為也就是5,5的二進位制為101,令a=101(a佔了三個儲存位置),然後再分配,整個資料就變得很大。等於10x3=30。

它比原來的壓縮就增大了15倍。

當然在第三種中,adobe如果出現重複幾十萬次又可以進行再壓縮。

然後就是出現有壓縮的資料特別小,沒壓縮的資料特別大的情況。

這個問題涉及到乙個資訊理論裡的乙個概念:柯爾莫哥洛夫複雜性指為了準確地生成資料,所需要的生成程式的大小。

生成1百億個a只需要在程式裡面輸入一百億*a如果a佔乙個位元組,生成的檔案就是一百億個位元組,而生成這個檔案的程式只需要幾十個位元組。

如果生成一百億個特定無序的字母,那可能你就需要把字母全部打上去。那生成它的程式比它本來的資料還要多。

8樓:zkl

可以。比如1GB的資料「0「,可壓至只有3bit,「011」,第一位的0表示資料是0,第二位的1表示「所有資料」,第三位的1表示「1GB」。合起來的意思是「所有1GB的資料是0」。

很簡單很節省空間。

9樓:kuzhushu

當然可以啊,甚至還可以做到更小。比如原資料是1GB的0或1GB的0xff之類的,就可以壓縮到很小的程度。

我猜想,題主沒學過資訊學相關的專業學科。

10樓:魯哈花

問題可能有如下幾種解釋:

能否構造一組1GB資料,令某尋常壓縮軟體壓縮到1MB以內對於一組精心構造的1GB資料,是否能讓所有尋常壓縮軟體壓縮到到1MB以內

對於特定的一組隨機1GB資料,是否有尋常壓縮軟體能將其壓縮到1MB以內

對於特定的一組隨機1GB資料,能否構造一款壓縮軟體,將其壓縮到1MB以內

對於任意1GB資料,能否構造一款壓縮軟體,將其壓縮到1MB以內答案:是,可能是,否,是,否

11樓:寫bug的程式設計師

要看具體內容是啥

壓縮原理,最簡單的說,就是1111111000,記成7130,十個字變四個字。不嚴謹,純舉例。

如果用這種方法來壓縮,要是資料都是連續的1和零,就很能壓。如果是010101,你壓出來甚至會變大。

關鍵就在於能不能找到這種規律。所以不能一概而論。

但是初中物理就學過

省力不省功

省力費距離,省距離費力

計算機這邊就是空間換時間,時間換空間

12樓:張浩

看你1GB什麼資料了

給兩個極端例子

dd if=/dev/zero of=zero bs=32768 count=32768

dd if=/dev/random of=random bs=32768 count=32768

13樓:legendmyth

理論上,任何檔案都能壓縮到很小

可設想一種壓縮演算法:

假設pi是正規數,那麼所有的檔案內容的序列都能從pi中找到這樣的話我們的檔案就可以壓縮儲存為offset+length只不過這種壓縮演算法無論是壓縮的時候還是解壓的時候都相當的慢。。。。

14樓:

我感覺可能跟資訊的雜亂程度有關,畢竟如果有很多很多個純為1的數字,我完全可以用乙個位元組表示出來。熱力學與統計力學中雜亂程度用熵表示,不太清楚資訊這塊是什麼名詞,應該差不多吧

15樓:張達林

這個懟天懟地對空氣的專利申請可以做到

如何評價專利CN111181568A?

好吧,說認真的,看這裡:

10M的壓縮包可以解壓出281TB的資料?壓縮炸彈初體驗_嗶哩嗶哩 (゜-゜)つロ 乾杯~-bilibili

比你提問的壓縮比還高。

16樓:意粥

可以,不光可以把1g壓縮到1M,甚至能把任意大小資料壓縮到比1M還小。

其實原理很簡單,就是找到π上與所壓縮資料一樣一段即可,理論上任何資料都能在π上找到一樣的,就是找的過程嘛……

這種思路專案github上面有,有興趣的可以去搜一下。

17樓:

我把圓周率壓縮進了乙個2位元組的檔案pi.gauss,壓縮率0.00%

檔案內容為pi

請用最新版的 gauss.exe解壓

18樓:kon

演算法,資料內容都有影響。

極端的栗子,如果有個1G大小的文字,內容是一行十億個「A」字母。那麼我用「1000000000_A」這串內容就可以表示原來檔案壓縮後的資料。

內容: 1500行,70萬列的"a", 總共大約10億個.

原始大小: 差不多1GB

壓縮後大小: 1.19MB

(1) 原始檔案屬性;

(2) 壓縮後檔案屬性:

(3) 可看壓縮前後大小對比;

19樓:溪沐野

有人做過一種猜想:資料化為二進位制0-1之間的小數,通過某種方法找到對應的方程,使小數為其一解,顯然資料得到壓縮。

換句話講就是盡可能的使用雙方都已知的東西來代替原有資料中的一部分。

舉個例子紅樓夢這本書很大吧,我不用傳給你紅樓夢文字,只告訴你名字,你就懂了。

再推而廣之,我們的語言就是經過壓縮的,日,含義豐富,視具體語境體會其中的意思。

話不用說的那麼明白,大家都懂。就是這樣。

20樓:小喬流水

可以啊,而且我可以建立乙個內容只有乙個字元的檔案,解壓之後可以把世界上任何電腦的儲存撐爆,就是解壓有點慢。這個檔案內容可以是π,也可以是e,也可以是任何乙個有表示的無理數

21樓:PhysicsDYJ

不太清楚現在的技術能不能做到,但未來應該是可以的吧。

理論上所有的資料都可以在無理數中找到,只要知道這段資料是從這個無理數的第幾位到第幾位。

至於怎麼找到在無理數中的位數,要靠數學吧。

22樓:

完全可以,甚至還能更小。

數字資料壓縮的原理很簡單,就是使用預先編制的詞典,把一段長資料替換為短資料。

例如詞典為: 123456 = 1

壓縮前的資料是 123456,壓縮後的資料是 1。只要詞典夠大就可以。

23樓:牧羊小二郎

這個問題缺乏必要的題設。

資訊本來的混亂程度

基於的壓縮演算法及其字典

對於2舉例。如果為特定的壓縮資訊選擇特定的字典,壓縮效果不同。比如要壓縮"abcdefghj"這樣乙個字串,字典是

"abcdefghj",壓縮後對應1

所以,沒有題設情況下,任意資訊都能通過改變字典壓縮到1bit大小好吧,扯不下去了……

為什麼有人說 4 核手機 1GB 容量的 RAM 就夠用,這是謬論嗎?

王江 四核的cpu,不配個大點的DRAM是不是有點浪費?求指正教育 夠用不夠用只是對應當前的需求,1G RAM現在夠用,以後肯定不夠用。 林和睿 我覺得這是乙個個人體驗的問題,有的人不怎麼刷應用,可能1GB的RAM對他來說就夠了。但對整個消費群體來說,應用如狗,滿地遍是,1GB的記憶體只能說將將夠用...

如果把崇禎換成洪武或者永樂,明朝能否再續10年?

今天也要加油鴨 再雄才大略的帝王也要合適的環境才能施展出來,歸根到底古代的帝王學說就是乙個協調各方利益與合理用人問題。搞歷史互換,這種東西我覺得沒有必要。難道換一兩個人就能改變歷史了嗎?當然有可能,因為凡事不是絕對的。對此我很不解,為什麼會有人執著於過去不放?歷史愛好和歷史假設是兩回事。我喜歡歷史,...

如果把全世界的資料轉換為2進製,那麼是1多還是0多?

黃亮anthony 乙個外行的問題,內行看完這一句就可以關了 0和1是相對的,資訊儲存在0和1的變化中,不是0和1中。對外行的回答 0和1最初的定義可能來自於電路中電流的大小,電流或電壓強度達到一定值時定義為1,低於這個值規定為0。所以,這是只是乙個基於習慣的規定。如果當時,我們反過來定義,0和1就...