欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

使用貪婪的順序上下文相關(guān)文法變換的改進(jìn)的無(wú)損耗數(shù)據(jù)壓縮方法

文檔序號(hào):7505499閱讀:183來(lái)源:國(guó)知局
專利名稱:使用貪婪的順序上下文相關(guān)文法變換的改進(jìn)的無(wú)損耗數(shù)據(jù)壓縮方法
技術(shù)領(lǐng)域
本發(fā)明一般涉及數(shù)據(jù)壓縮領(lǐng)域,尤其涉及使用順序文法變換(sequential grammar transform)和編碼方法壓縮具有已知上下文的數(shù)據(jù)。
背景技術(shù)
通用數(shù)據(jù)壓縮方法可以分為兩類通用無(wú)損耗數(shù)據(jù)壓縮和通用有損耗數(shù)據(jù)壓縮。傳統(tǒng)的通用無(wú)損耗數(shù)據(jù)壓縮方法通常采用算術(shù)編碼算法、Lempel-Ziv算法及其變體。算術(shù)編碼算法以待壓縮數(shù)據(jù)的統(tǒng)計(jì)模型為基礎(chǔ)。為了使用算術(shù)編碼算法對(duì)數(shù)據(jù)序列進(jìn)行編碼,需要在編碼過程中動(dòng)態(tài)地建立一個(gè)統(tǒng)計(jì)模型,或者,假設(shè)該模型已經(jīng)事先存在。現(xiàn)有一些方法可以動(dòng)態(tài)地建立統(tǒng)計(jì)模型,包括通過部分匹配算法、動(dòng)態(tài)馬爾可夫建模、上下文收集算法和上下文樹加權(quán)的預(yù)測(cè)。這些方法各使用合適的上下文,預(yù)測(cè)數(shù)據(jù)序列中的下一個(gè)符號(hào),并使用其估計(jì)出的相應(yīng)條件概率,對(duì)這些符號(hào)進(jìn)行編碼。
大多數(shù)算術(shù)編碼算法及其變體僅對(duì)于馬爾可夫階數(shù)低于一些設(shè)計(jì)參數(shù)值的馬爾可夫信源類型而言是通用的。并且,算術(shù)編碼算法對(duì)數(shù)據(jù)序列進(jìn)行逐字符編碼。
相比之下,Lempel-Ziv算法及其變體不采用統(tǒng)計(jì)模型。Lempel-Ziv算法根據(jù)字符串匹配機(jī)制,將原始數(shù)據(jù)序列解析為不重疊的變長(zhǎng)短語(yǔ),然后逐短語(yǔ)地將其編碼。此外,Lempel-Ziv算法對(duì)于比有界階數(shù)馬爾可夫信源類型要寬廣的信源類型而言是通用的,有界階數(shù)馬爾可夫信源是平穩(wěn)遍歷信源。
其他傳統(tǒng)的通用壓縮方法包括動(dòng)態(tài)霍夫曼(Huffman)算法、移至前端編碼機(jī)制和一些利用代碼本傳輸?shù)膬杉?jí)壓縮算法。這些傳統(tǒng)方法要么次于算術(shù)編碼和Lempel-Ziv算法,要么太復(fù)雜而無(wú)法實(shí)現(xiàn)。最近提出了一種基于替換表的新型無(wú)損耗數(shù)據(jù)壓縮算法,它包括一個(gè)新的編碼框架,但卻沒有引入明確的數(shù)據(jù)壓縮算法。但是,該方法的缺點(diǎn)在于編碼過程中使用的貪婪順序變換(greedy sequential transformation)很難實(shí)現(xiàn),并且不利于進(jìn)行高效的編碼,因?yàn)榻馕鲞^程中涉及到了初始符號(hào)s0。
此外,這些算法并不需要對(duì)壓縮的數(shù)據(jù)序列具備任何先驗(yàn)知識(shí)。在使它們適合通用數(shù)據(jù)壓縮需要的同時(shí),這些算法對(duì)于數(shù)據(jù)壓縮特定應(yīng)用的效率不高。在很多情況下,如壓縮web頁(yè)面、java小程序或文本文件時(shí),對(duì)于壓縮的數(shù)據(jù)序列通常要有先驗(yàn)知識(shí),該知識(shí)通常采用所謂的“上下文模型”的形式。
我們需要的是一種充分利用壓縮的數(shù)據(jù)序列的上下文的先驗(yàn)知識(shí)、并同時(shí)克服現(xiàn)有壓縮方法的上述缺點(diǎn)的通用無(wú)損耗數(shù)據(jù)壓縮方法。

發(fā)明內(nèi)容
根據(jù)本發(fā)明,提供了一種通用無(wú)損耗數(shù)據(jù)壓縮方法。該方法采用信源編碼構(gòu)造在線的、可調(diào)的、上下文相關(guān)的壓縮規(guī)則。不像以前使用的壓縮單個(gè)目標(biāo)的其他方法,該方法壓縮規(guī)則的數(shù)字集合。例如,為了實(shí)現(xiàn)基于web的數(shù)據(jù)的在線壓縮,該方法接收數(shù)據(jù),動(dòng)態(tài)地構(gòu)造規(guī)則,然后對(duì)這些規(guī)則進(jìn)行編碼。因?yàn)橐?guī)則集合是動(dòng)態(tài)的,所以當(dāng)web文本數(shù)據(jù)的結(jié)構(gòu)發(fā)生改變時(shí),相應(yīng)的規(guī)則也被更新。同樣,當(dāng)web對(duì)象的內(nèi)容更新時(shí),對(duì)應(yīng)的規(guī)則也相應(yīng)地被更新。該方法對(duì)于web頁(yè)面編碼尤其高效,因?yàn)閣eb頁(yè)面的內(nèi)容經(jīng)常發(fā)生改變,而web頁(yè)面的底層結(jié)構(gòu)基本保持恒定。壓縮數(shù)據(jù)時(shí),該底層結(jié)構(gòu)的相對(duì)一致性提供了數(shù)據(jù)的可預(yù)測(cè)上下文。
本發(fā)明的一個(gè)方面涉及一種方法,它將與關(guān)聯(lián)已知上下文相關(guān)聯(lián)的原始數(shù)據(jù)序列順序地轉(zhuǎn)換為一個(gè)不可約的上下文相關(guān)文法,并從該文法中恢復(fù)原始數(shù)據(jù)序列。該方法包括以下步驟從該序列中解析子串;根據(jù)解析的子串,產(chǎn)生容許的上下文相關(guān)文法;將一個(gè)約簡(jiǎn)規(guī)則集合應(yīng)用于該容許的上下文相關(guān)文法,從而產(chǎn)生一個(gè)新的不可約上下文相關(guān)文法;重復(fù)這些步驟,直到將整個(gè)序列編碼。此外,基于變量和上下文對(duì)的約簡(jiǎn)規(guī)則集合表示該不可約上下文相關(guān)文法,從而使得這些對(duì)表示數(shù)據(jù)序列的不重疊的重復(fù)模式和上下文。
根據(jù)本發(fā)明的另一個(gè)方面,該方法涉及使用自適應(yīng)上下文相關(guān)算術(shù)編碼,對(duì)與來(lái)自可數(shù)上下文模型集合的已知上下文模型相關(guān)聯(lián)的不可約上下文相關(guān)文法進(jìn)行編碼。此外,應(yīng)用一個(gè)基于變量和上下文對(duì)的約簡(jiǎn)規(guī)則集合,以表示不可約上下文相關(guān)文法,從而使得這些對(duì)表示數(shù)據(jù)序列的不重疊的重復(fù)模式和上下文。
根據(jù)本發(fā)明的另一方面,提供了一種將具有已知上下文模型的數(shù)據(jù)序列進(jìn)行編碼的方法,包括將該數(shù)據(jù)序列變換為不可約上下文相關(guān)文法;將該不可約上下文相關(guān)文法轉(zhuǎn)換為其分類形式;從該分類的不可約上下文相關(guān)文法中,構(gòu)造一個(gè)產(chǎn)生的序列;并使用自適應(yīng)上下文相關(guān)算術(shù)編碼,將產(chǎn)生的序列進(jìn)行編碼。
本發(fā)明還涉及一種方法,它將與已知上下文模型相關(guān)聯(lián)的原始數(shù)據(jù)序列順序地變換為不可約上下文相關(guān)文法的序列;并且根據(jù)每個(gè)不可約上下文相關(guān)文法,使用自適應(yīng)上下文相關(guān)算術(shù)編碼,對(duì)該數(shù)據(jù)序列進(jìn)行編碼。該方法包括以下步驟從該序列中解析子串;通過利用前一個(gè)不可約上下文相關(guān)文法的結(jié)構(gòu)和使用自適應(yīng)上下文相關(guān)算術(shù)編碼,對(duì)該子串進(jìn)行編碼;根據(jù)該子串、當(dāng)前上下文和前一個(gè)不可約上下文相關(guān)文法,產(chǎn)生容許的上下文相關(guān)文法;將一個(gè)約簡(jiǎn)規(guī)則集合應(yīng)用于該容許的上下文相關(guān)文法,從而產(chǎn)生一個(gè)新的不可約上下文相關(guān)文法;重復(fù)這些步驟,直到該系列所有的符號(hào)都被解析和編碼。


通過參考以下結(jié)合附圖的描述,可以更好地理解本發(fā)明的上述和更多優(yōu)點(diǎn)圖1是根據(jù)本發(fā)明實(shí)施例的上下文相關(guān)文法變換的一系列操作的流程圖;圖2是根據(jù)本發(fā)明的實(shí)施例,在已知上下文情況下解析輸入字符串的子串的一系列操作的流程圖;圖3是根據(jù)本發(fā)明的實(shí)施例,更新不可約上下文相關(guān)文法的一系列操作的流程圖;圖4是根據(jù)本發(fā)明的實(shí)施例,將約簡(jiǎn)規(guī)則集合應(yīng)用于順序壓縮具有已知上下文和前一個(gè)已知上下文相關(guān)文法的輸入字符串的一系列操作的流程圖;圖5、圖6、圖7、圖8和圖9是根據(jù)本發(fā)明的實(shí)施例,將約簡(jiǎn)規(guī)則應(yīng)用于壓縮具有已知上下文和前一個(gè)已知上下文相關(guān)文法的輸入字符串的一系列操作的流程圖;圖10是根據(jù)本發(fā)明的實(shí)施例,將產(chǎn)生的序列進(jìn)行編碼的等級(jí)式方法的流程圖;圖11是使用順序上下文相關(guān)方法的一個(gè)實(shí)施例對(duì)具有已知上下文的輸入字符串進(jìn)行編碼的流程圖;圖12是根據(jù)本發(fā)明的實(shí)施例,使用上下文相關(guān)文法變換方法的數(shù)據(jù)壓縮裝置的框圖。
具體實(shí)施例方式
本發(fā)明的描述中采用了以下符號(hào)A用于表示一個(gè)基數(shù)大于或等于2的信源字母表;A*用于表示從A中提取的所有有限字符串(包括空字符串λ)的集合;A+用于表示從A中提取的所有具有正長(zhǎng)度的有限字符串的集合;符號(hào)|A|表示A的基數(shù),并且對(duì)于任意x∈A*,|x|表示x的長(zhǎng)度;對(duì)于任意正整數(shù)n,An表示A中長(zhǎng)度為n的所有序列的集合;由A構(gòu)成的序列也可以被稱為A序列;x∈A+用于表示待壓縮的序列。信源字母表A是跟應(yīng)用相關(guān)的。定義一個(gè)可數(shù)的符號(hào)集合S={s0,s1,s2,…},它與A∪C不相交。S中的符號(hào)被稱為變量;A中的符號(hào)被稱為終結(jié)符。對(duì)于任意j≥1,令S(j)={s0,s1,s2,…,sj-1}。
C用于定義任意上下文集合,集合C可以是有限的或無(wú)限的。在通常的上下文模型中,對(duì)于從字母表A提取的任意序列x=x1x2…xn,存在一個(gè)來(lái)自C的上下文序列C1C2…Cn。在這個(gè)上下文序列中,每一個(gè)Ci表示xi的上下文。對(duì)xi進(jìn)行編碼之前,可通過某種方式,根據(jù)所有歷史x1x2…xi-1和C1確定Ci。此關(guān)系的表達(dá)式為Ci+1=f(x1,…,xi,C1),i=1,2,…,(1)其中C1∈C是初始的固定上下文,f是一種映射關(guān)系,在這里指“下一個(gè)上下文函數(shù)”??梢詫⑸鲜鲂再|(zhì)進(jìn)一步擴(kuò)展到所謂的可數(shù)上下文模型,其中式(1)式仍成立,并且上下文集合C是可數(shù)無(wú)限的。
G用來(lái)表示從C×S(j)的子集到(S(j)∪A)+的上下文相關(guān)文法的映射關(guān)系,其中,j≥1。集合S(j)表示G的變量集合,S(j)中的元素被稱為G變量。于是,G的域可表示為ΩG(Ki,ji)C×S(j),其中K是域中不同上下文的個(gè)數(shù)。在ΩG(Ki,ji)中,有一個(gè)特殊對(duì)(C1,s0)∈ΩG(Ki,ji),它表示初始對(duì),其中C1用于標(biāo)識(shí)初始上下文。
描述變量、其上下文與上下文相關(guān)文法之間映射關(guān)系的一種方法是對(duì)于每對(duì)(Ck,si)∈ΩG(Ki,ji),將關(guān)系(si|Ck,G(si|Ck))定義為si|Ck→G(si|Ck),作為產(chǎn)生規(guī)則(production rule)。然后,就可以用一個(gè)產(chǎn)生規(guī)則集合完全描述上下文相關(guān)文法G,即{si|Ck→G(si|Ck)(CK,si)∈ΩG(Ki,ji),0≤i<j,0<k<∞}。
在一個(gè)示例性的實(shí)施例中,參照?qǐng)D1,根據(jù)本發(fā)明,方法100可用于執(zhí)行數(shù)據(jù)壓縮。方法100的輸入為已知的上下文102和輸入字符串104。解析器接收上下文102和輸入字符串104,并將輸入字符串104解析為不重疊子串的集合(步驟106)。圖2中的方法200進(jìn)一步示出了解析步驟(步驟202)。解析步驟(步驟202)包括確定當(dāng)前子串的上下文(步驟202),以及確定是否能在當(dāng)前上下文下表示當(dāng)前子串(步驟204)。如果不能由當(dāng)前上下文下表示當(dāng)前子串,則設(shè)置當(dāng)前子串等于當(dāng)前上下文下的下一個(gè)符號(hào)(步驟206)。或者,如果當(dāng)前子串能由當(dāng)前上下文表示,則設(shè)置當(dāng)前子串等于表示該子串的最長(zhǎng)前綴(步驟208)?;氐綀D1,解析器將該子串傳輸?shù)缴舷挛南嚓P(guān)文法更新設(shè)備,然后其更新上下文相關(guān)文法G(步驟108)。圖3中的方法300進(jìn)一步示出了更新步驟(步驟108)。如果當(dāng)前解析的字符串的長(zhǎng)度大于1(步驟302),則在前一個(gè)不可約的上下文相關(guān)文法的末尾添加當(dāng)前變量(步驟304),然后應(yīng)用如下所述的約簡(jiǎn)規(guī)則集合(步驟308)?;蛘?,如果當(dāng)前解析的字符串的長(zhǎng)度不大于1,則在前一個(gè)不可約的上下文相關(guān)文法的末尾添加當(dāng)前符號(hào)(步驟306),然后,應(yīng)用如下所述的約簡(jiǎn)規(guī)則集合(步驟308)。再回到圖1,如果輸入字符串沒有被完全解析(步驟110),則經(jīng)過一個(gè)延時(shí)之后重復(fù)該方法(步驟112)。然后,上下文相關(guān)算術(shù)編碼器將該文法壓縮成二進(jìn)制碼字(步驟114)。
示例1在此示例中,信源字母表被定義為A={0,1}。此外,可定義一個(gè)可數(shù)的上下文模型,使得C={0,1},其下一個(gè)上下文函數(shù)f為Ci+1=xi。變量集合為{s0,s1,s2}且初始對(duì)為(0,s0)的上下文相關(guān)文法G的一個(gè)可能例子是s0|0→s1s11s20s1s2s10s1|0→001
s1|1→01s2|1→1s1在上面的示例1中,可以用變量集合S(j)和初始對(duì)(C1,s0)定義G。通過從G(s0|C1)中的左邊重復(fù)替換第一個(gè)變量s的G(s|C)(其中C是根據(jù)上面的公式(1)由C1及G(s0|C1)中直到s的前綴進(jìn)行確定的),將滿足下列條件之一(1)在有限次數(shù)的替換步驟之后,從A中獲得一個(gè)序列;(2)因?yàn)檫@樣獲得的每個(gè)字符串都包含一個(gè)G變量的入口,所以替換過程永不結(jié)束;(3)因?yàn)閟|C對(duì)應(yīng)的產(chǎn)生規(guī)則未在G中定義,所以替換過程不能繼續(xù)。
繼續(xù)來(lái)看示例1,如果滿足條件(1)-(3),可做以下替換 在以上示例1中,通過執(zhí)行以下過程,可以從A中獲得一個(gè)序列。從s0|0→G(s0|0)開始,重復(fù)應(yīng)用連續(xù)替換過程。九個(gè)步驟之后(每次出現(xiàn)符號(hào) 就表示替換過程的一步),連續(xù)替換過程結(jié)束。此外,在整個(gè)替換過程中,使得si|Ck的產(chǎn)生規(guī)則定義于G中的上下文Ck(1≤k≤2)下的每一個(gè)變量si(0≤i<3)至少被G(si|Ck)替換一次。因此,此例中,在上下文0(或G)下,s0表示序列x=0010111010001101010。每一個(gè)其他G變量表示x的一個(gè)或更多的子串當(dāng)上下文0時(shí),s1表示001;當(dāng)上下文為1時(shí),s1表示01;當(dāng)上下文為1時(shí),s2表示101。為了進(jìn)一步說(shuō)明此方法的上下文相關(guān)特征,應(yīng)該注意的是子串“01”在上下文相關(guān)文法G的范圍內(nèi)出現(xiàn)了兩次。然而,在上下文相關(guān)的意義上來(lái)說(shuō),這兩個(gè)子串并不是重復(fù)的字符串,因?yàn)槊恳粋€(gè)子串都有不同的上下文。
如果滿足下列條件,一種容許的上下文相關(guān)文法G就可以被定義為不可約的(1)對(duì)于任意上下文C,使得(C,s)∈ΩG(K,j)\{(C1,s0)}的每一個(gè)G變量s在上下文C下在范圍G內(nèi)至少出現(xiàn)兩次;(2)就上下文相關(guān)意義來(lái)說(shuō),在范圍G內(nèi)不存在長(zhǎng)度大于或等于2的不重疊的重復(fù)模式;(3)在相同上下文C下,每一個(gè)不同的G變量s∈{s(C,s)∈ΩG(K,j)}表示不同的A序列。
因此,上述示例1中容許的上下文相關(guān)文法是不可約的。
文法變換是將任意的數(shù)據(jù)序列x∈A+變換為表示x的容許的上下文相關(guān)文法Gx的變換。如果對(duì)于所有的x∈A+,Gx都是不可約的,則該文法變換就是不可約的。從表示x的一個(gè)容許的上下文相關(guān)文法G開始,可以重復(fù)應(yīng)用一個(gè)約簡(jiǎn)規(guī)則集合,從而生成另一個(gè)容許的上下文相關(guān)文法G′,它表示相同的x并滿足以下性質(zhì)
(1)與x的長(zhǎng)度相比,G的大小|G|應(yīng)該足夠?。?2)當(dāng)上下文相同時(shí),不同的G變量所表示的A字符串是不同的;(3)在G的范圍內(nèi),G的變量和終結(jié)符的上下文相關(guān)頻率分布應(yīng)該使得能夠應(yīng)用有效的上下文相關(guān)算術(shù)編碼。
圖4示出了應(yīng)用一個(gè)約簡(jiǎn)規(guī)則集合的示例性方法400,它可以順序構(gòu)造一個(gè)不可約上下文相關(guān)文法的序列,通過此序列,可以遞增地恢復(fù)原始數(shù)據(jù)序列。提取出前一個(gè)文法約簡(jiǎn)比特I(步驟402)。將α定義為前一個(gè)不可約的上下文相關(guān)文法中的初始變量和上下文對(duì)s0|C1所對(duì)應(yīng)的產(chǎn)生規(guī)則的最后一個(gè)符號(hào)(步驟408)。將C定義為α的上下文(步驟410)。將β定義為中間文法G′i-1中的初始變量和上下文對(duì)s0|C1所對(duì)應(yīng)的產(chǎn)生規(guī)則的最后一個(gè)符號(hào)(步驟412)。判斷上下文C時(shí)αβ是否出現(xiàn)在G′i-1中的兩個(gè)不重疊位置(步驟414)。如果否,則設(shè)置當(dāng)前的不可約文法為G′i-1(步驟416),并設(shè)置當(dāng)前的文法比特I為0(步驟418)。如果αβ在上下文C時(shí)出現(xiàn)于G′i-1中的兩個(gè)不重疊位置,則進(jìn)一步判斷前一個(gè)文法比特是否等于1(步驟420)。
如果前一個(gè)文法比特不等于1,則進(jìn)一步判斷在相同上下文情況下αβ是否重復(fù)自身出現(xiàn)在G′i-1(s0|C1)中兩個(gè)不重疊位置(步驟422)。如果重復(fù),則對(duì)G′i-1應(yīng)用一次約簡(jiǎn)規(guī)則2(步驟428),將當(dāng)前不可約上下文相關(guān)文法設(shè)置為所得的文法(步驟426),并將當(dāng)前的文法比特I設(shè)置為1(步驟428)。如果不重復(fù),則對(duì)G′i-1應(yīng)用一次約簡(jiǎn)規(guī)則3(步驟430),將當(dāng)前不可約上下文相關(guān)文法設(shè)置為所得的文法(步驟426),并將當(dāng)前的文法比特I設(shè)置為1(步驟428)。
回到前一個(gè)文法比特等于1的情況(步驟420),進(jìn)一步判斷αβ是否在相同上下文情況下重復(fù)自身出現(xiàn)在G′i-1(s0|C1)中兩個(gè)不重疊位置(步驟432)。如果重復(fù),則對(duì)G′i-1先應(yīng)用約簡(jiǎn)規(guī)則2一次,然后再應(yīng)用約簡(jiǎn)規(guī)則1(步驟434),將當(dāng)前不可約的上下文相關(guān)文法設(shè)置為所得的文法(步驟426),并將當(dāng)前的文法比特I設(shè)置為1(步驟428)。如果不重復(fù),則對(duì)G′i-1應(yīng)用約簡(jiǎn)規(guī)則3一次,然后再應(yīng)用約簡(jiǎn)規(guī)則1(步驟436),將當(dāng)前不可約的上下文相關(guān)文法設(shè)置為所得的文法(步驟426),并將當(dāng)前的文法比特I設(shè)置為1(步驟428)。
圖5示出了應(yīng)用約簡(jiǎn)規(guī)則1的方法500。將s定義為容許的上下文相關(guān)文法G的一個(gè)變量,在G范圍內(nèi)上下文為C時(shí)它僅出現(xiàn)一次(步驟502)。定義產(chǎn)生規(guī)則 其中,上下文為C時(shí)s出現(xiàn)在右邊(步驟504)。定義對(duì)(C,s)所對(duì)應(yīng)的產(chǎn)生規(guī)則s|C→γ(步驟506)。通過從G中刪除產(chǎn)生規(guī)則s|C→γ,并將產(chǎn)生規(guī)則 替換為產(chǎn)生規(guī)則 來(lái)將G約簡(jiǎn)為容許的上下文相關(guān)文法G′,所得的上下文相關(guān)文法G′與G表示相同的序列(步驟508)。
圖6示出了應(yīng)用約簡(jiǎn)規(guī)則2的方法600。將G定義為容許的上下文相關(guān)文法,其具有形式為s|C→α1βα2βα3的產(chǎn)生規(guī)則,其中β的長(zhǎng)度至少為2,并且β在這兩個(gè)位置的上下文等于相同的上下文C′(步驟602)。定義新的產(chǎn)生規(guī)則s′|C′→β,其中(C′,s′)是G域中沒有的新的上下文和變量的對(duì)(步驟604)。通過將G的產(chǎn)生規(guī)則s|C→α1βα2-βα3替換為s|C→α1s′α2s′α3,并添加產(chǎn)生規(guī)則s′|C′→β,來(lái)將G約簡(jiǎn)為新的上下文相關(guān)文法G′,所得的文法G′包括新的上下文和變量的對(duì)(C′,s′),并且,并且與G表示相同的序列x(步驟608)。
圖7示出了應(yīng)用約簡(jiǎn)規(guī)則3的方法700。定義G為容許的上下文相關(guān)文法,其具有形式分別為s|C→α1βα2和s′|C′→α3βα4的兩個(gè)不同的產(chǎn)生規(guī)則,其中β的長(zhǎng)度至少為2,這兩個(gè)位置的β的上下文等于相同的上下文C″,α1或α2不為空,并且α3或α4不為空(步驟702)。定義一個(gè)新的產(chǎn)生規(guī)則s″|C″→β,其中(C″,s″)是不在G的域中的新的上下文和變量的對(duì)(步驟704)。通過用s|C→α1s″α替換產(chǎn)生規(guī)則s|C→α1βα2,并用s′|C′→α3s″α4替換產(chǎn)生規(guī)則s′|C′→α3βα4,并附加新的規(guī)則s″|C″→β,來(lái)將G約簡(jiǎn)成新的上下文相關(guān)文法G′(步驟706)。
圖8示出了應(yīng)用約簡(jiǎn)規(guī)則4的方法800。定義G為容許的上下文相關(guān)文法,其具有形式為s|C→α1βα2和s′|C′→β的兩個(gè)產(chǎn)生規(guī)則,其中β的長(zhǎng)度至少為2,s|C→α1βα2中β的上下文也等于C′,并且α1和α2中之一不為空(步驟802)。通過用新的產(chǎn)生規(guī)則s|C→α1s′α2替換所述產(chǎn)生規(guī)則s|C→α1βα2,將G約簡(jiǎn)為上下文相關(guān)文法G′(步驟804)。
圖9示出了應(yīng)用約簡(jiǎn)規(guī)則5的方法900。定義G為容許的上下文相關(guān)文法,其中,給定上下文C情況下兩個(gè)變量s和s′表示由G所表示的A序列的相同子串(步驟902)。在G范圍內(nèi),只要s′的上下文等于C,就用s替換每一個(gè)s′的出現(xiàn),并刪除(C,s′)所對(duì)應(yīng)的產(chǎn)生規(guī)則,從而將G約簡(jiǎn)成新的上下文相關(guān)文法G′(步驟904)。判斷文法G′是否為容許的上下文相關(guān)文法(步驟906)。文法G′可能不是容許的,因?yàn)樵贕′的連續(xù)替換過程中可能沒有包括一些G′變量。如果這是真的,則通過刪除連續(xù)約簡(jiǎn)過程中不包括的變量G′所對(duì)應(yīng)的所有產(chǎn)生規(guī)則,來(lái)進(jìn)一步把G′約簡(jiǎn)為上下文相關(guān)文法G″ (步驟908),否則,解析下一字符串(步驟910)。
本發(fā)明的一個(gè)方面包括一個(gè)貪婪的上下文相關(guān)文法變換,在一個(gè)實(shí)施例中,此文法變換將壓縮A中的數(shù)據(jù)序列x=x1,x2,…xn。不可約的上下文相關(guān)文法變換被描述為貪婪的,它把序列x解析成不重疊的子串{x1,x2…xn2,…,xni-1+1…xni}并順序?yàn)槊總€(gè)x1…xni建立不可約的上下文相關(guān)文法,其中1≤i≤t,n1=1且ni=n。在這種情況下,第一個(gè)子串x1和相應(yīng)的不可約上下文相關(guān)文法G1只包含一個(gè)產(chǎn)生規(guī)則s0|C1→x1,其中C1是初始上下文。假設(shè){x1,x2…xn2,…,xni-1+1…xni}已經(jīng)被解析且x1…xni相應(yīng)的不可約上下文相關(guān)文法Gi已經(jīng)建立。假設(shè)G1的變量集合是S(ji)={s0,s1,···sji-1},]]>其中j1=1,Gi的域是ΩG(Ki,ji)。令Cni+1是由可數(shù)上下文模型生成的xni+1的上下文。如果xni+1…xn存在最長(zhǎng)前綴,其在上下文Cni+1時(shí)能由sj∈{s:(Cni+1,s)∈ΩG(Ki,ji)}]]>表示,則下一子串xni+1…xni+1就是該最長(zhǎng)前綴。否則,ni+1=ni+1時(shí),Xni+1…xni+1=Xni+1。如果ni+1-ni>1且在上下文Cni+1時(shí)Xni+1…xni+1由sj表示,那么在Gi(s0|C1)右端添加sj;否則,在Gi(s0|C1)右端添加符號(hào)xni+1。所得的上下文相關(guān)文法是容許的,但未必是不可約的。應(yīng)用約簡(jiǎn)規(guī)則1至5,將該上下文相關(guān)文法約簡(jiǎn)成不可約的上下文相關(guān)文法Gi+1。約簡(jiǎn)之后,Gi+1表示序列x1…xni+1。重復(fù)該過程,直到整個(gè)序列x被處理得到表示序列x的最終不可約上下文相關(guān)文法Gt。
示例2下面的示例說(shuō)明上述方法。定義A={0,1}且x=0001001100001111001111。使用可數(shù)上下文模型C={0,1}以及下一個(gè)上下文函數(shù)f為Ci+1=xi對(duì)x應(yīng)用上述不可約的上下文相關(guān)文法變換。前三個(gè)解析的子串是0,0和0。假設(shè)初始上下文C1=0,相應(yīng)的不可約上下文相關(guān)文法G1,G2和G3分別用{s0|0→0},{s0|0→00}和{s0|0→000}表示。由于j3=1,第四個(gè)解析的子串為x4=1。在G3(s0|0)的末尾添加符號(hào)1,得到由{s0|0→0001}表示的容許的上下文相關(guān)文法G3′。G3′本身是不可約的,因此沒有約簡(jiǎn)規(guī)則能被應(yīng)用,并且G4等于G3′。
繼續(xù)上面的示例2,第五和第六個(gè)解析短語(yǔ)分別是x5=0和x6=0。G6表示為{s0|0→000100}。第七個(gè)解析短語(yǔ)是x7=1。在G6(s0|0)的末尾添加符號(hào)1,所得容許的上下文相關(guān)文法G6′表示為s0|0→0001001。G7′不是不可約的,因?yàn)樵贕6′范圍內(nèi)同樣的上下文0時(shí)有不重疊的重復(fù)模式01。應(yīng)用約簡(jiǎn)規(guī)則2一次,我們可得到不可約的上下文相關(guān)文法G7,表示為s0|0→00s10s1s1|0→01根據(jù)G7,接下來(lái)的五個(gè)解析短語(yǔ)分別是x8=1,x9=1,x10=1,x11=0和x12=0。在G7(s0|0)的末端添加解析的短語(yǔ),依次產(chǎn)生不可約的上下文相關(guān)文法G9至G12。第十三個(gè)解析的短語(yǔ)是x13=0。在G12(s0|0)的末尾添加符號(hào)0并應(yīng)用一次約簡(jiǎn)規(guī)則2,得到以下不可約的上下文相關(guān)文法G13s0|0→s2s10s11110s2s1|0→01s2|0→00當(dāng)前上下文為0的情況下,剩下未解析的字符串為01111001111。在此例中,由于上下文為0時(shí)由s1表示的來(lái)自A的序列匹配上下文同樣為0情況下x的剩余部分的前綴,所以,下一個(gè)解析短語(yǔ)是x14x15=01。在G13(s0|0)的末端添加符號(hào)s1,得到容許的上下文相關(guān)文法G13′s0|0→s2s10s11110s2s1s1|0→01s2|0→00因?yàn)樯舷挛臑?時(shí)s2s1重復(fù),所以G13′不是不可約的。應(yīng)用約簡(jiǎn)規(guī)則2,得到不可約的上下文相關(guān)文法G13″s0|0→s30s11110s3s1|0→01s2|0→00s3|0→s2s1在上面的文法中,在G13″的范圍內(nèi)上下文為0時(shí),變量s2只出現(xiàn)了一次,因此應(yīng)用一次約簡(jiǎn)規(guī)則1,得到不可約的上下文相關(guān)文法G14
s0|0→s20s11110s2s1|0→01s2|0→00 s1繼續(xù)該方法,產(chǎn)生最終不可約的上下文相關(guān)文法G22s0|0→s20s1s1s2s1s1s2s1|0→01s1|1→s20s2|0→00s1s2|1→111這樣,不可約的上下文相關(guān)文法變換將x解析成{0,0,0,1,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,1,1,1,1}。
本發(fā)明的另一方面(表示為1000)如圖10所示,在這里表示為“等級(jí)式上下文相關(guān)方法”。此方法包括一個(gè)貪婪的不可約上下文相關(guān)變換,然后對(duì)最終不可約上下文相關(guān)文法Gt進(jìn)行上下文相關(guān)算術(shù)編碼。數(shù)據(jù)序列首先被變換為不可約的上下文相關(guān)文法(步驟1002),然后再被轉(zhuǎn)換成其分類形式(步驟1004)。從該分類文法構(gòu)造產(chǎn)生的序列(步驟1006),并使用具有動(dòng)態(tài)字母表的自適應(yīng)上下文相關(guān)算術(shù)編碼對(duì)該產(chǎn)生的序列進(jìn)行編碼(步驟1008)。
作為一個(gè)示例,令χ為待編碼的A序列,令G1為表示由我們的不可約上下文相關(guān)文法變換提供的χ的最終不可約上下文相關(guān)文法。在等級(jí)式上下文相關(guān)方法中,具有動(dòng)態(tài)字母表的上下文相關(guān)算術(shù)編碼用于對(duì)G1(或其等價(jià)形式)進(jìn)行編碼。接收到二進(jìn)制碼字之后,解碼器恢復(fù)G1(或其等價(jià)形式),然后執(zhí)行如示例1所示的連續(xù)替換過程,從而得到χ。
一個(gè)實(shí)施例首先示出了容許的上下文相關(guān)文法G如何推導(dǎo)出序列χ∈An的一部分,然后進(jìn)一步描述了分類的上下文相關(guān)文法的概念。令ΩG表示ΩG(K,j)動(dòng)態(tài)變化的子集;開始時(shí),ΩG為空。令u(0)=G(s0|C1);其中u(0)是來(lái)自(S(j)∪A)的序列。如果j=1,或等價(jià)為如果u(0)中沒有變量,那么,u(0)本身指由G所推導(dǎo)出的部分序列。否則,執(zhí)行下面的步驟步驟1設(shè)置i=0;步驟2對(duì)于i≥0,從左向右讀取u(i),用G(s|C)替換不在ΩG中的第一對(duì)(C,s),其中C是由上下文模型確定的s的上下文,所得的序列用u(i+1)表示;步驟3將對(duì)(C,s)插入ΩG,從而更新ΩG;步驟4對(duì)于i=0,1,…,|ΩG(K,j)|-1,重復(fù)步驟2和步驟3,以使每一對(duì)(C,s)∈ΩG(K,j)\{(C1,s0)}正好被G(s|C)替換一次。
最終的序列u(|ΩG(|(K,j)|-1)被稱為由G導(dǎo)出的部分序列。如果在上面的過程中,動(dòng)態(tài)集合ΩG以這樣的方式擴(kuò)增對(duì)每個(gè)出現(xiàn)在ΩG(K,j)中的上下文C,對(duì)于任何有意義的i>0,(C,si)出現(xiàn)于(C,si+1)之前,那么,上下文相關(guān)文法G被稱為分類形式。
在示例2所示的G22中,|ΩG(K,j)|=5。五個(gè)序列u(0),…,u(4)為
u(0)=s20s1s1s2s1s1s2,u(1)=00s10s1s1s2s1s1s2,u(2)=00010s1s1s2s1s1s2,u(3)=00010s1s20s2s1s1s2,u(4)=00010s11110s2s1s1s2。
部分序列u(4)將序列x解析為0,0,0,1,0,01,1,1,1,0,0001,1110,01,111。將以上子串連接,重建原始序列x。動(dòng)態(tài)集合ΩG按照(0,s2),(0,s1)(1,s1)和(1,s2)的順序擴(kuò)增。因而,在此例中,G22不是分類形式。
現(xiàn)在,可以使用等級(jí)式上下文相關(guān)方法,對(duì)序列進(jìn)行編碼,其如例2所示。如上所述,最終不可約的上下文相關(guān)文法G22不是分類形式。通過下式,將G22轉(zhuǎn)換成分類形式G22ss0|0→s10s2s1s1s1s2s2s1|0→00s2s1|1→s20s2|0→01s2|1→111.
在例2中,為了從G22獲得G22s,可將G22中上下文0時(shí)的變量s1、s2分別重命名為G22s中上下文0時(shí)的s2、s1。需要注意的是,G22和G22s表示相同的序列x?,F(xiàn)在,將G22s而非G22進(jìn)行編碼和傳輸。對(duì)G22s應(yīng)用上面步驟1-4中所述的過程,得到由G22s導(dǎo)出的部分序列u(4)=00010S21110S1S1S2S2令α是Gi(s0|C1)的最后一個(gè)符號(hào), 是α的上下文。為了解決G22s無(wú)法從部分序列恢復(fù)的事實(shí),將該過程稍做修改。具體為,在步驟2中,用[G(s|C)]替換不在ΩG中的一對(duì)的第一個(gè)變量s及其上下文C,并且相應(yīng)的序列被表示為(i),i=0,…,|ΩG(K,j)|-1。將修改的過程應(yīng)用于G22s,得到來(lái)自(S(j)∪A)∪{[,]}]]>的以下序列u(4)=
]0S2[[111]0]S1S1S2S2該序列被稱為由G22或其分類形式G22s產(chǎn)生的序列。由于引入了符號(hào)[和],對(duì)關(guān)聯(lián)的可數(shù)上下文模型的下一個(gè)上下文函數(shù)f稍做修改,使得對(duì)于每一個(gè)C∈C,C=f(C,[)和C=f(C,]),即[和]僅僅接替(relay)上下文。因此,可以從由G22s所產(chǎn)生的序列 中恢復(fù)G22s和序列x。 中合法的括號(hào)對(duì)[和]的個(gè)數(shù)等于除(C1,s0)之外G22s的域中的變量和上下文對(duì)的個(gè)數(shù);上下文C時(shí)第i個(gè)合法的括號(hào)對(duì)[和]內(nèi)的內(nèi)容產(chǎn)生對(duì)應(yīng)于si|C的產(chǎn)生規(guī)則。因此,可以從 推斷出每一個(gè)變量s在給定的上下文時(shí)表示什么,因此使用分類的CDG G22s而非原始的CDGG22。為了壓縮G22s或序列x,使用具有動(dòng)態(tài)字母表的上下文相關(guān)算術(shù)編碼對(duì)由G22s生成的序列進(jìn)行編碼。需要注意的是編碼器和解碼器都知道關(guān)聯(lián)的可數(shù)上下文模型。每一對(duì)(C,β)∈(C×S)∪(C×(A∪{[,]}))]]>與一個(gè)計(jì)數(shù)器c(C,β)相關(guān)聯(lián),如果c(C,β)∈C×(A∪{[,]}),]]>設(shè)置c(C,β)為1,否則設(shè)置c(C,β)為0。按照下列步驟,對(duì)根據(jù)G22s所生成的序列中的每一個(gè)符號(hào)β進(jìn)行編碼并更新相關(guān)的計(jì)數(shù)器步驟1在上下文C(初始時(shí)C=C1)的情況下,使用概率c(C,β)/∑c(C,α)對(duì)β進(jìn)行編碼,其中求和符號(hào) 針對(duì)使c(C,α)≠0的所有符號(hào)α∈S∪A∪{[,]}]]>進(jìn)行求和;步驟2將c(C,β)加1;步驟3 在由G生成的序列中,如果β=]且對(duì)應(yīng)于β的合法的括號(hào)對(duì)是上下文C′時(shí)的第i個(gè)括號(hào)對(duì)(其中,C′是此括號(hào)對(duì)中[的上下文],則將計(jì)數(shù)器c(C′,si)由0增加到1;步驟4確定產(chǎn)生的序列中下一短語(yǔ)的下一個(gè)上下文C。
重復(fù)以上過程直到將整個(gè)產(chǎn)生的序列編碼。對(duì)于上面所示的產(chǎn)生的序列 算術(shù)編碼處理中所使用的概率積是141526273819142516112172819210311312214113114116215117]]>總之,要對(duì)最終的不可約CDG Gi編碼,首先要把Gi轉(zhuǎn)換成它的分類形式Gis,然后根據(jù)Gi構(gòu)造生成的序列,最后使用具有動(dòng)態(tài)字母表的上下文相關(guān)算術(shù)編碼,對(duì)生成的序列進(jìn)行編碼。
圖11還示出了本發(fā)明的另一方面,即方法1100,在這里表示為“順序上下文相關(guān)方法”,其包括使用具有動(dòng)態(tài)字母表的上下文相關(guān)算術(shù)編碼對(duì)解析短語(yǔ)序列x1,x2…xn2,…,xni-1+1…xni進(jìn)行編碼。已知的上下文102和輸入字符串104作為輸入,并被解析為不重疊的字符串(步驟106)。使用前一個(gè)不可約上下文相關(guān)文法的結(jié)構(gòu)并使用具有動(dòng)態(tài)字母表的自適應(yīng)上下文相關(guān)算術(shù)編碼,對(duì)每一個(gè)解析的子串進(jìn)行編碼(步驟1101)。生成和更新上下文相關(guān)文法(步驟108),直到該字符串被完全解析(步驟110)。
與等級(jí)式上下文相關(guān)方法一樣,各對(duì)(C,β)∈(C×S)∪(C×A)都與計(jì)數(shù)器c(C,β)相關(guān)聯(lián),如果(C,β)∈C×A,此計(jì)數(shù)器初始值被設(shè)置為1,否則被設(shè)置為0。每個(gè)短語(yǔ)在給定的上下文條件下被編碼。假設(shè)x1,x2,…xn2,…,xni-1+1…xni已被編碼且所有相應(yīng)的計(jì)數(shù)器已被更新。進(jìn)一步假設(shè)Gi是x1…xni的相應(yīng)不可約上下文相關(guān)文法且Gi的變量集合等于S(ji)={s0,s1,...,sji-1}.]]>使用貪婪的上下文相關(guān)文法變換解析xni+1…xni+1并用β∈{s1,...,sji-1}∪A]]>表示解析的字符串。按照下列步驟對(duì)β進(jìn)行編碼,并更新相關(guān)計(jì)數(shù)器步驟1確定β的上下文C;步驟2在給定上下文C的條件下使用概率 對(duì)β進(jìn)行編碼,其中求和符號(hào) 針對(duì)使c(C,α)≠0的所有符號(hào)α∈S(ji)∪A]]>進(jìn)行求和;步驟3將c(C,β)加1;步驟4根據(jù)添加的Gi得到Gi+1;步驟5如果Gi+1引入了新對(duì)(C′,S)所對(duì)應(yīng)的新產(chǎn)生規(guī)則,則將計(jì)數(shù)器c(C′,S)從0增加到1。對(duì)所有的解析短語(yǔ)重復(fù)上面的過程,直到整個(gè)序列被處理并編碼。
本發(fā)明的另外一方面,在這里被稱作“改進(jìn)的順序上下文相關(guān)方法”,它包括使用一階算術(shù)編碼對(duì)序列 進(jìn)行編碼,并使用序列 和 的結(jié)構(gòu)改進(jìn)解析短語(yǔ)x1,x2···xn2,···,xni-1+1···xni]]>的序列的編碼。除了上面所定義的計(jì)數(shù)器c(C,γ),(C,γ)∈C×(S∪A)]]>外,還定義了計(jì)數(shù)器cI(0,0)、cI(0,1)、cI(1,0)、cI(1,1)和 計(jì)數(shù)器cI(0,0)、cI(0,1)、cI(1,0)和cI(1,1)用于對(duì)序列 進(jìn)行編碼,并且初始時(shí)都被設(shè)置為等于1。在I(i)=0且I(i+1)=1時(shí),計(jì)數(shù)器 對(duì)第(i+1)個(gè)解析的短語(yǔ)進(jìn)行編碼;在I(i+1)=0時(shí),則用計(jì)數(shù)器c(C,γ)來(lái)編碼。與c(C,γ)一樣,如果(C,γ)∈C×A,則初始時(shí)設(shè)置C^(C,γ)=1,]]>否則設(shè)置為0。與順序上下文相關(guān)方法中一樣,開始的三個(gè)解析短語(yǔ)x1,x2和x3被編碼。而且,因?yàn)镮(1),I(2)和I(3)全是0,沒有必要對(duì)它們進(jìn)行編碼。從第四個(gè)短語(yǔ)開始,首先對(duì)I(i+1)進(jìn)行編碼,然后將其與Gi的結(jié)構(gòu)一起用作附加上下文信息,對(duì)第(i+1)個(gè)解析短語(yǔ)進(jìn)行編碼。
作為進(jìn)一步的說(shuō)明,假設(shè)x1,x2…xn2,…,xni-1+1…xni和I(4)……I(i)已經(jīng)被編碼并且所有相應(yīng)的計(jì)數(shù)器已經(jīng)被更新。進(jìn)一步假設(shè)Gi是x1…xni相應(yīng)的不可約上下文相關(guān)文法,且Gi的變量集合等于S(ji)={s0,s1,…,sj-1}。Gi的域是ΩG(Ki,ji),令j(c,i)為與ΩG(Ki,ji)中任意C相關(guān)聯(lián)的變量(除去s0)的數(shù)目。此外,令α是Gi(s0|C1)的最后一個(gè)符號(hào), 是α的上下文。使用貪婪的上下文相關(guān)文法變換解析xni+1…xni+1,并用β∈{s1,...,sji-1}∪A]]>表示解析的字符串。使用下面的步驟對(duì)I(i+1)和β進(jìn)行編碼并更新相關(guān)計(jì)數(shù)器步驟1使用概率cI(I(i),I(i+1))/(cI(I(i),0)+cI(I(i),1))對(duì)I(i+1)進(jìn)行編碼;步驟2將cI(I(i),I(i+1))加1;步驟3確定β的上下文 步驟4如果I(i+1)=0,使用概率 對(duì)上下文 的β進(jìn)行編碼,其中求和符號(hào) 對(duì)所有使得c(C^,γ)≠0]]>的符號(hào)γ∈S(ji)∪A-L2(α|C^)]]>求和,然后將 加1。否則,如果I(i)=0且I(i+1)=1,則使用概率 對(duì)上下文 的β進(jìn)行編碼,然后將 加1。相反,如果I(i)=1且I(i+1)=1,則不發(fā)送信息,因?yàn)?僅包含一個(gè)元素,解碼器知道β是什么。這里所說(shuō)的列表 包含具有以下性質(zhì)的所有符號(hào)γ∈S(ji)∪A:]]>a)在上下文 時(shí),模式αγ出現(xiàn)于Gi范圍內(nèi);b)上下文 時(shí)的模式αγ不是Gi(s0|C1)的兩個(gè)符號(hào);c)Gi中沒有變量sj使得 等于αγ;以及d)所述列表 包括具有a)和b)性質(zhì)的所有符號(hào) S(ji)∪A.]]>步驟5從附加的Gi獲得Gi+1,相應(yīng)地更新所有列表L1(γ|C)和L2(γ|C);步驟6如果j(C^,j+1)>j(C^,i),]]>這說(shuō)明Gi+1引入了對(duì)應(yīng)于 的新的產(chǎn)生規(guī)則,因而將 和 都加1。重復(fù)此過程直到整個(gè)序列x被處理和編碼。
示例3對(duì)示例2中序列被解析為{0,0,0,1,0,0,1,1,1,1,0,0,0,0,1,1,1,1,0,0,1,1,1,1}的序列x,應(yīng)用上述改進(jìn)的順序上下文相關(guān)方法,進(jìn)行壓縮,其中,相應(yīng)的序列{I(i)}是{0000001000001101110011}。用于對(duì)序列{I(i)}22i=4進(jìn)行編碼的概率積是122334151246576879210132431125363781241348,]]>用于對(duì)解析短語(yǔ)進(jìn)行編碼的概率積是122334111246121124352257124412195823.]]>對(duì)于那些將本發(fā)明提供為軟件程序的實(shí)施例,該程序可以用多種高級(jí)語(yǔ)言中的任意一種進(jìn)行編寫,如FORTRAN、PASCAL、JAVA、C、C++、C#或BASIC。此外,該軟件可以用匯編語(yǔ)言實(shí)現(xiàn),匯編語(yǔ)言專用于駐留在目標(biāo)計(jì)算機(jī)上的微處理器,例如,如果該軟件被配置為運(yùn)行于IBM PC或其它類似PC上,該軟件可用Intel 80x86匯編語(yǔ)言來(lái)實(shí)現(xiàn)。該軟件可以被收錄在制造的產(chǎn)品中,包括、但不限于軟盤、硬盤、光盤、磁帶、PROM、EPROM、EEPROM、現(xiàn)場(chǎng)可編程門陣列(FPGA)或CD-ROM。
在這些實(shí)施例中,該軟件可以被安裝運(yùn)行在任何個(gè)人類型的計(jì)算機(jī)或工作站上,例如PC或PC兼容機(jī)、Apple Macintosh、Sun工作站等等。總之,可以使用任何設(shè)備,只要它能夠?qū)崿F(xiàn)這里描述的所有功能和能力。對(duì)于本發(fā)明來(lái)說(shuō),計(jì)算機(jī)或工作站的具體類型不是重點(diǎn)。
圖12示出了一個(gè)實(shí)施例,其中本發(fā)明為執(zhí)行上述方法的設(shè)備1200。設(shè)備1200包括解析器1206,上下文相關(guān)文法更新設(shè)備1210和上下文相關(guān)文法編碼器1214。解析器1206接收輸入字符串1204和已知的上下文1202作為輸入,并把輸入字符串1204解析成一系列不重疊的子串1208。解析器將子串1208發(fā)送給上下文相關(guān)文法更新設(shè)備1210,上下文相關(guān)文法更新設(shè)備1210產(chǎn)生更新的上下文相關(guān)文法G。上下文相關(guān)文法更新設(shè)備1210將更新的文法G發(fā)送到上下文相關(guān)文法編碼器1214,然后,上下文相關(guān)文法編碼器1214將文法G編碼成壓縮的二進(jìn)制碼字1216。
例如,設(shè)備1200可以是一個(gè)或多個(gè)專用集成電路(ASIC)、現(xiàn)場(chǎng)可編程門陣列(FPGA)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、可編程只讀存儲(chǔ)器(PROM)、可編程邏輯電路(PLD)或只讀存儲(chǔ)設(shè)備(ROM)。在一些實(shí)施例中,可以用一個(gè)或多個(gè)微處理器實(shí)現(xiàn)設(shè)備1200,例如,加利福尼亞州圣克拉拉的英特爾(Intel)公司制造的奔騰系列芯片,或者,伊利諾斯州紹姆堡(Schaumburg)的摩托羅拉(Motorola)公司制造的PowerPC系列芯片。
上面結(jié)合具體的優(yōu)選實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)顯示和描述,但是,本領(lǐng)域技術(shù)人員應(yīng)該理解,在不脫離所附權(quán)利要求書定義的本發(fā)明精神和保護(hù)范圍內(nèi),可以對(duì)本發(fā)明進(jìn)行各種形式和細(xì)節(jié)上的改變。
權(quán)利要求
1.一種將原始數(shù)據(jù)序列順序地變換為不可約上下文相關(guān)文法的方法,所述原始數(shù)據(jù)序列包括多個(gè)符號(hào)且與已知上下文模型相關(guān)聯(lián),根據(jù)所述不可約上下文相關(guān)文法可完全恢復(fù)所述原始數(shù)據(jù),其中,所述不可約上下文相關(guān)文法是由產(chǎn)生規(guī)則集合表示的,這些產(chǎn)生規(guī)則是使用表示所述數(shù)據(jù)序列中的不重疊重復(fù)模式和上下文的變量和上下文的對(duì)的集合所形成的,所述方法適用于任何可數(shù)上下文模型,并包括以下步驟(a)從所述序列中解析子串,其中,如果所述序列以前未解析的符號(hào)的字符串的最長(zhǎng)前綴存在,則所述子串是所述最長(zhǎng)前綴,否則,所述子串是所述序列以前未解析的符號(hào)的字符串的第一個(gè)符號(hào),其中,在當(dāng)前時(shí)間點(diǎn)的上下文時(shí),所述序列以前未解析的符號(hào)的字符串用前一個(gè)不可約上下文相關(guān)文法的變量集合中的變量、而不是變量和上下文對(duì)的集合的初始對(duì)中的初始變量來(lái)表示;(b)根據(jù)所述子串、當(dāng)前上下文和所述前一個(gè)不可約上下文相關(guān)文法,產(chǎn)生容許的上下文相關(guān)文法;(c)將至少一個(gè)約簡(jiǎn)規(guī)則集合應(yīng)用于所述容許的上下文相關(guān)文法,以產(chǎn)生新的不可約上下文相關(guān)文法;(d)重復(fù)步驟(a)至(c),直到用最終不可約上下文相關(guān)文法表示所述序列的所有符號(hào)。
2.如權(quán)利要求1所述的方法,其中,所述應(yīng)用步驟還包括執(zhí)行約簡(jiǎn)規(guī)則的步驟,該約簡(jiǎn)規(guī)則包括以下步驟(a)將s定義為在容許的上下文相關(guān)文法G的范圍內(nèi)在某上下文C時(shí)出現(xiàn)一次的G的變量;(b)定義產(chǎn)生規(guī)則s′|C^→αsβ,]]>其中,在上下文C時(shí),s出現(xiàn)在一組符號(hào)的右邊;(c)定義與對(duì)(C,s)相對(duì)應(yīng)的產(chǎn)生規(guī)則s|C→γ;以及(d)通過從G中刪除所述產(chǎn)生規(guī)則s|C→γ,并將所述產(chǎn)生規(guī)則s′|C^→αsβ]]>替換為產(chǎn)生規(guī)則s′|C^→αγβ.,]]>來(lái)將G約簡(jiǎn)為容許的上下文相關(guān)文法G′,所得的容許的上下文相關(guān)文法G′和G表示等價(jià)的數(shù)據(jù)序列。
3.如權(quán)利要求1所述的方法,其中,所述應(yīng)用步驟還包括執(zhí)行約簡(jiǎn)規(guī)則的步驟,該約簡(jiǎn)規(guī)則包括以下步驟(a)將G定義為具有形式為s|C→α1βα2βα3的產(chǎn)生規(guī)則的容許的上下文相關(guān)文法,其中,β的長(zhǎng)度至少為2,并且β在這兩個(gè)位置的主要上下文等于相同的上下文C′;(b)定義新的產(chǎn)生規(guī)則s′|C′→β,其中,(C′,s′)是G的域中沒有的上下文和變量的新對(duì);以及(c)通過將G的產(chǎn)生規(guī)則s|C→α1βα2βα3替換為s|C→α1s′α2s′α3,并添加產(chǎn)生規(guī)則s′|C′→β,來(lái)將G約簡(jiǎn)為新的上下文相關(guān)文法G′,所得的文法G′具有上下文和變量的新對(duì)(C′,s′),并表示與G等價(jià)的數(shù)據(jù)序列x。
4.如權(quán)利要求3所述的方法,其中,當(dāng)在G′的范圍內(nèi),G′具有所述符號(hào)和上下文的不重疊重復(fù)模式時(shí),執(zhí)行所述約簡(jiǎn)步驟,以替代所述產(chǎn)生規(guī)則集合中的其他規(guī)則。
5.如權(quán)利要求1所述的方法,其中,所述應(yīng)用步驟還包括執(zhí)行約簡(jiǎn)規(guī)則的步驟,該約簡(jiǎn)規(guī)則包括以下步驟(a)將G定義為具有形式為s|C→α1βα2和s′|C′→α3βα4的兩個(gè)產(chǎn)生規(guī)則的容許的上下文相關(guān)文法,其中,β的長(zhǎng)度至少為2,β在這兩個(gè)位置的主要上下文等于相同的上下文C″,α1和α2之一不為空,并且α3和α4之一不為空;(b)定義新的產(chǎn)生規(guī)則s″|C″→β,其中,(C″,s″)是G的域中沒有的上下文和變量的新對(duì);以及(c)通過將產(chǎn)生規(guī)則s|C→α1βα2替換為s|C→α1s″α,并將產(chǎn)生規(guī)則s′|C′→α3βα4替換為s′|C′→α3s″α4,并添加新規(guī)則s″|C″→β,來(lái)將G約簡(jiǎn)為新的上下文相關(guān)文法G′。
6.如權(quán)利要求1所述的方法,其中,所述應(yīng)用步驟還包括執(zhí)行約簡(jiǎn)規(guī)則的步驟,該約簡(jiǎn)規(guī)則包括以下步驟(a)將G定義為具有形式為s|C→α1βα2和s′|C′→β的兩個(gè)產(chǎn)生規(guī)則的容許的上下文相關(guān)文法,其中,β的長(zhǎng)度至少為2,s|C→α1βα2中的β的上下文也等于上下文C′,并且α1和α2之一不為空;(b)通過將所述產(chǎn)生規(guī)則s|C→α1βα2替換為新的產(chǎn)生規(guī)則s|C→α1s′α2,來(lái)將G約簡(jiǎn)為上下文相關(guān)文法G′。
7.如權(quán)利要求1所述的方法,其中,所述應(yīng)用步驟還包括執(zhí)行約簡(jiǎn)規(guī)則的步驟,該約簡(jiǎn)規(guī)則包括以下步驟(a)將G定義為容許的上下文相關(guān)文法,其中,在給定的上下文C時(shí)的兩個(gè)變量s和s′表示由G表示的A序列的相同的子串;(b)通過在G的范圍內(nèi),當(dāng)s′的上下文等于C時(shí),將s′的每次出現(xiàn)替換為s,并刪除(C,s′)所對(duì)應(yīng)的產(chǎn)生規(guī)則,來(lái)將G約簡(jiǎn)為新的上下文相關(guān)文法G′。
8.如權(quán)利要求7所述的方法,其中,所述約簡(jiǎn)步驟還包括以下步驟如果所述文法G′是不容許的,則通過將G′的連續(xù)替換過程中未涉及到的G′的上下文和變量對(duì)所對(duì)應(yīng)的各所述產(chǎn)生規(guī)則刪除,來(lái)將G′進(jìn)一步約簡(jiǎn)為容許的上下文相關(guān)文法G″。
9.一種將原始數(shù)據(jù)序列x=x1x2……xn順序地變換為不可約上下文相關(guān)文法{Gi}i=1i的序列的方法,所述原始數(shù)據(jù)序列包括多個(gè)符號(hào)并與已知上下文模型相關(guān)聯(lián),所述已知上下文模型由可數(shù)上下文集合C和下一個(gè)上下文函數(shù)f給出,可從所述不可約上下文相關(guān)文法的序列中遞增地完全恢復(fù)所述原始數(shù)據(jù)序列x,其中,每個(gè)上下文相關(guān)文法Gi是由產(chǎn)生規(guī)則si|Ci→Gi(si|Ci)的集合表示的,所述產(chǎn)生規(guī)則是由變量集合S(j1)={s0,s1,...,sji-1}]]>以及上下文和變量對(duì)的集合ΩG(Ki,ji)形成的,j1=1,K1=1,并且ΩG(K1,j1)={(C1,s0)},所述方法包括以下步驟(a)將序列x=x1x2……xn解析為t個(gè)不重疊的子串{x1,x2…xn2,...,xni-1+1…xn1},其中n1=1,n1=n,并且對(duì)于每個(gè)1<i≤t,如果以前未解析的符號(hào)的剩余序列xni-1+1…xn存在最長(zhǎng)前綴,則子串xni-1+1…xni(用βi表示)是所述最長(zhǎng)前綴,否則,所述子串就是以前未解析的符號(hào)的剩余序列的第一個(gè)符號(hào)xni-1+1,其中在上下文為Cni-1+1時(shí),該以前未解析的符號(hào)的剩余序列可以由 給出的變量子集中的變量sj來(lái)表示,其中,ΩG(Ki-1,ji-1)是前一個(gè)不可約上下文相關(guān)文法Gi-1的上下文和變量對(duì)的集合;以及(b)根據(jù)當(dāng)前解析的子串βi=xni-1+1···xni,]]>從所述上下文模型確定的當(dāng)前上下文Cni-1+1和所述前一個(gè)不可約上下文相關(guān)文法Gi-1,來(lái)為每個(gè)x1…xni產(chǎn)生不可約上下文相關(guān)文法Gi,其中,G1只包括一個(gè)產(chǎn)生規(guī)則{s0|C1→x1},并且(C1,s0)是初始上下文和變量對(duì)。
10.如權(quán)利要求9所述的方法,其中,將所述序列x=x1x2……xn解析為多個(gè)不重疊子串{x1,x2…xn2,...,xni-1+1…xn1}的步驟還包括以下步驟(a)對(duì)于每個(gè)1<i≤t,確定在時(shí)間點(diǎn)ni-1+1的上下文Cni-1+1;(b)判斷在當(dāng)前上下文Cni-1+1時(shí),剩余未解析的序列xni-1+1……xn的前綴能否由 給出的變量子集中的變量sj表示,其中,ΩG(Ki-1,ji-1)是所述前一個(gè)不可約上下文相關(guān)文法Gi-1的上下文和變量對(duì)的集合;(c)如果xni-1+1…xni在上下文Cni-1+1時(shí)用變量sj表示,則設(shè)置當(dāng)前解析的子串βi等于最長(zhǎng)前綴xni-1+1…xni;(d)如果在當(dāng)前上下文Cni-1+1時(shí),沒有xni-1+1……xn的前綴可以用 給出的變量子集中的變量sj表示,則設(shè)置當(dāng)前解析的子串βi等于xni-1+1,其中,ni=ni-1+1。
11.如權(quán)利要求9所述的方法,其中,根據(jù)當(dāng)前解析的子串βi=xni-1+1···xni,]]>當(dāng)前上下文Cni-1+1和所述前一個(gè)不可約上下文相關(guān)文法Gi-1,為每個(gè)xi…xni產(chǎn)生不可約上下文相關(guān)文法Gi的步驟還包括以下步驟(a)如果ni-ni-1>1并且βi=xni-1+1···xni]]>在上下文Cni-1+1時(shí)用sj表示,則將變量sj添加到Gi-1(s0|C1)的右端,以產(chǎn)生容許的上下文相關(guān)文法Gi-1′;(b)如果ni-ni-1=1,則將符號(hào)xni-1+1添加到Gi-1(s0|C1)的右端,以產(chǎn)生容許的上下文相關(guān)文法Gi-1′;以及(c)將約簡(jiǎn)規(guī)則集合應(yīng)用于Gi-1′,從而為每個(gè)xi…xni產(chǎn)生不可約上下文相關(guān)文法Gi。
12.如權(quán)利要求11所述的方法,其中,所述將約簡(jiǎn)規(guī)則集合應(yīng)用于Gi-1′的步驟還包括以下步驟(a)如果所述容許的上下文相關(guān)文法Gi-2′是可約的,則將與第(i-i)個(gè)解析的子串相關(guān)聯(lián)的文法約簡(jiǎn)比特I(i-1)設(shè)置等于1,如果Gi-2′是不可約的,則將I(i-1)設(shè)置為0;(b)將α定義為Gi-1(s0|C1)的最后一個(gè)符號(hào);(c)將C定義為Gi-1(s0|C1)中的α的上下文;(d)將β定義為Gi-1′(s0|C1)的最后一個(gè)符號(hào);(e)判斷αβ在上下文C時(shí)是否出現(xiàn)在Gi-1′的范圍內(nèi)的兩個(gè)不重疊的位置;(f)如果αβ在上下文C時(shí)沒有出現(xiàn)在Gi-1′的范圍內(nèi)的兩個(gè)不重疊的位置,則設(shè)置Gi等于Gi-1′;(g)如果I(i-1)=0并且αβ在相同的上下文C時(shí)在Gi-1′(s0|C1)中的兩個(gè)不重疊的位置重復(fù)自身,則對(duì)Gi-1′應(yīng)用第一約簡(jiǎn)規(guī)則,以產(chǎn)生Gi,其中,所述第一約簡(jiǎn)規(guī)則包括以下步驟(1)將G定義為具有形式為s|C^→α1αγ2αγ3]]>的產(chǎn)生規(guī)則的容許的上下文相關(guān)文法,其中,γ的長(zhǎng)度至少為2,并且γ在這兩個(gè)位置的主要上下文等于相同的上下文C′;(2)定義新的產(chǎn)生規(guī)則s′|C′→γ,其中,(C′,s′)是G的域中沒有的上下文和變量的新對(duì);以及(3)通過將G的產(chǎn)生規(guī)則s|C^→α1αγ2αγ3]]>替換為s|C^→α1s′α2s′α3,]]>并添加所述產(chǎn)生規(guī)則s′|C′→γ,來(lái)將G約簡(jiǎn)為新的上下文相關(guān)文法 所得的文法 具有上下文和變量的新對(duì)(C′,s′),且表示與G等價(jià)的數(shù)據(jù)序列x;(h)如果I(i-1)=0并且αβ在相同的上下文C時(shí)在Gi-1′而非Gi-1′(s0|C1)的范圍內(nèi)的兩個(gè)不重疊的位置重復(fù)自身,則對(duì)Gi-1′應(yīng)用第二約簡(jiǎn)規(guī)則,以產(chǎn)生Gi,其中,所述第二約簡(jiǎn)規(guī)則包括以下步驟(1)將G定義為具有形式為s|C^→α1γα2]]>和s′|C′→α3γα4的兩個(gè)產(chǎn)生規(guī)則的容許的上下文相關(guān)文法,其中,γ的長(zhǎng)度至少為2,γ在這兩個(gè)位置的主要上下文等于相同的上下文C″,α1和α2之一不為空,并且α3和α4之一不為空;(2)定義新的產(chǎn)生規(guī)則s″|C″→γ,其中,(C″,s″)是G的域中沒有的上下文和變量的新對(duì);以及(3)通過將產(chǎn)生規(guī)則s|C^→α1γα2]]>替換為s|C^→α1s′′α2,]]>并將所述產(chǎn)生規(guī)則s′|C′→α3γα4替換為s′|C′→α3s″α4,并添加新規(guī)則s″|C″→γ,來(lái)將G約簡(jiǎn)為新的上下文相關(guān)文法 (i)如果I(i-1)=1并且αβ在相同的上下文C時(shí)在Gi-1′的范圍內(nèi)的兩個(gè)不重疊的位置重復(fù)自身,則應(yīng)用所述第一約簡(jiǎn)規(guī)則和第二約簡(jiǎn)規(guī)則之一,然后應(yīng)用第三約簡(jiǎn)規(guī)則,其中,所述第三約簡(jiǎn)規(guī)則包括以下步驟(1)將s定義為在G的范圍內(nèi)在某上下文 時(shí)出現(xiàn)一次的容許的上下文相關(guān)文法G的變量;(2)定義產(chǎn)生規(guī)則s′|C′→α1sβ1,其中,在上下文 時(shí)s出現(xiàn)在一組符號(hào)的右邊;(3)定義與對(duì) 相對(duì)應(yīng)的產(chǎn)生規(guī)則s|C^→γ,]]>并通過從G中刪除所述產(chǎn)生規(guī)則s|C^→γ,]]>并將所述產(chǎn)生規(guī)則s′|C′→α1sβ1替換為所述產(chǎn)生規(guī)則s′|C′→α1γβ1,來(lái)將G約簡(jiǎn)為容許的上下文相關(guān)文法G,所得的容許的上下文相關(guān)文注 和G表示等價(jià)的數(shù)據(jù)序列。
13.如權(quán)利要求12所述的方法,其中,所述判斷步驟(e)還包括以下步驟(a)對(duì)于除初始對(duì)(C1,s0)之外的每對(duì)(C^,γ)∈ΩG(Ki-1,ji-1),]]>定義兩個(gè)列表 和 其中,所述列表 包括具有如下性質(zhì)的所有符號(hào)η∈A∪S(ji-1)(1)在上下文 時(shí),模式γη出現(xiàn)在Gi-1的范圍內(nèi);(2)模式γη不是Gi-1(s0|C1)的最后兩個(gè)符號(hào);以及(3)沒有Gi-1的變量sj,使得 等于γη,并且,其中所述列表 包括具有性質(zhì)(1)和(2)的所有符號(hào)η∈A∪S(ji-1);(b)如果β出現(xiàn)在列表L1(α|C)中,則表示在上下文C時(shí),αβ出現(xiàn)在Gi-1′的范圍內(nèi)的兩個(gè)不重疊的位置。
14.一種通過使用自適應(yīng)上下文相關(guān)算術(shù)編碼來(lái)編碼原始數(shù)據(jù)序列以編碼不可約上下文相關(guān)文法的方法,所述原始數(shù)據(jù)序列包括多個(gè)符號(hào)且與由可數(shù)上下文集合C和下一個(gè)上下文函數(shù)f給出的已知上下文模型相關(guān)聯(lián),根據(jù)所述不可約上下文相關(guān)文法可完全恢復(fù)所述原始數(shù)據(jù)序列,其中,所述不可約上下文相關(guān)文法是由產(chǎn)生規(guī)則集合表示的,所述產(chǎn)生規(guī)則是由表示所述數(shù)據(jù)序列中的不重疊重復(fù)模式和上下文的變量和上下文對(duì)的集合形成的,所述方法包括以下步驟(a)將所述數(shù)據(jù)序列變換為所述不可約上下文相關(guān)文法,可從該不可約上下文相關(guān)文法中完全恢復(fù)所述原始數(shù)據(jù)序列;(b)將所述不可約上下文相關(guān)文法轉(zhuǎn)換為其分類形式,產(chǎn)生分類的不可約上下文相關(guān)文法;(c)從所述分類的不可約上下文相關(guān)文法構(gòu)造一個(gè)產(chǎn)生的序列;以及(d)使用具有動(dòng)態(tài)字母表的自適應(yīng)上下文相關(guān)算術(shù)編碼,對(duì)該產(chǎn)生的序列進(jìn)行編碼。
15.如權(quán)利要求14所述的方法,其中,所述變換步驟(a)還包括以下步驟(1)從所述序列中解析子串,其中,如果所述序列中以前未解析的符號(hào)的字符串的最長(zhǎng)前綴存在,則所述子串是所述最長(zhǎng)前綴,否則,所述子串是所述序列以前未解析的符號(hào)的字符串的第一個(gè)符號(hào),其中,在當(dāng)前時(shí)間點(diǎn)的上下文時(shí),所述序列中以前未解析的符號(hào)的字符串可用前一個(gè)不可約上下文相關(guān)文法的變量集合中的一變量,而不是變量和上下文對(duì)的集合的初始對(duì)中的初始變量來(lái)表示;(2)根據(jù)所述子串、當(dāng)前上下文和所述前一個(gè)不可約上下文相關(guān)文法,來(lái)產(chǎn)生容許的上下文相關(guān)文法;(3)將至少一個(gè)約簡(jiǎn)規(guī)則集合應(yīng)用于所述容許的上下文相關(guān)文法,以產(chǎn)生新的不可約上下文相關(guān)文法;以及(4)重復(fù)步驟(1)至(3),直到所述序列的所有符號(hào)被處理,并獲取了所期望的最終不可約上下文相關(guān)文法。
16.如權(quán)利要求14所述的方法,其中,如果對(duì)于每個(gè)合法的上下文C,具有變量集合S(j)={s0,s1,…sj-1}以及上下文和變量對(duì)的集合ΩG(K,j)的不可約上下文相關(guān)文法G是分類形式,則對(duì)于任何有意義的i>0,(C,si)的替換總是按照以下遞歸替換過程發(fā)生在(C,si+1)的替換之前(1)令ΩG表示ΩG(K,j)的動(dòng)態(tài)變化的子集,開始時(shí),ΩG為空;(2)設(shè)置u(0)=G(s0|C1)以及i=0;(3)對(duì)于i≥0,從左到右讀取u(i),將ΩG中沒有的第一對(duì)(C,s)替換為G(s|C),其中,C是由所述上下文模型確定的s的上下文;(4)通過將對(duì)(C,s)插入到ΩG來(lái)更新ΩG;(5)對(duì)于i=0,1,……,|ΩG(K,j)|-1,重復(fù)步驟(3)和(4),從而使得除(C1,s0)之外的每對(duì)(C,s)∈ΩG(K,j)正好被替換為G(s|C)一次;以及所述轉(zhuǎn)換步驟(b)還包括以下步驟在每個(gè)合法的上下文C時(shí),重新命名變量si,從而使得對(duì)于重命名的變量,對(duì)于任何有意義的i>0,(C,si)的替換總是按照所述遞歸替換過程發(fā)生在(C,si+1)的替換之前。
17.如權(quán)利要求14所述的方法,其中,所述構(gòu)造步驟(c)還包括以下步驟(1)定義具有變量集合S(j)={s0,s1,…sj-1}以及上下文和變量對(duì)的集合ΩG(K,j)的分類的不可約上下文相關(guān)文法G;(2)將ΩG初始化為空集;(3)設(shè)置u(0)=G(s0|C1)以及i=0;(4)對(duì)于i≥0,從左向右讀取u(i),并將ΩG中沒有的第一對(duì)(C,s)替換為[G(s|C)],其中,C是由上下文模型確定的s的上下文;(5)將對(duì)(C,s)插入到ΩG,以更新ΩG;(6)對(duì)于i=0,1,……|ΩG(K,j)|-1,重復(fù)步驟(4)和(5),從而使得除(C1,s0)之外的每對(duì)(C,s)∈ΩG(K,j)正好被替換為[G(s|C)]一次,最終序列u(|ΩG(K,j)|-1)是從G產(chǎn)生的序列。
18.如權(quán)利要求14所述的方法,其中,所述編碼步驟(d)還包括以下步驟(1)對(duì)于任何上下文C,將下一個(gè)上下文函數(shù)f擴(kuò)展以包括C=f(C,[)和C=f(C,]);(2)將每對(duì)(C,α)與計(jì)數(shù)器c(C,α)相關(guān)聯(lián),其中,C是上下文,并且α是符號(hào)、變量或括號(hào)([或]);(3)如果α是所述原始數(shù)據(jù)序列中的符號(hào)或者是括號(hào)([或]),則將c(C,α)初始化為1,否則,將其初始化為0;(4)在其上下文C的情況下,根據(jù)被所有滿足c(C,α)≠0的α的所有計(jì)數(shù)器c(C,α)的和所除的計(jì)數(shù)器c(C,β),對(duì)所述產(chǎn)生的序列的每個(gè)符號(hào)β進(jìn)行編碼;(5)將c(C,β)加1;(6)只要β等于括號(hào)]并且與β相對(duì)應(yīng)的合法的括號(hào)對(duì)是在上下文C′時(shí)從所述產(chǎn)生的序列的左邊計(jì)數(shù)的第i個(gè)括號(hào)對(duì),則將c(C′,si)從0增加到1,其中,C′是該括號(hào)對(duì)的左括號(hào)[的上下文;(7)確定所述產(chǎn)生的序列中的下一個(gè)符號(hào)的上下文;以及(8)重復(fù)步驟(4)至(7),直到所述產(chǎn)生的序列中的所有符號(hào)都被編碼。
19.一種將原始數(shù)據(jù)序列x=x1x2……xn順序地變換為不可約上下文相關(guān)文法{Gi}i=1t的序列,并通過使用自適應(yīng)上下文相關(guān)算術(shù)編碼對(duì)所述數(shù)據(jù)序列進(jìn)行編碼以編碼最終不可約上下文相關(guān)文法Gt的方法,其中,所述數(shù)據(jù)序列x=x1x2……xn包括多個(gè)符號(hào)且與已知上下文模型相關(guān)聯(lián),所述已知上下文模型由可數(shù)上下文集合C和下一個(gè)上下文函數(shù)f給出,并且每個(gè)上下文相關(guān)文法Gi是由產(chǎn)生規(guī)則si|Ci→Gi(si|Ci)的集合表示的,所述產(chǎn)生規(guī)則是由變量集合S(ji)={s0,s1,...,sji-1}]]>和上下文和變量對(duì)的集合ΩG(Ki,ji)形成的,j1=1,K1=1,并且ΩG(K1,j1)={(C1,s0)}),所述方法包括以下步驟(a)將所述序列x=x1x2……xn解析為t個(gè)不重疊的子串{x1,x2…xn2,...,xni-1+1…xni},其中n1=1,ni=n,對(duì)于各1<i≤t,如果以前未解析的符號(hào)的剩余序列xni-1+1…xn的最長(zhǎng)前綴存在,則子串xni-1+1…xni(用βi表示)是所述最長(zhǎng)前綴,否則,該子串就是以前未解析的符號(hào)的剩余序列的第一個(gè)符號(hào)xni-1+1,在上下文Cni-1+1時(shí),所述以前未解析的符號(hào)的剩余序列可以用 給出的變量子集中的變量sj來(lái)表示,其中,ΩG(Ki-1,ji-1)是前一個(gè)不可約上下文相關(guān)文法Gi-1的上下文和變量的對(duì)的集合;以及(b)根據(jù)當(dāng)前解析的子串βi=xni-4+1···xni,]]>從所述上下文模型確定的當(dāng)前上下文Cni-1+1和所述前一個(gè)不可約上下文相關(guān)文法Gi-1,為每個(gè)x1…xni產(chǎn)生不可約上下文相關(guān)文法Gi,其中,Gi只包括一個(gè)產(chǎn)生規(guī)則{s0|C1→x1},并且(C1,s0)是初始的上下文和變量對(duì);(c)將所述最終不可約上下文相關(guān)文法Gt轉(zhuǎn)換為其分類形式Gls;(d)從所述分類的不可約上下文相關(guān)文法Gls,構(gòu)造一個(gè)產(chǎn)生的序列;以及(e)使用具有動(dòng)態(tài)字母表的自適應(yīng)上下文相關(guān)算術(shù)編碼,對(duì)所述產(chǎn)生的序列進(jìn)行編碼。
20.一種將數(shù)據(jù)序列順序地變換為不可約上下文相關(guān)文法的序列,并通過使用自適應(yīng)上下文相關(guān)算術(shù)編碼對(duì)基于每個(gè)不可約上下文相關(guān)文法的所述數(shù)據(jù)序列進(jìn)行編碼的方法,其中,所述數(shù)據(jù)序列包括多個(gè)符號(hào)且與已知上下文模型相關(guān)聯(lián),所述已知上下文模型由可數(shù)上下文集合C和下一個(gè)上下文函數(shù)f給出,并且每個(gè)不可約上下文相關(guān)文法是由產(chǎn)生規(guī)則集合表示的,所述產(chǎn)生規(guī)則是使用表示所述數(shù)據(jù)序列中不重疊重復(fù)模式和上下文的變量和上下文對(duì)的集合所形成的,所述方法包括以下步驟(a)從所述序列中解析子串,其中,如果所述序列以前未解析的符號(hào)的字符串的最長(zhǎng)前綴存在,則所述子串是所述最長(zhǎng)前綴,否則,所述子串是所述序列以前未解析的符號(hào)的字符串的第一個(gè)符號(hào),在當(dāng)前時(shí)間點(diǎn)的上下文時(shí),所述序列以前未解析的符號(hào)的字符串可用前一個(gè)不可約上下文相關(guān)文法的變量的集合中的變量,而不是變量和上下文對(duì)的集合的初始對(duì)中的初始變量來(lái)表示;(b)通過利用所述前一個(gè)不可約上下文相關(guān)文法的結(jié)構(gòu)并使用自適應(yīng)上下文相關(guān)算術(shù)編碼,對(duì)所述子串進(jìn)行編碼;(c)根據(jù)所述子串、當(dāng)前上下文和所述前一個(gè)不可約上下文相關(guān)文法,產(chǎn)生容許的上下文相關(guān)文法;(d)將至少一個(gè)產(chǎn)生規(guī)則集合應(yīng)用于所述容許的上下文相關(guān)文法,以產(chǎn)生新的不可約上下文相關(guān)文法;以及(e)重復(fù)步驟(a)至(d),直到所述序列中的所有符號(hào)都被解析和編碼。
21.一種用于將原始數(shù)據(jù)序列x=x1x2……xn順序地變換為不可約上下文相關(guān)文法{Gi}i=1i的序列,并通過使用自適應(yīng)上下文相關(guān)算術(shù)編碼,基于每個(gè)所述不可約上下文相關(guān)文法{Gi}i=1i對(duì)所述數(shù)據(jù)序列進(jìn)行編碼的方法,其中,所述數(shù)據(jù)序列x=x1x2……xn包括多個(gè)符號(hào)且與已知上下文模型相關(guān)聯(lián),所述已知上下文模型是由可數(shù)上下文集合C和下一個(gè)上下文函數(shù)f給出的,并且每個(gè)上下文相關(guān)文法Gi由產(chǎn)生規(guī)則si|Ci→Gi(si|Ci)的集合表示,所述產(chǎn)生規(guī)則是由變量集合S(ji)={s0,s1,...,sji-1}]]>和上下文和變量對(duì)的集合ΩG(Ki,ji)形成的,j1=1,K1=1,并且ΩG(K1,j1)={(C1,s0)},所述方法包括以下步驟(a)將各對(duì)(C,α)與兩個(gè)計(jì)數(shù)器c(C,α)和 相關(guān)聯(lián),其中,C是上下文,并且α是符號(hào)或變量;(b)如果α是所述原始數(shù)據(jù)序列中的符號(hào),則將c(C,α)和c(C,α)初始化為1,否則,將其初始化為0;(c)對(duì)于每個(gè)1<i≤t,從所述序列中解析子串xni-1+1…xni,其中n1=1,ni=n,并且對(duì)于各1<i≤t,如果以前未解析的符號(hào)的剩余序列xni-1+1…xn的最長(zhǎng)前綴存在,則子串xni-1+1…xni(用βi表示)是所述最長(zhǎng)前綴,否則,該子串是以前未解析的符號(hào)的剩余序列的第一個(gè)符號(hào)xni-1+1,在上下文Cni-1+1時(shí),所述以前未解析的符號(hào)的剩余序列可用 給出的變量子集中的變量sj來(lái)表示,其中,ΩG(Ki-1,ji-1)是前一個(gè)不可約上下文相關(guān)文法Gi-1的上下文和變量的對(duì)的集合,并且其中,G1只包括一個(gè)產(chǎn)生規(guī)則{s0|C1→x1},(C1,s0)是初始的上下文和變量對(duì);(d)根據(jù)所述前一個(gè)不可約上下文相關(guān)文法Gi-1、當(dāng)前子串βi和當(dāng)前上下文Cni-1+1,產(chǎn)生容許的上下文相關(guān)文法Gi-1′;(e)如果所述容許的上下文相關(guān)文法Gi-1′是可約的,則設(shè)置當(dāng)前文法約簡(jiǎn)比特I(i)為1,如果Gi-1′是不可約的,則設(shè)置當(dāng)前文法約簡(jiǎn)比特I(i)為0;(f)使用一階或更高階自適應(yīng)算術(shù)編碼,對(duì)所述當(dāng)前文法約簡(jiǎn)比特I(i)進(jìn)行編碼;(g)使用自適應(yīng)上下文相關(guān)算術(shù)編碼,根據(jù)所述前一個(gè)不可約上下文相關(guān)文法Gi-1、文法約簡(jiǎn)比特I(i)和I(i-1)以及當(dāng)前上下文Cni-1+1,對(duì)當(dāng)前子串βi進(jìn)行編碼;(h)將至少一個(gè)約簡(jiǎn)規(guī)則集合應(yīng)用于所述容許的上下文相關(guān)文法Gi-1′,以產(chǎn)生新的不可約上下文相關(guān)文法Gi;以及(i)重復(fù)步驟(c)至(h),直到所述序列x的所有符號(hào)都被解析和編碼。
22.如權(quán)利要求21所述的方法,其中,所述編碼步驟(g)還包括以下步驟(1)將α定義為Gi-1(s0|C1)的最后一個(gè)符號(hào);(2)將 定義為Gi-1(s0|C1)中α的上下文;(3)如果ni-ni-1>1并且βi=xni-1+1···xni]]>在上下文Cni-1+1時(shí)用sj表示,則將β定義為變量sj;如果ni-ni-1=1,則將其簡(jiǎn)單定義為符號(hào)xni-1+1;(4)將 定義為上下文Cni-1+1;(5)對(duì)于除初始對(duì)(C1,s0)之外的每對(duì)(C^,γ)∈ΩG(Ki-1,ji-1),]]>定義兩個(gè)列表L1(γ|C)和L2(γ|C),其中,所述列表L1(γ|C)包括具有如下性質(zhì)的所有符號(hào)η∈A∪S(ji-1)a)在上下文C時(shí),模式γη出現(xiàn)在Gi-1的范圍內(nèi);b)在上下文C時(shí),模式γη不是Gi-1(s0|C1)的最后兩個(gè)符號(hào);c)沒有Gi-1的變量sj,使得Gi-1(sj|C)等于γη,并且,其中所述列表L2(γ|C)包括具有性質(zhì)a)和b)的所有符號(hào)η∈A∪S(ji-1);(6)如果I(i)=0,則在其上下文 的情況下,根據(jù)被滿足c(C^,γ)≠0]]>的所有γ∈A∪S(ji-1)\L2(α|C^)]]>的所有計(jì)數(shù) 的和所除的計(jì)數(shù)器 對(duì)β進(jìn)行編碼,然后將 加1;(7)如果I(i-1)=0且I(i)=1,則在其上下文 的情況下,根據(jù)被所有γ∈L1(α|C^)]]>的所有計(jì)數(shù)器 的和所除的計(jì)數(shù) 對(duì)β進(jìn)行編碼,然后將 加1;
23.如權(quán)利要求21所述的方法,其中,所述步驟(h)還包括相應(yīng)地更新列表L1(γ|C)和L2(γ|C)的步驟。
全文摘要
本發(fā)明提供了一種無(wú)損耗數(shù)據(jù)壓縮方法,它使用文法變換順序地構(gòu)造一個(gè)貪婪的上下文相關(guān)文法的序列,可以從該序列中逐步恢復(fù)原始數(shù)據(jù)序列。使用順序上下文相關(guān)方法、改進(jìn)的順序上下文相關(guān)方法和等級(jí)式上下文相關(guān)方法中的任意一種,對(duì)該數(shù)據(jù)序列進(jìn)行編碼。
文檔編號(hào)H03M7/30GK1682448SQ03821724
公開日2005年10月12日 申請(qǐng)日期2003年7月11日 優(yōu)先權(quán)日2002年7月12日
發(fā)明者楊恩輝, 何大可 申請(qǐng)人:斯利普斯特里姆數(shù)據(jù)公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
莲花县| 金湖县| 育儿| 从化市| 鄄城县| 南投县| 鄂州市| 当雄县| 大邑县| 蓬莱市| 阳西县| 苍梧县| 望谟县| 祁阳县| 乌兰察布市| 霍州市| 绥芬河市| 仁布县| 西安市| 贵州省| 安龙县| 思南县| 玉田县| 锡林浩特市| 兴业县| 临汾市| 江达县| 泾源县| 镶黄旗| 舒兰市| 十堰市| 无为县| 麻阳| 西峡县| 阳春市| 定边县| 苍南县| 界首市| 临高县| 绥中县| 九江市|