在一本書上的插畫,常看到一堆猴子在敲鍵盤,
也許是因為 "猴子若有夠多數目和夠長時間在打字機上敲打,最終必然會打出莎士比亞的全部作品"
諷刺著工程師跟猴子應該有差別
然而這句話觸動了我的心,
"猴子長時間敲打,最終會敲出作品"
也許它可以當成壓縮法的核心概念。
把句子替換成 "猴子若有足夠長的時間在打字機上敲打,最終必然會打出內容"
再換一下,"在有限的時間內,猴子若有足夠快速度在打字機上敲打,最終必然會打出內容"
內容:固定大小的隨機數.如1K,4K... 等大小區塊.
有限的時間內: 就限定一個小時內
足夠快: 當人們以為破不了的MD5 或 加密都變成瞬解的時候,也就是在量子電腦上
猴子在打字機上敲打: 亂數產生器
如果是真亂數那就無法還原了,所以要使用偽亂數,也就是用相同亂數種子可以跑一樣的內容。
例如, R250n (R250 random number generator) 偽亂數產生器。
上述如果成立,壓縮代碼可能就是 種子,pass次數,data長度
解碼方式 就是在任一個電腦上面重現亂數即可:
rand_init(seed);
while(passCnt --) rand();
while(dataCnt --) printf("%c",rand());
這樣壓縮率應該可以到2%以下,而且解壓縮超快。
如果再次壓縮,那就....再壓個2%...
壓縮代碼可能變成 (rand 種子,pass次數,data長度,壓縮層數)
{rand 種子,pass次數,data長度},{rand 種子,pass次數,data長度},{.....}
或者 {rand 種子,pass次數,data長度,壓縮層數},{rand 種子,pass次數,data長度,壓縮層數},{.....}
到那一天,硬碟映像檔案可能就 1k以下。
沒有留言:
張貼留言
手機選擇帳號後,按下發布 要再點選一次發布哦