專利名稱:數(shù)據(jù)發(fā)送和存儲的有效且無損耗轉(zhuǎn)換的制作方法
本申請在35U.S.C.§119(e)條約下要求申請日為2000年1月3日,申請序列號為NO.60/174,305的美國專利申請優(yōu)先權(quán),該申請全部引入作為參考。
背景發(fā)明領(lǐng)域本發(fā)明涉及數(shù)據(jù)變換,尤其是涉及無損耗數(shù)據(jù)壓縮。
背景技術(shù):
現(xiàn)存的壓縮技術(shù)集中于查找和刪除所輸入的二進(jìn)制數(shù)據(jù)的冗余。早期壓縮方法集中于數(shù)據(jù)的格式化。這些格式方法利用行程長度編碼(RLE)和各種頻率變換方法。這些模式編碼方法對ASCII特征碼來說可以執(zhí)行的很好,但對其他數(shù)據(jù)格式來說,從來不能達(dá)到壓縮潛力。
壓縮技術(shù)的發(fā)展是從信息理論,特別是克勞德香農(nóng)關(guān)于信息熵的研究演變而來。此研究的大部分工作實(shí)際上是統(tǒng)計。Shannon-Fano和Huffman編碼以符號在源數(shù)據(jù)中出現(xiàn)頻率的降序建立符號概率樹,使得“優(yōu)秀”的可變大小的編碼產(chǎn)生。這常稱為熵編碼。由于出現(xiàn)頻率較多的二進(jìn)制模式被分配以更短的編碼,使得一條消息所需的總體平均位減少,所以壓縮得以完成。
僅僅在模式的出現(xiàn)概率為2的負(fù)冪時,Shannon-Fano和Huffman編碼是最優(yōu)的。這些方法造成大量隨著數(shù)據(jù)變化來優(yōu)化概率樹的自適應(yīng)方案。
通過為這個數(shù)據(jù)指派一個(一般長度通常很長的)碼,算術(shù)編碼克服了2的負(fù)冪概率問題。這個方法一個符號接著一個符號的讀取數(shù)據(jù),并在每次認(rèn)出更多的模式后向輸出編碼中追加位。
對更有效文本編碼的需求導(dǎo)致字典編碼的發(fā)展和演變,代表的有J.Ziv和A.Lempel發(fā)展的LZ系列算法。這些方法生成許多的變化。在這些方法中,字符串(字典)當(dāng)他們被遇到時建立,然后編碼作為標(biāo)記。輸出是指數(shù)和源數(shù)據(jù)的混合。
當(dāng)用熵編碼時,字典方法可以是靜態(tài)的或自適應(yīng)的。LZ系列使用不同的技術(shù)來優(yōu)化字典和它的指數(shù)。這些技術(shù)包括搜尋緩存器、預(yù)備緩存器、紀(jì)錄緩存器、滑動窗口、散列表、指針和循環(huán)排列。這些技術(shù)用來減少很少使用的字典詞條的膨脹。這些方法的普及歸功于他們的簡單、速度、合理壓縮速率和低內(nèi)存需求。
不同類型的信息趨向創(chuàng)造特殊二進(jìn)制模式。冗余或熵壓縮方法是直接依靠符號數(shù)據(jù),且本文固有的模式可以被實(shí)現(xiàn)、變換和簡化。結(jié)果就是,為不同類型的信號,不同方法必須被優(yōu)化。壓縮與模擬基礎(chǔ)數(shù)據(jù)的方法一樣有效。然而,結(jié)構(gòu)的變換和簡化是有限的。
基于冗余的方法論在應(yīng)用和/或執(zhí)行上是有限的。通常,在解決可有效去除的有限冗余的時候,熵編碼不是折衷速度就是折衷壓縮。具有代表性的是這些方法有非常低的壓縮增益?;緝?yōu)勢是熵編碼可以實(shí)現(xiàn)來保持無損耗。
有損壓縮常應(yīng)用于擴(kuò)散數(shù)據(jù)例如代表話音數(shù)據(jù)、音頻、圖像和視頻。有損壓縮隱含不能被精確重構(gòu)的數(shù)據(jù)。某些應(yīng)用可以提供損失數(shù)據(jù),這些損失數(shù)據(jù)是在壓縮和重組過程中,由于人類在解釋信息時聽覺和視覺系統(tǒng)的局限性產(chǎn)生的。感性的編碼技術(shù)被用來利用這些人類眼睛和耳朵的局限性。熵編碼遵循感性編碼模式,它使用以前討論的技術(shù)之一,產(chǎn)生有效的壓縮。然而,由于各自需求的不同,所以每類數(shù)據(jù)需要一個獨(dú)特的模型(熵編碼器)。此外,有時可注意到,從根本上說,這種壓縮技術(shù)的損耗特性意味著損耗一些保真度的結(jié)果,并使得他們不適合許多目的。
從而,需要既無損耗又可有高壓縮增益的壓縮方法。
發(fā)明概要本發(fā)明壓縮二進(jìn)制數(shù)據(jù)。將數(shù)據(jù)拆分成段。每個段有一個數(shù)字值。為每個段選擇一種變換以及該變換的狀態(tài)信息。變換與其狀態(tài)信息的數(shù)字值等于段的數(shù)字值。將變換、狀態(tài)信息和包開銷打包在一個變換數(shù)據(jù)包中。該變換數(shù)據(jù)包的位長與段數(shù)據(jù)包的位長相當(dāng),段數(shù)據(jù)包包括原始段和任何需要的包開銷。選擇并存儲或發(fā)送具有較小位長的包。如果需要的話,在接收數(shù)據(jù)或從存儲器檢索數(shù)據(jù)包后,從變換和狀態(tài)信息重新計算每個段的數(shù)字值。將段復(fù)合以重構(gòu)原始二進(jìn)制數(shù)據(jù)。
附圖概述
圖1是壓縮過程縱覽流程2是恢復(fù)過程縱覽流程3是壓縮系統(tǒng)方框圖和數(shù)據(jù)通過壓縮系統(tǒng)的一般流程圖解。
圖4是預(yù)處理器流程5是變換引擎流程6是變換過程流程7示出尋找一組有利狀態(tài)數(shù)據(jù),無需測試每組可能狀態(tài)信息。
圖8示出在段內(nèi)的部分解。
較佳實(shí)施例的詳細(xì)描述圖1是壓縮過程100縱覽流程圖。初始輸入102是二進(jìn)制數(shù)據(jù)。任何一段二進(jìn)制數(shù)據(jù)以二進(jìn)制形式被簡單表示成一個數(shù)字。從而,任何一段二進(jìn)制數(shù)據(jù)有一個數(shù)字值。這個數(shù)字值是數(shù)據(jù)的“內(nèi)容值”。
如果需要的話,輸入二進(jìn)制數(shù)據(jù)102被拆分104成段。輸入二進(jìn)制數(shù)據(jù)可以足夠短以使它不能再拆分。每個段有一個內(nèi)容值。每個段的內(nèi)容值被識別,且為每個段選擇和測試106變換以及適當(dāng)狀態(tài)信息。一般變換能夠表示許多值。狀態(tài)信息提供為變換指定精確值所必需的信息。術(shù)語“狀態(tài)信息”包括任何變量、系數(shù)、余數(shù)或為變換設(shè)置特殊數(shù)字值所必需的任何其他信息。在某些實(shí)施例中,“包開銷”是加入變換和狀態(tài)信息中。包開銷包括除變換和狀態(tài)信息需要之外的任何信息,以允許后來重新計算原始段和重建原始輸入二進(jìn)制數(shù)據(jù)。
具有其狀態(tài)信息的變換與相應(yīng)段有同樣的數(shù)字值。下列方程式表示了變換概念M=T(狀態(tài)信息),M是段的內(nèi)容值,T是變換。變換是算術(shù)變換、邏輯變換或其他數(shù)學(xué)變換。
帶自身狀態(tài)信息和包開銷的變換有表示效率增益(“REG”)。REG是測量變換、狀態(tài)信息和任何包開銷的效率的尺寸。REG定義為Log2M/Log2T的比率,Log2M是表示M所需要的二進(jìn)制位的數(shù)目,Log2T是可解碼地表示變換、狀態(tài)信息和包開銷所需的二進(jìn)制位的數(shù)目。從而,假如REG值大于段1,變換加上狀態(tài)信息和包開銷比段占據(jù)更少的位。
例如,一個9位大小的消息能表示變換 ,其中a、b和c每個是一個3位消息。在這個案例中, 是變換,a、b和c是每個變換的變量。a、b和c的值構(gòu)成狀態(tài)信息。為了形成表達(dá)式,其數(shù)字值等于段的內(nèi)容值,變換和狀態(tài)信息都是必須的。
用上述 例子,9位可以表示一個超過700,000十進(jìn)制數(shù)長,相當(dāng)于230萬二進(jìn)制位的整數(shù)。作為一個例子,這變換僅僅使用9位可以表示150,094,635,296,999,121內(nèi)容值,或 。假如在二進(jìn)制形式中傳統(tǒng)的表示,這個數(shù)字將占據(jù)58位。因此,通過使用這種變換,9位信息傳送58位內(nèi)容值。58位數(shù)據(jù)段被大大的壓縮。
每個變換和伴隨的狀態(tài)信息接著被打包108成數(shù)據(jù)包。數(shù)據(jù)包包括附加包開銷,此包開銷提供為允許后來解封和恢復(fù)包內(nèi)容值的任何其他必要信息。包開銷可以包括識別段、識別變換或任何其他必須信息的信息。數(shù)據(jù)包(代表性的攜帶)典型地比原始段更少的位來表示。因此段被壓縮。
每個數(shù)據(jù)包被存儲或發(fā)送110。因為數(shù)據(jù)包典型地比段較小,存儲數(shù)據(jù)包比段占據(jù)較小的空間,且發(fā)送數(shù)據(jù)包比發(fā)送段花費(fèi)更少的時間。
圖2是恢復(fù)過程縱覽流程圖,其中原始數(shù)據(jù)被從數(shù)據(jù)包中恢復(fù)。假如數(shù)據(jù)包已經(jīng)被發(fā)送,則接收數(shù)據(jù)包,或者假如已被存儲,則從存儲器中檢索數(shù)據(jù)包為202。接下來,數(shù)據(jù)包編碼被解碼204,判定變換識別和如何使用狀態(tài)信息恢復(fù)原始段。使用解碼信息,原始段的內(nèi)容值被重新計算出來206。最后,所有已驗算段又被按照他們原始順序放在一起,以重建208原始輸入二進(jìn)制數(shù)據(jù)。因此,恢復(fù)過程200的輸出201是標(biāo)識壓縮過程的輸入102。
系統(tǒng)縱覽圖3是壓縮系統(tǒng)300方框圖和數(shù)據(jù)通過壓縮系統(tǒng)300的一般流程圖解。壓縮系統(tǒng)300執(zhí)行圖1和圖2的過程。貫穿壓縮系統(tǒng)300的流程是由被壓縮的二進(jìn)制字符串302的輸入開始。
作為處理控制器,控制程序306服務(wù)于所有系統(tǒng)300功能。一個控制程序306監(jiān)控壓縮系統(tǒng)300其他組成部分和跟蹤所有涉及輸入二進(jìn)制字符串整個處理過程的信息。根據(jù)時間、試驗或其他參數(shù),控制程序306也與終接任何過程相互作用。
預(yù)處理器304獲取輸入二進(jìn)制字符串302,并拆分二進(jìn)制字符串302成段。每個段的長度適合于所給的數(shù)據(jù)類型、適合使用的變換、處理器容量和應(yīng)用參數(shù)。在某些情況下,為了將段更有利的變化給變換引擎308,預(yù)處理器304也變異段。
變換引擎308接收來自預(yù)處理器304的段,并計算變換和狀態(tài)信息的排列,每個排列等同于段的內(nèi)容值。每個排列的長度被分析,包括相關(guān)的包開銷,且變換、狀態(tài)信息和包開銷最有效的結(jié)合被選擇。假如排列顯示沒有數(shù)據(jù)壓縮,則段被作為未處理數(shù)據(jù)不修改地送往打包器310。
打包器310接收變換引擎308的輸出。對于每個段,打包器接收來自控制程序306的所有有關(guān)段如何被變換的信息,包括狀態(tài)信息。來自變換、狀態(tài)信息和其他相關(guān)信息,打包器310產(chǎn)生一個數(shù)據(jù)包。從而,數(shù)據(jù)包包括變換、狀態(tài)信息和包開銷信息,這些合起來允許后來的數(shù)據(jù)包解碼。
在這一點(diǎn),輸入二進(jìn)制字符串302被分段、變換和打包到數(shù)據(jù)包中。合起來數(shù)據(jù)包比原始輸入二進(jìn)制字符串302較小。通過已建立的存儲器和發(fā)送協(xié)議312,這些數(shù)據(jù)不是被存儲,就是被發(fā)送。因為數(shù)據(jù)包比原始輸入二進(jìn)制字符串小,所以他們具有占據(jù)更少的存儲空間,且發(fā)送速度比原始二進(jìn)制數(shù)據(jù)更快的優(yōu)點(diǎn)。
假如數(shù)據(jù)包被發(fā)送,則解包器314接收數(shù)據(jù)包,或假如數(shù)據(jù)包被存儲,則從存儲器中檢索數(shù)據(jù)包。解包器314解釋包開銷指令,通過使用解碼器316來拆開數(shù)據(jù)包組成和相關(guān)信息,并拆開任何未修改數(shù)據(jù)作為未處理數(shù)據(jù)段。
解碼器316接收來自解包器314的解封裝信息,并重新計算原始段的內(nèi)容值。解碼器316應(yīng)用狀態(tài)信息到合適的變換來重新計算段的內(nèi)容值。假如數(shù)據(jù)被變異,對所給的段來說過程顛倒,來恢復(fù)段的原始形式。
重組器318接收來自解碼器316的段,并按次序級聯(lián)端來重新組成原始二進(jìn)制字符串?;趹?yīng)用參數(shù),可以作為應(yīng)用需要的整個文件或通量。重組器然后輸出二進(jìn)制字符串320。重組器輸出的二進(jìn)制字符串320是等同于輸入二進(jìn)制字符串。從而,壓縮系統(tǒng)300提供了無損耗壓縮。
控制程序控制程序306跟蹤數(shù)據(jù),這些數(shù)據(jù)涉及每個數(shù)據(jù)段和段變換,以及關(guān)于預(yù)處理器304與變換引擎308的信息和所有其它壓縮系統(tǒng)300功能。這信息可以包括,但不局限于1、每段的標(biāo)識,包括提供原始輸入二進(jìn)制字符串中段位置的信息。
2、每段的尺寸3、每段的數(shù)據(jù)類型4、變換引擎308的計算能力5、解碼器316的計算能力6、應(yīng)用程序要求,如實(shí)時流式發(fā)送應(yīng)用程序的時間約束7、數(shù)據(jù)類型要求8、段是否已被變異,對段作變異用的技術(shù)9、預(yù)處理器304花在段上的時間10、預(yù)處理器304花在段上的計算周期11、變換引擎308花在段上的時間12、變換引擎308花在段上的計算周期13、用于段的變換標(biāo)識或變換14、用于選擇狀態(tài)信息變量的任何最優(yōu)組合搜索15、涉及任何啟發(fā)式的跟蹤信息16、成功的變換17、成功變換的狀態(tài)信息18、變換位長的基準(zhǔn)值和成功變換的相關(guān)狀態(tài)信息19、成功變換的相關(guān)數(shù)據(jù)包開銷的位長20、部分解變換21、部分解的狀態(tài)信息(包括偏移)22、變換參考的位長和部分解的相關(guān)狀態(tài)信息23、部分解用的變換的包開銷的位長24、使用的有限狀態(tài)機(jī)器25、有限狀態(tài)機(jī)器信息,如參考數(shù)據(jù)和有限狀態(tài)機(jī)器樹數(shù)據(jù)26、de Bruijn序列開始點(diǎn)和指數(shù)對數(shù)27、三維圖像樹軌跡信息28、N-空間曲線數(shù)據(jù)
29、使用的“BOTS”30、BOTS信息,如BOTS的內(nèi)容值位置和從BOTS到段內(nèi)容值的增值過程監(jiān)控器(未顯示)是控制程序306的主要子部分。過程監(jiān)控器監(jiān)控預(yù)處理器304和變換引擎308。過程監(jiān)控器有制約監(jiān)控預(yù)處理器304和變換引擎308的參數(shù)。這些制約參數(shù)可以包括目標(biāo)REG、過程所花的時間、用于處理過程所花的計算周期值或其他參數(shù)。目標(biāo)REG是一個十分高的REG值,以至于當(dāng)攜帶目標(biāo)REG的變換、狀態(tài)信息和包開銷組合被找到時,壓縮系統(tǒng)300停止搜索更高的REG變換。過程所花時間和過程所花計算周期的制約參數(shù)確保壓縮系統(tǒng)300不會花費(fèi)不確定數(shù)量的時間和資源去搜索變換和狀態(tài)信息的最好組合。參數(shù)是預(yù)置或由控制程序306改變的。假如數(shù)據(jù)類型改變,假如計算資源改變,假如應(yīng)用改變,則參數(shù)被改變?;虮蝗祟惢虮黄渌饨绺深A(yù)。
假如預(yù)處理器304或變換引擎308超過制約參數(shù),過程監(jiān)控器發(fā)信號給控制程序306以終止預(yù)處理器304或變換引擎308運(yùn)行。當(dāng)預(yù)處理器304運(yùn)行被終止,二進(jìn)制字符串被拆分成段。段的長度是由預(yù)處理器304決定的迄今最適宜長度的最近似值。當(dāng)變換引擎308運(yùn)行被終止,變換引擎308將輸出當(dāng)前最好變換和狀態(tài)信息,或假如沒有變換壓縮數(shù)據(jù),發(fā)送段作為未處理數(shù)據(jù)。
預(yù)處理器圖4是預(yù)處理器304的流程圖。首先,預(yù)處理器304分析二進(jìn)制字符串302的數(shù)據(jù)類型400。在分析數(shù)據(jù)類型中,預(yù)處理器304試圖識別或表征二進(jìn)制字符串302的數(shù)據(jù)類型。數(shù)據(jù)類型用于幫助確定段尺寸、變換和變幻的狀態(tài)信息,這些將用于測試和變換二進(jìn)制字符串。預(yù)處理器304通過了解產(chǎn)生二進(jìn)制字符串302的應(yīng)用或分析數(shù)據(jù)本身,來表征二進(jìn)制字符串302。分析數(shù)據(jù)以確定數(shù)據(jù)類型的一種方法是比較二進(jìn)制字符串302和現(xiàn)存數(shù)據(jù)類型數(shù)據(jù)庫。為產(chǎn)生這樣的數(shù)據(jù)庫的方法是通過由已知數(shù)據(jù)應(yīng)用產(chǎn)生的采樣信息構(gòu)成。
假如預(yù)處理器304表征二進(jìn)制字符串302,控制程序306存儲與此字符串相關(guān)的數(shù)據(jù)類型。假如預(yù)處理器304不能表征二進(jìn)制字符串302,控制程序306保持此二進(jìn)制字符串的302數(shù)據(jù)類型未知的紀(jì)錄。
預(yù)處理器304接下來確定402,輸入二進(jìn)制字符串的302的尺寸是否大于最小優(yōu)化處理塊的尺寸。不同數(shù)據(jù)類型的最小優(yōu)化處理尺寸不同??刂瞥绦?06存儲每個與相應(yīng)數(shù)據(jù)類型相關(guān)的已知最小優(yōu)化處理尺寸。假如預(yù)處理器304已經(jīng)表征數(shù)據(jù)類型,且此數(shù)據(jù)類型的最小優(yōu)化處理尺寸已知,則預(yù)處理器304簡單比較輸入二進(jìn)制字符串的302和存儲的最小優(yōu)化處理尺寸即可。
假如數(shù)據(jù)類型未知,或數(shù)據(jù)類型最佳尺寸未知,則二進(jìn)制字符串的302拆分404成段,此段的尺寸在先前許多個據(jù)類型工作良好。替換地,二進(jìn)制字符串的302被初始的拆分404成不同位長的段。當(dāng)這些不同位長的段被壓縮系統(tǒng)300處理時,控制程序306保持此段尺寸是最容易處理的紀(jì)錄。通過嘗試不同的尺寸和工作最佳尺寸的軌跡,控制程序306建立每個數(shù)據(jù)類型最優(yōu)處理尺寸的紀(jì)錄,以至數(shù)據(jù)類型的最優(yōu)處理尺寸變得已知。假如控制程序306發(fā)展一個數(shù)據(jù)類型最優(yōu)處理尺寸的紀(jì)錄,則段尺寸可以被結(jié)合給將來使用。
假如輸入二進(jìn)制字符串的302大于最小優(yōu)化處理塊尺寸,則二進(jìn)制字符串的302被拆分404成段。段的位長是由幾個因素確定。
變換引擎308的計算能力影響段的位長。假如變換引擎308擁有小的可用計算能力,段必須比假如變換引擎308擁有大量計算能力更短。同樣,假如解碼器316的計算能力已知,它將影響段的位長。解碼器316擁有越大的計算能力,段就可以有越大的位長。
使用壓縮系統(tǒng)300的應(yīng)用程序也影響段的位長。例如,諸如視頻會議,要求人類可察覺的實(shí)時編碼、要求位長比脫機(jī)歸檔的段位長更短的段。在脫機(jī)歸檔時,更大的段可以在更長的時間幀和更多的處理周期中被變換和編碼。
數(shù)據(jù)類型也影響段的位長。例如,音頻數(shù)據(jù)比ASCII數(shù)據(jù)可以更適宜于不同的段尺寸。涉及數(shù)據(jù)類型的另一個因素是對數(shù)據(jù)類型使用什么變換。對特殊數(shù)據(jù)類型使用的變換帶特別的段長度,可以執(zhí)行得更好。控制程序306監(jiān)視變換引擎308,并存儲帶特別數(shù)據(jù)類型工作良好的變換、段尺寸在這些變換是良好的,以及段尺寸可以被結(jié)合將來使用。從而,當(dāng)預(yù)處理器304成功表征數(shù)據(jù)類型時,控制程序306能夠檢索信息作為段的最優(yōu)位長。
假如輸入二進(jìn)制字符串302等于或小于最小優(yōu)化處理塊尺寸,則二進(jìn)制字符串302作為單個段看待。每個段,無論它是拆分二進(jìn)制字符串302的一部分,還是整個二進(jìn)制字符串,在壓縮系統(tǒng)300的整個余下部分都被同樣對待。
段尺寸是輸出406到控制程序306??刂瞥绦?06存儲段尺寸,并使用它來比較變換可能組合的尺寸、狀態(tài)信息和包開銷。
控制程序306給每個段指定特殊指示信息,以使原始二進(jìn)制數(shù)據(jù)在后來可以被重組,并根據(jù)指示信息、相關(guān)數(shù)據(jù)類型、處理監(jiān)視設(shè)置和任何其他的相關(guān)數(shù)據(jù)來跟蹤每個段。
接下來,每個段被變異408。假如控制程序306已經(jīng)存儲信息,此信息指示先前數(shù)據(jù)類型和段尺寸的變異段導(dǎo)致成功變換,或數(shù)據(jù)類型和段尺寸的未變異段沒有導(dǎo)致成功變換,則段被變異408。假如控制程序306沒有信息存儲來指示變異段將導(dǎo)致成功變換,則段不被變異。然而,假如沒有找到對未變異段的成功變換,接著段可以從變換引擎308回到412來被變異。
預(yù)處理器304通過創(chuàng)建不同型式的段對段作變異408,給變換引擎308提供相同段的更多排列。通過提供相同段的更多排列,增加找到有效變換的可能性。變換引擎308失敗于產(chǎn)生有效變換412的一些段也回到預(yù)處理器304和變異408。
通過監(jiān)視和存儲信息,此信息是對數(shù)據(jù)類型和段尺寸回到預(yù)處理器304來被變異408,控制程序306獲得數(shù)據(jù)類型和段尺寸應(yīng)該被初始變異的信息。此外,通過監(jiān)視變異段穿過壓縮系統(tǒng)300,控制程序306獲得變異導(dǎo)致成功變換的信息。這個信息可以被重新結(jié)合到控制程序。
有幾種方法來變異段。假如控制程序306存儲有變異技術(shù)已導(dǎo)致成功變換的紀(jì)錄,則變異技術(shù)被使用。假如控制程序306沒有存儲這樣的紀(jì)錄,則變異技術(shù)通過穿過已存儲可能變異庫步驟來選擇。
在第一變異技術(shù)中,調(diào)節(jié)段的位長。這包括不同的拆分一組段。通過這樣做,預(yù)處理器306發(fā)送不同的內(nèi)容值給變換引擎308來處理。另一個技術(shù)是“切緩和重排”數(shù)據(jù)。使用前面定義的重排庫。重排指數(shù)包括作為包開銷的一部分。而另一個技術(shù)是尋找段的補(bǔ)充和發(fā)送補(bǔ)充給變換引擎308。在另一個技術(shù)中,段的位被移位或轉(zhuǎn)動。當(dāng)被移位或轉(zhuǎn)動時,移位或轉(zhuǎn)動的位的方向和數(shù)字被作為包開銷的一部分發(fā)送。通過算術(shù)(換算)或邏輯(異運(yùn)算)操作來修改段。在可替換技術(shù)中,其他傳統(tǒng)壓縮被用于改變段的內(nèi)容值。
控制程序306跟蹤變異段,和變異段如何被變異。此信息提供給打包器310以使打包器310可以增加相關(guān)適用的包開銷碼。這些碼指示數(shù)據(jù)作為變異數(shù)據(jù),且數(shù)據(jù)如何被變異。
接下來被變異的或沒有變異的段輸出410到變換引擎308。
變換引擎圖5是變換引擎308的流程圖。通過預(yù)處理器304輸出的段輸入410到變換引擎308。段被送到作為可用和數(shù)據(jù)資源允許的許多變換處理502。通過變換處理502串聯(lián)或并聯(lián)來處理段。
每個變換處理502提供另一個變換(或變換組)適用表示段內(nèi)容值。變換引擎308有多個變換處理502適用它,因為單個變換不能適合每個輸入段的內(nèi)容值。這可從學(xué)習(xí)前面討論的9位尺寸變換 例子中看出,其中每個a、b和c是3位的信息。使用這個變換,超過700,000十進(jìn)制數(shù)據(jù)長的整數(shù)內(nèi)容值可以被僅僅使用9位發(fā)送。假如傳統(tǒng)表示,這樣的數(shù)字占據(jù)超過230萬位。當(dāng)這個變換提供9位的能力來發(fā)送230萬位數(shù)字,9位仍僅僅有能力發(fā)送少于512種不同信息,相應(yīng)512種不同內(nèi)容值。從而,0和 之間存在變換 不能表示的有效數(shù)字值。
一般,算術(shù)變換包括余數(shù)R,以至先前檢驗的 變換變成 +R。選擇好a、b和c的值后,變換設(shè)為等于內(nèi)容值和解余數(shù)。這允許變換表示任何內(nèi)容值。然而,在很多情況余數(shù)R是一個很大的數(shù)字,要求許多位來表示。這導(dǎo)致段很小或沒有壓縮。通過提供多種不同變換處理502,變換引擎308大大增加了找到?jīng)]有余數(shù)或余數(shù)足夠小以至達(dá)到壓縮REG的變換的機(jī)會。
此外,找到了允許混合解的擁有多種變換處理502。在混合解中,使用一個以上的變換。例如,一個變換有能力表示從零到一個非常大的整數(shù)這一大范圍的內(nèi)容值。然而,這變換不使用余數(shù)擁有低的間隔尺度。為了使變換能表示大多個的內(nèi)容值,則要求許多位表示的大余數(shù)是必需的。使用第二變換來表示余數(shù),替代使用大余數(shù)。第二變換有能力表示值的范圍比第一變換較小,但有更好的間隔尺度和典型較小的余數(shù)。在一個實(shí)施例中,來自一個變換處理過程502的余數(shù)被輸入另一個變換處理過程502。變換處理過程502對待輸入的余數(shù)與它對待其他任何段一樣。因此,由多種帶小余數(shù)的變換組成的混合解,替代有大余數(shù)的變換。
變換處理過程502每個測試段的變換解。一個變換解是結(jié)合特殊狀態(tài)信息的變換。變換處理過程502繼續(xù)測試狀態(tài)信息的、變換和包開銷,直到達(dá)到目標(biāo)REG或達(dá)到時間、數(shù)字或試驗或其他約束限度。處理過程監(jiān)控器監(jiān)控變換處理過程502,以確定是否達(dá)到目標(biāo)REG、處理所費(fèi)時間、計算周期數(shù)字或其他約束限度。達(dá)到約束限度,處理監(jiān)控器停止變換處理過程502。
控制程序306選擇504,變換、狀態(tài)信息和包開銷的最佳組合。這些均被變換處理過程502測試過。為選擇最佳組合,控制程序306測量每個變換、狀態(tài)信息和相關(guān)包開銷的位長。要求最小位長來表示變換、狀態(tài)信息和相關(guān)包開銷的排列是最佳排列。
控制程序306也繼續(xù)跟蹤以測試的排列。在這時,變換、狀態(tài)信息和開銷的組合,對于單個段來說不是最佳組合,但假如應(yīng)用于僅在一個包中發(fā)送一般信息,并隱含在剩余中的多種段,則是最佳組合??刂瞥绦?06監(jiān)視這樣的組合,假如它們發(fā)生,則這個組合是最佳排列。
比較變換、狀態(tài)信息和開銷最佳組合的位長506和原始段406及相關(guān)用于標(biāo)志原始段的包開銷的位長。假如變換、狀態(tài)信息和相關(guān)開銷最佳組合的位長比原始段406及相關(guān)用于標(biāo)志原始段的包代碼的位長短,則變換和狀態(tài)信息被輸出510。否則,原始段被輸出508。
變換過程圖6是變化過程502的流程圖,顯示變化過程502如何測試段變換和狀態(tài)信息的組合。由預(yù)處理器304輸出的段被輸入410到變換過程502。
變化過程502選擇602變換(或變換組)來測試。變化過程502有能力應(yīng)用許多不同變換。變化過程502使用的變換被存儲在變換數(shù)據(jù)庫里?;跀?shù)據(jù)段的尺寸、數(shù)據(jù)類型、預(yù)處理的執(zhí)行和控制程序306為段跟蹤的其他因素,從變換數(shù)據(jù)庫中選擇一個或更多變換。假如控制程序306有存儲一個紀(jì)錄,說明在同樣或相關(guān)因素下,變換已導(dǎo)致對段的成功壓縮,則選擇該變換。假如控制程序306沒有這樣的紀(jì)錄,則基于數(shù)據(jù)類型或其他啟發(fā)式,通過變換數(shù)據(jù)庫逐步選擇變換。然后控制程序306存儲證實(shí)成功的變換,以發(fā)展一個在同樣或相關(guān)因素下,變換已導(dǎo)致對段成功壓縮的紀(jì)錄。這些信息被重新組合到控制程序中。
假如變換過程502選擇602多種變換,變換處理器可以使用混合解,部分解或其他變換組合?;旌辖Y(jié)局方法使用變換的附加頻率來表示段的內(nèi)容值。部分解使用相同或不同變換來表示一個段的不同部分。
在混合解中,組合多個變換來表示內(nèi)容值。所有可能內(nèi)容值的有效覆蓋范圍,使用單個變換難于達(dá)到。例如,如上所討論的變換可以導(dǎo)致大余數(shù)和小壓縮。替代的是,組合變換來在變換內(nèi)容值的組合上創(chuàng)造一個有效附加頻率,該變換伴是狀態(tài)信息值范圍通過不同組變換來填充左邊間隙。例如,內(nèi)容值M1,用如下解決M1=(變換1)γs1+(變換2)γs2+(變換3)γs3+…+(變換n)γsn(在此γs是該變換的變量組)。同樣,對第二內(nèi)容值M2,M2=(變換1)γs4+(變換2)γs5+(變換3)γs6+…+(變換n)γsn和第三內(nèi)容值,M3=(變換1)γs7+(變換2)γs8+(變換3)γs9+…+(變換n)γsn。
使用多種變換的另一種方法是部分解。在部分解中,替代全變換,變換過程502為段的部分選擇變換。為選擇部分變換,找到形式三元組(開始、結(jié)尾和壓縮長度)的選擇H,其表示變換提供壓縮的已知位串。已知位串是擁有變換等于為已知組合狀態(tài)信息的內(nèi)容值的位串。變換過程502找到這些三元組的組合是最小總長度加段未覆蓋部分的長度。
特別是,段是長度為n的位串M??刂瞥绦?06提供變換過程502一個目標(biāo)REGB,和正確解的有限選擇H。每個正確解是一個三元組h=(i(h),j(h),c(h)),在此1≤i(h)<j(h)≤n是已知位串的開始和結(jié)尾。而c(h)是它描述的長度。變換過程502選擇一個已給正確方法的子集SH,以使它的累計長度(對無疊加部分解)遵守x=Σh[c(h)+l(i(h))-(j(h)-i(h)]]]>此處l(I(h))是表達(dá)i(h)所需的位數(shù)目。部分解可以發(fā)生在段的任何地方。變換和相關(guān)狀態(tài)信息的高效率組合在段中被上上下下地測試以搜尋部分段的最佳配對。對段來說可以找到變換和相關(guān)狀態(tài)信息的多種配對。每個變換和相關(guān)狀態(tài)信息的組合表示段的部分。變換的位長、每個所選變換的狀態(tài)信息和段的原始數(shù)據(jù)部分一起的和加上包開銷,為原始段提供壓縮。
選擇變換或變換組后,變換的狀態(tài)信息被選擇604。在某個實(shí)施例中,數(shù)字技術(shù)用于輔助選擇適當(dāng)狀態(tài)信息。這些數(shù)字技術(shù)包括牛頓方法、二等分、正割方法和其他用于尋找等式根的數(shù)字技術(shù)。提供例子 +R算術(shù)變換表示狀態(tài)信息的選擇。在這變換中,變量a、b、c和R構(gòu)成狀態(tài)信息。變換過程502選擇a、b和c的值。變換過程502使用幾個數(shù)字技術(shù)中的一個來選擇值。然后,解出余數(shù)R,以使R和變換的剩余部分之和等于內(nèi)容值M。因此,伴隨算術(shù)變換,變換過程502可以為除了R外的所有變量選擇任何值,R的結(jié)果可使有它的狀態(tài)信息的變換值恒等于段的內(nèi)容值。
選好狀態(tài)信息后,有所選狀態(tài)信息的變換被測試608。在測試中,根據(jù)將用于最終包中的所有狀態(tài)信息和相關(guān)包開銷,控制程序306確定表示變換所必需的位長。假如位長比REG目標(biāo)位長短,或者假如位長比其他已經(jīng)測試過的變換、狀態(tài)信息和包開銷組合的位長短,則變換、狀態(tài)信息和包開銷作為可能最佳變換排列被存儲和標(biāo)記。
接下來,過程監(jiān)控器確定約束限度是否到達(dá)610。約束包括試湊的次數(shù)、用于試湊的時間、計算周期的數(shù)字、目標(biāo)REG或其他約束。假如達(dá)到約束限度,如目標(biāo)RE6達(dá)到或達(dá)到處理的時間限度,過程監(jiān)控器停止614變換過程502。在這一點(diǎn),在該變換過程502中已經(jīng)測試過的變換、狀態(tài)信息和包開銷的最佳組合被輸出,所以從所有變換處理過程502中選出最佳變換排列504。
假如約束變換沒有達(dá)到,變換過程502確定612段是否應(yīng)該被異化。對于變換的多種這組狀態(tài)信息被測試后,假如控制程序306確定已測試的變換、狀態(tài)信息和包開銷排列608的位長太大,則段將返回412到預(yù)處理器304。在預(yù)處理器304中,段被異化,然后發(fā)送回變換引擎308。否則,變換過程502將選擇604另一組狀態(tài)信息來測試。
因此,變換過程502包括一個循環(huán),用于測試有不同狀態(tài)信息的變換的排列。假如控制程序306確定變換不是導(dǎo)致所需的位長數(shù)據(jù)包,循環(huán)暫停且段被變異。當(dāng)達(dá)到約束限度,循環(huán)暫停且找到變換、狀態(tài)信息和包開銷的最佳組合,輸出此點(diǎn)。
變換接下來描述用于變換過程502的幾種不同變換。當(dāng)接下來變換的列表是冗長的,則其是沒有方法完成。變換過程502有能力使用許多變換,包括標(biāo)準(zhǔn)數(shù)學(xué),在文獻(xiàn)中有描述,如Herbert Dwight’s、積分和其他數(shù)學(xué)數(shù)據(jù)列表、MiltonAbtamowitz’s和IreneStegun’s、數(shù)學(xué)函數(shù)手冊、Alan Jeffery’s、數(shù)學(xué)公式和積分手冊以及N.J.A.Sloane’s和Simon Plouffe’s、積分頻率百科全書。
許多變換自然分為算術(shù)變換等級。這些算術(shù)變換包括但不局限于
指數(shù)因素指數(shù)因素帶的通常形式T(x)=xn+R。對于內(nèi)容值M,變換過程502確定變換變量x、n和R的值。變換變量構(gòu)成變換的狀態(tài)信息。例如,假如一個64位數(shù)據(jù)段M=3E1386BE784F35116遵循變換,然后設(shè)置M等于擴(kuò)展M=xn+R。變換過程502選擇變換變量x和n和R結(jié)果的值。例如,選擇n=1516和x=1116,結(jié)果R=0。因為M=T(x),段可以由變換和狀態(tài)信息x、n和R的標(biāo)識表示。
變換過程502同樣選擇除了余數(shù)R以外的變量值,然后在其他算術(shù)變換系列列表下計算出余數(shù)R。
冪級數(shù)冪級數(shù)形式T(x)=(a+x)n+R,帶變換變量x、a、n和R。擴(kuò)展到第四級循環(huán)x=0,序列變?yōu)門(x)=an+nan-1x+(n-1)an-2x2+n(n-1)(n-2)an-3x3+n(n-1)(n-2)(n-3)an-4x4+R多項式另-個變換級數(shù)是多項式。帶變換變量a、b、c、d、x、y和R的抽樣多項式是T(x)=ax5y3+bx4y2+cx3y+R幾何級數(shù)幾何級數(shù)是另外一個變換序列。例如,T(x)=Σn=1maxn+R,]]>帶變換變量x、m、a和R。整數(shù)級數(shù)整數(shù)級數(shù)提供額外變換。一個整數(shù)級數(shù)例子T(x)=Σi=0n(ai+x)x+R]]>,帶變換變量x、n、ai和R。
三角函數(shù)三角變換序列也有能力產(chǎn)生外加結(jié)果。帶變換變量x和R的三角變換例子是T(x)=Sin(x)x2+R,]]>貝塞爾函數(shù)貝塞爾函數(shù)序列也是可接收的變換。例如,T(x)=Σi=0nxn(n!)2+R]]>,帶變換變量x和R。漸進(jìn)級數(shù)漸進(jìn)級數(shù)也有能力產(chǎn)生可測量可表示的有效增益。例如T(x)=1+1x+12(1x)2+16(1x)3+R]]>,帶變換變量x和R。
其他變換過程502可以使用的變換包括無限發(fā)生、連分?jǐn)?shù)、丟番圖方程、Mobins函數(shù)、代數(shù)曲線、積分變換、逆循環(huán)(三角)函數(shù)、球三角函數(shù)、對數(shù)函數(shù)、雙曲函數(shù)、正交多項式、多對數(shù)、勒讓德函數(shù)、橢圓形積分、序列變換(Z-變換)和馬爾可夫鏈。
另一個基礎(chǔ)級變換是邏輯。邏輯變換與算數(shù)變換相似。使用邏輯或布爾構(gòu)建(即AND(與),OR(或),NOT(非))替代算術(shù)操作,在表示使用比段更少位的解中,描述內(nèi)容值。邏輯變換案例包括但不局限于,使用析取范式(“DNF”)或使用有限狀態(tài)機(jī)器(有時稱為有限狀態(tài)自動機(jī)或“FSA”)。DNF每個有限布爾代數(shù)B與{0,1}M同構(gòu),對某些正整數(shù)M使 位算符。對n布爾變量的公式或表達(dá)式驅(qū)動函數(shù)是函數(shù)fBn→B,其中表達(dá)式完全且唯一的確定f的動作。DNF邏輯變換使用布爾操作(AND·,OR+和NOT~)和一組對打包器310和解碼器316的已知前置指定布爾基字符串。可替代的是,使用的基字符串,它對解碼器來說不是初始知道的,但是一旦包中被送往解碼器,并使用許多后續(xù)數(shù)據(jù)包。
每個公式驅(qū)動函數(shù)是完全由它對布爾變量的動作確定。例如,假如n=3布爾變量,輸入2n或8(即23),對3變量有28或256這樣的公式。DNF是標(biāo)準(zhǔn)或規(guī)范方法,通過確定標(biāo)準(zhǔn)函數(shù)項的系數(shù)來表示這些256公式。系數(shù)為0或1來指示項的存在和缺席。n=3的標(biāo)準(zhǔn)DNF表達(dá)式為f(x1,x2,x3)=c1(x1·x2·x3)+c2(x1·x2·~x3)+c3(x1·~x2·x3)+c4(x1·~x2·~x3)+c5(~x1·x2·x3)+c6(~x1·x2·~x3)+c7(~x1·~x2·x3)+c8(~x1·~x2·~x3)因此,對任意的8位二進(jìn)制字符串11110100,標(biāo)準(zhǔn)DNF表達(dá)式是f(x1,x2,x3)=1(x1·x2·x3)+1(x1·x2·~x3)+1(x1·~x2·x3)+1(x1·~x2·~x3)+0(~x1·x2·x3)+1(~x1·x2·~x3)+0(~x1·~x2·x3)+0(~x1·~x2·~x3)此處8系數(shù)的序列(對DNF每個項的一個)剛好是需表示的二進(jìn)制字符串的位值。從此以后,由于序列剛好是需表示的二進(jìn)制字符串的位值,256特殊8位串中的每個可以由256不同標(biāo)準(zhǔn)DNF函數(shù)中的一個來唯一表示。
盡管對已給位串僅有一個DNF函數(shù),但有許多不同方法來表示這函數(shù)已知標(biāo)準(zhǔn)基字符串的項。使用先前例子,標(biāo)準(zhǔn)DNF函數(shù)是f(x1,x2,x3)=1(x1·x2·x3)+1(x1·x2·~x3)+1(x1·~x2·x3)+1(x1·~x2·~x3)+1(~x1·x2·~x3)也可以表示成f(x1,x2,x3)=(x1·x2)+(x1·~x2·x3)+(x1·~x2·~x3)+(~x1·x2·~x3)
也可以表示成f(x1,x2,x3)=(x1·x2)+(x1·~x2)+(~x1·x2·~x3)以下是一組抽樣基字符串的例子BS0=AAAAAAAAAAAAAAAA16BS1=CCCCCCCCCCCCCCCC16BS2=F0F0F0F0F0F0F0F016BS3=FF00FF00FF00FF0016BS4=FFFF0000FFFF000016,和BS5=FFFFFFFF0000000016例如,內(nèi)容值M=776655443322110016的段,服從使用DNF和抽樣基字符串變換。以下是對此等效于M變換的次最優(yōu)解M=(((~BS5·BS3·~BS1)+(BS5·~BS3·BS1)+(BS5·BS3·~BS1)+(BS5·BS3·BS1))·((~BS5·~BS0)+(BS5·BS0)))+(((~BS5·BS4)+(BS5·BS4))·((~BS1·BS0)))在以上解中,等效于M表達(dá)式僅僅依靠三個基字符串,而不是所有六個基字符串。
有限狀態(tài)機(jī)器/自動機(jī)FSA是帶有與段相關(guān)的許多固定狀態(tài)的狀態(tài)機(jī)器。每個狀態(tài)可執(zhí)行每個動作。動作通常更基于數(shù)據(jù)輸入。輸入可導(dǎo)致某些數(shù)據(jù)輸出and/or過渡到新的狀態(tài)。
段的內(nèi)容值是輸入到FSA和作為FSA遍歷內(nèi)容值建立的樹。樹發(fā)送到打包器310。解碼器316簡單跟蹤樹以恢復(fù)內(nèi)容值。變換過程502和解碼器316都不得不通過發(fā)送接入FSA或在任一終端接入FSA數(shù)據(jù)庫。
另外三個變換例子,變換過程502可以使用de Bruijn序列、三維圖形樹和在N-空間間隔中的相交曲線。
de Bruijn序列是一個二進(jìn)制序列,其中可找到每個可能字符串。起始點(diǎn)被發(fā)送,然后為重建信息,從序列中抽出log2M。由于這是個非常長的序列,且解碼所需開銷的log2可達(dá)到原始段的log2,所以變換常導(dǎo)致小或沒有效率增益。
在開始點(diǎn)和通過三維圖形樹跟蹤的路徑中,使用三維圖形樹類似于deBruijn序列,產(chǎn)生每個可能位組合。如伴隨de Bruijn序列,可達(dá)到段尺寸的解,導(dǎo)致小或沒有效率增益。
第三,通過表示段的內(nèi)容值作為在N-空間間隔中的幾何物體(此處N小于數(shù)據(jù)段的長度),表示在此空間曲線的公式是適合于此物體。由于曲線可能又通過曲線重心指定內(nèi)容值,故曲線不一定遍歷。假如需要,曲線增量可用于N-空間目標(biāo)中更有效的目標(biāo)內(nèi)容值點(diǎn)。
狀態(tài)信息選擇技術(shù)有多種技術(shù)來選擇604變量值或變換的其他狀態(tài)信息。雖然不是總是,但是算術(shù)變換選取變量比邏輯或其他變換選取變量值更為通常地使用不同的技術(shù)。通常選擇用于選擇算術(shù)變換變量的技術(shù),包括下面的技術(shù)。
第一選擇方法是簡單嘗試一個隨機(jī)產(chǎn)生的變量值,保持嘗試不同變量值,直到找到導(dǎo)致伴隨所需壓縮的變換和狀態(tài)信息的變量值。這花費(fèi)相當(dāng)多的時間。
替代的方法,所有從已給算術(shù)變換的每個可能組變量值(除余數(shù))得出的內(nèi)容值可進(jìn)行預(yù)計算,并存儲在數(shù)據(jù)庫中。然后,內(nèi)容值與數(shù)據(jù)庫比較,檢索出適當(dāng)?shù)淖兞恐怠nA(yù)計算這些內(nèi)容值排列大大增加了變換過程502的速度,但花費(fèi)了存儲器的項目。通過僅存儲每隔第10、第100、第1000等等變量值組,存儲器要求可以降低,且仍然提供變換過程502應(yīng)該測試的近似變量值。
通過連接變量值排列支路到必然鄰域,可以用于降低嘗試不同變量值的時間。此處先前嘗試顯示了通過預(yù)處理器304確定應(yīng)用數(shù)據(jù)類型特征后,成功變換方法的最高似然。圖7說明沒有測試每一個可能變量值而找到一組變量值。這樣的方法是有需求的,因為測試每個可能的變量值組合花費(fèi)大量禁止的時間或計算周期。
從特殊數(shù)據(jù)類型的先前處理,控制程序306存儲傾向于導(dǎo)致成功數(shù)據(jù)段壓縮的變量值。這些成功變量值為變量值的序列選擇規(guī)定一個“允許的鄰域”。允許的鄰域是一個變量值范圍。當(dāng)選擇變量值時,變換過程502挑選允許鄰域中的起始點(diǎn)。變換過程502隨機(jī)挑選起始點(diǎn),或基于先前成功值。在圖7顯示的例子中,挑選了變換、狀態(tài)信息和包信息排列的n典型位長的7個起始點(diǎn),A、B、C、D、F、G和H。在其他實(shí)施例中選擇更少或更多起始點(diǎn)。在圖7的例子中,最多起始點(diǎn)是實(shí)際擴(kuò)展變量組,它導(dǎo)致內(nèi)容值的典型位長大于原始段406典型的位長。
變換過程502使用最優(yōu)算法來迭代的測試作為狀態(tài)信息的不同變量值組。對每個起始點(diǎn),變換過程502選擇變量值一個點(diǎn)對在允許鄰域中起始點(diǎn)的左邊,一個點(diǎn)對在允許鄰域中起始點(diǎn)的右邊(即實(shí)際一個更高一個更低)??刂瞥绦?06比較表示每個變換、狀態(tài)信息和包開銷所需的位長和用較小或更長位長表示變量值的跟蹤。變換過程502選擇帶最小位長典型的一組變量值作為新起始點(diǎn)。因此,變換過程502所選變量值達(dá)到本地最優(yōu)。變換過程502重復(fù)此過程直到它達(dá)到點(diǎn)僅從最近選擇變?yōu)楦俚湫托?。這些點(diǎn)是本地最優(yōu),由點(diǎn)A′、B′、C′、D′、F′、G′和H′表示。如上述所討論的,變換過程502或變換引擎308然后從這組群中選擇最佳點(diǎn)。
盡管E′在允許鄰域中是全局最優(yōu),但是因為起始點(diǎn)E(或任何點(diǎn)選擇E′)從沒檢測,所以從沒找到它。在這種情況,為避免在允許鄰域中窮舉測試每個和每組變量值,犧牲全局最優(yōu)。此外,盡管E′是比C′更好的變量組,但過程監(jiān)控器一旦找到匹配目標(biāo)REG的變換、狀態(tài)信息和包開銷組合,可設(shè)置終端處理過程。另外,從圖7出現(xiàn)的它從C到C′花費(fèi)的處理周期比H到H′花費(fèi)的更少。
當(dāng)使用部分解時應(yīng)用特殊策略。如以上所討論的,對部分解,變換過程502選擇已給正確解的子集SH,以使它累計長度遵守(對未重疊部分解)x=Σh[c(h)+l(i(h))-j(h)-i(h)]]]>此處l(I(h))是表達(dá)i(h)所需的位數(shù)。變換過程502使用叫動態(tài)程序的技術(shù),特別是一個量值動態(tài)程序來解決這個。在這個技術(shù)中,首先由增加了長度的字符子串解決了一個必須由字符串解決的問題,每一個字符串中的問題也由參照其字符子串的方法而相應(yīng)解決。如伴隨許多最優(yōu)問題,這成為一個智能“轉(zhuǎn)移和限度”策略問題。這個策略達(dá)到一個解,沒有窮局搜索全局最優(yōu),可能是次最優(yōu)。
圖8說明段內(nèi)的部分解。部分解發(fā)生在段內(nèi)的任何地方。測試上下段的變換和狀態(tài)信息的最高效率組合,使用動態(tài)程序技術(shù)搜尋最佳匹配。匹配發(fā)生的地方,產(chǎn)生偏移指針來測量它涉及字符串的開始或結(jié)尾或度其他部分解的位置。產(chǎn)生部分解匹配804、806和808。在匹配804和806中來看,匹配中的一些彼此重疊,略略降低整機(jī)效率增益。最后,有一區(qū)域沒有匹配810,且位作為原始數(shù)據(jù)簡單發(fā)送。
偏移用于指示段內(nèi)帶內(nèi)容值存在的變換排列的好匹配。當(dāng)確定壓縮是否達(dá)到時,偏移的典型(和相關(guān)余數(shù))成為與段406位長尺寸比較的測量總和的部分。
組合化最佳啟發(fā)式的應(yīng)用也可以輔助減少尋找狀態(tài)信息所需時間,這導(dǎo)致成功壓縮率。這些啟發(fā)式包括(但不局限于)1、爬山法;2、“渴望”爬山法;3、T禁忌搜索;4、模擬退火;5、人工神經(jīng)網(wǎng)絡(luò)應(yīng)用;6、波爾茲曼機(jī)的應(yīng)用;7、調(diào)優(yōu)算法的應(yīng)用;和8、遺傳算法/遺傳程序的應(yīng)用任何這些啟發(fā)式應(yīng)用可能導(dǎo)致一個不是全局最優(yōu)的位長解,全局最優(yōu)是從變換的每個和每組可能變量值的位長的測量中得出的。然而,解可接受的是可利用的變換引擎308的計算能力、處理監(jiān)視器設(shè)置的時間或試約束和任何反射特殊應(yīng)用需求的所需目標(biāo)效率增益。
應(yīng)用的啟發(fā)式不僅影響待測試、計算和測量的不同這組狀態(tài)信息的數(shù)目,而且影響在由啟發(fā)式所瞄準(zhǔn)的狀態(tài)信息排列鄰域中的搜尋策略的效率。不同數(shù)據(jù)類型特征讓自己不同啟發(fā)式應(yīng)用以瞄準(zhǔn)段的內(nèi)容值。通過預(yù)處理器304對數(shù)據(jù)類型的分析獲得的信息和通過控制程序306跟蹤的信息,變換過程502確定是否和如何應(yīng)用組合的最佳啟發(fā)式。
為變換尋找解的另一個方法是使用智能代理(“BOTS”)。通過參考先前段變換的結(jié)果,BOTS處理利用段組群的相似特征。分析變換引擎308的輸出來為BOTS建立優(yōu)勢初始位置。BOTS是智能的,獨(dú)立于主體。BOTS是有效的在內(nèi)容值空間掃描的點(diǎn)。如接收到后續(xù)段,它們也表示在內(nèi)容值空間的點(diǎn)。通過給這些點(diǎn)附加一個假吸引力潛能,BOTS移動更接近“重力中心”。變換引擎308測量從BOT到每個前面成功測試的算術(shù)變換的增量。在過程監(jiān)控器設(shè)置的點(diǎn)(例如,段數(shù)量或處理時間),送往打包器310的信息是BOT狀態(tài)信息(位置和各種增量),而不是變換和它們的變量值。
因為內(nèi)容值群有時重新出現(xiàn),BOT位置是抽樣到數(shù)據(jù)庫中以備以后重新調(diào)取。例如,視頻線的開始常??梢該碛械膬?nèi)容值不同于在每線中間和結(jié)尾的內(nèi)容值。每個后續(xù)線重復(fù)那些內(nèi)容值群。因此,第一線之后變換引擎308擁有的BOT位置最適合視頻線的各種段。在每個后續(xù)視頻線中,BOTS繼續(xù)優(yōu)化它們位置和它們的結(jié)果增量。當(dāng)視頻景物改變,BOTS跟著改變視頻信息。
與用算術(shù)變換一樣,存在有效地搜尋邏輯變換內(nèi)容值的有效表示的技術(shù)。組合的最優(yōu)用于為內(nèi)容值典型有效搜尋所有可能邏輯排列。
對于DNF變換,選擇狀態(tài)信息包括尋找標(biāo)準(zhǔn)DNF表達(dá)式的更壓縮的典型(布爾表達(dá)式)等于內(nèi)容值。然后這提供壓縮,此處壓縮典型可以被重新更改回標(biāo)準(zhǔn)DNF形式,從而允許原始字符串的檢索。如前面所提到的,標(biāo)準(zhǔn)DNF函數(shù)f(x1,x2,x3)=1(x1·x2·x3)+1(x1·x2·~x3)+1(x1·~x2·x3)+1(x1·~x2·~x3)+1(~x1·x2·~x3)也可以更緊湊的表示為f(x1,x2,x3)=(x1·x2)+(x1·~x2·x3)+(x1·~x2·~x3)+(~x1·x2·~x3)還可以更緊湊的表示為f(x1,x2,x3)=(x1·x2)+(x1·~x2)+(~x1·x2·~x3)在實(shí)施例中,遺傳算法用于為標(biāo)準(zhǔn)DNF表達(dá)式的簡化表達(dá)式選擇狀態(tài)信息。遺傳算法(GA)使用規(guī)則來完成找到DNF電信和找到最小DNF表達(dá)式的兩個目標(biāo)。
遺傳搜索算法使用幾個步驟1、初始化構(gòu)建一個n潛能的初始總數(shù)解;2、調(diào)準(zhǔn)首先通過它的典型的完成度,然后通過它的REG值來估計每個總數(shù)成員的調(diào)準(zhǔn)度,按照調(diào)準(zhǔn)度來分類總數(shù)。
3、選擇從總數(shù)的上層、高層表示、高REG部分中為配對選擇母對;4、復(fù)制通過交疊母對產(chǎn)生后代;5、變異通過重排他們來變異隨機(jī)選擇的總數(shù)成員;6、替代擁有帶和變異的成員來替代總數(shù)的更低部分;和7、終結(jié)、重復(fù)步驟2-5直到達(dá)到處理監(jiān)視器設(shè)置的停止判定。
此外,當(dāng)使用DNF變換時,有方法選擇成功基字符串。標(biāo)準(zhǔn)基本字符串可用于目標(biāo)任何內(nèi)容值。然而,更少基字符串選擇產(chǎn)生更好的結(jié)果。第一選擇是數(shù)據(jù)派生基字符串。在預(yù)處理中通過從分析段的數(shù)據(jù)類型確定段的特征,派生有最優(yōu)效率增益的基字符串。因為基字符串必須送往解碼器316,以使打包器310和解碼器316都有字符串的紀(jì)錄,新派生的設(shè)置應(yīng)該用于多種段來提高整體效率增益。
第二選擇是預(yù)先定義基字符串?dāng)?shù)據(jù)庫。已知數(shù)據(jù)類型或已知產(chǎn)生段的應(yīng)用的地方,或預(yù)處理器304能夠通過分析400派生數(shù)據(jù)類型的地方,變換過程502使用基字符串的數(shù)據(jù)庫??刂瞥绦?06通過存儲先前成功基字符串,產(chǎn)生基字符串的數(shù)據(jù)庫。解碼器316也參考基字符串的數(shù)據(jù)庫。當(dāng)使用基字符串的數(shù)據(jù)庫時,僅僅索引參考基字符串?dāng)?shù)據(jù)庫是包括在包開銷內(nèi)。
第三選擇是為選擇基字符串預(yù)處理段。通過對段排列適當(dāng)?shù)念A(yù)處理,變換過程502選擇有最優(yōu)效率增益的基字符串。
打包器打包器310產(chǎn)生包括包,其包括所有標(biāo)識變換、狀態(tài)信息所需的信息,加上所有其它重新計算段的內(nèi)容值和重建原始二進(jìn)制字符所需的信息。信息標(biāo)識包是否包括變換或段是否作為原始數(shù)據(jù)發(fā)送。信息也標(biāo)識用于編碼段內(nèi)容值的變換和變換的狀態(tài)信息,包括任何余數(shù)。最后,信息表明段是否及如何被變異。打包器310使用已知包編碼技術(shù)來盡可能小的封裝此數(shù)據(jù)到數(shù)據(jù)包中。
包的優(yōu)先組成是以下三部分1)包開銷意義a)一個“標(biāo)識位”意味著是否變換或未變換以下數(shù)據(jù);b)段的位長;c)數(shù)據(jù)包的位長;d)段的標(biāo)識;e)段變異信息(假如任何);f)任何用于表示段內(nèi)容值的變換的標(biāo)識;2)任何變換所需明確狀態(tài)信息,包括a)任何系數(shù)、變量、余數(shù)、啟發(fā)式派生信息或其他變換使用的狀態(tài)信息來目標(biāo)內(nèi)容值;
b)任何部分解的偏移;c)任何涉及信息的有限狀態(tài)機(jī)器;d)任何涉及信息的BOT;3)任何未變換的數(shù)據(jù)。
在某些實(shí)施例中,優(yōu)先權(quán)、隱式、數(shù)據(jù)類型和被驅(qū)動應(yīng)用標(biāo)準(zhǔn)和隱式規(guī)則水平用于避免封裝所有此數(shù)據(jù)到每個包中。信息可隱式編碼也可以顯式編碼。為節(jié)省空間,不顯式的發(fā)送或存儲隱式信息。例如,假如發(fā)送原始數(shù)據(jù),它被標(biāo)識,并僅所需額外包開銷是原始數(shù)據(jù)的位長。同樣假如通過解包器314和解碼器316得知所有段是同樣位長,段的位長不包括在數(shù)據(jù)包內(nèi)??蛇x擇的,某些數(shù)據(jù)類型和某些應(yīng)用是建立使用標(biāo)準(zhǔn)和隱式包格式,包括固定位長、變換、變量值長或其他標(biāo)準(zhǔn)信息。
例如,一個壓縮系統(tǒng)300實(shí)施例只使用一個指數(shù)因子變換,T=abc]]>或者發(fā)送原始數(shù)據(jù)。在這個壓縮系統(tǒng)300實(shí)施例中的包由一個標(biāo)志位開始,在這個標(biāo)志位中“1”表示原始段正在被發(fā)送,“0”表示段已經(jīng)被變換。不同尺寸的a,b,c變量的值必須寫入包,以至于解碼器316能夠不模棱兩可地讀到它們。做到這個的一個方法就是把三個變量的尺寸放在它們的值前,尺寸被寫成m位的數(shù)字,在數(shù)字前是m的值,用5位寫。
如果二進(jìn)制字符串被限制在1兆位內(nèi)(1兆位=220),并只考慮a,b,c的總共尺寸不超過n/2(n是二進(jìn)制字符串的位數(shù))的指數(shù)因子,那么3個因子a,b,c的每一個最大位512K長(512K=219),所以它的尺寸可以用19位來表達(dá)。用19位的數(shù)字把這3個尺寸寫入壓縮文件增加了文件大小57位。參數(shù)m應(yīng)該能夠表達(dá)1到19間的數(shù)字值,所以它的尺寸正好是5位??偣驳拈_銷是57+5=62位,于1兆位相比是很小的。
將指數(shù)因子應(yīng)用于48位數(shù)字33,232,930,569,601,它是 ,a,b,c的值分別指定為7,2,4。因為n/2=3,a,b,c的最大尺寸是3位,所以它們的尺寸3,2,4被寫成3位的數(shù)字(因為最大的一個是一個3位的數(shù)字),之前則是5位的數(shù)字m=3。因此,最后的23位包是0|m|3|2|3|7|2|4=0|00011|011|010|011|111|10|100這提供了一個如何把所有的開銷編碼和必要信息,如變量值,用打包器打包成一個包的例子。
下面是一個打包器310用一個DNF邏輯變換生成包的詳細(xì)的例子。正如上面所討論的,DNF使用布爾操作符和一組對編碼器和解碼器來說是已知的事先定義的基字符串。
BS0AAAAAAAAAAAAAAAABS1CCCCCCCCCCCCCCCCBS2F0F0F0F0F0F0F0F0BS3FF00FF00FF00FF00BS4FFFF0000FFFF0000BS5FFFFFFFF00000000如果段有一個M=776655443322110016的64位內(nèi)容值,和M相等的標(biāo)準(zhǔn)DNF表達(dá)式的簡易表達(dá)式為M=776655443322110016=(((~BS5·BS3·~BS1)+(BS5·~BS3·BS1)+(BS5·BS3·~BS1)+(BS5·BS3·BS1))·((~BS5·BS0)+(BS5·~BS0)))+(((~BS5·BS4)+(BS5·BS4))·((~BS1·BS0)))表述這個解的一個可能的數(shù)據(jù)包是100|101010|11100100|1|100001|0101|0|110000|1010|1|000011|0010包中每一位的意義在下表中詳述。
從而,打包器310產(chǎn)生表示64位內(nèi)容值的50位數(shù)據(jù)包。
存儲/發(fā)送數(shù)據(jù)包是簡單的二進(jìn)制數(shù)據(jù)。因此,如前所述,數(shù)據(jù)包能夠用已經(jīng)建立的存儲和發(fā)送方法來存儲和發(fā)送。因為數(shù)據(jù)包比原始輸入二進(jìn)制字符串小,所以它們有著較原始輸入二進(jìn)制字符串占用空間較小,發(fā)送較快等優(yōu)點(diǎn)。
解包器如前所述,如果數(shù)據(jù)包已經(jīng)被發(fā)送,解包器314收到數(shù)據(jù)包,或者如果數(shù)據(jù)包被存儲,則解包器314從存儲器中檢索數(shù)據(jù)包。解包器314解釋數(shù)據(jù)包開銷指令,用解碼器316解開數(shù)據(jù)包組件和所用到的關(guān)聯(lián)信息,并解開任何原始數(shù)據(jù)。
解碼器解碼器316從解包器314收到解包后的信息并重算原始段。解碼器316在適當(dāng)?shù)淖儞Q中應(yīng)用狀態(tài)信息來重算段的內(nèi)容值。如果數(shù)據(jù)變異了,則對獲悉的段顛倒過程來找出段的原始格式。
如果關(guān)于變換、變異或其它過程的任何信息是解碼器316所需但沒有在本地存儲,則解碼器316需要信息來自1)控制程序306;2)一個關(guān)于變換、變異或其它過程信息的存儲庫;或者3)靠從一個關(guān)于變換、變異或其它過程信息的本地有效存儲庫中重建它們。
在一些實(shí)施例中,解碼器316在一個變換內(nèi)容值的數(shù)據(jù)庫中搜尋內(nèi)容值,而不是計算它們。
重構(gòu)器如前面所討論,重構(gòu)器318從解碼器316收到段,并按序列連接段來重構(gòu)原始二進(jìn)制字符串。在應(yīng)用參數(shù)的基礎(chǔ)上,這能生成一個完整的文件或按照應(yīng)用所需形成數(shù)據(jù)流。然后,重構(gòu)器318輸出二進(jìn)制字符串320。重構(gòu)器318輸出的二進(jìn)制字符串320和輸入的二進(jìn)制字符串完全相同。因此,壓縮系統(tǒng)300提供了無損耗壓縮。
權(quán)利要求
1.一種壓縮消息的計算機(jī)實(shí)施方法,其特征在于包括估計消息的數(shù)字值;選擇一種變換和相關(guān)狀態(tài)信息,所選變換和相關(guān)狀態(tài)信息擁有的數(shù)字值等于消息的數(shù)字值;以及產(chǎn)生一個代碼來表示所選變換和相關(guān)狀態(tài)信息。
2.如權(quán)利要求1所述的方法,其特征在于變換是數(shù)學(xué)變換。
3.如權(quán)利要求2所述的方法,其特征在于變換是算術(shù)變換。
4.如權(quán)利要求3所述的方法,其特征在于算術(shù)變換包括至少有一個變量的算術(shù)函數(shù)。
5.如權(quán)利要求4所述的方法,其特征在于選擇變換和相關(guān)狀態(tài)信息包括為算術(shù)函數(shù)的所有變量選擇值;由所選變量值來確定函數(shù)的數(shù)字值;由所選變量值來確定余數(shù),余數(shù)等于消息的數(shù)字值和函數(shù)的數(shù)字值之間的差值;以及其中狀態(tài)信息包括所選變量值和余數(shù)。
6.如權(quán)利要求1所述的方法,其特征在于選擇變換和相關(guān)狀態(tài)信息包括選擇第一變換和與第一變換相關(guān)的狀態(tài)信息;由相關(guān)狀態(tài)信息確定第一變換的數(shù)字值;由相關(guān)狀態(tài)信息確定余數(shù),余數(shù)等于消息的數(shù)字值和第一變換的數(shù)字值之間的差值;選擇第二變換和相關(guān)狀態(tài)信息,第二變換和狀態(tài)信息擁有的數(shù)字值等于余數(shù)的數(shù)字值;以及其中變換和相關(guān)狀態(tài)信息包括第一變換和相關(guān)狀態(tài)信息以及第二變換和相關(guān)狀態(tài)信息。
7.如權(quán)利要求2所述的方法,其特征在于變換是邏輯變換。
8.如權(quán)利要求7所述的方法,其特征在于變換是有限狀態(tài)機(jī)器。
9.如權(quán)利要求7所述的方法,其特征在于變換是析取范式(DNF)函數(shù)。
10.如權(quán)利要求9所述的方法,其特征在于DNF函數(shù)包括多個基字符串。
11.如權(quán)利要求10所述的方法,其特征在于多個基字符串存儲于基字符串的數(shù)據(jù)庫中。
12.如權(quán)利要求10所述的方法,其特征在于進(jìn)一步包括識別消息的數(shù)據(jù)類型。
13.如權(quán)利要求12所述的方法,其特征在于基于消息的數(shù)據(jù)類型,多個基字符串從基字符串的數(shù)據(jù)庫中檢索。
14.如權(quán)利要求9所述的方法,其特征在于為變換選擇一組狀態(tài)信息,包括以標(biāo)準(zhǔn)DNF函數(shù)表示消息;以及選擇標(biāo)準(zhǔn)DNF函數(shù)的簡化表示。
15.如權(quán)利要求14所述的方法,其特征在于選擇標(biāo)準(zhǔn)DNF函數(shù)的簡化表示法包括應(yīng)用組合最佳啟發(fā)式。
16.如權(quán)利要求15所述的方法,其特征在于組合最佳啟發(fā)式是一種遺傳算法。
17.如權(quán)利要求1所述的方法,其特征在于選擇變換和相關(guān)狀態(tài)信息包括測試多組狀態(tài)信息。
18.如權(quán)利要求17所述的方法,其特征在于測試多組狀態(tài)信息包括為多組狀態(tài)信息的每一組,產(chǎn)生一個表示變換和一組狀態(tài)信息的代碼;估計每個代碼的尺寸;以及選擇擁有最小尺寸代碼的變換和相關(guān)狀態(tài)信息。
19.如權(quán)利要求18所述的方法,其特征在于代碼進(jìn)一步表示包開銷。
20.如權(quán)利要求1所述的方法,其特征在于從變換的存儲庫中選擇變換。
21.如權(quán)利要求1所述的方法,其特征在于選擇變換和相關(guān)狀態(tài)信息包括測試多個變換。
22.如權(quán)利要求21所述的方法,其特征在于測試多個變換包括為多個變換中的每一個,測試與該變換相關(guān)的多組狀態(tài)信息,每個變換和一組狀態(tài)信息擁有的數(shù)字值等于消息的數(shù)字值;為多組狀態(tài)信息中的每一組,產(chǎn)生一個表示變換和一組狀態(tài)信息的代碼;確定每個代碼尺寸;以及選擇擁有最小尺寸代碼的變換和相關(guān)狀態(tài)信息。
23.如權(quán)利要求22所述的方法,其特征在于選擇擁有最小尺寸代碼的變換和相關(guān)狀態(tài)信息包括選擇代碼尺寸等于或小于目標(biāo)代碼尺寸的變換和相關(guān)狀態(tài)信息。
24.如權(quán)利要求22所述的方法,其特征在于進(jìn)一步包括,響應(yīng)于消逝的時間周期,選擇已測試擁有最小尺寸代碼的變換和相關(guān)狀態(tài)信息。
25.如權(quán)利要求22所述的方法,其特征在于進(jìn)一步包括,響應(yīng)于執(zhí)行數(shù)次計算循環(huán),選擇已測試擁有最小尺寸代碼的變換和相關(guān)狀態(tài)信息。
26.如權(quán)利要求1所述的方法,其特征在于進(jìn)一步包括識別消息的數(shù)據(jù)類型。
27.如權(quán)利要求26所述的方法,其特征在于識別消息的數(shù)據(jù)類型包括對消息的數(shù)據(jù)庫將消息與已知數(shù)據(jù)類型作比較。
28.如權(quán)利要求26所述的方法,其特征在于識別消息的數(shù)據(jù)類型包括識別產(chǎn)生消息的應(yīng)用程序。
29.如權(quán)利要求26所述的方法,其特征在于基于消息數(shù)據(jù)類型選擇變換。
30.如權(quán)利要求26所述的方法,其特征在于基于消息數(shù)據(jù)類型選擇狀態(tài)信息。
31.如權(quán)利要求1所述的方法,其特征在于進(jìn)一步包括,在選擇變換和相關(guān)狀態(tài)信息之前對消息施加變異。
32.如權(quán)利要求31所述的方法,其特征在于表示所選變換和相關(guān)狀態(tài)信息的代碼進(jìn)一步表示包開銷。
33.如權(quán)利要求32所述的方法,其特征在于包開銷識別所施加的變異。
34.如權(quán)利要求31所述的方法,其特征在于變異選自重排、余數(shù)、移位、壓縮方法、比例縮放方法和異或方法。
35.如權(quán)利要求26所述的方法,其特征在于進(jìn)一步包括基于消息的數(shù)據(jù)類型對消息施加變異。
36.如權(quán)利要求26所述的方法,其特征在于進(jìn)一步包括基于數(shù)據(jù)類型選擇變換;和對消息施加變異,施加的變異基于所選變換。
37.如權(quán)利要求1所述的方法,其特征在于代碼進(jìn)一步表示包開銷。
38.如權(quán)利要求37所述的方法,其特征在于包開銷包括表示已被變換的消息的標(biāo)識。
39.如權(quán)利要求37所述的方法,其特征在于包開銷包括消息的位長。
40.如權(quán)利要求37所述的方法,其特征在于包開銷包括代碼的位長。
41.如權(quán)利要求37所述的方法,其特征在于包開銷包括消息的標(biāo)識。
42.如權(quán)利要求37所述的方法,其特征在于包開銷包括所選變換的標(biāo)識。
43.如權(quán)利要求37所述的方法,其特征在于包開銷包括解釋所選狀態(tài)信息所需的信息。
44.如權(quán)利要求1所述的方法,其特征在于變換選自指數(shù)因數(shù)、冪級數(shù)、幾何級數(shù)、整數(shù)級數(shù)、三角函數(shù)、貝塞爾函數(shù)、漸近線級數(shù)、析取范式函數(shù)、有限狀態(tài)自動機(jī)、de Bruijn序列、三維圖形樹、N維空間表示法、無限積、連分?jǐn)?shù)、丟番圖方程、Mobins函數(shù)、代數(shù)曲線、積分變換、逆圓的(三角)函數(shù)、球三角函數(shù)、對數(shù)函數(shù)、雙曲函數(shù)、正交多項式、多對數(shù)、勒讓德函數(shù)、橢圓積分、序列變換(Z-變換)和馬爾可夫鏈組成的組。
45.如權(quán)利要求1所述的方法,其特征在于選擇變換和相關(guān)狀態(tài)信息包括從預(yù)計算數(shù)據(jù)庫中選擇狀態(tài)信息,預(yù)計算數(shù)據(jù)庫包括多組狀態(tài)信息,以及對于多組狀態(tài)信息的每一組來說的變換和這組狀態(tài)信息的相應(yīng)數(shù)字值。
46.如權(quán)利要求45所述的方法,其特征在于從預(yù)計算數(shù)據(jù)庫中選擇狀態(tài)信息包括在預(yù)計算數(shù)據(jù)庫中選擇相應(yīng)數(shù)字值最接近于消息的數(shù)字值的這組狀態(tài)信息。
47.如權(quán)利要求1所述的方法,其特征在于選擇變換和相關(guān)狀態(tài)信息包括從預(yù)計算數(shù)據(jù)庫中選擇第一變換和相關(guān)狀態(tài)信息,預(yù)計算數(shù)據(jù)庫包括與第一變換相關(guān)的多組狀態(tài)信息和對多組狀態(tài)信息的每一組來說的第一變換和這組狀態(tài)信息的相應(yīng)數(shù)字值;確定余數(shù),余數(shù)等于消息的數(shù)字值與第一變換和相關(guān)狀態(tài)信息的數(shù)字值的差值;從預(yù)計算數(shù)據(jù)庫中選擇第二變換和相關(guān)狀態(tài)信息;以及其中變換和相關(guān)狀態(tài)信息包括第一變換和相關(guān)狀態(tài)以及消息第二變換和相關(guān)狀態(tài)信息。
48.如權(quán)利要求47所述的方法,其特征在于從預(yù)計算數(shù)據(jù)庫中選擇第一變換和相關(guān)狀態(tài)信息包括在預(yù)計算數(shù)據(jù)庫中選擇相應(yīng)數(shù)字值最接近消息的數(shù)字值的變換和相關(guān)狀態(tài)信息。
49.如權(quán)利要求1所述的方法,其特征在于選擇變換和相關(guān)狀態(tài)信息包括從狀態(tài)信息的先前成功范圍的存儲列表中檢索狀態(tài)信息范圍;利用最佳算法在狀態(tài)信息的范圍內(nèi)迭代測試不同組的狀態(tài)信息;對于每一組狀態(tài)信息,產(chǎn)生一個表示變換和這組狀態(tài)信息的代碼;以及選擇擁有最小代碼的已測試的這組狀態(tài)信息。
50.如權(quán)利要求1所述的方法,其特征在于選擇變換和相關(guān)狀態(tài)信息包括施加組合的最佳啟發(fā)式以確定最好狀態(tài)信息,最好狀態(tài)信息擁有表示變換和該狀態(tài)信息的最小代碼尺寸;和選擇最好狀態(tài)信息。
51.如權(quán)利要求50所述的方法,其特征在于施加的組合最佳啟發(fā)式選自爬山法、渴望爬山法、禁忌搜索、模擬退火、人工神經(jīng)網(wǎng)絡(luò)、波爾茲曼機(jī)、調(diào)優(yōu)算法和遺傳算法。
52.如權(quán)利要求1所述的方法,其特征在于選擇變換和相關(guān)狀態(tài)信息包括應(yīng)用智能代理來確定最好狀態(tài)信息,最好狀態(tài)信息擁有表示變換和此狀態(tài)信息的最小代碼尺寸;和選擇最好狀態(tài)信息。
53.如權(quán)利要求52所述的方法,其特征在于智能代理存儲為先前消息所選的變換和狀態(tài)信息。
54.如權(quán)利要求1所述的方法,其特征在于選擇變換和相關(guān)狀態(tài)信息包括選擇多個部分解變換,多個部分解變換結(jié)合組成變換;和對于多個部分解變換的每一個,選擇與該部分解變換相關(guān)的狀態(tài)信息,部分解變換和狀態(tài)信息擁有的數(shù)字值等于部分消息的數(shù)字值,與每個部分解變換相關(guān)的狀態(tài)信息結(jié)合組成狀態(tài)信息。
55.如權(quán)利要求54所述的方法,其特征在于選擇多個部分解變換和相關(guān)狀態(tài)信息包括施加動態(tài)編程。
56.如權(quán)利要求55所述的方法,其特征在于選擇多個部分解變換和相關(guān)狀態(tài)信息包括施加一維動態(tài)編程。
57.如權(quán)利要求1所述的方法,其特征在于進(jìn)一步包括存儲表示所選變換和相關(guān)狀態(tài)信息的代碼。
58.如權(quán)利要求57所述的方法,其特征在于代碼被存儲在計算機(jī)可讀介質(zhì)中。
59.如權(quán)利要求1所述的方法,其特征在于進(jìn)一步包括發(fā)送表示所選變換和相關(guān)狀態(tài)信息的代碼。
60.如權(quán)利要求1所述的方法,其特征在于進(jìn)一步包括估計表示所選變換和相關(guān)狀態(tài)信息的代碼的尺寸;比較代碼的尺寸和消息的尺寸;和假如代碼的尺寸大于消息的尺寸,則存儲消息。
61.如權(quán)利要求1所述的方法,其特征在于進(jìn)一步包括估計表示所選變換和相關(guān)狀態(tài)信息的代碼的尺寸;比較代碼的尺寸和消息的尺寸;和假如代碼的尺寸大于消息的尺寸,則發(fā)送消息。
62.一種壓縮消息的計算機(jī)執(zhí)行方法,包括拆分消息成多個段;對每個段,估計該段的數(shù)字值;對每個段,選擇該段的變換和相關(guān)狀態(tài)信息,所選變換和相關(guān)狀態(tài)信息擁有的數(shù)字值等于該段的數(shù)字值;和對每個段,產(chǎn)生一個表示所選變換和相關(guān)狀態(tài)信息的代碼。
63.如權(quán)利要求62所述的方法,其特征在于拆分消息成多個段包括確定消息的數(shù)據(jù)類型;基于數(shù)據(jù)類型確定數(shù)據(jù)段的最佳尺寸;和拆分消息成最優(yōu)尺寸的數(shù)據(jù)段。
64.如權(quán)利要求62所述的方法,其特征在于拆分消息成多個段包括確定壓縮消息的時間限制;基于時間限制確定數(shù)據(jù)段的最佳尺寸;和拆分消息成最佳尺寸的數(shù)據(jù)段。
65.如權(quán)利要求64所述的方法,其特征在于確定壓縮消息的時間限制包括,確定可用于選擇變換和相關(guān)狀態(tài)信息的計算資源。
66.如權(quán)利要求62所述的方法,其特征在于進(jìn)一步包括對段施加變異。
67.如權(quán)利要求66所述的方法,其特征在于進(jìn)一步包括基于所選變換對段施加變異。
68.如權(quán)利要求66所述的方法,其特征在于變異是段尺寸的調(diào)整。
69.一種用數(shù)字值壓縮消息的計算機(jī)執(zhí)行方法,包括選擇變換和相關(guān)狀態(tài)信息,所選變換和相關(guān)狀態(tài)信息擁有的數(shù)字值等于消息的數(shù)字值;以及產(chǎn)生一個表示所選變換和相關(guān)狀態(tài)信息的代碼。
70.一種恢復(fù)已壓縮消息的計算機(jī)執(zhí)行方法,包括接收表示變換和狀態(tài)信息的代碼;計算變換和相關(guān)狀態(tài)信息的數(shù)字值,變換和相關(guān)狀態(tài)信息擁有的數(shù)字值等于消息的數(shù)字值;和輸出數(shù)字值作為已恢復(fù)消息。
71.一種恢復(fù)已壓縮消息的計算機(jī)執(zhí)行方法,包括接收多個代碼,每個代碼表示一種變換和相關(guān)狀態(tài)信息;計算每個變換和相關(guān)狀態(tài)信息的數(shù)字值,每個變換和相關(guān)狀態(tài)信息的數(shù)字值擁有的數(shù)字值等于消息段的數(shù)字值;和通過組合所有段的數(shù)字值重建消息。
72.如權(quán)利要求71所述的方法,其特征在于接收到的第一代碼提供關(guān)于接收到的第二代碼的消息。
73.一種數(shù)據(jù)壓縮系統(tǒng),包括預(yù)處理模塊接收消息;拆分該消息成多個段,每個段擁有一個數(shù)字值;對每個段,估計這個段的數(shù)字值;對每個段,輸出段的數(shù)字值到變換模塊;和變換模塊對每個段,選擇變換和相關(guān)狀態(tài)信息,所選變換和相關(guān)狀態(tài)信息擁有的數(shù)字值等于段的數(shù)字值;產(chǎn)生一個表示所選變換和相關(guān)狀態(tài)信息的代碼。
74.一種數(shù)據(jù)解壓縮系統(tǒng),包括解包模塊接收多個代碼,每個代碼表示變換和狀態(tài)信息;對每個代碼,輸出變換和狀態(tài)信息到解碼模塊;和解碼模塊對每個變換和狀態(tài)信息,計算變換和相關(guān)狀態(tài)信息的數(shù)字值,變換和相關(guān)狀態(tài)信息擁有的數(shù)字值等于段的數(shù)字值;通過連接所有段的數(shù)字值重建消息。
75.一種計算機(jī)可讀載波,包括表示變換和相關(guān)狀態(tài)信息的代碼,變換和相關(guān)狀態(tài)信息擁有的數(shù)字值等于消息的數(shù)字值,該代碼擁有的長度小于消息的長度。
76.一種編碼在計算機(jī)可讀介質(zhì)上的并控制處理器執(zhí)行壓縮消息方法的的計算機(jī)程序產(chǎn)品,包括估計消息的數(shù)字值;選擇變換和相關(guān)狀態(tài)信息,所選變換和相關(guān)狀態(tài)信息擁有的數(shù)字值等于消息的數(shù)字值;和產(chǎn)生一個表示所選變換和相關(guān)狀態(tài)信息的代碼。
77.一種壓縮和解壓縮消息的計算機(jī)執(zhí)行方法,包括估計消息的數(shù)字值;選擇變換和相關(guān)狀態(tài)信息,所選變換和相關(guān)狀態(tài)信息擁有的數(shù)字值等于消息的數(shù)字值;產(chǎn)生一個表示所選變換和相關(guān)狀態(tài)信息的代碼;存儲表示所選變換和相關(guān)狀態(tài)信息的代碼;從存儲器中檢索表示變換和相關(guān)狀態(tài)信息的代碼;以及計算變換和相關(guān)狀態(tài)信息的數(shù)字值,變換和相關(guān)狀態(tài)信息擁有的數(shù)字值等于消息的數(shù)字值。
78.一種壓縮和解壓縮消息的計算機(jī)執(zhí)行方法,包括估計消息的數(shù)字值;選擇變換和相關(guān)狀態(tài)信息,所選變換和相關(guān)狀態(tài)信息擁有的數(shù)字值等于消息的數(shù)字值;產(chǎn)生一個表示所選變換和相關(guān)狀態(tài)信息的代碼;發(fā)送表示所選變換和相關(guān)狀態(tài)信息的代碼;接收表示所選變換和相關(guān)狀態(tài)信息的代碼;和計算變換和相關(guān)狀態(tài)信息的數(shù)字值,變換和相關(guān)狀態(tài)信息擁有的數(shù)字值等于消息的數(shù)字值。
79.一種壓縮和解壓縮消息的系統(tǒng),包括預(yù)處理模塊接收具有數(shù)字值的消息;估算消息的數(shù)字值;輸出消息的數(shù)字值到變換模塊;變換模塊選擇變換和相關(guān)狀態(tài)信息,所選變換和相關(guān)狀態(tài)信息擁有的數(shù)字值等于消息的數(shù)字值;產(chǎn)生一個表示所選變換和相關(guān)所選狀態(tài)信息的代碼;輸出表示所選變換和相關(guān)所選狀態(tài)信息的代碼;解包模塊接收表示變換和狀態(tài)信息的代碼;和解碼模塊計算變換和相關(guān)狀態(tài)信息的數(shù)字值,變換和相關(guān)狀態(tài)信息擁有的數(shù)字值等于消息的數(shù)字值。
80.一種壓縮消息系統(tǒng),包括用于估計消息的數(shù)字值的裝置;用于選擇變換和相關(guān)狀態(tài)信息的裝置,所選變換和相關(guān)狀態(tài)信息擁有的數(shù)字值等于消息的數(shù)字值;用于產(chǎn)生表示所選變換和相關(guān)狀態(tài)信息的代碼的裝置。
81.如權(quán)利要求80所述的系統(tǒng),其特征在于進(jìn)一步包括用于識別消息的數(shù)據(jù)類型的裝置。
82.如權(quán)利要求80所述的系統(tǒng),其特征在于進(jìn)一步包括在選擇變換和相關(guān)狀態(tài)信息之前對消息施加變異的裝置。
83.一種壓縮消息系統(tǒng),包括用于拆分消息成多個段的裝置;用于估計每個段的段數(shù)字值的裝置;用于為每個段選擇變換和相關(guān)狀態(tài)信息的裝置,所選變換和相關(guān)狀態(tài)信息擁有的數(shù)字值等于段的數(shù)字值;和用于為每個段產(chǎn)生表示所選變換和相關(guān)狀態(tài)信息的代碼的裝置。
84.一種恢復(fù)已壓縮消息的系統(tǒng),包括用于接收表示變換和狀態(tài)信息的代碼的裝置;和用于計算變換和相關(guān)狀態(tài)信息的數(shù)字值的裝置,變換和相關(guān)狀態(tài)信息擁有的數(shù)字值等于消息的數(shù)字值。
85.一種壓縮和解壓縮消息的系統(tǒng),包括用于估計消息的數(shù)字值的裝置;用于選擇變換和相關(guān)狀態(tài)信息的裝置,所選變換和相關(guān)狀態(tài)信息擁有的數(shù)字值等于消息的數(shù)字值;用于產(chǎn)生表示所選變換和相關(guān)狀態(tài)信息的代碼的裝置;用于存儲表示所選變換和相關(guān)狀態(tài)信息的代碼的裝置;用于在存儲器中檢索表示變換和相關(guān)狀態(tài)信息的代碼的裝置;和用于計算變換和相關(guān)狀態(tài)信息的數(shù)字值的裝置,變換和相關(guān)狀態(tài)信息的數(shù)字值等于消息的數(shù)字值。
86.一種壓縮和解壓縮消息的系統(tǒng),包括用于估計消息的數(shù)字值的裝置;用于選擇變換和相關(guān)狀態(tài)信息的裝置,所選變換和相關(guān)狀態(tài)信息擁有的數(shù)字值等于消息的數(shù)字值;用于產(chǎn)生表示所選變換和相關(guān)狀態(tài)信息的代碼的裝置;用于發(fā)送表示所選變換和相關(guān)狀態(tài)信息的代碼的裝置;用于接收表示所選變換和相關(guān)狀態(tài)信息的代碼的裝置;用于計算變換和相關(guān)狀態(tài)信息的數(shù)字值的裝置,變換和相關(guān)狀態(tài)信息的數(shù)字值等于消息的數(shù)字值。
全文摘要
一種無損耗數(shù)據(jù)壓縮的系統(tǒng)和方法。找到一種等于數(shù)據(jù)的內(nèi)容值并取較少位的數(shù)學(xué)變換。
文檔編號G06T9/00GK1437738SQ00819272
公開日2003年8月20日 申請日期2000年12月29日 優(yōu)先權(quán)日2000年1月3日
發(fā)明者C·埃弗里 申請人:埃菲克塔技術(shù)股份有限公司