=數據卡尺=
如何用統計學的知識,來應用在數據上呢?
-第一步-
要弄明白統計學和數據之間的共性和非共性。
統計學:每一個數據無論其數值是多少,其本身就作為一個數值獨占的存在體,然而統計學本身就有意和無意的忽略了各個數值的先后排列。
數據:每一個數據無論其數值是多少,其本身就作為一個數值獨占的存在體,然而數據本身很注重各個數值的先后排列。
比如:ABRACADABRA
用統計學來表示,就是A出現了5次,B出現了2次,C出現了1次,D出現了1次,R出現了2次。
用數據來表示,就是ABRACADABRA。
那么如何把數據快速的解壓縮出來呢?可以使用分段壓縮方式,比如把一個大文件,分割成一個個片段,例如:
ABRACADABRATHEFOXJUMP.張三和李四一起去喝酒。
那么,就可以根據前面的數據,本身就是采用英文的方式,也就是最多是52進制(區分大小寫),而后面的中文可就麻煩了,畢竟中文本身進制相當大,那么就需要進行大進制處理。
用統計學的方法,就是把數據平均分,然后分割成可以互相對齊的數據個體,然后統計這些數據個體各出現了多少次。
然后進行統計,把統計數據記錄下去。
也就是說,把大英百科全書的純文本內容用統計學的方式記錄下來,就能對應到大小寫英文字母+符號+空格+換行+換頁……
那么就能夠統計出各英文字母出現過多少次,這導致的就是數據能夠很好把所有元素給還原出來,只是這些元素之間的排列組合,就隨著數據長度的變大而趨向更高運算量。
最簡單的方法,就是用三種統計方法:
如字母矩陣:
ACAEFHIOPQRTTYT
ASDKFJASLKFDJLA
SKJFDASDFSADFAS
DFASFASDFASFDAS
FDJHLKJHLKJHLKJH
為了快速得知每個數字的排列方式,可以進行統計校驗
每一行的第一列中出現A的次數為2次
每一行的第二列中出現A的次數為0次
第一行中出現A的次數為2次
第二行中出現A的次數為3次
A在整個文本中出現過12次
以此類推,就能使用數獨的方式,逆推出去掉了很多排列組合的有限數量的排列組合方式,然后這些排列組合就能通過其他校驗方式,比如MD5,比如SHA128和其他校驗方式快速找出正確的排列組合。
這種方式,就是使用小公式重復使用的方式,快速生成數據的片段,然后只需要把數據片段進行拼圖一樣的整理就行了,就能還原出源文件。
之前說的,只應用到階乘,N次方,無理數,都只適合于超級計算機的壓縮方式,而這次介紹的,則是相對來說,更適合個人計算機,以及單片機使用,本身就是以硬件上限有限時,如何獲得最高壓縮率,以及最快解壓縮。
同樣的,把數據進行片段化,然后使用特定進制的方式來進行統計,同樣可以統計出,然而還有一種特殊的進制轉換對齊校驗方式。
比如二進制的101010111010110111010001001101110010。
轉換為4進制(00=A)(01=B)(10=C)(11=D):CCCDCCDBDBABADBDAC
轉換為十進制:46,084,723,570
轉換為16進制:ABADD1372
然后進行統計,比如,在4進制中,ABCD各出現過多少次;在二進制中0和1各出現過多少次;在十進制中0123456789各出現過多少次;在十六進制中0123456789ABCDEF各出現過多少次。
當然了,為了進制校驗的準確性,一般都是采用素數進制的方式來進行校驗(比如2進制,3進制,5進制,7進制,11進制,13進制……以此類推),然后通過進制之間的差異,來統計。
當然了,因為是為了給單片機使用的,所以本身就不會采用過高進制,比如高達億進制。
也就是把每一個數據片段,都除以各個進制數,然后得出余數。
→噴子兼或破壁人:所以分解質因數都出現了是吧?你還能更敷衍一點么?
→噴子兼或破壁人:直到現在,你都沒有給出使用多處理器來進行大數據壓縮和解壓縮的代碼實現,你在這給程序員用自然語言編程呢?
網頁版章節內容慢,請下載好閱小說app閱讀最新內容
請退出轉碼頁面,請下載好閱小說app 閱讀最新章節。