=按位分隔符壓縮算法=


    把數據進行按一定位數進行分割,比如素數位二進製數據,比如素數位十六進製數據,素數一般取較大值,比如11,13,17,19,23,29;


    然後進行統計,為了快速壓縮,可以把數據進行檢索模糊化。


    比如使用2,3,5,7。


    比如:使用11位的檢索方式,那麽就從00000000000到11111111111全部檢索各有多少個(使用了分隔符)比如把


    00000000000111111111110000000000011111111111,使用分隔符(編程自定義分隔符,比如使用#),然後就把數據分割為#00000000000#11111111111#00000000000#11111111111#


    這樣就不會統計出錯,比如不會把0101和1010都統計成存有101的錯誤,分隔符是為了避免這種檢索錯誤,所以數據分段需要使用分隔符來分割。


    分割完畢之後,就進行統計,先是數位統計,統計出從#00000000000#→#00000000001#→#00000000010#→一直到#11111111111#,各有多少個,然後就可以在解壓縮時,生成同樣多的數據,然後進行位移就行了。


    數據可以通過統計的方式來得知其長度和數據內容,然而其排列順序完全損失了,就需要通過另外一種方式來記錄順序。


    因為是使用11位的二進製來分割統計,那麽就可以簡單的劃分為5位+6位的方式來進行順序排列:


    比如把?用於取一個模糊值(也就是說#1?1?1#有多種有效可能性,#10101#和#10111#和#11101#和#11111#都可以記錄為#1?1?1#,這裏為了減少篇幅,就沒有使用#1?1?1?1?1?1#來作為說明),然後把#1?1?1?1?1?1#記錄為a(沒錯就隻是一個字母)→把#1?1?1?1?1?0#記錄為b→#1?1?1?1?0?0#記錄為c→以此類推,當然,如果數位足夠多,那麽五十二個英文字母的ascii碼可能就不夠用了,就需要使用其他的方式來簡寫了,然後把所有的#(特定二進製數)+?+(特定二進製數)+?+(特定二進製數)#都記錄為一個個的字母的方式進行排列。


    當然了,也可以把一個11位二進製的數,分為多個數位順序表,比如#11111111111#,分別在第一個數位順序表中,記錄為a,在第二個數位順序表中,記錄為a,在第三個數位順序表中,記錄為a,在第四個數位順序表中記錄為d


    #111????????#=a


    #110????????#=b


    #101????????#=c


    #100????????#=d


    #011????????#=e


    #010????????#=f


    #001????????#=g


    #000????????#=h


    然後進行記錄數位順序表1;


    然後定義


    #???111?????#=a


    #???110?????#=b


    #???101?????#=c


    #???100?????#=d


    #???011?????#=e


    #???010?????#=f


    #???001?????#=g


    #???000?????#=h


    然後記錄為數位順序表2;


    然後定義


    #??????111??#=a


    #??????110??#=b


    #??????101??#=c


    #??????100??#=d


    #??????011??#=e


    #??????010??#=f


    #??????001??#=g


    #??????000??#=h


    然後記錄為數位順序表3;


    然後定義


    #?????????00#=a


    #?????????01#=b


    #?????????10#=c


    #?????????11#=d


    然後解壓縮時,把n個數位順序表一一重合,就能還原出數據的數位順序(帶分隔符的版本),然後使用全部替換的方式,把分隔符全部去掉,就能還原出原數據的順序了。


    壓縮快,解壓縮也快。


    片段組合方式,來避免進行重複的整體加一,整體減一的方式來逆推出原先的數據,而是通過拚圖的方式,把數位順序表附帶源數據的一部分數據,然後再把數位順序表合並,就還原出源數據了,這種方式,也可以向前通用到進製碰撞方式中。


    =對於另一種可能需要用到人工智能,或者請數學高手來了=


    作者還在思考,如何使用一種特定算法,把有n個同樣長度的特定進製的數,通過加法,減法,乘法,除法,階乘,次方號的方式,來生成一個遠遠小於整個算式的結果:


    比如:123?339?585?123?234?345?567?678?987?123?234?345?……468?246?=754844625,然後通過結果和運算符號,就能逆推出所有的數,從123,339,到585……468,246;也就是唯一缺失片段隻能唯一等式。


    數據壓縮算法,本身就是對一個特定長度,使用特定進製的數據,如何使用特定算法,以及算法所需要帶入的數據,來還原成源文件,而這個過程中,要足夠快(這樣壓縮快,解壓縮也快),要盡可能減少試錯次數(也就是使用有缺失的方式,因為有缺失,所以需要一部分的窮舉,然後進行校驗,才能得出沒有錯誤的源文件),要盡可能隻有一個碰撞結果(也就是不能一個壓縮後的文件,可以解壓縮出n個不同的版本)。


    先用統計,得出整個文件總共占用多少內存,然後使用內存移位和運算的方式,來還原出源文件,也就是說,本身隻需要解壓縮後大小的內存占用(隻是根據壓縮使用的算法,和為解壓縮加速而存儲的排除法和排除碰撞方法,來實現解壓縮盡可能不進行不必要的運算)。

章節目錄

閱讀記錄

腦回路清奇的主角們所有內容均來自互聯網,鉛筆小說網隻為原作者純白色科幻宅的小說進行宣傳。歡迎各位書友支持純白色科幻宅並收藏腦回路清奇的主角們最新章節