專利名稱::創(chuàng)建用于轉(zhuǎn)換數(shù)據(jù)表的編輯腳本的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及在通信終端中轉(zhuǎn)換數(shù)據(jù)表的方法,特別地,但不限于用于創(chuàng)建可在更新移動通信中的數(shù)據(jù)時使用的編輯腳本的方法。
背景技術(shù):
:空中編程(Overtheairprogramming,OTAP)已經(jīng)被開發(fā),因此可使用新軟件或數(shù)據(jù)重新編程位于無線網(wǎng)絡(luò)中的移動終端,而無需將這些終端重返至中央管理網(wǎng)點。在移動終端中保持的數(shù)據(jù)通常以表格格式存儲,其可以各種方式更新,典型地,可通過發(fā)送可以替代該舊表的全新表,或通過發(fā)送轉(zhuǎn)換該舊表以創(chuàng)建該新表的編輯腳本或其他文件。例如,在US5832520和US7003534中描述了包含編輯腳本的系統(tǒng)。創(chuàng)建編輯腳本典型地包括確定舊表和新表之間的差異并創(chuàng)建一段相對短的包括例如插入、刪除和重置標(biāo)簽操作的代碼。然后,該腳本從該中央網(wǎng)點通過無線廣播至每個需要升級的終端。當(dāng)不同終端組包含不同的表或具有不同數(shù)據(jù)的相同表時,可能需要多個不同的編輯腳本。為了使處理更有效,被用于創(chuàng)建、廣播和執(zhí)行該編輯腳本的時間應(yīng)該少于被用于簡單廣播該新數(shù)據(jù)的時間。已存在大量用于確定兩個文件間區(qū)別的算法,例如標(biāo)準(zhǔn)文本區(qū)別算法和二進制區(qū)別算法。其它用于轉(zhuǎn)換一個序列符號至另一序列的算法,包括計算編輯圖形內(nèi)路徑長度或編輯距離矩陣,也已經(jīng)被開發(fā)[1]。當(dāng)該數(shù)據(jù)以例如表或樹的等級形式可用時,這些算法相當(dāng)沒有效率。因此當(dāng)該舊的和新的數(shù)據(jù)被表現(xiàn)為有根、有序、標(biāo)記了的樹時,已開發(fā)出更有效的算法以找到最小成本的編輯腳本[2]。例如,在US7,287,0中描述了一個基于最近樹的系統(tǒng)。編輯距離矩陣可由兩個適當(dāng)構(gòu)造的樹形成。該矩陣的兩個軸典型地由包含數(shù)據(jù)值的樹的節(jié)點形成。接著該矩陣可被用于確定這些樹之間的編輯路徑。該路徑由使用插入、刪除或重置標(biāo)簽操作連接矩陣的頂點的有向圖來確定。編輯路徑可被用于恢復(fù)用來轉(zhuǎn)換一個樹成另一個的編輯腳本。用于優(yōu)化或至少減少其長度以及編輯路徑的其它處理成本的各種算法是已知的。[l]EugeneMyers,"An0(ND)DifferenceAlgorithmanditsVariations,,,Algorithmica,vol1,p251_266(1986).[2]SudarshanChawathe,"ComparingHierarchicalDatainExternalMemory,,,VLDB'99,Proceedingsof25thInternationalConferenceonVeryLargeDatabases,September7-10,1999,p90_101(MorganKaufmann,1999).
發(fā)明內(nèi)容因此本發(fā)明的目的是提供用于轉(zhuǎn)換數(shù)據(jù)表的改進方法,或者至少提供一個現(xiàn)有方法的有用的替換方法。本發(fā)明的一個方面是一種創(chuàng)建用于將舊的數(shù)據(jù)表轉(zhuǎn)換成新的數(shù)據(jù)表的編輯腳本的方法,包括從該舊表和新表分別創(chuàng)建舊數(shù)據(jù)樹和新數(shù)據(jù)樹,確定第一部分腳本,其將該舊樹轉(zhuǎn)換成與該新樹具有相同長度的中間樹,確定第二部分腳本,其將該中間樹轉(zhuǎn)換成新樹,并且合并該第一和第二部分腳本。優(yōu)選地,該第一部分腳本被確定為僅僅在舊數(shù)據(jù)樹中引起插入和刪除的最小成本的一系列編輯。在該舊數(shù)據(jù)樹中只有完全子樹被插入或刪除。優(yōu)選地,該第二部分腳本被確定為僅僅在中間樹中引起替換的最小成本的一系列編輯。優(yōu)選地,使用編輯距離矩陣確定該第一部分腳本,該編輯距離矩陣具有行優(yōu)先形式的舊樹和中間樹。使用編輯距離矩陣確定該第二部分腳本,該編輯距離矩陣具有行優(yōu)先形式的中間樹和新樹??蛇x地,使用編輯距離矩陣確定該第二部分腳本,該編輯距離矩陣具有列優(yōu)先形式的中間樹和新樹。優(yōu)選地,該方法還包括確定第二腳本,該第二腳本使用行優(yōu)先形式轉(zhuǎn)換中間樹成新樹,確定第二腳本,該第二腳本使用列優(yōu)先形式轉(zhuǎn)換中間樹成新樹,基于成本從這些第二腳本中選擇該第二部分腳本。優(yōu)選地,這些數(shù)據(jù)樹是由來自各個表中的數(shù)據(jù)形成的有根、有序、標(biāo)記了的樹。優(yōu)選地,這些數(shù)據(jù)樹還僅僅包含度為0、1、2的節(jié)點并且僅僅度為2的節(jié)點包含來自該各個表中的數(shù)據(jù)。本發(fā)明的另一方面是一種用于更新移動通信設(shè)備中的數(shù)據(jù)的方法,該方法包括確定存在于該設(shè)備中的舊數(shù)據(jù)表,確定在該設(shè)備中所需的新數(shù)據(jù)表,確定轉(zhuǎn)換該舊數(shù)據(jù)表成新數(shù)據(jù)表的編輯腳本,傳送該編輯腳本至該設(shè)備,以及驅(qū)使該設(shè)備執(zhí)行該編輯腳本,其中使用如上所述的方法確定該編輯腳本。本發(fā)明的優(yōu)選實施例將參照所附附圖描述,其中圖1概略地示出由無線網(wǎng)絡(luò)中的無線單元使用的數(shù)據(jù)表,圖2示出了用于創(chuàng)建轉(zhuǎn)換數(shù)據(jù)庫中的多個數(shù)據(jù)表的編輯腳本的例程,圖3A-;3B示出了用于為單個表創(chuàng)建編輯腳本的例程,圖4A-4B示出了用于計算舊樹和新樹之間編輯距離的例程,圖5示出了用于轉(zhuǎn)換表成行優(yōu)先樹的例程,圖6示出了用于轉(zhuǎn)換行優(yōu)先樹成列優(yōu)先樹的例程,圖7示出了個用于創(chuàng)建部分編輯腳本的例程,圖8示出了用于轉(zhuǎn)換舊樹成具有相同長度的中間樹的例程,圖9示出了用于創(chuàng)建轉(zhuǎn)換該舊樹成中間樹的編輯腳本的例程,圖10示出了用于從有向圖創(chuàng)建編輯腳本的例程,圖IlAUlB是舊表和新表的簡單示例,圖12AU2B對應(yīng)于圖IlAUlB的舊樹和新樹的示例,圖13是用于圖IlAUlB中舊樹和新樹的編輯距離矩陣,圖14示出了通過圖13中矩陣的允許例程,圖15示出了對編輯距離矩陣中頂點的更新、插入、刪除步驟,圖16A、16B、16C示出了用于對圖15中更新、插入、刪除步驟的計算成本的例程,圖17A至17F示出了對圖14的矩陣中的編輯路徑計算成本的步驟,圖18示出了用于圖14的優(yōu)化編輯路徑,圖19A、19B示出了從圖18恢復(fù)的編輯腳本的兩種形式,圖20A、20B示出了圖14以行優(yōu)先和列優(yōu)先形式的中間樹,圖21示出了圖14以列優(yōu)先形式的新樹;圖22A、22B示出了對應(yīng)于圖20A、20B和圖21、以及優(yōu)化編輯路徑的編輯距離矩陣;圖23示出了從圖20B恢復(fù)的編輯腳本,以及圖M示出了通過合并圖19B和23的腳本形成的編輯腳本。具體實施例方式參照附圖將意識到本發(fā)明可被以大量不同方式實施以用于各種移動無線系統(tǒng),以及潛在的其它不相關(guān)系統(tǒng),這些系統(tǒng)以等級形式使用和更新數(shù)據(jù)。在此所述的實施例只是作為示例。為了清楚起見,許多常規(guī)無線系統(tǒng)的細(xì)節(jié)已經(jīng)被省略,但是仍舊可以本領(lǐng)域技術(shù)人員理解。圖1示出了一個簡單無線網(wǎng)絡(luò),其具有通過網(wǎng)關(guān)11連接至基站12的中央管理計算機10。使用一個或多個RF信道在移動終端13和基站之間傳送無線信號。實際上這種網(wǎng)絡(luò)可以包括若干個不同種類的中央計算機、很多不同設(shè)置的基站、以及在一個寬廣的地域內(nèi)使用的一群多達(dá)一千或更多的移動終端。每個移動終端包含能夠使用OTAP更新的軟件和數(shù)據(jù)。該數(shù)據(jù)典型地以表格形式存儲,在此表現(xiàn)為“舊表”,要被更新或轉(zhuǎn)換為“新表”。該管理計算機包含數(shù)據(jù)庫14,其存儲與終端相關(guān)的數(shù)據(jù),包括由每個終端存儲的舊表的備份。該管理計算機還包含客戶端軟件15和服務(wù)器軟件16。典型的移動無線終端的部署和更新處理如下進行1)在本領(lǐng)域中使用前,無線終端13由該客戶端軟件15編程。這就允許該客戶端軟件將所需軟件和配置數(shù)據(jù)部署至該終端。該客戶端軟件在該中央管理數(shù)據(jù)庫中記錄該終端的狀態(tài)。2)客戶端軟件15稍后被使用以修改該所需應(yīng)用軟件版本和/或在這些終端中所需的配置數(shù)據(jù),如同存儲在該中央管理數(shù)據(jù)庫中的數(shù)據(jù)。3)服務(wù)器軟件16為要被發(fā)送至終端的任何已更新軟件創(chuàng)建補丁文件。4)服務(wù)器軟件16為任何配置數(shù)據(jù)的改變創(chuàng)建更新文件。該更新文件包含由各個終端使用的轉(zhuǎn)換舊表成新表的編輯腳本。5)服務(wù)器軟件16創(chuàng)建數(shù)據(jù)消息并使用該數(shù)據(jù)網(wǎng)關(guān)通過無線廣播這些消息至終端。6)終端13異步發(fā)送響應(yīng)消息至該固定網(wǎng)絡(luò)。7)一旦已確認(rèn)所有的更新已經(jīng)由終端13接收,該服務(wù)器軟陣發(fā)送激活命令至該終端??蛇x地,這個步驟可以需要來自一群管理員的輸入,他們手動初始化對這些更新的激活。8)一旦收到激活命令,這些終端13應(yīng)用這些更新至該軟件和配置數(shù)據(jù)。依賴于該終端的配置,這些更新的應(yīng)用可以是a)—旦收到該命令;b)在下次開機時;c)在由該無線使用者初始化時。圖2描繪了根據(jù)在一群終端中存在的舊數(shù)據(jù)表和對應(yīng)的隨后所需的新表之間的差異,一個或多個編輯腳本如何在該中央管理數(shù)據(jù)庫14中被創(chuàng)建。對于數(shù)據(jù)庫中的每個表,該客戶端軟件15將舊表和新表轉(zhuǎn)換成在之后編輯距離矩陣中使用的舊樹和新樹表示。接著僅使用影響該舊表長度的一個有限范圍操作來計算編輯路徑,并且恢復(fù)第一部分編輯腳本。通過應(yīng)用該腳本至該舊表數(shù)據(jù),生成該數(shù)據(jù)的中間樹表示。接著在中間樹和使用行優(yōu)先和列優(yōu)先形式兩者的新樹之間計算一對編輯路徑和相應(yīng)的部分編輯腳本。每個這些第二部分腳本的成本被計算并且選擇成本最小的那個。接著通過合并該第一部分腳本與所選擇的第二部分腳本,以形成用于轉(zhuǎn)換該舊表成該新表的完整編輯腳本。與圖2相關(guān),該舊和新表可被優(yōu)選地轉(zhuǎn)換為樹,通過將表中數(shù)據(jù)的每一項考慮為深或度為2的葉子節(jié)點。在行優(yōu)先形式下,該表的每行變成子樹,該子樹具有包含被加至具有空值的度為1的節(jié)點的數(shù)據(jù)值的葉子。在列優(yōu)先形式下,該表的每列類似地變成子樹,該子樹具有包含被加入具有空值的度為1的節(jié)點的數(shù)據(jù)的葉子。這些葉子據(jù)此由這些數(shù)據(jù)值標(biāo)記。所有度為1的節(jié)點被加至度為0的根節(jié)點,也就是空值。由連續(xù)行或列形成的子樹被從左至右排序,以“先序”。通過在樹中向下移動,每個節(jié)點被連續(xù)編號,并且從左至右。用這種方法將表轉(zhuǎn)換成樹的示例由圖11A、12A和11B、12B給出。仍舊與圖2相關(guān),優(yōu)選地,該編輯距離矩陣由兩個度為2的有根、有序、標(biāo)記了的樹形成。該矩陣的兩個軸由各自的度標(biāo)簽對序列形成。以這種方式形成的矩陣示例由圖12A、12B、13給出。還與圖2相關(guān),優(yōu)選地,該第一部分腳本僅僅由影響該舊樹長度的操作形成,因此該中間樹的長度和新樹的長度是相同的。僅僅那些在舊樹中包含完全子樹的插入或刪除的操作才被認(rèn)為是有效的。那些包含各個節(jié)點的插入或刪除的操作是無效的。以這種方式形成的編輯路徑的示例在圖18中給出。相比之下,該第二部分腳本僅僅使用在中間樹中重新標(biāo)記節(jié)點的操作而被計算。以這種方式形成的編輯路徑的示例在圖22A、22B中給出。圖3描繪了用于為單個表創(chuàng)建編輯腳本的例程。該例程的輸入是兩張數(shù)據(jù)表,即,為舊表和新表。該例程首先檢查該表適合打補丁?;谝唤M最基本的要素,該要素被識別用于更新在遠(yuǎn)程終端上的數(shù)據(jù)庫,沒有方式創(chuàng)建改變列(在域中數(shù)據(jù)位的個數(shù))的長度或增加或移除列的腳本。任何這種改變將意味著該表的整個內(nèi)容必須被發(fā)送。如果這些表的結(jié)構(gòu)(它們的定義)相等,則該處理如之前所述的繼續(xù)處理。圖4描繪了具有兩層嵌套循環(huán)的例程,其被用于處理該兩個樹并且計算它們之間的編輯距離。首先,一些變量被初始化。last_sub_tree[]是持有矩陣最后列的陣列,其持有在水平軸上的子樹的根節(jié)點。當(dāng)一個完整的子樹(或行)正在被處理時,即,刪除操作,其與唯一被執(zhí)行的該例程主體的計算相關(guān)。previous_column[]持有外層循環(huán)在之前索引的列,其被需要用于計算更新操作的成本。subtreejength(其被用在大量計算中)被初始化為列的數(shù)目(在該原始表)加1。額外的增加用于說明該子樹的根節(jié)點(樹中順序為1的節(jié)點),其在表至樹的轉(zhuǎn)換中被增加。在該例程中的外部循環(huán)從1運行至該原始表的長度。其處理該矩陣的每一列。由于該編輯腳本僅僅對該根節(jié)點(第0列的第0個索引)感興趣,第0列可被忽略。該方法限制了兩個樹中的節(jié)點和在該原始表中的列索引與在該目的表的列索引匹配的頂點的比較。該限制帶來的后果是沒有葉子節(jié)點的插入或刪除。為此,該內(nèi)層循環(huán)被初始化為原始表的索引(來自該外層循環(huán)的循環(huán)計數(shù)值)-1以子樹長度為模(有效地識別在該目的樹內(nèi)與在原始樹位置匹配的列的偏移)。該內(nèi)層循環(huán)接著在每次迭代的末尾由該子樹的長度增加。這意味著只有那些在源中的列索引和在目的中的列索引匹配的頂點才被考慮用于該外層循環(huán)的每次迭代。該內(nèi)層循環(huán)的每次迭代計算執(zhí)行更新操作的成本。如果該外層循環(huán)計數(shù)器由該子樹的長度恰好除盡,則我們正處于子樹的根并且在該內(nèi)層循環(huán)的每次迭代過程中插入和刪除的成本也被計算。當(dāng)遇到了該矩陣中的最終節(jié)點,那個操作(該有向圖中的最終節(jié)點表示該編輯腳本)被從該例程中返回。圖5描繪了用于轉(zhuǎn)換表成有根、有序、標(biāo)記了的樹的例程(以先序或行優(yōu)先)。度為0的節(jié)點被用作整個樹的根。接著對于每行來說,度為1的節(jié)點被用作子樹的根。對于每列來說,當(dāng)前行的值被增加為樹中度為2的節(jié)點。度為1的節(jié)點被用作一個終結(jié)符以簡化插入和刪除操作的計算。圖6描繪了轉(zhuǎn)換行優(yōu)先(先序)樹成列優(yōu)先(后序)樹的例程。這意味著以行優(yōu)先的順序讀樹并且以列優(yōu)先的順序?qū)憳?。該流程圖展示了這樣操作的方法,其選擇以迭代整個輸出樹并且基于由當(dāng)前行索引與子樹長度相乘加上感興趣的列從源樹計算該讀取位置。圖7描繪了用于恢復(fù)僅僅包含影響該表長度的操作的子集(插入和刪除操作)的部分編輯腳本的例程。該例程顛倒該有向圖中的邊(或操作)的順序并且接著將不是插入或刪除的任何操作轉(zhuǎn)換至空操作。圖8描繪了用于將來自圖7的部分編輯腳本應(yīng)用至該源樹以創(chuàng)建與該目的樹相同長度的中間樹的例程。這個中間樹會保持來自源樹的、排除了那些已經(jīng)被刪除的行的數(shù)據(jù),除了那些已經(jīng)被插入的行(其中該數(shù)據(jù)將與該目的樹的數(shù)據(jù)相匹配)外。對于空操作來說,該例程拷貝來自源樹的數(shù)據(jù)至該中間樹。對于刪除操作來說,該例程增加該源樹中的指針并且不執(zhí)行更新至中間樹。對于插入操作來說,該例程拷貝來自該目的樹的數(shù)據(jù)并且不在該源樹中增加該指針。圖9描繪了一旦這些樹知道長度相同則計算該編輯腳本的例程。這是該主編輯距離處理的簡化版本。該算法簡單地與為索引兩個樹中每個位置比較索引以及確定該標(biāo)簽是否應(yīng)當(dāng)被更新相關(guān)。圖10描繪了負(fù)責(zé)從有向圖恢復(fù)該編輯腳本的例程。邊以它們在有向圖中出現(xiàn)的順序讀入(因此從兩樹的末端后退至源頭)。相同操作類型的鄰近邊被連接起來以形成更大的操作(跨越樹中更多節(jié)點的操作)。一旦一條邊不能和圖中的下條邊連接則它被輸出至該腳本。這個一直被重復(fù)直到?jīng)]有更多的邊要被處理。圖11至30涉及轉(zhuǎn)換舊數(shù)據(jù)表至新數(shù)據(jù)表的簡化的例子。圖IlAUlB示出了具有三列的表“Animal”,其包含存儲為P-string的一種動物的名字;首字節(jié)被用以存儲字符串中一定數(shù)量的字符,該字符串中的每個字符被連續(xù)地存儲在隨后的字節(jié)中,“#legs”,其包含該類動物通常具有腿的個數(shù),其被存儲為一個單字節(jié),“Colour”,其包含與作為P-string的動物類型通常最相關(guān)的顏色。圖12A示出了表現(xiàn)為有根、有序、標(biāo)記了的樹的圖IlA中舊表數(shù)據(jù)的表示。樹中的每個節(jié)點由其序號注釋。節(jié)點按先序編號。每個節(jié)點旁邊的文字標(biāo)簽包含該節(jié)點的度(樹的深度)和它的標(biāo)簽(在樹中用于那個單元的數(shù)據(jù))。圖12B示出了表現(xiàn)為有根、有序、標(biāo)記了的樹的圖IlB中新表的表示。注釋和圖12A相同。在這種情況下這些改變可以被發(fā)現(xiàn)。第二個子樹(根在節(jié)點幻現(xiàn)在持有不同的細(xì)節(jié)。根在9的子樹含有之前根在5的數(shù)據(jù)。額外的子樹(根在17)已經(jīng)被添加至該樹。這表示一個行的插入、另一行的刪除、以及附加一個新行至該表結(jié)尾。圖13示出了由圖12A、12B中的這些樹形成的被存儲為標(biāo)簽度對陣列的編輯距離矩陣。舊和新數(shù)據(jù)分別沿著水平軸和垂直軸。圖14示出了在圖13的矩陣中可用的有限范圍的編輯路徑。不可能或效率不高的操作不被考慮,具體的操作包括插入或刪除各個度為2的節(jié)點、或重置標(biāo)識對于在矩陣中目的頂點表示具有不同度的節(jié)點。每個可用編輯路徑的成本必須由頂點之間各個指針的步驟來確定。圖15和16A、16B、16C表明了在編輯路徑中各步驟可能如何被計算成本。該矩陣的一列被一次性地載入到該管理計算機的存儲器中。在任何時間點,在當(dāng)前列時,先前列(如果存在)和舊數(shù)據(jù)(如果存在)中度為1的節(jié)點的最后列被包含在存儲器中。通過把節(jié)點成本的最小值移動至圖中當(dāng)前節(jié)點的左邊,依次計算遍歷當(dāng)前列中每個節(jié)點的成本。通過該節(jié)點本身的成本加上從之前節(jié)點遍歷至當(dāng)前節(jié)點操作的成本來計算節(jié)點移動至左邊的成本。插入成本(Cl)、刪除成本(CD)、以及更新成本(CU)的最小成本被用來確定該根以及當(dāng)前節(jié)點的成本。圖15中節(jié)點D的成本會被如下計算=CostD=min{CU,Cl,CD}其中CU=CostA+uCI=CostB+iCD=CostC+d在此考慮的特定案例中這是復(fù)雜的,原因是該數(shù)據(jù)的表結(jié)構(gòu)阻止允許插入或刪除在單個節(jié)點上操作。這意味著僅僅在行開始的節(jié)點對于刪除和插入操作以及那些遍歷至之前行的起始點的操作是有效的。用于圖16A中更新成本的示例代碼將左手鄰居(當(dāng)前頂點斜左方的頂點)的成本添加至在源樹中更新當(dāng)前節(jié)點的成本以匹配該目的樹。如果該源和目的節(jié)點的標(biāo)簽相等,那么該操作的成本是0。否則,如果之前操作也不是寫操作,那么這個操作也引起移動該指針至在源表中當(dāng)前位置的成本。該更新操作成本的剩余部分是基于為該目的節(jié)點的標(biāo)簽傳送數(shù)據(jù)的成本。LabelCost為該樹的特定節(jié)點計算要傳送標(biāo)簽的字節(jié)數(shù),舉例來說,對于“Animal”或“Colour”列來說,該標(biāo)簽的成本對于字符數(shù)來說是1字節(jié),并且接著每字符1字節(jié),對于“#legs”列來說,該成本是1字節(jié)。用于插入成本的示例代碼添加左手鄰居(當(dāng)前頂點上方的頂點)的成本至在當(dāng)前位置插入一行的成本。插入一行的成本依賴于是否任何之前的插入或刪除操作在該圖中已經(jīng)遇到了。如果沒有則拷貝該表和重命名該表的額外成本對于這個操作已發(fā)生。如果左手鄰居不是一個插入操作,則當(dāng)前操作也發(fā)生移動該指針以及從該原始表拷貝一個或多個行數(shù)據(jù)至新表的成本。用于刪除成本的示例代碼將左手鄰居(與當(dāng)前頂點左方水平的頂點)的成本添加至在當(dāng)前位置刪除一行的成本。刪除一行的成本依賴于是否任何之前的插入或刪除操作在該圖中已經(jīng)遇到了。如果沒有,則拷貝該表和重命名該表的額外成本對于該操作已發(fā)生。如果左手鄰居不是刪除操作,則當(dāng)前操作發(fā)生從該原始表拷貝一個或多個行數(shù)據(jù)至目的表的成本。如果該左手操作是刪除操作,對于刪除額外的連續(xù)行沒有額外的成本發(fā)生。下列常數(shù)已經(jīng)被用于這些示例,而例如位組裝和組裝開銷的關(guān)注在成本計算中已經(jīng)被忽略了。常數(shù)cost_of_cursor_move8字節(jié)cost_of_copy_table4字節(jié)cost_of_rename_table4字節(jié)cost_of_copy_rows:10字節(jié)圖17A至17F示出了圖14的矩陣中在用于對編輯路徑計算成本的例程中的迭代,而圖18示出了該優(yōu)化的編輯路徑。在圖17A中,該原始節(jié)點的成本是0并且所有其它在列中的節(jié)點是不能到達(dá)的,以及因此發(fā)生了無限大的成本(這被用于從考慮中排除所有達(dá)到該圖中這些節(jié)點的路徑)。在圖17B中成本計算被如下執(zhí)行第0個節(jié)點不能被到達(dá)。成本無限大。第1個節(jié)點標(biāo)簽相等。成本為0。第2個節(jié)點至第4個節(jié)點不能被到達(dá)。成本無限大。第5個節(jié)點插入一行。這是該路徑上的第一個插入或刪除(返回至原始的最便宜路徑包括一個成本為0的“更新”操作。left.cost+cost_of_copy_table+cost_of_rename_table+cost_of_cursor_move+cost_of_copy_rows+LabelCost(horse)+LabelCost(4)+LabelCost(brown)==0+4+4+8+10+6+1+6==39第6個節(jié)點至第8個節(jié)點不能被到達(dá)。成本無限大。第9個節(jié)點插入一行。這不是第一個插入或刪除。之前的操作是一個插入操作。左成本為39。left.cost+LabelCost(mantis)+LabelCost(6)+LabelCost(green)==39+7+1+6==53由于到達(dá)了圖17A至17F中每次迭代的末端,僅僅那些在矩陣中是部分有效路徑的頂點被保持在存儲器中。因此在圖19的第四次迭代的末端,該程序在存儲器中保持第二、第三和第四列,但是釋放該第三列。由于還沒有遇到其它度為1的列,該第二個仍是需要的。由于之前列輸入至下個迭代,該第四列仍是需要的。第三列中那些不是任何有效有向圖一部分的頂點可在這個點上被釋放。在這種情況下,在圖17C的第六次迭代的末端,該程序到達(dá)第一行數(shù)據(jù)的末端。此處,可計算插入和刪除操作。圖19A示出了應(yīng)當(dāng)從圖14中示出的矩陣恢復(fù)的腳本。在恢復(fù)該腳本的過程中,所有表示同類操作的鄰近邊被連接以形成單個操作。在被用于構(gòu)建該矩陣的成本算法中,這個處理被識別。這個腳本接著被重寫以生成僅僅包含改變該表長度的操作(插入行或刪除行)的腳本。該產(chǎn)生的重寫腳本在19B中示出。其將會形成與圖2相關(guān)所提及的該第一部分腳本。圖20A、20B示出了分別以行優(yōu)先和列優(yōu)先兩種形式應(yīng)用的具有來自圖19B的長度腳本的舊樹。圖21示出了為確定與圖2相關(guān)所提及的該第二部分腳本,被轉(zhuǎn)換為列優(yōu)先的新樹。圖22A、22B示出了分別與在圖20A、20B行優(yōu)先和列優(yōu)先形式的中間樹相關(guān)的用于新樹的編輯距離矩陣。優(yōu)化編輯路徑只包含重新標(biāo)簽步驟,并且因此是對角線,這是由于該中間樹的長度匹配于該新樹的長度。被計算用于列優(yōu)先形式的路徑被看成具有最低成本。圖23示出了從圖22B生成的編輯腳本,其應(yīng)當(dāng)形成該第二部分編輯腳本以與來自圖19B的腳本合并。在這種情況下,舊和新數(shù)據(jù)表相對來說很小,并且在圖22A、22B中示出的編輯路徑成本大約相等。每個都可能被選擇具有最低成本的腳本。實際上,這些數(shù)據(jù)表可以包含成千個行或列,并且由它們各自樹的行優(yōu)先和列優(yōu)先形式創(chuàng)建的差異可能會更明Mo圖M示出了根據(jù)圖19B和圖23中的腳本生成的合并腳本。這個腳本可被用來將舊表轉(zhuǎn)換成新表。權(quán)利要求1.一種創(chuàng)建編輯腳本用于轉(zhuǎn)換舊數(shù)據(jù)表成新數(shù)據(jù)表的方法,包括根據(jù)舊表和新表分別創(chuàng)建舊數(shù)據(jù)樹和新數(shù)據(jù)樹;確定第一部分腳本,該第一部分腳本將舊樹轉(zhuǎn)換成與新樹具有相同長度的中間樹;確定第二部分腳本,該第二部分腳本將中間樹轉(zhuǎn)換成新樹,以及合并該第一和第二部分腳本。2.根據(jù)權(quán)利要求1的方法,其中該第一部分腳本被確定為僅僅在舊數(shù)據(jù)樹中引起插入和刪除的最小成本的一系列編輯。3.根據(jù)權(quán)利要求2的方法,其中該第一部分腳本僅僅在該舊數(shù)據(jù)樹中插入或刪除完全子樹。4.根據(jù)權(quán)利要求1的方法,其中該第二部分腳本被確定為僅僅在中間樹中引起替換的最小成本的一系列編輯。5.根據(jù)權(quán)利要求1的方法,其中使用編輯距離矩陣確定該第一部分腳本,該編輯距離矩陣具有行優(yōu)先形式的舊樹和中間樹。6.根據(jù)權(quán)利要求1的方法,其中使用編輯距離矩陣確定該第二部分腳本,該編輯距離矩陣具有行優(yōu)先形式的中間樹和新樹。7.根據(jù)權(quán)利要求1的方法,其中使用編輯距離矩陣確定該第二部分腳本,該編輯距離矩陣具有列優(yōu)先形式的中間樹和新樹。8.根據(jù)權(quán)利要求1的方法還包括確定第二腳本,該第二腳本使用行優(yōu)先形式轉(zhuǎn)換中間樹成新樹;確定第二腳本,該第二腳本使用列優(yōu)先形式轉(zhuǎn)換中間樹成新樹;以及基于成本從第二腳本中選擇第二部分腳本。9.根據(jù)權(quán)利要求1的方法,其中這些數(shù)據(jù)樹是由來自各個表中的數(shù)據(jù)形成的有根、有序、標(biāo)記了的樹。10.根據(jù)權(quán)利要求9的方法,其中數(shù)據(jù)樹僅僅包含度為0、1、2的節(jié)點,并且僅僅度為2的節(jié)點包含來自該各個表的數(shù)據(jù)。11.一種用于更新移動通信終端中的數(shù)據(jù)的方法,包括確定存在于設(shè)備中的舊數(shù)據(jù)表;確定在該設(shè)備中所需的新數(shù)據(jù)表;確定轉(zhuǎn)換舊數(shù)據(jù)表成新數(shù)據(jù)表的編輯腳本;傳送該編輯腳本至該設(shè)備;以及驅(qū)使該設(shè)備執(zhí)行該編輯腳本,其中,使用如上所述的方法確定該編輯腳本。全文摘要一種創(chuàng)建用于轉(zhuǎn)換數(shù)據(jù)表的編輯腳本,本發(fā)明有助于在通信終端中轉(zhuǎn)換舊數(shù)據(jù)表成新數(shù)據(jù)表。通過根據(jù)該舊表和新表分別創(chuàng)建舊的和新的數(shù)據(jù)樹,以創(chuàng)建編輯腳本。然后確定第一部分腳本,該第一部分腳本將該舊樹轉(zhuǎn)換成一個與該新樹具有相同長度的中間樹。還確定第二部分腳本,該第二部分腳本將該中間樹轉(zhuǎn)換成新樹。然后合并該第一和第二部分腳本,以提供能夠被發(fā)送至該終端的腳本。優(yōu)選地,該第一部分腳本是僅僅在舊數(shù)據(jù)樹中引起插入和刪除的最小成本的一系列編輯。優(yōu)選地,該第二部分腳本是僅僅在中間樹中引起替換的最小成本的一系列編輯。文檔編號G06F17/30GK102236703SQ201110141630公開日2011年11月9日申請日期2011年4月8日優(yōu)先權(quán)日2010年4月9日發(fā)明者H·A·史密斯申請人:太特電子有限公司