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

一種特征字符串識(shí)別方法及系統(tǒng)的制作方法

文檔序號(hào):6331979閱讀:195來(lái)源:國(guó)知局
專利名稱:一種特征字符串識(shí)別方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種信息識(shí)別技術(shù),尤其涉及一種特征字符串識(shí)別方法及系統(tǒng)。
背景技術(shù)
特征字符串(模式字符串)識(shí)別是信息識(shí)別中重要的核心技術(shù)之一,用于從目標(biāo)字符串中發(fā)現(xiàn)模式字符串。當(dāng)特征字符串條數(shù)較少內(nèi)存能夠容納時(shí);采用普通的字符串匹配算法可以達(dá)到特征字符串識(shí)別的目的;如果特征字符串比較多,采用字符串匹配算法將會(huì)遇到性能的瓶頸。特別是特征字符串條數(shù)很多,現(xiàn)有的計(jì)算機(jī)系統(tǒng)的內(nèi)存無(wú)法容納時(shí),則需要把特征字符串存儲(chǔ)到磁盤中。對(duì)于大規(guī)模特征字符串的識(shí)別,采用掃描特征串匹配的方式,將導(dǎo)致頻繁的磁盤讀取,性能低下。對(duì)于大規(guī)模特征字符串識(shí)別,現(xiàn)有的有效解決方案對(duì)特征字符串創(chuàng)建 B-Tree (多路搜索樹(shù))索引;把目標(biāo)字符串,分割成若干子字符串,在Β-Tree中查找。 B-Tree是基于磁盤的外存索引技術(shù)。Β-Tree是多路平衡樹(shù),Β-Tree索引的性能由以下,幾個(gè)因素決定DB-Tree的節(jié)點(diǎn)扇出系數(shù)。系數(shù)越高,算法的復(fù)雜度越低,有利于算法性能的提升。2)B-Tree的節(jié)點(diǎn)對(duì)應(yīng)物理頁(yè)面數(shù)。對(duì)應(yīng)的物理頁(yè)面數(shù)少,減少了磁盤訪問(wèn)時(shí)間。3)B-Tree的節(jié)點(diǎn)平均填充度。平均填充度越高,則Β-Tree的節(jié)點(diǎn)利用率高,有利于降低樹(shù)的高度,從而有利于算法性能的提升。4)B-Tree的查找算法。查找算法決定了查找的算法復(fù)雜度。由于在磁盤中查找,需要頻繁的讀取磁盤中的數(shù)據(jù);由于磁盤的物理特性,決定了讀取磁盤非常耗時(shí),因此降低讀取磁盤的頻率將顯著提高查找的速度。現(xiàn)有的解決方案,使用B-Tree創(chuàng)建特征字符串索引有以下缺點(diǎn)1、由于特征字符串是變長(zhǎng)的,對(duì)于每一個(gè)內(nèi)點(diǎn),需要若干個(gè)物理頁(yè)面存放,需要多次讀取物理頁(yè)面才能加載一個(gè)完整的內(nèi)點(diǎn);2、節(jié)點(diǎn)存儲(chǔ)數(shù)據(jù)冗余大;3、緩沖池使用最近最久未策略管理,頁(yè)面的命中率低,影響了讀取性能。

發(fā)明內(nèi)容
本發(fā)明的目的在于,提供一種一種特征字符串識(shí)別方法及系統(tǒng),識(shí)別效率高,降低讀取磁盤的次數(shù)。為實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的一個(gè)方面,提供一種特征字符串識(shí)別方法,包括 A、將待識(shí)別特征字符串轉(zhuǎn)換為二進(jìn)制代碼;B、讀取B-Tree的節(jié)點(diǎn);C、當(dāng)該節(jié)點(diǎn)為內(nèi)點(diǎn)時(shí), 根據(jù)所述二進(jìn)制代碼在所述內(nèi)點(diǎn)中進(jìn)行二叉查找,確定所述待識(shí)別特征字符串對(duì)應(yīng)的葉子節(jié)點(diǎn)的位置。其中,步驟C具體包括Cl、根據(jù)所述二進(jìn)制代碼在所述內(nèi)點(diǎn)中進(jìn)行二叉查找,獲得第一位置;C2、根據(jù)所述二進(jìn)制代碼及所述第一位置定位所述待識(shí)別特征字符串對(duì)應(yīng)的第二位置;C3、當(dāng)所述第二位置的節(jié)點(diǎn)還是內(nèi)點(diǎn)時(shí),則循環(huán)上述步驟。上述步驟C3之后還包括當(dāng)所述讀取B-Tree的節(jié)點(diǎn)為葉子節(jié)點(diǎn)時(shí),在所述葉子節(jié)點(diǎn)中做初始位置查找;當(dāng)所述初始位置中的特征字符串與待識(shí)別特征字符串一致時(shí),識(shí)別成功。其中,內(nèi)點(diǎn)中存儲(chǔ)有固定長(zhǎng)度的編碼數(shù)組,所述編碼數(shù)組為對(duì)特征字符串轉(zhuǎn)換成的二進(jìn)制代碼進(jìn)行平衡二叉樹(shù)排序,再對(duì)形成的平衡二叉樹(shù)做中續(xù)遍歷后形成的,所述編碼數(shù)組包括所述平衡二叉樹(shù)左側(cè)葉子節(jié)點(diǎn)數(shù)及子節(jié)點(diǎn)公共前綴字符串長(zhǎng)度。上述步驟Cl具體包括C11、設(shè)定初始化變量包括I,J,N;I = 0,J = 0,N = KeyCount ;其中I表示子節(jié)點(diǎn)偏移位置,J表示在二叉編碼數(shù)組的偏移位置,N表示平衡二叉樹(shù)葉子節(jié)點(diǎn)數(shù),KeyCoimt表示節(jié)點(diǎn)內(nèi)二叉樹(shù)葉子節(jié)點(diǎn)數(shù);C12、當(dāng)N大于1,執(zhí)行步驟C13, 當(dāng)N小于等于1時(shí),執(zhí)行步驟C17 ;C13、獲得特征字符串對(duì)應(yīng)的二進(jìn)制代碼在!11_1皿?[刃處的值,該值用Bit表示;其中,m_lcmp[J]表示節(jié)點(diǎn)J對(duì)應(yīng)的子樹(shù)的葉子節(jié)點(diǎn)公共前綴;C14、 當(dāng)所述二進(jìn)制代碼在m_lcmp[J]處的值為1時(shí),執(zhí)行步驟C15,否則執(zhí)行步驟C16 ;C15、轉(zhuǎn)入右側(cè)子樹(shù),I = m_Leaf Count [J] ;N = m_Leaf Count [J] ;J = m_Leaf Count [J];其中 m_ LeafCount [J]表示第J個(gè)節(jié)點(diǎn)對(duì)應(yīng)的子樹(shù)左側(cè)葉子節(jié)點(diǎn)數(shù);執(zhí)行步驟C12 ;C16、轉(zhuǎn)入左側(cè)子樹(shù),N = m_LeafCount [J] ;J = 1 ;執(zhí)行步驟C12 ;C17、返回初始查找位置PTRi,其中PTRi 等于I,PTRi表示初始查找位置。上述步驟C2具體包括C201、加載IBlindPos位置對(duì)應(yīng)的節(jié)點(diǎn),其中IBlindPos 為初始位置,Node代表節(jié)點(diǎn);C202、獲得節(jié)點(diǎn)的下界KeyLowi ;C203、計(jì)算特征字符串與 KeyLowi對(duì)應(yīng)的二進(jìn)制序列的差異位置,該差異位置用DifT表示;C204、獲得特征字符串對(duì)應(yīng)二進(jìn)制代碼,在DifT位置處的值,該值用Bit表示;C205、設(shè)定初始化變量包括I, J, N5I = O, J = O, N = KeyCount ;其中,I表示子節(jié)點(diǎn)偏移位置,J表示在二叉編碼數(shù)組的偏移位置,N表示平衡二叉樹(shù)葉子節(jié)點(diǎn)數(shù),KeyCount表示節(jié)點(diǎn)Node內(nèi)二叉樹(shù)葉子節(jié)點(diǎn)數(shù);C206、iN> 1而且m_lcmp[J] < = Diff,執(zhí)行步驟C207,否則,執(zhí)行步驟C210,其中 m_lcmp[J]表示二叉樹(shù)第J個(gè)子節(jié)點(diǎn)的葉子節(jié)點(diǎn)的公共前綴長(zhǎng)度;C207、當(dāng)IBlindPos不小于m_LeafCount [J],其中m_LeafCount [J]表示以二叉樹(shù)第J個(gè)節(jié)點(diǎn)為根的左子樹(shù)的葉子節(jié)點(diǎn)數(shù),則執(zhí)行步驟C208 ;否則轉(zhuǎn)入步驟C209 ;C208、移動(dòng)到右側(cè),IBlinkPos- = m_ LeafCount [J] ;I = m_LeafCount [J] ;N = m_LeafCount [J] ;J = m_LeafCount [J],以上這些運(yùn)算的結(jié)果是轉(zhuǎn)向當(dāng)前節(jié)點(diǎn)右子樹(shù)子樹(shù)的,執(zhí)行步驟C206 ;C209、移動(dòng)到左側(cè),N = m_ LeafC0unt[J],J = 1執(zhí)行步驟C206 ;C210、當(dāng)特征字符串對(duì)應(yīng)二進(jìn)制代碼在Diff位置處的值為O時(shí),則返回當(dāng)前節(jié)點(diǎn)Node的第I個(gè)子節(jié)點(diǎn),否則返回第I+N個(gè)子節(jié)點(diǎn)。優(yōu)選地,加載節(jié)點(diǎn)的具體操作包括根據(jù)當(dāng)前節(jié)點(diǎn)的邏輯編號(hào)從一級(jí)緩沖池中查找所述節(jié)點(diǎn)對(duì)應(yīng)的頁(yè)面;如果一級(jí)緩沖池沒(méi)有該頁(yè)面,則從二級(jí)緩沖池中查找,當(dāng)二級(jí)緩沖池中有該頁(yè)面時(shí),從二級(jí)緩沖池中加載該頁(yè)面到一級(jí)緩沖池;當(dāng)二級(jí)緩沖池中也沒(méi)有該頁(yè)面,則從磁盤中加載該頁(yè)面到一級(jí)緩沖池;當(dāng)一級(jí)緩沖池中未滿時(shí),將所述頁(yè)面放入到一級(jí)緩沖池中;當(dāng)一級(jí)緩沖池中已滿時(shí),減少所述頁(yè)面的權(quán)值,當(dāng)所述二級(jí)緩沖池未滿時(shí),選擇權(quán)值最小的頁(yè)面放入到二級(jí)緩沖池;當(dāng)所述二級(jí)緩沖池已滿時(shí),釋放二級(jí)緩沖池中的空間, 選擇權(quán)值最小的頁(yè)面放入到二級(jí)緩沖池;根據(jù)所述節(jié)點(diǎn)的高度計(jì)算頁(yè)面權(quán)置,根據(jù)所述頁(yè)面權(quán)值調(diào)度頁(yè)面。采用二級(jí)緩存的方式從緩沖池中加載頁(yè)面,提高了頁(yè)面加載的命中率,減少了讀取磁盤次數(shù)。根據(jù)所述節(jié)點(diǎn)的高度計(jì)算頁(yè)面權(quán)置,根據(jù)所述頁(yè)面權(quán)值調(diào)度頁(yè)面。為實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的另一個(gè)方面,提供一種特征字符串識(shí)別系統(tǒng),包括轉(zhuǎn)換裝置,用于將待識(shí)別特征字符串轉(zhuǎn)換為二進(jìn)制代碼;讀取裝置,用于讀取B-Tree的節(jié)點(diǎn);查找裝置,當(dāng)該節(jié)點(diǎn)為內(nèi)點(diǎn)時(shí),根據(jù)所述二進(jìn)制代碼在所述內(nèi)點(diǎn)中進(jìn)行二叉查找,確定所述待識(shí)別特征字符串對(duì)應(yīng)的葉子節(jié)點(diǎn)的位置。本發(fā)明的特征字符串識(shí)別方法及系統(tǒng),由于每個(gè)內(nèi)點(diǎn)中編碼數(shù)組的長(zhǎng)度固定,因此只需要一個(gè)固定大小物理頁(yè)面進(jìn)行存放。在特征字符串的識(shí)別過(guò)程中,只需要讀取一個(gè)物理頁(yè)面就可以加載一個(gè)完整的內(nèi)點(diǎn),減少數(shù)據(jù)冗余,降低了讀取磁盤的次數(shù),提高了識(shí)別效率。


圖1-1是本發(fā)明對(duì)節(jié)點(diǎn)內(nèi)數(shù)據(jù)編碼的流程圖;圖1-2是本發(fā)明平衡二叉樹(shù)的示意圖;圖2是本發(fā)明特征字符串識(shí)別方法實(shí)施例的流程圖;圖3是本發(fā)明特征字符串識(shí)別方法實(shí)施例初始位置查找的流程圖;圖4是本發(fā)明特征字符串識(shí)別方法實(shí)施例葉子節(jié)點(diǎn)定位的流程圖;圖5是本發(fā)明通過(guò)二級(jí)緩沖池加載節(jié)點(diǎn)的流程圖;圖6是本發(fā)明特征字符串識(shí)別系統(tǒng)實(shí)施例的結(jié)構(gòu)圖。
具體實(shí)施例方式以下結(jié)合附圖對(duì)本發(fā)明進(jìn)行詳細(xì)說(shuō)明。方法實(shí)施例B-Tree節(jié)點(diǎn)內(nèi)的數(shù)據(jù),是由有序的序列對(duì)(KEYi, PONTi)組成,其中,i = 0,1, 2,. . .,m-1,其中m表示節(jié)點(diǎn)的扇出系數(shù)。對(duì)于B-1Tree的內(nèi)點(diǎn),PONTi為子節(jié)點(diǎn)的指針,KEYi 為子節(jié)點(diǎn)的下確界。對(duì)于B-Tree的葉子節(jié)點(diǎn),KEYi為特征串,PONTi為關(guān)聯(lián)指針。如圖1-1所示,本發(fā)明中,首先要對(duì)B-Tree節(jié)點(diǎn)內(nèi)的數(shù)據(jù)進(jìn)行編碼,具體步驟如下步驟101,對(duì)特征字符串(Key)采用外排序算法,按照升序方式排序;步驟102,把按照升序排列結(jié)果放入隊(duì)列,該隊(duì)列采用文件作為存儲(chǔ)介質(zhì);步驟103,從隊(duì)列取出K個(gè)特征字符串,這K個(gè)特征字符串構(gòu)成了一個(gè)有序字符串?dāng)?shù)組;步驟104,把這些特征字符串逐一轉(zhuǎn)換為0、1代碼。即把每一個(gè)字符采用二進(jìn)制表示,這些二進(jìn)制序列對(duì)應(yīng)于特征字符串;步驟105,對(duì)這些二進(jìn)制序列采用平衡二叉樹(shù)排序,如圖1-2所示,構(gòu)造一棵平衡二叉樹(shù),逐一向二叉樹(shù)插入二進(jìn)制序列,調(diào)整樹(shù)的高度,使之始終保持平衡狀態(tài);并且在樹(shù)的內(nèi)點(diǎn)中保留子節(jié)點(diǎn)左子樹(shù)的葉子節(jié)點(diǎn)數(shù)和公共字符串長(zhǎng)度(m_LeafCount,m_lcmp),其中m_LeafCount表示二叉樹(shù)左子樹(shù)葉子節(jié)點(diǎn)數(shù),m_ Icmp為子節(jié)點(diǎn)公共前綴字符串長(zhǎng)度;
步驟106,對(duì)平衡二叉樹(shù)做中續(xù)遍歷,生成編碼數(shù)組,該數(shù)組是由(m_LeafC0unt, m_lcmp)組合構(gòu)成;該編碼數(shù)組保持了平衡二叉樹(shù)的有序性,由于編碼數(shù)組的長(zhǎng)度只與特征字符串的個(gè)數(shù)有關(guān),所以可以在有限的空間存儲(chǔ),實(shí)現(xiàn)了變長(zhǎng)字符串?dāng)?shù)組向定長(zhǎng)編碼索引的轉(zhuǎn)換;步驟107,判斷是否創(chuàng)建內(nèi)點(diǎn),如果這K個(gè)特征字符串是由外排序獲得,則創(chuàng)建 B-Tree葉子節(jié)點(diǎn)Node,執(zhí)行步驟109 ;否則創(chuàng)建Β-Tree內(nèi)點(diǎn)Node,執(zhí)行步驟108 ;步驟108,如果是內(nèi)點(diǎn)則寫(xiě)入中續(xù)編碼、對(duì)應(yīng)的子節(jié)點(diǎn)編號(hào)和Node的下界,即最小的特征字符串和二叉樹(shù)根節(jié)點(diǎn)記錄的公共字符串寫(xiě)入隊(duì)列,之后執(zhí)行步驟110 ;步驟109,如果是葉子節(jié)點(diǎn)則寫(xiě)入中續(xù)遍歷編碼和特征字符串關(guān)聯(lián)的信息,之后執(zhí)行步驟110 ;步驟110,判斷隊(duì)列中是否還有待處理的字符串,如果隊(duì)列中僅僅剩余一個(gè)特征字符串則處理完畢,編碼結(jié)束,否則轉(zhuǎn)入步驟103。本實(shí)施例的對(duì)于B-Tree節(jié)點(diǎn)編碼后,節(jié)點(diǎn)中形成一個(gè)長(zhǎng)度固定的編碼數(shù)組。避免了變長(zhǎng)Key (特征字符串)的影響,能夠顯著提高節(jié)點(diǎn)的扇出系數(shù)。內(nèi)點(diǎn)采用上述的編碼方式,減少數(shù)據(jù)冗余,只需要讀取一個(gè)物理頁(yè)面就可以加載一個(gè)完整的內(nèi)點(diǎn),降低了讀取磁盤的次數(shù)。如圖2所示,通過(guò)上述編碼,本發(fā)明相應(yīng)的特征字符串識(shí)別方法實(shí)施例包括以下步驟步驟201,將帶識(shí)別字符串Key轉(zhuǎn)換為二進(jìn)制代碼,轉(zhuǎn)換方式是Key對(duì)應(yīng)的每一個(gè)字符采用二進(jìn)制表示,構(gòu)成的0,1序列,這里Key代表帶識(shí)別字符串;步驟202,從緩沖池中讀取B-Tree的根節(jié)點(diǎn)Node,即把頁(yè)碼編號(hào)I^age等于Root的節(jié)點(diǎn),從緩沖池加載到內(nèi)存中,這里I^age變量表示節(jié)點(diǎn)的編號(hào),Root為根節(jié)點(diǎn)的編號(hào),Node 表示節(jié)點(diǎn);步驟203,判斷節(jié)點(diǎn)Node是否為B-Tree的葉子節(jié)點(diǎn),如果是則進(jìn)入步驟206,否則進(jìn)入步驟204 ;步驟204,通過(guò)編碼序列在內(nèi)點(diǎn)中做二叉查找,獲得第一位置,即初始位置,即第一次位置定位,初始位置用IBlindPos表示;步驟205,子節(jié)點(diǎn)定位,使用編碼序列和初始位置通過(guò)位置定位確定確切位置,即第二次位置定位,獲得第二位置,即子節(jié)點(diǎn)位置,從緩沖池中加載子節(jié)點(diǎn),執(zhí)行步驟203 ;循環(huán)執(zhí)行步驟203 205,直到找到的節(jié)點(diǎn)為葉子節(jié)點(diǎn);步驟206,在葉子節(jié)點(diǎn)中做初始位置查找,初始位置用IBlindPos表示;步驟207,取出IBlinkPos位置對(duì)應(yīng)的特征字符串與待識(shí)別的特征字符串比較,字符串比較的結(jié)果記為Cmp ;步驟208,判斷Cmp是否為0,即IBlinkPos位置對(duì)應(yīng)的特征字符串與待識(shí)別的特征字符串是否一致,如果Cmp為0,則執(zhí)行步驟209 ;如果Cmp不為0,則執(zhí)行步驟210 ;步驟209,做識(shí)別成功標(biāo)記后結(jié)束;步驟210,做識(shí)別失敗標(biāo)記后結(jié)束。本實(shí)施例的特征字符串識(shí)別方法,由于每個(gè)內(nèi)點(diǎn)中編碼數(shù)組的長(zhǎng)度固定,因此只需要一個(gè)固定大小物理頁(yè)面進(jìn)行存放。在特征字符串的識(shí)別過(guò)程中,只需要讀取一個(gè)物理頁(yè)面就可以加載一個(gè)完整的內(nèi)點(diǎn),減少數(shù)據(jù)冗余,降低了讀取磁盤的次數(shù),提高了識(shí)別效率。如圖3所示,上述特征字符串識(shí)別方法中步驟204,初始位置查找的具體流程如下步驟301,設(shè)定初始化變量包括I,J,N ;I = 0,J = 0,N = KeyCount ;其中I表示子節(jié)點(diǎn)偏移位置,J表示在二叉編碼數(shù)組的偏移位置,N表示平衡二叉樹(shù)葉子節(jié)點(diǎn)數(shù), KeyCount表示節(jié)點(diǎn)內(nèi)二叉樹(shù)葉子節(jié)點(diǎn)數(shù);步驟302,判斷N是否大于1,如果是,則執(zhí)行步驟303 ;如果否,則執(zhí)行步驟307 ;步驟303,獲得Key對(duì)應(yīng)的二進(jìn)制序列在m_lcmp[J]處的值,該值用Bit表示,其中 m_lcmp[J]表示節(jié)點(diǎn)J對(duì)應(yīng)的子樹(shù)的葉子節(jié)點(diǎn)公共前綴;步驟304,如果Key對(duì)應(yīng)的二進(jìn)制序列在m_lcmp [J]處的值為1,則執(zhí)行步驟305, 否則執(zhí)行步驟306 ;步驟305,轉(zhuǎn)入右側(cè)子樹(shù),I = m_LeafCount [J] ;N = m_LeafCount [J] ; J = m_ LeafCount [J];其中m_LeafCount [J]表示第J個(gè)節(jié)點(diǎn)對(duì)應(yīng)的子樹(shù)左側(cè)葉子節(jié)點(diǎn)數(shù);步驟306,轉(zhuǎn)入左側(cè)子樹(shù),N = m_LeafCount [J] ;J = 1 ;執(zhí)行步驟302 ;步驟307,返回初始查找位置PTRi,其中PTRi等于I,PTRi表示初始查找位置。如圖4所示,上述特征字符串識(shí)別方法中步驟205,通過(guò)再次遍歷平衡二叉樹(shù)編碼數(shù)組來(lái)獲得子節(jié)點(diǎn)的實(shí)際位置,具體流程如下步驟401,通過(guò)緩沖池加載IBlindPos位置對(duì)應(yīng)的節(jié)點(diǎn)Node,IBlindPos為初始位置,Node代表節(jié)點(diǎn);步驟402,獲得節(jié)點(diǎn)Node的下界,下界用KeyLowi表示;步驟403,計(jì)算Key與KeyLowi對(duì)應(yīng)的二進(jìn)制序列的差異位置,該差異位置用DifT 表不;步驟404,獲得Key對(duì)應(yīng)二進(jìn)制序列在Diff位置處的值,該值用Bit表示;步驟405,設(shè)定初始化變量I,J,N ;I = 0,J = 0,N = KeyCount ;I表示子節(jié)點(diǎn)偏移位置,J表示在二叉編碼數(shù)組的偏移位置,N表示平衡二叉樹(shù)葉子節(jié)點(diǎn)數(shù),KeyCount表示節(jié)點(diǎn)Node內(nèi)二叉樹(shù)葉子節(jié)點(diǎn)數(shù);步驟406,如果 N > 1 而且 m_lcmp [J] < = Diff,其中 m_lcmp [J]表示二叉樹(shù)第 J 個(gè)子節(jié)點(diǎn)的葉子節(jié)點(diǎn)的公共前綴長(zhǎng)度,則執(zhí)行步驟407 ;否則執(zhí)行步驟410 ;步驟407,如果 IBlindPos 大于或等于 m_LeafCount [J],其中 m_LeafCount [J]表示以二叉樹(shù)第J個(gè)節(jié)點(diǎn)為根的左子樹(shù)的葉子節(jié)點(diǎn)數(shù),則執(zhí)行步驟408 ;否則執(zhí)行步驟409 ;步驟408,移動(dòng)到右側(cè)子樹(shù);IBlinkPos = m_LeafCount [J] ;I = m_LeafCount [J]; N = m_LeafCount[J] ;J = m_LeafCount[J];以上這些運(yùn)算的結(jié)果是轉(zhuǎn)向當(dāng)前節(jié)點(diǎn)右子樹(shù)子樹(shù)的,之后返回步驟406 ;步驟409,移動(dòng)到左側(cè)子樹(shù);N = m_LeafCount [J],J = 1,執(zhí)行步驟406 ;步驟410,判斷Key對(duì)應(yīng)二進(jìn)制序列在DifT位置處的值是否為0,如果為0,執(zhí)行步驟411 ;否則執(zhí)行步驟412 ;步驟411,返回當(dāng)前節(jié)點(diǎn)Node的第I個(gè)子節(jié)點(diǎn);步驟412,返回第I+N個(gè)子節(jié)點(diǎn)。
優(yōu)選地,本實(shí)施例從緩沖池中加載節(jié)點(diǎn)采用二級(jí)緩沖池的方法,即將緩沖池分為一級(jí)緩沖池和二級(jí)緩沖池,一級(jí)緩沖池和二級(jí)緩沖池存儲(chǔ)的是B+-Tree的節(jié)點(diǎn)。由于 B-Tree節(jié)點(diǎn)的使用頻率與節(jié)點(diǎn)的高度有關(guān),節(jié)點(diǎn)的高度越高,被使用的概率就越大。其中一級(jí)緩沖池中存放的是最近被使用的節(jié)點(diǎn),二級(jí)緩沖池存放的是將要從內(nèi)存中釋放的節(jié)點(diǎn)。如圖5所示,通過(guò)二級(jí)緩沖池加載節(jié)點(diǎn)的方法具體流程如下步驟501,獲取當(dāng)前節(jié)點(diǎn)的邏輯編號(hào);步驟502,根據(jù)當(dāng)前節(jié)點(diǎn)的邏輯編號(hào)從一級(jí)緩沖池中查找所述節(jié)點(diǎn)對(duì)應(yīng)的頁(yè)面;步驟503,判斷一級(jí)緩沖池是否存有該頁(yè)面,如果有執(zhí)行步驟;如果一級(jí)緩沖池沒(méi)有該頁(yè)面,則執(zhí)行步驟504;步驟504,判斷二級(jí)緩沖池中是否存有該頁(yè)面,如果有,執(zhí)行步驟505,如果沒(méi)有執(zhí)行步驟506 ;步驟505,從二級(jí)緩沖池中加載該頁(yè)面,執(zhí)行步驟507 ;步驟506,從磁盤中加載該頁(yè)面,執(zhí)行步驟507 ;步驟507,判斷一級(jí)緩沖池是否已滿,如果是,執(zhí)行步驟509,如果否,執(zhí)行步驟 508 ;步驟508,將所述頁(yè)面放入到一級(jí)緩沖池中,執(zhí)行步驟513 ;步驟509,根據(jù)樹(shù)的高度,減少所述頁(yè)面的權(quán)值,減少權(quán)值為節(jié)點(diǎn)高度的一半 (Height/2),執(zhí)行步驟510 ;節(jié)點(diǎn)高度越高,則權(quán)值遞減的越?。徊襟E510,判斷二級(jí)緩沖池是否已滿,如果是,執(zhí)行步驟511,如果否,則行步驟 512 ;步驟511,采用最近未使用算法釋放二級(jí)緩沖池中的空間后,執(zhí)行步驟512 ;步驟512,選擇權(quán)值最小的頁(yè)面放入到二級(jí)緩沖池后,執(zhí)行步驟513 ;步驟513,根據(jù)所述節(jié)點(diǎn)的高度計(jì)算頁(yè)面權(quán)置;步驟514,增加權(quán)值之后結(jié)束,頁(yè)面權(quán)值增加為節(jié)點(diǎn)的高度(Height)。本實(shí)施例中,采用二級(jí)緩存的方式從緩沖池中加載頁(yè)面,提高了頁(yè)面加載的命中率,減少了讀取磁盤次數(shù)。系統(tǒng)實(shí)施例如圖6所示,本發(fā)明特征字符串識(shí)別系統(tǒng),包括轉(zhuǎn)換裝置61,用于將待識(shí)別特征字符串轉(zhuǎn)換為二進(jìn)制代碼;讀取裝置62,用于讀取B-Tree的節(jié)點(diǎn);查找裝置63,當(dāng)該節(jié)點(diǎn)為內(nèi)點(diǎn)時(shí),根據(jù)所述二進(jìn)制代碼在所述內(nèi)點(diǎn)中進(jìn)行二叉查找,確定所述待識(shí)別特征字符串對(duì)應(yīng)的葉子節(jié)點(diǎn)的位置。其中,查找裝置,當(dāng)所述讀取B-Tree的節(jié)點(diǎn)為葉子節(jié)點(diǎn)時(shí),在所述葉子節(jié)點(diǎn)中做初始位置查找;還包括比較裝置64,用于比較所述初始位置中的特征字符串與待識(shí)別特征字符串,當(dāng)二者一致時(shí),識(shí)別成功。其中,查找裝置63包括初始位置定為模塊,用于根據(jù)所述二進(jìn)制代碼在所述內(nèi)點(diǎn)中進(jìn)行二叉查找,獲得第一位置;葉子節(jié)點(diǎn)定為模塊,根據(jù)所述二進(jìn)制代碼及所述第一位置定位所述待識(shí)別特征字符串對(duì)應(yīng)的第二位置。優(yōu)選地,本實(shí)施例從緩沖池中加載節(jié)點(diǎn)采用二級(jí)緩沖池的方法,緩沖池65包括一級(jí)緩沖池和二級(jí)緩沖池,一級(jí)緩沖池,存儲(chǔ)最近使用的節(jié)點(diǎn)所對(duì)應(yīng)的頁(yè)面;二級(jí)緩沖池,存儲(chǔ)將要從內(nèi)存中釋放的節(jié)點(diǎn)所對(duì)應(yīng)的頁(yè)面;讀取裝置62,用于從所述一級(jí)緩沖池和二級(jí)緩沖池中加載節(jié)點(diǎn)。本實(shí)施例的特征字符串識(shí)別系統(tǒng),由于每個(gè)內(nèi)點(diǎn)中編碼數(shù)組的長(zhǎng)度固定,因此只需要一個(gè)固定大小物理頁(yè)面進(jìn)行存放。在特征字符串的識(shí)別過(guò)程中,只需要讀取一個(gè)物理頁(yè)面就可以加載一個(gè)完整的內(nèi)點(diǎn),減少數(shù)據(jù)冗余,降低了讀取磁盤的次數(shù),提高了識(shí)別效率。另外,本實(shí)施例中,采用二級(jí)緩存的方式從緩沖池中加載頁(yè)面,提高了頁(yè)面加載的命中率,減少了讀取磁盤次數(shù)。應(yīng)說(shuō)明的是以上實(shí)施例僅用以說(shuō)明本發(fā)明而非限制,本發(fā)明也并不僅限于上述舉例,一切不脫離本發(fā)明的精神和范圍的技術(shù)方案及其改進(jìn),其均應(yīng)涵蓋在本發(fā)明的權(quán)利要求范圍中。
權(quán)利要求
1.一種特征字符串識(shí)別方法,其特征在于,包括A、將待識(shí)別特征字符串轉(zhuǎn)換為二進(jìn)制代碼;B、讀取B-1Tree的節(jié)點(diǎn);C、當(dāng)該節(jié)點(diǎn)為內(nèi)點(diǎn)時(shí),根據(jù)所述二進(jìn)制代碼在所述內(nèi)點(diǎn)中進(jìn)行二叉查找,確定所述待識(shí)別特征字符串對(duì)應(yīng)的葉子節(jié)點(diǎn)的位置。
2.根據(jù)權(quán)利要求1所述的特征字符串識(shí)別方法,其特征在于,所述步驟C具體包括 Cl、根據(jù)所述二進(jìn)制代碼在所述內(nèi)點(diǎn)中進(jìn)行二叉查找,獲得第一位置;C2、根據(jù)所述二進(jìn)制代碼及所述第一位置定位所述待識(shí)別特征字符串對(duì)應(yīng)的第二位置;C3、當(dāng)所述第二位置的節(jié)點(diǎn)還是內(nèi)點(diǎn)時(shí),則循環(huán)上述步驟。
3.根據(jù)權(quán)利要求2所述的特征字符串識(shí)別方法,其特征在于,所述步驟C3之后還包括當(dāng)所述讀取B-Tree的節(jié)點(diǎn)為葉子節(jié)點(diǎn)時(shí),在所述葉子節(jié)點(diǎn)中做初始位置查找; 當(dāng)所述初始位置中的特征字符串與待識(shí)別特征字符串一致時(shí),識(shí)別成功。
4.根據(jù)權(quán)利要求2所述的特征字符串識(shí)別方法,其特征在于,所述內(nèi)點(diǎn)中存儲(chǔ)有固定長(zhǎng)度的編碼數(shù)組,所述編碼數(shù)組為對(duì)特征字符串轉(zhuǎn)換成的二進(jìn)制代碼進(jìn)行平衡二叉樹(shù)排序,再對(duì)形成的平衡二叉樹(shù)做中續(xù)遍歷后形成的,所述編碼數(shù)組包括所述平衡二叉樹(shù)左側(cè)葉子節(jié)點(diǎn)數(shù)及子節(jié)點(diǎn)公共前綴字符串長(zhǎng)度。
5.根據(jù)權(quán)利要求2所述的特征字符串識(shí)別方法,其特征在于,所述步驟Cl具體包括 C11、設(shè)定初始化變量包括I,J,N ;I = 0,J = 0,N = KeyCount ;其中I表示子節(jié)點(diǎn)偏移位置,J表示在二叉編碼數(shù)組的偏移位置,N表示平衡二叉樹(shù)葉子節(jié)點(diǎn)數(shù),KeyCount表示節(jié)點(diǎn)內(nèi)二叉樹(shù)葉子節(jié)點(diǎn)數(shù);C12、當(dāng)N大于1,執(zhí)行步驟C13,當(dāng)N小于等于1時(shí),執(zhí)行步驟C17 ; C13、獲得特征字符串對(duì)應(yīng)的二進(jìn)制代碼在!11_1皿?[刃處的值,該值用Bit表示;其中, m_lcmp[J]表示節(jié)點(diǎn)J對(duì)應(yīng)的子樹(shù)的葉子節(jié)點(diǎn)公共前綴;C14、當(dāng)所述二進(jìn)制代碼在m_lcmp[J]處的值為1時(shí),執(zhí)行步驟C15,否則執(zhí)行步驟C16 ; C15、轉(zhuǎn)入右側(cè)子樹(shù),I = m_LeafCount [J] ;N = m_LeafCount [J] ;J = m_LeafCount [J]; 其中m_LeafC0imt[J]表示第J個(gè)節(jié)點(diǎn)對(duì)應(yīng)的子樹(shù)左側(cè)葉子節(jié)點(diǎn)數(shù);執(zhí)行步驟C12 ; C16、轉(zhuǎn)入左側(cè)子樹(shù),N = m_LeafCount [J] ;J = 1 ;執(zhí)行步驟C12 ; C17、返回初始查找位置PTRi,其中PTRi等于I,PTRi表示初始查找位置。
6.根據(jù)權(quán)利要求4所述的特征字符串識(shí)別方法,其特征在于,所述步驟C2具體包括 C201、加載IBlindPos位置對(duì)應(yīng)的節(jié)點(diǎn),其中IBlindPos為初始位置,Node代表節(jié)點(diǎn); C202、獲得節(jié)點(diǎn)的下界KeyLowi ;C203、計(jì)算特征字符串與KeyLowi對(duì)應(yīng)的二進(jìn)制序列的差異位置,該差異位置用Diff 表不;C204、獲得特征字符串對(duì)應(yīng)二進(jìn)制代碼,在Diff位置處的值,該值用Bit表示; C205、設(shè)定初始化變量包括I,J,N ;I = 0,J = 0,N = KeyCount ;其中,I表示子節(jié)點(diǎn)偏移位置,J表示在二叉編碼數(shù)組的偏移位置,N表示平衡二叉樹(shù)葉子節(jié)點(diǎn)數(shù),KeyCount表示節(jié)點(diǎn)Node內(nèi)二叉樹(shù)葉子節(jié)點(diǎn)數(shù);C206、iN> 1而且m_lcmp[J] < = Diff,執(zhí)行步驟C207,否則,執(zhí)行步驟C210,其中 m_lcmp[J]表示二叉樹(shù)第J個(gè)子節(jié)點(diǎn)的葉子節(jié)點(diǎn)的公共前綴長(zhǎng)度;C207、當(dāng) IBlindPos 不小于 m_LeafCount [J],其中 m_LeafCount [J]表示以二叉樹(shù)第 J 個(gè)節(jié)點(diǎn)為根的左子樹(shù)的葉子節(jié)點(diǎn)數(shù),則執(zhí)行步驟C208 ;否則轉(zhuǎn)入步驟C209 ;C208、移動(dòng)到右側(cè),IBlinkPos- = m_LeafCount [J] ;I = m_LeafCount [J] ;N = m_ LeafCount [J] ;J = m_LeafC0imt[J],以上這些運(yùn)算的結(jié)果是轉(zhuǎn)向當(dāng)前節(jié)點(diǎn)右子樹(shù)子樹(shù)的, 執(zhí)行步驟C206 ;C209、移動(dòng)到左側(cè),N = m_LeafCount [J] ,J=I 執(zhí)行步驟 C206 ; C210、當(dāng)特征字符串對(duì)應(yīng)二進(jìn)制代碼在Diff位置處的值為O時(shí),則返回當(dāng)前節(jié)點(diǎn)Node 的第I個(gè)子節(jié)點(diǎn),否則返回第I+N個(gè)子節(jié)點(diǎn)。
7.根據(jù)權(quán)利要求1至6中任意一項(xiàng)所述的特征字符串識(shí)別方法,其特征在于,加載節(jié)點(diǎn)的具體操作包括根據(jù)當(dāng)前節(jié)點(diǎn)的邏輯編號(hào)從一級(jí)緩沖池中查找所述節(jié)點(diǎn)對(duì)應(yīng)的頁(yè)面; 如果一級(jí)緩沖池沒(méi)有該頁(yè)面,則從二級(jí)緩沖池中查找,當(dāng)二級(jí)緩沖池中有該頁(yè)面時(shí),從二級(jí)緩沖池中加載該頁(yè)面到一級(jí)緩沖池;當(dāng)二級(jí)緩沖池中也沒(méi)有該頁(yè)面,則從磁盤中加載該頁(yè)面到一級(jí)緩沖池; 當(dāng)一級(jí)緩沖池中未滿時(shí),將所述頁(yè)面放入到一級(jí)緩沖池中;當(dāng)一級(jí)緩沖池中已滿時(shí),減少所述頁(yè)面的權(quán)值,當(dāng)所述二級(jí)緩沖池未滿時(shí),選擇權(quán)值最小的頁(yè)面放入到二級(jí)緩沖池;當(dāng)所述二級(jí)緩沖池已滿時(shí),釋放二級(jí)緩沖池中的空間,選擇權(quán)值最小的頁(yè)面放入到二級(jí)緩沖池;根據(jù)所述節(jié)點(diǎn)的高度計(jì)算頁(yè)面權(quán)置,根據(jù)所述頁(yè)面權(quán)值調(diào)度頁(yè)面。
8.一種特征字符串識(shí)別系統(tǒng),其特征在于,包括轉(zhuǎn)換裝置,用于將待識(shí)別特征字符串轉(zhuǎn)換為二進(jìn)制代碼; 讀取裝置,用于讀取B-Tree的節(jié)點(diǎn);查找裝置,當(dāng)該節(jié)點(diǎn)為內(nèi)點(diǎn)時(shí),根據(jù)所述二進(jìn)制代碼在所述內(nèi)點(diǎn)中進(jìn)行二叉查找,確定所述待識(shí)別特征字符串對(duì)應(yīng)的葉子節(jié)點(diǎn)的位置。
9.根據(jù)權(quán)利要求8所述的特征字符串識(shí)別系統(tǒng),其特征在于,所述查找裝置,當(dāng)所述讀取B-Tree的節(jié)點(diǎn)為葉子節(jié)點(diǎn)時(shí),在所述葉子節(jié)點(diǎn)中做初始位置查找;還包括比較裝置,用于比較所述初始位置中的特征字符串與待識(shí)別特征字符串,當(dāng)二者一致時(shí),識(shí)別成功。
10.根據(jù)權(quán)利要求8所述的特征字符串識(shí)別系統(tǒng),其特征在于,所述查找裝置包括初始位置定為模塊,用于根據(jù)所述二進(jìn)制代碼在所述內(nèi)點(diǎn)中進(jìn)行二叉查找,獲得第一位置;葉子節(jié)點(diǎn)定為模塊,根據(jù)所述二進(jìn)制代碼及所述第一位置定位所述待識(shí)別特征字符串對(duì)應(yīng)的第二位置。
11.根據(jù)權(quán)利要求8所述的特征字符串識(shí)別系統(tǒng),其特征在于,還包括緩沖池, 所述緩沖池包括一級(jí)緩沖池和二級(jí)緩沖池,所述一級(jí)緩沖池,存儲(chǔ)最近使用的節(jié)點(diǎn)所對(duì)應(yīng)的頁(yè)面; 所述二級(jí)緩沖池,存儲(chǔ)將要從內(nèi)存中釋放的節(jié)點(diǎn)所對(duì)應(yīng)的頁(yè)面; 所述讀取裝置,用于從所述一級(jí)緩沖池和二級(jí)緩沖池中加載節(jié)點(diǎn)。
全文摘要
本發(fā)明公開(kāi)了一種特征字符串識(shí)別方法及系統(tǒng)。其中特征字符串識(shí)別方法包括A、將待識(shí)別特征字符串轉(zhuǎn)換為二進(jìn)制代碼;B、讀取B-Tree的節(jié)點(diǎn);C、當(dāng)該節(jié)點(diǎn)為內(nèi)點(diǎn)時(shí),根據(jù)所述二進(jìn)制代碼在所述內(nèi)點(diǎn)中進(jìn)行二叉查找,確定所述待識(shí)別特征字符串對(duì)應(yīng)的葉子節(jié)點(diǎn)的位置。本發(fā)明的特征字符串識(shí)別方法及系統(tǒng),由于每個(gè)內(nèi)點(diǎn)中編碼數(shù)組的長(zhǎng)度固定,因此只需要一個(gè)固定大小物理頁(yè)面進(jìn)行存放。在特征字符串的識(shí)別過(guò)程中,只需要讀取一個(gè)物理頁(yè)面就可以加載一個(gè)完整的內(nèi)點(diǎn),減少數(shù)據(jù)冗余,降低了讀取磁盤的次數(shù),提高了識(shí)別效率。
文檔編號(hào)G06K9/64GK102402692SQ201010280948
公開(kāi)日2012年4月4日 申請(qǐng)日期2010年9月13日 優(yōu)先權(quán)日2010年9月13日
發(fā)明者宋子輝, 楊崇俊 申請(qǐng)人:中國(guó)科學(xué)院遙感應(yīng)用研究所, 北京中遙地網(wǎng)信息技術(shù)有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
子洲县| 全州县| 监利县| 富锦市| 黄陵县| 贺州市| 武义县| 台安县| 贵溪市| 永善县| 武胜县| 麻城市| 微山县| 华蓥市| 滨州市| 富阳市| 玛多县| 南投市| 张家界市| 土默特右旗| 临湘市| 闽清县| 皋兰县| 宝清县| 平湖市| 巢湖市| 永福县| 苏尼特右旗| 乐平市| 昌乐县| 凤凰县| 周至县| 新干县| 巴林左旗| 怀仁县| 汶上县| 师宗县| 来安县| 兰州市| 兴城市| 金门县|