免費小說網 > 腦回路清奇的主角們 > 幻當程序員小白用自然語言編程時會怎樣?
  =數據卡尺=

  如何用統計學的知識,來應用在數據上呢?

  -第一步-

  要弄明白統計學和數據之間的共性和非共性。

  統計學:每一個數據無論其數值是多少,其本身就作為一個數值獨占的存在體,然而統計學本身就有意和無意的忽略了各個數值的先后排列。

  數據:每一個數據無論其數值是多少,其本身就作為一個數值獨占的存在體,然而數據本身很注重各個數值的先后排列。

  比如: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 閱讀最新章節。