專利名稱:用于快速最長匹配搜索的方法和設(shè)備的制作方法
本申請(qǐng)要求2001年8月2日提交的共同未決的美國臨時(shí)專利申請(qǐng)No.60/309,983的利益。
背景技術(shù):
1.發(fā)明領(lǐng)域本發(fā)明一般涉及數(shù)據(jù)壓縮領(lǐng)域;并且,更特別地,涉及用于在無損的字典壓縮過程中實(shí)施最長匹配搜索的方法和設(shè)備。
2.現(xiàn)有技術(shù)描述具有許多重復(fù)信號(hào)串的大量ASCII(美國信息互換標(biāo)準(zhǔn)碼)的文件的壓縮一般利用比如Lempel-Ziv壓縮(參見1998年Springer-Verlag,紐約,有限公司,Salomon,D.,Data Compression TheComplete Reference(數(shù)據(jù)壓縮完全參考))的字典壓縮過程進(jìn)行。字典壓縮過程通過參考單獨(dú)的字典文件或索引,或者文件中被壓縮的以前的出現(xiàn)來替換文件中的連續(xù)符號(hào)串從而壓縮文件。但是,當(dāng)壓縮小數(shù)據(jù)文件或者消息時(shí),除非有大的字典或者查找表可用,否則字典壓縮技術(shù)效率很低。一般的,大字典比小字典產(chǎn)生更有效的壓縮。
互聯(lián)網(wǎng)上許多信令業(yè)務(wù)量由基于ASCII的協(xié)議生成,比如,例如SIP(參見2000年IETF RFC 2543,Handley,M.,Schulzrinne,H.,Schooler,E.和Rosenberg,J.,SIP會(huì)話發(fā)起協(xié)議);SDP(參見2000年IETF RFC 2327,Handley,M.和Jacobson,V.,SDP會(huì)話描述協(xié)議);HTTP(參見2000年IETF RFC 2616,F(xiàn)ielding,R.等人,超文本傳輸協(xié)議-HTTP/1.1)以及RTSP(參見2000年IETF RFC2326,Schulzrinne,H.,Rao,A.和Lanphier,R.,實(shí)時(shí)流協(xié)議(RTSP))。這些協(xié)議的每個(gè)的消息尺寸相當(dāng)?。徊⑶?,因此,必須使用大字典以便獲得高效壓縮。這可以利用大的靜態(tài)字典或者利用在會(huì)話期間已經(jīng)被發(fā)送的消息連續(xù)更新動(dòng)態(tài)字典來獲得。靜態(tài)和動(dòng)態(tài)字典也可以被組合并且用于例如壓縮框架應(yīng)答中(參見2002年5月R.Price,H.Hannu等人的信令壓縮,draft-ietf-rohc-sigcomp-06.txt)互聯(lián)網(wǎng)草案(未完成)以及2002年5月H.Hannu,J.Christoffersson等人的SigComp-擴(kuò)展操作,(draft-ietf-rohc-sigcomp-extended-03.txt)互聯(lián)網(wǎng)草案(未完成))。
在字典壓縮過程中對(duì)在存儲(chǔ)器和實(shí)施器使用方面獲得效率相當(dāng)重要的是壓縮被執(zhí)行的方式,例如,如何設(shè)計(jì)用于最長匹配搜索的搜索算法。Lempel-Ziv或者其它字典壓縮方案中使用的標(biāo)準(zhǔn)最長匹配搜索方法典型地或者是線性類型(LZ77)或者涉及在二進(jìn)制樹中搜索(LZSS),(參見,例如,上面提到的Salomon出版物)。
線性搜索很慢但是可以相當(dāng)容易地被執(zhí)行。通過附加或者刪除文本來改變字典,例如更新字典也很容易實(shí)現(xiàn)。在二進(jìn)制樹中搜索是快得多的方法;但是,利用二進(jìn)制搜索樹,附加到字典中或者從字典中刪除文本以及相應(yīng)地更新二進(jìn)制搜索樹是比較慢的操作。
因此,需要一種字典壓縮過程,該過程包括很快的最長匹配搜索方法和設(shè)備并且還利用當(dāng)字典有時(shí)被改變時(shí)容易更新的數(shù)據(jù)結(jié)構(gòu)。
發(fā)明概述本發(fā)明提供用于字典壓縮過程的最長匹配搜索方法和設(shè)備,其非常快并且利用當(dāng)文本被附加到字典中或者從字典中被刪除時(shí)容易更新的數(shù)據(jù)結(jié)構(gòu)。
根據(jù)本發(fā)明,一種用于實(shí)施搜索來將符號(hào)序列的符號(hào)串與在字典中存儲(chǔ)的符號(hào)的存儲(chǔ)串相匹配以便提供匹配的符號(hào)串的方法,包括以下步驟匹配從符號(hào)序列的一個(gè)選擇的符號(hào)開始的符號(hào)序列的符號(hào)串與從字典中選擇的符號(hào)被存儲(chǔ)在其中的第一個(gè)位置開始的第一個(gè)存儲(chǔ)的符號(hào)串,以便提供已知的匹配符號(hào)串;識(shí)別在字典中選擇的符號(hào)被存儲(chǔ)在其中的另一個(gè)位置;選定跟隨符號(hào)序列中已知的匹配符號(hào)串的符號(hào)序列的一個(gè)符號(hào);以及將符號(hào)序列的選定的符號(hào)與從另一個(gè)位置開始的在字典中相應(yīng)位置中存儲(chǔ)的符號(hào)相比較,以便確定在相應(yīng)位置存儲(chǔ)的符號(hào)是否與選定的符號(hào)匹配,其中如果比較步驟導(dǎo)致匹配,則確定選擇的符號(hào)和選定的符號(hào)之間的在檢查中的符號(hào)串是否與字典中從另一個(gè)位置存儲(chǔ)的符號(hào)開始的存儲(chǔ)符號(hào)串相匹配,以便確定在檢查中的符號(hào)串是否比已知的匹配符號(hào)串更長。
本發(fā)明認(rèn)識(shí)到,通過首先選定跟隨第一個(gè)匹配符號(hào)串的符號(hào)序列中的符號(hào)以便定義檢查中的符號(hào)串,然后將選定的符號(hào)與字典中從選擇的符號(hào)被存儲(chǔ)在其中的另一個(gè)位置開始的相應(yīng)位置上存儲(chǔ)的符號(hào)相比較,通常可以減少必須被實(shí)施以便找到比已知的匹配符號(hào)串更長的第二個(gè)匹配符號(hào)串的比較的數(shù)量。特別地,如果這個(gè)比較沒有導(dǎo)致匹配,則沒有必要比較研究中的符號(hào)串中的中間符號(hào)。通過減少必須進(jìn)行的比較的數(shù)量,實(shí)施匹配搜索所需的整體時(shí)間可以被減少。
根據(jù)本發(fā)明目前的優(yōu)選實(shí)施方案,選定的符號(hào)包括跟隨已知匹配符號(hào)串的符號(hào)序列中的第一個(gè)符號(hào)。如果這個(gè)選定的符號(hào)與字典中相應(yīng)位置上存儲(chǔ)的符號(hào)不匹配,則肯定知道研究中的符號(hào)串不能比已知的匹配符號(hào)串長。因此,沒必要將研究中符號(hào)串的其它符號(hào)與字典中相應(yīng)位置中存儲(chǔ)的符號(hào)相比較。特別地當(dāng)已知匹配符號(hào)串包括許多符號(hào)時(shí),根據(jù)本發(fā)明的方法消除了大量的比較并且因此顯著地縮短了完成匹配搜索方法所需的時(shí)間。
根據(jù)本發(fā)明的另一個(gè)實(shí)施方案,該匹配搜索方法包括最長匹配搜索方法,并且識(shí)別步驟包括識(shí)別字典中選擇的符號(hào)在其中存儲(chǔ)的所有位置。然后從字典中的選擇的符號(hào)在其中出現(xiàn)的每個(gè)位置開始關(guān)于在字典中被存儲(chǔ)的符號(hào)串來檢查在研究中的符號(hào)串,以便識(shí)別最長可能匹配的符號(hào)串。
根據(jù)本發(fā)明的另一個(gè)實(shí)施方案,選擇的符號(hào)包括符號(hào)序列的第一個(gè)符號(hào),并且在字典中的第一個(gè)位置包括在字典中第一個(gè)符號(hào)在其中被存儲(chǔ)的最近的位置。在字典中的另一個(gè)位置包括第一個(gè)符號(hào)在其中被存儲(chǔ)的第二個(gè)最近的位置。該方法在整個(gè)字典中繼續(xù)直到第一個(gè)符號(hào)在其中被存儲(chǔ)的所有位置都被識(shí)別并且比較被完成以便識(shí)別最長可能匹配。
根據(jù)本發(fā)明的另一個(gè)方案,用于實(shí)施最長匹配搜索以便找到符號(hào)序列的符號(hào)串和字典中存儲(chǔ)的符號(hào)串之間的最長可能匹配的設(shè)備包括字典和實(shí)施器。字典包括第一和第二個(gè)數(shù)組以及一個(gè)表。第一個(gè)數(shù)組包括在字典中存儲(chǔ)的每個(gè)符號(hào)。第二個(gè)數(shù)組包括指向在第一個(gè)數(shù)組中存儲(chǔ)的每個(gè)符號(hào)的前一個(gè)位置的指針,并且所述表包括指向在第一個(gè)數(shù)組中存儲(chǔ)的每個(gè)符號(hào)在第一個(gè)數(shù)組中最近出現(xiàn)的位置的指針。實(shí)施器實(shí)施最長匹配搜索以便利用包括第一和第二個(gè)數(shù)組以及表的字典來識(shí)別最長可能的匹配符號(hào)串。本發(fā)明的設(shè)備不僅允許更有效地實(shí)施最長匹配搜索,而且還允許在需要時(shí)用新符號(hào)或者符號(hào)串容易地更新字典。
根據(jù)本發(fā)明的匹配搜索方法和設(shè)備可以很容易地被合并到比如Lempel-Ziv壓縮的無損字典壓縮過程以便促進(jìn)整體壓縮過程。本發(fā)明提供的這些功能在包括使用壓縮框架ROGER的應(yīng)用的許多應(yīng)用中很重要。
但是本發(fā)明的其它目的、特征和優(yōu)點(diǎn)在下文中與其目前優(yōu)選的實(shí)施方案一起將變得顯而易見。
附圖簡述
圖1是示意地說明根據(jù)本發(fā)明的目前優(yōu)選實(shí)施方案用于壓縮數(shù)據(jù)的設(shè)備的框圖;圖2是說明圖1的字典和第一個(gè)數(shù)組之間的關(guān)系的圖表;圖3是說明圖1的第一和第二個(gè)數(shù)組之間的關(guān)系的圖表;圖4是說明圖1的第一個(gè)數(shù)組和表之間的關(guān)系的圖表;圖5是說明根據(jù)本發(fā)明的另一個(gè)實(shí)施方案用于利用最長匹配搜索來壓縮數(shù)據(jù)的方法的步驟的流程圖;以及圖6是被提供來輔助解釋本發(fā)明的圖表。
目前優(yōu)選實(shí)施方案詳述圖1是示意地說明根據(jù)本發(fā)明的目前優(yōu)選實(shí)施方案用于壓縮數(shù)據(jù)的設(shè)備的框圖。該設(shè)備一般由參考數(shù)字10指定并且包括實(shí)施器12和相關(guān)聯(lián)的字典16。如同本領(lǐng)域的技術(shù)人員所熟知的,字典16存儲(chǔ)多個(gè)不同的符號(hào)串以及對(duì)應(yīng)每個(gè)存儲(chǔ)的符號(hào)串的合適的索引。每個(gè)符號(hào)串包括一個(gè)或多個(gè)連續(xù)的符號(hào)。為了壓縮特定的符號(hào)序列,該序列被劃分成多個(gè)符號(hào)串,并且通過將該串與在字典中存儲(chǔ)的符號(hào)串相匹配并且然后用對(duì)應(yīng)該特定串的索引來替換匹配串,從而單獨(dú)編碼多個(gè)符號(hào)串的每個(gè)。如圖1所示,實(shí)施器12接收要被壓縮的符號(hào)序列26,利用字典16來壓縮該符號(hào)序列,并且提供輸出的壓縮符號(hào)序列28。
為了獲得利用字典壓縮過程的有效壓縮,重要的是要被壓縮的符號(hào)序列的每個(gè)符號(hào)串盡可能的長,也就是包括盡可能多的符號(hào)。結(jié)果,已知的字典壓縮過程包括“最長匹配搜索”來識(shí)別與字典中存儲(chǔ)的符號(hào)串匹配的符號(hào)序列的最長可能符號(hào)串。但是,如前面所討論的,已知最長匹配搜索方法或者慢,并且因此效率低;或者有時(shí)當(dāng)字典被更新時(shí)不十分有用。
本發(fā)明提供一種方法和設(shè)備,用于快速,并且同時(shí)利用當(dāng)字典必須被更新時(shí)非常有用的數(shù)據(jù)結(jié)構(gòu)來實(shí)施字典壓縮過程中的最長匹配搜索。如圖1所說明的,字典可以被看作包括一個(gè)數(shù)據(jù)結(jié)構(gòu),其包含有時(shí)在這里被稱為數(shù)組A1和A2的第一和第二個(gè)數(shù)組20和22,以及表24。第一個(gè)數(shù)組20包括在字典中存儲(chǔ)的所有符號(hào),因此在字典中存儲(chǔ)的第一個(gè)符號(hào)是第一個(gè)數(shù)組中的第一個(gè)符號(hào),在字典中存儲(chǔ)的第二個(gè)符號(hào)是第一個(gè)數(shù)組中的第二個(gè)符號(hào),等等。字典和第一個(gè)數(shù)組20之間的對(duì)應(yīng)在圖2中被說明,其中在字典中連續(xù)位置上被存儲(chǔ)的符號(hào),例如符號(hào)a、d、e、a等被表現(xiàn)為在第一個(gè)數(shù)組的相應(yīng)連續(xù)位置上被存儲(chǔ)。(應(yīng)該理解,在實(shí)踐中,第一個(gè)數(shù)組不是在字典中存儲(chǔ)的符號(hào)的拷貝并且不必要實(shí)際上將信息從字典拷貝到第一個(gè)數(shù)組中。字典和第一個(gè)數(shù)組是相同的結(jié)構(gòu),并且在這里描述第一個(gè)數(shù)組,只是來促進(jìn)對(duì)本發(fā)明的清楚理解)。
第二個(gè)數(shù)組22保持到第一個(gè)數(shù)組中符號(hào)的以前位置的指針,因此第二個(gè)數(shù)組中第i個(gè)元素是到第一個(gè)數(shù)組中第i個(gè)位置上符號(hào)以前出現(xiàn)的位置的指針。特別的,在第一個(gè)數(shù)組20被表示為數(shù)組A1并且第二個(gè)數(shù)組22被表示為數(shù)組A2的情況下,數(shù)組A1的第i個(gè)元素可被表示為A1(i)。數(shù)組A2,保持指向A1中符號(hào)的以前位置的指針,以便數(shù)組A2中第i個(gè)元素是指向數(shù)組A1中第i個(gè)位置上符號(hào)的以前出現(xiàn)的位置的指針。換句話說,A2(i)是指向符號(hào)A1(i)也在其中被存儲(chǔ)的第一個(gè)數(shù)組的最近的以前位置的指針。
數(shù)組A1和A2之間的關(guān)系在圖3中被說明。特別地,如圖3所示,符號(hào)“a”在數(shù)組A1中的位置4上,并且符號(hào)“a”最近的以前出現(xiàn)是在數(shù)組A1的位置1。因此數(shù)組A2中位置4的指針指向數(shù)組A1的位置1。符號(hào)“a”下次在數(shù)組A1的位置5出現(xiàn)。由于現(xiàn)在這個(gè)符號(hào)最近的以前出現(xiàn)是在數(shù)組A1的位置4,所以在數(shù)組A2的位置5中的指針指向數(shù)組A1的位置4。以類似的方式,數(shù)組A1的特定位置的每個(gè)符號(hào)在數(shù)組A2的相同位置上有一個(gè)對(duì)應(yīng)的指針,其指向該特定符號(hào)在其中最近出現(xiàn)的數(shù)組A1中的位置。圖3中數(shù)組A2的不同位置上的“*”標(biāo)記指示在數(shù)組A1的相應(yīng)位置沒有該符號(hào)的以前出現(xiàn)存在,也就是該位置包括數(shù)組A1中特定符號(hào)的第一次出現(xiàn)。
表24包括識(shí)別在數(shù)組A1中呈現(xiàn)的每個(gè)符號(hào)在第一個(gè)數(shù)組A1中的最近位置的指針;并且,因此也是在字典中呈現(xiàn)的。這個(gè)關(guān)系參考圖2和4可以最好地被理解。特別地,如圖2所示,在數(shù)組A1中符號(hào)“a”最近的出現(xiàn)是在數(shù)組的位置9。因此,如圖4中所說明的,表24中的指針,指示數(shù)組A1中的符號(hào)“a”最近出現(xiàn)在數(shù)組A1的位置9。類似地,圖4顯示符號(hào)“b”最近出現(xiàn)在數(shù)組A1的位置10,符號(hào)“c”最近出現(xiàn)在數(shù)組A1的位置7等等。因此,表24包含指向數(shù)組A1中存儲(chǔ)的每個(gè)符號(hào)(例如,a、b、c、d、e等)最近出現(xiàn)的指針。在圖3中,“*”標(biāo)記指示特定的符號(hào)沒有出現(xiàn)在數(shù)組A1的任何位置;并且,因此也沒有呈現(xiàn)在字典中。如在下文中將更完整地解釋地,當(dāng)啟動(dòng)最長匹配搜索時(shí),表24特別有用。
第一和第二個(gè)數(shù)組A1和A2以及表都被用于實(shí)施最長匹配搜索,以便識(shí)別可以與字典16中存儲(chǔ)的符號(hào)串相匹配的符號(hào)序列26的最長可能符號(hào)串,從而有效地壓縮符號(hào)序列。例如,考慮想要壓縮包括符號(hào)c(1)、c(2)、c(3)、…c(j)的符號(hào)序列“c”。序列中第一個(gè)符號(hào)是符號(hào)c(1),并且c(1)在其中出現(xiàn)的字典中任何位置是以c(1)開始的符號(hào)序列的符號(hào)串和儲(chǔ)存的符號(hào)串之間最長匹配能夠開始的可能位置。通過跟隨表24和第二個(gè)數(shù)組22中的指針可以找到c(1)在其中出現(xiàn)的字典中的位置。這些出現(xiàn)中的每個(gè)在最長匹配搜索期間必須被檢查,以便確保定位可與要被壓縮的符號(hào)序列的符號(hào)串相匹配的字典中的最長存儲(chǔ)符號(hào)串。用于利用根據(jù)本發(fā)明的另一個(gè)實(shí)施方案的圖1的設(shè)備來實(shí)施最長匹配搜索的方法被描述如下。
最初,識(shí)別數(shù)組A1中符號(hào)c(1)最后出現(xiàn)(并且,因此c(1)在其中出現(xiàn)的字典中的最后位置)的表24中的指針被檢查。假設(shè)表24中的指針指向字典中的位置p1,對(duì)應(yīng)于數(shù)組A1中的位置A1(p1),也是字典中符號(hào)c(1)最后出現(xiàn)的位置。然后符號(hào)序列中的符號(hào)c(2)被與字典的位置p1+1中的符號(hào)相比較;對(duì)應(yīng)于數(shù)組A1中的位置A1(p1+1);符號(hào)c(3)與字典的位置p1+2中的符號(hào)相比較;對(duì)應(yīng)于數(shù)組A1中的位置A1(p1+2),等等,以便確定匹配的長度,也就是與字典中從位置p1開始的相應(yīng)連續(xù)位置上存儲(chǔ)的符號(hào)相匹配的符號(hào)序列的連續(xù)符號(hào)數(shù)量。假設(shè)這個(gè)匹配的長度是3個(gè)符號(hào),因此符號(hào)c(1)、c(2)和c(3)被存儲(chǔ)在位置A1(p1)、A1(p1+1)和A1(p1+2);但是符號(hào)序列的符號(hào)c(4)和位置A1(p1+3)上的符號(hào)不匹配。因此,3個(gè)符號(hào)長的匹配符號(hào)串被找到。
為了確定是否存在更長的匹配,也就是是否3個(gè)以上符號(hào)的匹配符號(hào)串可以被找到;數(shù)組A2中的指針被用于識(shí)別字典中符號(hào)c(1)在其中最近的以前出現(xiàn)的位置。如果字典中這個(gè)位置被表示為位置“p2”,則指向這個(gè)位置的指針由第二個(gè)數(shù)組給出為p2=A2(p1)。換句話說,指向符號(hào)c(1)的最近的以前出現(xiàn)(p2)的指針在數(shù)組A2中的位置(p1)。
接著,確定信號(hào)序列的較長符號(hào)串(也就是3個(gè)以上符號(hào)長的串)是否可以與字典中從字典的位置p2開始的存儲(chǔ)符號(hào)序列相匹配。這個(gè)較長符號(hào)串可以被稱為在檢查中的符號(hào)串,并且通過首先將在檢查中的符號(hào)串的最后符號(hào)與字典中從位置p2開始的相應(yīng)位置上的符號(hào)相比較來進(jìn)行確定。因此,符號(hào)序列的不匹配的符號(hào)c(4)與數(shù)組A1中的位置A1(p2+3)中的符號(hào)相比較。特別地,如果在檢查中的符號(hào)串是4個(gè)符號(hào)長,則在檢查中的信號(hào)序列的第四個(gè)符號(hào)被與字典中從位置p2開始的第四個(gè)位置中的符號(hào)相比較來看它們是否匹配。如果比較沒有導(dǎo)致匹配,則立即知道,至少關(guān)于從字典的位置p2開始的符號(hào)串,在檢查中的符號(hào)串不能導(dǎo)致3個(gè)以上符號(hào)長的匹配符號(hào)串,并且沒必要進(jìn)一步檢查在檢查中的符號(hào)串。
如果比較沒有導(dǎo)致匹配,則可以知道在檢查中的符號(hào)串的符號(hào)c(1)和c(4)與從位置p2開始的字典中相應(yīng)位置上的符號(hào)相匹配。但是,還不知道在檢查中的符號(hào)串的符號(hào)c(2)和c(3)是否分別與字典的位置p2+1和P2+2中的符號(hào)相匹配,這在檢查中的符號(hào)串與從位置p2開始的字典中存儲(chǔ)的符號(hào)串匹配的情況下是必要的。因此,符號(hào)c(2)和c(3)接著分別與字典的位置p2+1和p2+2中的符號(hào)相比較,以便確定匹配實(shí)際上是否是至少四個(gè)符號(hào)長。
從上述描述中,應(yīng)該很顯然,通過在將檢查中的符號(hào)串的中間符號(hào)與字典中相應(yīng)位置上的符號(hào)比較之前,將檢查中的符號(hào)串中的最后符號(hào)與字典中相應(yīng)位置上的符號(hào)相比較,比較中間符號(hào)變得不必要并且可從所述方法中省略。因此,所述方法可導(dǎo)致比較步驟數(shù)量的減少,使得最長匹配搜索可以更快地被實(shí)施。當(dāng)在檢查中的符號(hào)串很長時(shí),可被忽略的比較步驟的數(shù)量變得特別重要。
如果有在檢查中的符號(hào)串的符號(hào)c(1)到c(4)與從位置p2開始的字典中相應(yīng)位置上的符號(hào)之間的匹配,則至少4個(gè)符號(hào)長的更長匹配符號(hào)串被找到。然后必須確定匹配的確切長度。這需要將符號(hào)c(5)、c(6)等等與字典中相應(yīng)位置上的符號(hào),也就是在位置p2+4、p2+5等等上的符號(hào)相比較,直到找不到匹配情況。
假設(shè)從字典中位置p2的符號(hào)開始的匹配符號(hào)串具有長度為k個(gè)符號(hào)。然后指向字典中符號(hào)c(1)的第三個(gè)最近出現(xiàn)的指針被跟隨。這個(gè)指針在第二個(gè)數(shù)組A2中由p3=A2(p2)給出。換句話說,符號(hào)c(1)的第三個(gè)最近出現(xiàn)是在字典的位置p3并且通過使用對(duì)應(yīng)于在數(shù)組A1中符號(hào)c(1)的第二個(gè)最近出現(xiàn)的位置的數(shù)組A2中的指針而被找到。因?yàn)榈侥壳盀橹怪赖淖铋L匹配是k個(gè)符號(hào)長,如上面所指示,因此有從符號(hào)序列的符號(hào)c(1)擴(kuò)展到符號(hào)c(k)的連續(xù)符號(hào)的匹配串;通過首先將檢查中的新符號(hào)串的最后符號(hào)與字典中相應(yīng)位置上存儲(chǔ)的符號(hào)相比較,這次從位置p3開始來評(píng)估在檢查中的新的符號(hào)串。因此,如果檢查中的新符號(hào)串是k+1個(gè)符號(hào)長,則首先在符號(hào)序列的符號(hào)c(k+1)和在數(shù)組A1的字典中位置p3+k上存儲(chǔ)的符號(hào)(對(duì)應(yīng)于位置A1(p3+k))之間進(jìn)行比較。再次,只有這個(gè)比較導(dǎo)致匹配,才有可能在檢查中的新的符號(hào)串比至今已經(jīng)找到的匹配的符號(hào)串更長。
通過識(shí)別符號(hào)c(1)在其中被存儲(chǔ)的字典中所有的位置并且確定在檢查中的符號(hào)串是否與從每個(gè)識(shí)別的位置開始的字典中的符號(hào)串相匹配,最長可能匹配的符號(hào)串被找到。優(yōu)選地,如上所述,這通過按從最近位置到最不近位置的順序檢查c(1)在其中被存儲(chǔ)的位置來實(shí)現(xiàn)。一旦最長可能匹配被找到,則最長可能符號(hào)串被編碼,并且從符號(hào)序列中下一個(gè)符號(hào)開始的另一個(gè)最長可能符號(hào)串被搜索。
圖5是說明根據(jù)本發(fā)明的另一個(gè)實(shí)施方案的最長匹配搜索方法100的步驟的流程圖。最初,字典中要被壓縮的符號(hào)序列的第一個(gè)符號(hào)c(1)最近出現(xiàn)的位置被識(shí)別(步驟105)。然后,從第一個(gè)符號(hào)c(1)開始,與從最近出現(xiàn)的位置開始的字典中連續(xù)位置上存儲(chǔ)的符號(hào)相匹配的符號(hào)序列的連續(xù)符號(hào)的數(shù)量被確定(步驟110)。假設(shè)在步驟110被確定的匹配符號(hào)串是k個(gè)符號(hào)長。
然后在字典中符號(hào)c(1)的下一個(gè)最近出現(xiàn)的位置被識(shí)別(步驟115)。如果下一個(gè)出現(xiàn)存在(步驟120的Y(是)輸出),則該方法繼續(xù)。假設(shè)下一個(gè)最近的出現(xiàn)是在字典的位置p。然后進(jìn)行要被壓縮的符號(hào)序列的符號(hào)c(k+n)和位置p+k-1+n處的符號(hào)之間的比較,以便確定符號(hào)是否匹配(步驟125)。應(yīng)該注意,在前面所述的目前優(yōu)選實(shí)施方案中,n=1,雖然如果想要,n可以是個(gè)更大的數(shù)字。如果匹配(步驟130的Y(是)輸出),則可以有至少k+n個(gè)符號(hào)的匹配。這種情況下,進(jìn)一步的后續(xù)符號(hào)如步驟135所示被比較。最初,符號(hào)c(k+2n)被與位置p+k-1+2n處的符號(hào)相比較。如果這些符號(hào)匹配(步驟140的Y(是)輸出),則可以有至少k+2n的匹配。然后用符號(hào)序列的進(jìn)一步后續(xù)符號(hào),也就是符號(hào)c(k+3n)、c(k+4n)等來重復(fù)步驟135到140,直到比較導(dǎo)致不匹配(步驟140的N(否)輸出)。然后符號(hào)序列的中間符號(hào)被與占用字典中相應(yīng)中間位置的符號(hào)相比較(步驟145),來看是否實(shí)際上有更長的匹配符號(hào)串。
如果步驟125的比較結(jié)果指示沒有匹配(步驟130的N(否)輸出),則該方法返回步驟115并且字典中符號(hào)c(1)的另一個(gè)出現(xiàn)被定位。如果字典中沒有更多c(1)在其中出現(xiàn)的位置(步驟120的N(否)輸出),則最長的可能匹配被找到并且過程停止。
圖6是示例說明上述搜索方法的圖表。在圖6中,與串a(chǎn)、b、c、d的匹配被搜索。圖表的第二行指示期間在最長匹配搜索進(jìn)行的比較。特別地,對(duì)串a(chǎn)、b、c、d的最長匹配通過比較1、2...8被找到。
如有時(shí)當(dāng)壓縮來自例如SIP/SDP的消息時(shí)出現(xiàn)的當(dāng)在字典中有一個(gè)非常長的匹配和幾個(gè)短匹配時(shí),在上述方式中提前搜索幾個(gè)符號(hào)特別有利。本發(fā)明一般提供對(duì)于當(dāng)字典有時(shí)被改變時(shí)特別有用的數(shù)據(jù)結(jié)構(gòu)的快速搜索方法。數(shù)據(jù)結(jié)構(gòu)的有用源自數(shù)據(jù)結(jié)果易于用新符號(hào)或者符號(hào)串被更新。這樣的能力在許多情況下尤其重要,比如當(dāng)使用ROGER時(shí)。
應(yīng)該理解,術(shù)語“包括/包含”當(dāng)在本說明書中使用時(shí)被用于說明規(guī)定的特征、整數(shù)、步驟或組件的存在;但是不排除一個(gè)或者更多其它特征、整數(shù)、步驟、組件或其組合的存在和附加。
雖然這里已經(jīng)描述的內(nèi)容組成了本發(fā)明目前優(yōu)選實(shí)施方案,但是應(yīng)該理解,在不背離本發(fā)明范圍的情況下,本發(fā)明可以以多種方式變化。因此,應(yīng)該認(rèn)識(shí)到,本發(fā)明僅應(yīng)該被限于所附權(quán)利要求所要求的范圍。
權(quán)利要求
1.一種用于實(shí)施搜索來將符號(hào)序列的符號(hào)串與字典中的存儲(chǔ)符號(hào)串相匹配以便提供匹配符號(hào)串的方法,包括將從所述符號(hào)序列的選擇的符號(hào)開始的符號(hào)序列的符號(hào)串與從選擇的符號(hào)在其中存儲(chǔ)的字典中的第一個(gè)位置開始的存儲(chǔ)符號(hào)串相匹配,以便提供已知的匹配符號(hào)串;識(shí)別選擇的符號(hào)在其中存儲(chǔ)的字典中的另一個(gè)位置;選定跟隨符號(hào)序列中已知匹配符號(hào)串的符號(hào)序列的符號(hào);以及將符號(hào)序列的選定的符號(hào)與從另一個(gè)位置開始的在字典中相應(yīng)位置存儲(chǔ)的符號(hào)相比較,以便確定在相應(yīng)位置存儲(chǔ)的符號(hào)是否與選定的符號(hào)匹配,其中如果比較步驟導(dǎo)致匹配,則確定選擇的符號(hào)和選定的符號(hào)之間的在檢查中的符號(hào)串是否與字典中從另一個(gè)位置存儲(chǔ)的符號(hào)開始的存儲(chǔ)符號(hào)串相匹配,以便確定在檢查中的符號(hào)串是否比已知的匹配符號(hào)串長。
2.根據(jù)權(quán)利要求1所述的方法,其中所述選擇的符號(hào)包括所述符號(hào)序列的第一個(gè)符號(hào)。
3.根據(jù)權(quán)利要求1所述的方法,其中所述第一個(gè)位置包括所述選擇的符號(hào)在其中出現(xiàn)的所述字典中的最近位置。
4.根據(jù)權(quán)利要求3所述的方法,其中所述另一個(gè)位置包括所述選擇的符號(hào)在其中出現(xiàn)的所述字典中第二個(gè)最近位置。
5.根據(jù)權(quán)利要求1所述的方法,其中所述選定步驟包括選定緊跟所述已知匹配符號(hào)串的所述符號(hào)序列中的下一個(gè)符號(hào),并且其中如果比較步驟沒有導(dǎo)致匹配,則知道在檢查中的符號(hào)串不長于已知的匹配符號(hào)串。
6.根據(jù)權(quán)利要求1所述的方法,其中所述識(shí)別、選定和比較步驟被重復(fù),直到所述選擇的符號(hào)在其中出現(xiàn)的所述字典中所有位置已經(jīng)被識(shí)別,以便找到最長可能匹配符號(hào)串。
7.根據(jù)權(quán)利要求6所述的方法,其中所述選擇的符號(hào)在其中出現(xiàn)的所有所述位置按從最近出現(xiàn)到最遠(yuǎn)出現(xiàn)的順序被識(shí)別。
8.一種在通過利用存儲(chǔ)多個(gè)符號(hào)串的字典來對(duì)符號(hào)序列的符號(hào)串單獨(dú)編碼的壓縮所述符號(hào)序列的字典壓縮過程中找到要被編碼的最長可能符號(hào)串的最長匹配搜索方法,該方法包括將從所述符號(hào)序列的選擇的符號(hào)開始的符號(hào)序列的符號(hào)串與從選擇的符號(hào)在其中存儲(chǔ)的字典的第一個(gè)位置開始的所述字典中的存儲(chǔ)符號(hào)串相匹配,以便提供已知的匹配符號(hào)串;識(shí)別選擇的符號(hào)在其中存儲(chǔ)的字典中的另一個(gè)位置;選定跟隨符號(hào)序列中已知匹配符號(hào)串的符號(hào)序列的符號(hào);將符號(hào)序列的選定的符號(hào)與從另一個(gè)位置開始的在字典中相應(yīng)位置存儲(chǔ)的符號(hào)相比較,以便確定在相應(yīng)位置存儲(chǔ)的符號(hào)是否與選定的符號(hào)匹配,其中如果比較步驟導(dǎo)致匹配,則確定選擇的符號(hào)和選定的符號(hào)之間的在檢查中的符號(hào)串是否與字典中從另一個(gè)位置存儲(chǔ)的符號(hào)開始的存儲(chǔ)符號(hào)串相匹配,以便確定在檢查中的符號(hào)串是否比已知的匹配符號(hào)串長;以及重復(fù)識(shí)別、選定和比較步驟,直到所述選擇的符號(hào)在其中出現(xiàn)的所述字典中的所有位置被識(shí)別。
9.根據(jù)權(quán)利要求8所述的方法,其中所述選擇的符號(hào)包括所述符號(hào)序列的第一個(gè)符號(hào)。
10.根據(jù)權(quán)利要求8所述的方法,其中所述第一個(gè)位置包括所述選擇的符號(hào)在其中出現(xiàn)的所述字典中的最近位置。
11.根據(jù)權(quán)利要求10所述的方法,其中所述另一個(gè)位置包括所述選擇的符號(hào)在其中出現(xiàn)的所述字典中的第二個(gè)最近位置。
12.根據(jù)權(quán)利要求8所述的方法,其中所述選定步驟包括選定緊跟所述已知匹配符號(hào)串的所述符號(hào)序列中的下一個(gè)符號(hào),并且其中如果比較步驟沒有導(dǎo)致匹配,則知道在檢查中的符號(hào)串不長于已知的匹配符號(hào)串。
13.根據(jù)權(quán)利要求8所述的方法,其中所述選擇的符號(hào)在其中出現(xiàn)的所有所述位置按從最近出現(xiàn)到最遠(yuǎn)出現(xiàn)的順序被識(shí)別。
14.一種用于實(shí)施最長匹配搜索以便找到符號(hào)序列的符號(hào)串和字典中存儲(chǔ)的符號(hào)串之間的最長可能匹配的設(shè)備,該設(shè)備包括字典;以及處理器;所述字典包括第一和第二個(gè)數(shù)組以及一個(gè)表,所述第一個(gè)數(shù)組包括字典中存儲(chǔ)的每個(gè)符號(hào),所述第二個(gè)數(shù)組包括指向第一個(gè)數(shù)組中存儲(chǔ)的每個(gè)符號(hào)的以前位置的指針,并且所述表包括指向第一個(gè)數(shù)組中存儲(chǔ)的每個(gè)符號(hào)在第一個(gè)數(shù)組最后出現(xiàn)的位置的指針,其中所述處理器實(shí)施最長匹配搜索以便利用包括第一和第二個(gè)數(shù)組以及表的所述字典來識(shí)別最長可能的匹配符號(hào)串,從而使得最長匹配搜索能夠更有效地被實(shí)施。
15.根據(jù)權(quán)利要求14所述的設(shè)備,還包括至少一個(gè)用于存儲(chǔ)所述字典的存儲(chǔ)器。
16.根據(jù)權(quán)利要求14所述的設(shè)備,其中所述設(shè)備被合并在系統(tǒng)中用于壓縮所述最長可能匹配符號(hào)串。
全文摘要
一種用于實(shí)施搜索以便將符號(hào)序列的符號(hào)串與字典中存儲(chǔ)的符號(hào)串相匹配來提供匹配符號(hào)串的方法和設(shè)備。在該方法中,符號(hào)序列的匹配符號(hào)串被找到之后,從匹配符號(hào)串的第一個(gè)符號(hào)在其中被存儲(chǔ)的字典中第一個(gè)位置開始,通過首先將跟隨符號(hào)序列中匹配符號(hào)串的選定的符號(hào)與從第一個(gè)符號(hào)在其中被存儲(chǔ)的字典中另一個(gè)位置開始的字典中相應(yīng)位置存儲(chǔ)的符號(hào)相比較來確定在相應(yīng)位置存儲(chǔ)的符號(hào)是否與選定的符號(hào)匹配,從而確定更長的匹配符號(hào)串是否可以被找到。如果比較沒有導(dǎo)致匹配,則立即知道更長的匹配符號(hào)沒有找到并且可能忽略額外的比較步驟。該方法提供一種更有效的過程,用于實(shí)施最長匹配搜索并且同時(shí)利用使得字典能夠被容易地更新的數(shù)據(jù)結(jié)構(gòu)。
文檔編號(hào)H04L29/06GK1539203SQ02815199
公開日2004年10月20日 申請(qǐng)日期2002年7月23日 優(yōu)先權(quán)日2001年8月2日
發(fā)明者J·克里斯托菲爾松, J 克里斯托菲爾松, D·卡雷爾, 錐 申請(qǐng)人:艾利森電話股份有限公司