2012-04-02 43 views
1

假設您有一個很大的數字99999999999.是否有任何方法可用於將其縮減爲更短的數字,假定您可以將參考信息存儲在背景中(例如,「使用哪些方法解壓縮」)的「234.56」 ,從234.56回到999999999)有沒有一種數學/加密算法/模型可以讓你縮短/壓縮任何數字?

+0

當然,這是[無損數據壓縮](http://en.wikipedia.org/wiki/Data_compression#Lossless)(RLE,Lempel-Ziv或其他任何一種)的全部基礎。除了「是,選擇壓縮算法」之外,您必須縮小問題範圍以獲得有意義的答案。 – 2012-04-02 16:06:56

+0

http://en.wikipedia.org/wiki/Kolmogorov_complexity – 2012-04-02 17:27:02

+1

你還沒有說過你現在如何存儲號碼。如果它是按照寫入的ascii小數形式,那麼首先要做的就是將它轉換爲二進制。 – 2012-04-03 04:41:19

回答

5

一般而言,並且從字面上考慮你的問題,。有些數字會一直變大,或保持不變。

很容易表明這一點:假設您的問題的答案是「是」。你從更大的數字中獲得更短的數字。重新申請,直到最終得到一個0位數字。看到問題了嗎?

但是,除此之外,您可以使用任何無損壓縮算法。如果需要,將它們全部粘貼到一個二進制文件中,然後將整個文件壓縮。你需要很多數字才能立即壓縮,儘管如此......如果這些數字是隨機數,那麼你的運氣不好 - no algorithm can compress randomness

當然,根據您的樣本空間,您可能會做得更好。如果您知道它們可能包含1位重複的數字,則可以簡單地存儲數字和運行長度,並使用不符合該模式的數字的轉義序列。如果您知道有256個不同的常用數字,請將這些數字與您的程序一起存儲,然後在該數組中加入一個字節索引,以及不在數組中的數字的轉義序列。等等

但是,您的問題的答案一般是

0

取決於你的意思是「在後臺存儲參考信息」。在極端情況下,「參考信息」本身就是數字,「壓縮」數字只是「參考信息」的索引。基本上你會有一個網址縮短的數字。