亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

排列的生成方法以及排列生成程序的制作方法

文檔序號(hào):6656925閱讀:359來(lái)源:國(guó)知局
專利名稱:排列的生成方法以及排列生成程序的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及表示樹(shù)型數(shù)據(jù)構(gòu)造的排列的生成方法,特別是涉及表現(xiàn)樹(shù)型數(shù)據(jù)構(gòu)造,構(gòu)筑在存儲(chǔ)裝置上的方法。另外,本發(fā)明涉及實(shí)施這種方法的信息處理裝置。進(jìn)而,本發(fā)明涉及用于執(zhí)行這種方法的程序。
背景技術(shù)
數(shù)據(jù)庫(kù)在各種用途中使用,而在中規(guī)模到大規(guī)模的系統(tǒng)中,使用能夠排除邏輯矛盾的關(guān)系型數(shù)據(jù)庫(kù)(RDB)成為主流。例如,RDB在飛機(jī)的坐席預(yù)訂等系統(tǒng)中被利用。這種情況下,通過(guò)指定關(guān)鍵字項(xiàng)目,能夠迅速地檢索(大多情況下是一件)目標(biāo),或者能夠進(jìn)行預(yù)訂的確定、清除或者變更等。另外,由于各航班的坐席數(shù)充其量是幾百個(gè),因此還能夠?qū)で筇囟ê桨嗟目兆瘮?shù)。
已知這樣的RDB適合于表形式數(shù)據(jù)的處理,但并不適合于樹(shù)形式數(shù)據(jù)的處理(例如,參照非專利文獻(xiàn)1。)。
進(jìn)而,在應(yīng)用中,存在與表形式的表現(xiàn)相比較樹(shù)形式的表現(xiàn)更適合的情況。特別是,近年來(lái),作為內(nèi)部網(wǎng)或者互聯(lián)網(wǎng)的應(yīng)用的數(shù)據(jù)標(biāo)準(zhǔn),正在普及采用樹(shù)型數(shù)據(jù)構(gòu)造的XML(關(guān)于XML的詳細(xì)情況例如參照非專利文獻(xiàn)2。)。
然而,對(duì)樹(shù)型數(shù)據(jù)構(gòu)造的處理,例如,對(duì)樹(shù)形式數(shù)據(jù)的檢索一般效率非常差。導(dǎo)致該效率差的第1理由在于由于數(shù)據(jù)分散存在于各處的節(jié)點(diǎn),因此難以立即特定數(shù)據(jù)應(yīng)該存在的位置。在RDB中,例如,“年齡”這樣數(shù)據(jù)只保存在某個(gè)表的“年齡”這樣的項(xiàng)目中。然而,在樹(shù)型數(shù)據(jù)構(gòu)造中,由于保持“年齡”這樣數(shù)據(jù)的節(jié)點(diǎn)分散存在于各處,因此一般如果不檢查樹(shù)型數(shù)據(jù)構(gòu)造的整體,就不能檢索該數(shù)據(jù)。
效率差的第2理由在于為了表現(xiàn)檢索的結(jié)果而花費(fèi)時(shí)間這一點(diǎn)。如果要表現(xiàn)在檢索中擊中的節(jié)點(diǎn)群,還必須屢次表現(xiàn)與其節(jié)點(diǎn)的子孫相當(dāng)?shù)墓?jié)點(diǎn),由于與RDBMS不同,數(shù)據(jù)構(gòu)造是非定型的,因此為了表現(xiàn)子孫節(jié)點(diǎn)需要花費(fèi)時(shí)間。
因此,為了發(fā)揮作為數(shù)據(jù)庫(kù)的主流的RDB的優(yōu)點(diǎn),當(dāng)前提出了在把樹(shù)型數(shù)據(jù)構(gòu)造做成數(shù)據(jù)庫(kù)時(shí),把樹(shù)形式數(shù)據(jù)做成RDB的方法(例如,參照專利文獻(xiàn)1。)。在RDB中,數(shù)據(jù)被分解保持在表中。為此,為了把實(shí)際的樹(shù)形式數(shù)據(jù)做成RDB,需要把樹(shù)形式數(shù)據(jù)塞進(jìn)到表中。然而,為了處理各種樹(shù)型數(shù)據(jù)構(gòu)造,必須對(duì)每種構(gòu)造單獨(dú)地把數(shù)據(jù)塞進(jìn)表中來(lái)進(jìn)行系統(tǒng)設(shè)計(jì)。從而,基于RDB的系統(tǒng)構(gòu)筑將是非常麻煩的作業(yè)。
對(duì)此,還提出了把樹(shù)形式數(shù)據(jù)特別是XML數(shù)據(jù)以原來(lái)的形式構(gòu)成數(shù)據(jù)庫(kù)的方法。在樹(shù)型數(shù)據(jù)構(gòu)造的情況下,由于能夠在一個(gè)節(jié)點(diǎn)懸掛子孫節(jié)點(diǎn),進(jìn)行多樣的表現(xiàn),因此能夠大幅度減少系統(tǒng)設(shè)計(jì)的手續(xù)。從而,以能夠處理XML這樣的樹(shù)構(gòu)造的技術(shù)為核心,處理樹(shù)構(gòu)造數(shù)據(jù)的需求正在高漲。
把XML數(shù)據(jù)以原有的形式構(gòu)成數(shù)據(jù)庫(kù)的方法的一個(gè)例子的方法是取出記入在樹(shù)構(gòu)造中的數(shù)據(jù)的拷貝,例如,如果是“年齡”這樣的項(xiàng)目,則分開(kāi)地保持“年齡”的檢索用索引數(shù)據(jù)(例如,參照專利文獻(xiàn)2。)。由此,在充分地靈活運(yùn)用在數(shù)據(jù)自身中能夠添加屬性這樣的XML數(shù)據(jù)優(yōu)點(diǎn)的同時(shí),能夠原樣對(duì)使用標(biāo)簽表現(xiàn)出的各項(xiàng)目的關(guān)系構(gòu)造進(jìn)行存儲(chǔ)。
專利文獻(xiàn)1特開(kāi)2003-248615號(hào)公報(bào)專利文獻(xiàn)2特開(kāi)2001-195406號(hào)公報(bào)非專利文獻(xiàn)1セツク株式會(huì)社“Karearea White Paper”,[online],[平成16年2月19日檢索](互聯(lián)網(wǎng)<URL:http://www.sec.co.jp/products/karearea/>
非專利文獻(xiàn)2W3C,“Extensible Markup Language(XML)1.0(ThirdEdition)”,[online],2004年2月4日,[平成16年2月19日檢索],互聯(lián)網(wǎng)<URL:http://www.w3.org/TR/2004/REC-xml-20040204/>

發(fā)明內(nèi)容
然而,在分開(kāi)地保持檢索用索引數(shù)據(jù)這樣的方法中,至少雙重保持了數(shù)據(jù),而且,需要生成索引的成本以及保存用于保持索引的數(shù)據(jù)區(qū),在保持大規(guī)模數(shù)據(jù)方面是不利的。
實(shí)際上,即使依據(jù)這樣的機(jī)理進(jìn)行實(shí)際檢索,特定節(jié)點(diǎn),為了表現(xiàn)其節(jié)點(diǎn)也需要花費(fèi)時(shí)間。另外,該機(jī)理不能在以節(jié)點(diǎn)之間的關(guān)系為問(wèn)題的檢索(例如,對(duì)在祖先中包括“60歲”這樣的“年齡”,子孫中包括“1歲”這樣的“年齡”的樹(shù)進(jìn)行抽取)中利用。
這種現(xiàn)有技術(shù)的根本的問(wèn)題點(diǎn)在于由于僅著眼一個(gè)個(gè)數(shù)據(jù),通過(guò)用指針把存儲(chǔ)了數(shù)據(jù)的節(jié)點(diǎn)之間連接起來(lái),來(lái)表現(xiàn)樹(shù)型數(shù)據(jù)構(gòu)造,因此不能夠有效地跟蹤數(shù)據(jù)之間的關(guān)系,例如,父子、祖先、子孫、兄弟(シブリング)、代等的關(guān)系。換句話講,由于指針的值不是恒定的,因此僅能夠在表示數(shù)據(jù)的保存地址這樣的用途中使用,不能夠直接表現(xiàn)節(jié)點(diǎn)之間的關(guān)系。
因此,本發(fā)明的目的在于提供與能夠有效地跟蹤樹(shù)型數(shù)據(jù)構(gòu)造的數(shù)據(jù)之間的關(guān)系的樹(shù)型數(shù)據(jù)構(gòu)造的表現(xiàn)以及構(gòu)筑有關(guān)的方法。
進(jìn)而,本發(fā)明的目的在于提供與能夠有效地跟蹤樹(shù)型數(shù)據(jù)構(gòu)造的數(shù)據(jù)之間的關(guān)系的樹(shù)型數(shù)據(jù)構(gòu)造的構(gòu)筑有關(guān)的信息處理裝置。
進(jìn)而,本發(fā)明的目的在于提供與能夠有效地跟蹤樹(shù)型數(shù)據(jù)構(gòu)造的數(shù)據(jù)之間的關(guān)系的樹(shù)型數(shù)據(jù)構(gòu)造的表現(xiàn)以及構(gòu)筑有關(guān)的程序。
另外,在處理樹(shù)型數(shù)據(jù)構(gòu)造時(shí),還產(chǎn)生移動(dòng)成為追尋定位路徑的基準(zhǔn)點(diǎn)、成為頂點(diǎn)的節(jié)點(diǎn)(頂點(diǎn)節(jié)點(diǎn))的需要。因此,本發(fā)明的目的還特別在于提供使樹(shù)型數(shù)據(jù)構(gòu)造中的頂點(diǎn)節(jié)點(diǎn)移動(dòng)的方法、信息處理裝置以及程序。
本發(fā)明的目的根據(jù)以下的排列生成方法來(lái)實(shí)現(xiàn),該排列生成方法的特征是,在具備了由第1排列所表現(xiàn)的樹(shù)型數(shù)據(jù)構(gòu)造的數(shù)據(jù)的計(jì)算機(jī)中,具備以下步驟為了分別表現(xiàn)包括特定的節(jié)點(diǎn)以及其子孫節(jié)點(diǎn)的、1個(gè)以上的節(jié)點(diǎn)群,把該特定的節(jié)點(diǎn)作為頂點(diǎn)節(jié)點(diǎn),設(shè)置保存了該節(jié)點(diǎn)識(shí)別符的第2排列的步驟;參照上述第1排列,使在上述第2排列中保存了節(jié)點(diǎn)識(shí)別符的頂點(diǎn)節(jié)點(diǎn)的每一個(gè)移動(dòng)到a)用弧線直接連接該頂點(diǎn)節(jié)點(diǎn),而且該弧線從頂點(diǎn)節(jié)點(diǎn)延伸的子節(jié)點(diǎn),b)用弧線直接連接該頂點(diǎn)節(jié)點(diǎn),而且該弧線從那里延伸到頂點(diǎn)節(jié)點(diǎn)的父節(jié)點(diǎn),c)與該頂點(diǎn)節(jié)點(diǎn)同代的節(jié)點(diǎn),且是從該頂點(diǎn)節(jié)點(diǎn)的父節(jié)點(diǎn)對(duì)于頂點(diǎn)節(jié)點(diǎn)連接弧線以前,連接有弧線的兄節(jié)點(diǎn),d)與該頂點(diǎn)節(jié)點(diǎn)同代的節(jié)點(diǎn),且是從該頂點(diǎn)節(jié)點(diǎn)的父節(jié)點(diǎn)對(duì)于頂點(diǎn)節(jié)點(diǎn)連接了弧線以后,連接有弧線的弟節(jié)點(diǎn)中的某一個(gè),生成保存了移動(dòng)后的新的頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符的第3排列的步驟,其中上述第1排列是向節(jié)點(diǎn)中提供固有的節(jié)點(diǎn)識(shí)別符,且節(jié)點(diǎn)之間的父子關(guān)系是由向作為路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的、非路由節(jié)點(diǎn)的每一個(gè)上提供的節(jié)點(diǎn)識(shí)別符和與非路由節(jié)點(diǎn)的每一個(gè)相關(guān)聯(lián)起來(lái)的父節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符的組構(gòu)成。
在本發(fā)明中,在新的第3排列中,在父節(jié)點(diǎn)、子節(jié)點(diǎn)、兄節(jié)點(diǎn)或者弟節(jié)點(diǎn)的某一個(gè)上保存移動(dòng)后的頂點(diǎn)節(jié)點(diǎn)的識(shí)別符。由此,能夠恰當(dāng)?shù)刈兏剿鞫ㄎ宦窂降幕鶞?zhǔn)點(diǎn),能夠容易地進(jìn)行樹(shù)型數(shù)據(jù)構(gòu)造的數(shù)據(jù)的跟蹤等。
在優(yōu)選的實(shí)施方式中,使同代的節(jié)點(diǎn)比子節(jié)點(diǎn)優(yōu)先,向包含路由節(jié)點(diǎn)的節(jié)點(diǎn)提供固有的連續(xù)的整數(shù),按照提供給作為上述路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的非路由節(jié)點(diǎn)的每一個(gè)上的整數(shù)的順序,通過(guò)排列提供給上述非路由節(jié)點(diǎn)的每一個(gè)父節(jié)點(diǎn)上的整數(shù)而形成上述第1排列,
為了使上述頂點(diǎn)節(jié)點(diǎn)的每一個(gè)移動(dòng)到子節(jié)點(diǎn),而生成上述第3排列的步驟具有特定上述第1排列中保存了頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符的保存位置的步驟;以及把移動(dòng)后的頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符決定為與該保存位置相對(duì)應(yīng)的節(jié)點(diǎn)識(shí)別符的步驟。
另外,在優(yōu)選實(shí)施方式中,使同代的節(jié)點(diǎn)比子節(jié)點(diǎn)優(yōu)先,對(duì)包含路由節(jié)點(diǎn)的節(jié)點(diǎn)上提供固有的連續(xù)的整數(shù),按照提供給作為上述路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的非路由節(jié)點(diǎn)的每一個(gè)上的整數(shù)的順序,通過(guò)排列提供給上述非路由節(jié)點(diǎn)的每一個(gè)父節(jié)點(diǎn)上的整數(shù)形成上述第1排列,為了使上述頂點(diǎn)節(jié)點(diǎn)的每一個(gè)移動(dòng)到父節(jié)點(diǎn),生成上述第3排列的步驟具有特定上述第1排列中保存在與頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符相對(duì)應(yīng)的位置上的節(jié)點(diǎn)識(shí)別符的步驟;把移動(dòng)后的頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符決定為保存到上述相對(duì)應(yīng)的位置的節(jié)點(diǎn)識(shí)別符的步驟。
在其它的實(shí)施方式中,使同代的節(jié)點(diǎn)比子節(jié)點(diǎn)優(yōu)先,向包括路由節(jié)點(diǎn)的節(jié)點(diǎn)上提供固有的連續(xù)的整數(shù),按照提供給作為上述路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的非路由節(jié)點(diǎn)的每一個(gè)上的整數(shù)的順序,通過(guò)排列提供給上述非路由節(jié)點(diǎn)的每一個(gè)父節(jié)點(diǎn)上的整數(shù)而形成上述第1排列,為了使上述頂點(diǎn)節(jié)點(diǎn)的每一個(gè)移動(dòng)到兄節(jié)點(diǎn),生成上述第3排列的步驟具有特定上述第1排列中保存在與頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符相對(duì)應(yīng)的位置上的第1節(jié)點(diǎn)識(shí)別符的步驟;特定在上述第1排列中保存在僅比上述頂點(diǎn)節(jié)點(diǎn)識(shí)別符相對(duì)應(yīng)的位置的值小1的值的保存位置上的第2節(jié)點(diǎn)識(shí)別符的步驟;在上述第1節(jié)點(diǎn)識(shí)別符與上述第2節(jié)點(diǎn)識(shí)別符一致的情況下,把上述移動(dòng)后的頂點(diǎn)節(jié)點(diǎn)識(shí)別符決定為與上述第2節(jié)點(diǎn)識(shí)別符的保存位置相對(duì)應(yīng)的節(jié)點(diǎn)識(shí)別符的步驟。
進(jìn)而,在其它的實(shí)施方式中,使同代的節(jié)點(diǎn)比子節(jié)點(diǎn)優(yōu)先,對(duì)包含路由節(jié)點(diǎn)的節(jié)點(diǎn)上提供固有的連續(xù)的整數(shù),按照提供給作為上述路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的非路由節(jié)點(diǎn)的每一個(gè)上的整數(shù)的順序,通過(guò)排列提供給上述非路由節(jié)點(diǎn)的每一個(gè)父節(jié)點(diǎn)上的整數(shù)而形成上述第1排列,為了使上述頂點(diǎn)節(jié)點(diǎn)的每一個(gè)移動(dòng)到弟節(jié)點(diǎn),生成上述第3排列的步驟具有特定在上述第1排列中保存在與頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符相對(duì)應(yīng)的位置上的第1節(jié)點(diǎn)識(shí)別符的步驟;特定在上述第1排列中保存在僅比上述頂點(diǎn)節(jié)點(diǎn)識(shí)別符相對(duì)應(yīng)的位置的值大1的值的保存位置上的第3節(jié)點(diǎn)識(shí)別符的步驟;在上述第1節(jié)點(diǎn)識(shí)別符與第3節(jié)點(diǎn)識(shí)別符一致的情況下,把上述移動(dòng)后的頂點(diǎn)節(jié)點(diǎn)識(shí)別符決定為與上述第3節(jié)點(diǎn)識(shí)別符的保存位置相對(duì)應(yīng)的節(jié)點(diǎn)識(shí)別符的步驟。
進(jìn)而,在其它的實(shí)施方式中,使子節(jié)點(diǎn)比同代的節(jié)點(diǎn)優(yōu)先,向包含路由節(jié)點(diǎn)的節(jié)點(diǎn)上提供固有的連續(xù)的整數(shù),按照提供給作為上述路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的非路由節(jié)點(diǎn)的每一個(gè)上的整數(shù)的順序,通過(guò)排列提供給上述非路由節(jié)點(diǎn)的每一個(gè)父節(jié)點(diǎn)上的整數(shù)而形成上述第1排列,為了使上述頂點(diǎn)節(jié)點(diǎn)的每一個(gè)移動(dòng)到子節(jié)點(diǎn),生成上述第3排列的步驟具有特定在上述第1排列中保存了頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符的保存位置的步驟;把移動(dòng)后的頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符決定為與該保存位置相對(duì)應(yīng)的節(jié)點(diǎn)識(shí)別符的步驟。
在其它的實(shí)施方式中,使子節(jié)點(diǎn)比同代的節(jié)點(diǎn)優(yōu)先,向包含路由節(jié)點(diǎn)的節(jié)點(diǎn)上提供固有的連續(xù)的整數(shù),
按照提供給作為上述路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的非路由節(jié)點(diǎn)的每一個(gè)上的整數(shù)的順序,通過(guò)排列提供給上述非路由節(jié)點(diǎn)的每一個(gè)父節(jié)點(diǎn)上的整數(shù)而形成上述第1排列,為了使上述頂點(diǎn)節(jié)點(diǎn)的每一個(gè)移動(dòng)到父節(jié)點(diǎn),生成上述第3排列的步驟具有特定在上述第1排列中保存在與頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符相對(duì)應(yīng)的位置的節(jié)點(diǎn)識(shí)別符的步驟;把移動(dòng)后的頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符決定為保存在上述相對(duì)應(yīng)的位置的節(jié)點(diǎn)識(shí)別符的步驟。
另外,在其它的實(shí)施方式中,使子節(jié)點(diǎn)比同代的節(jié)點(diǎn)優(yōu)先,向包含路由節(jié)點(diǎn)的節(jié)點(diǎn)上提供固有的連續(xù)的整數(shù),按照提供給作為上述路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的非路由節(jié)點(diǎn)的每一個(gè)上的整數(shù)的順序,通過(guò)排列提供給上述非路由節(jié)點(diǎn)的每一個(gè)父節(jié)點(diǎn)上的整數(shù)而形成上述第1排列,為了使上述頂點(diǎn)節(jié)點(diǎn)的每一個(gè)移動(dòng)到兄節(jié)點(diǎn),生成上述第3排列的步驟具有特定在上述第1排列中保存在頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符的保存位置上的第1節(jié)點(diǎn)識(shí)別符的步驟;檢索在上述第1排列中保存在比頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符的保存位置的值小的值的保存位置上、并且與該第1節(jié)點(diǎn)識(shí)別符相同的第4節(jié)點(diǎn)識(shí)別符的步驟;特定上述第4節(jié)點(diǎn)識(shí)別符的保存位置中的最大保存位置的步驟;把上述移動(dòng)后的頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符決定為與上述最大保存位置相對(duì)應(yīng)的節(jié)點(diǎn)識(shí)別符的步驟。
另外,在其它的實(shí)施方式中,使子節(jié)點(diǎn)比同代的節(jié)點(diǎn)優(yōu)先,向包括路由節(jié)點(diǎn)的節(jié)點(diǎn)上提供固有的連續(xù)的整數(shù),按照提供給作為上述路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的非路由節(jié)點(diǎn)的每一個(gè)上的整數(shù)的順序,通過(guò)排列提供給上述非路由節(jié)點(diǎn)的每一個(gè)父節(jié)點(diǎn)上的整數(shù)而形成上述第1排列,
為了使上述頂點(diǎn)節(jié)點(diǎn)的每一個(gè)移動(dòng)到弟節(jié)點(diǎn),生成上述第3排列的步驟具有特定在上述第1排列中保存在頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符的保存位置的第1節(jié)點(diǎn)識(shí)別符的步驟;檢索在上述第1排列中保存在比頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符的保存位置的值大的值的保存位置上、并且與該第1節(jié)點(diǎn)識(shí)別符相等的第5節(jié)點(diǎn)識(shí)別符的步驟;特定上述第5節(jié)點(diǎn)識(shí)別符的保存位置中的最小保存位置的步驟;把上述移動(dòng)后的頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符決定為與上述最大保存位置相對(duì)應(yīng)的節(jié)點(diǎn)識(shí)別符的步驟。
另外,本發(fā)明的目的還通過(guò)排列生成程序?qū)崿F(xiàn),該排列生成程序是能夠由具備了由第1排列所表現(xiàn)的樹(shù)型數(shù)據(jù)構(gòu)造的數(shù)據(jù)的計(jì)算機(jī)讀取的計(jì)算機(jī)程序,且使該計(jì)算機(jī)執(zhí)行以下步驟為了分別表現(xiàn)包括特定的節(jié)點(diǎn)以及其子孫節(jié)點(diǎn)的、1個(gè)以上的節(jié)點(diǎn)群,把該特定的節(jié)點(diǎn)作為頂點(diǎn)節(jié)點(diǎn),設(shè)置保存了該節(jié)點(diǎn)識(shí)別符的第2排列的步驟;參照上述第1排列,使在上述第2排列中保存了節(jié)點(diǎn)識(shí)別符的頂點(diǎn)節(jié)點(diǎn)的每一個(gè)移動(dòng)到a)用弧線直接連接該頂點(diǎn)節(jié)點(diǎn),而且該弧線從頂點(diǎn)節(jié)點(diǎn)延伸的子節(jié)點(diǎn),b)用弧線直接連接該頂點(diǎn)節(jié)點(diǎn),而且該弧線從那里延伸到頂點(diǎn)節(jié)點(diǎn)的父節(jié)點(diǎn),c)與該頂點(diǎn)節(jié)點(diǎn)同代的節(jié)點(diǎn),且是從該頂點(diǎn)節(jié)點(diǎn)的父節(jié)點(diǎn)對(duì)于頂點(diǎn)節(jié)點(diǎn)連接弧線以前,連接有弧線的兄節(jié)點(diǎn),d)與該頂點(diǎn)節(jié)點(diǎn)同代的節(jié)點(diǎn),且是從該頂點(diǎn)節(jié)點(diǎn)的父節(jié)點(diǎn)對(duì)于頂點(diǎn)節(jié)點(diǎn)連接了弧線以后,連接有弧線的弟節(jié)點(diǎn)中的某一個(gè),生成保存了移動(dòng)后的新的頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符的第3排列的步驟,其中上述第1排列是向節(jié)點(diǎn)中提供固有的節(jié)點(diǎn)識(shí)別符,且節(jié)點(diǎn)之間的父子關(guān)系是由向作為路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的、非路由節(jié)點(diǎn)的每一個(gè)上提供的節(jié)點(diǎn)識(shí)別符和與非路由節(jié)點(diǎn)的每一個(gè)相關(guān)聯(lián)起來(lái)的父節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符的組構(gòu)成。
在優(yōu)選的實(shí)施方式中,使同代的節(jié)點(diǎn)比子節(jié)點(diǎn)優(yōu)先,向包含路由節(jié)點(diǎn)的節(jié)點(diǎn)提供固有的連續(xù)的整數(shù),按照提供給作為上述路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的非路由節(jié)點(diǎn)的每一個(gè)上的整數(shù)的順序,通過(guò)排列提供給上述非路由節(jié)點(diǎn)的每一個(gè)父節(jié)點(diǎn)上的整數(shù)而形成上述第1排列,為了使上述頂點(diǎn)節(jié)點(diǎn)的每一個(gè)移動(dòng)到子節(jié)點(diǎn),而在生成上述第3排列的步驟上使上述計(jì)算機(jī)執(zhí)行特定上述第1排列中保存了頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符的保存位置的步驟;以及把移動(dòng)后的頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符決定為與該保存位置相對(duì)應(yīng)的節(jié)點(diǎn)識(shí)別符的步驟。
另外,在優(yōu)選的實(shí)施方式中,使同代的節(jié)點(diǎn)比子節(jié)點(diǎn)優(yōu)先,對(duì)包含路由節(jié)點(diǎn)的節(jié)點(diǎn)上提供固有的連續(xù)的整數(shù),按照提供給作為上述路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的非路由節(jié)點(diǎn)的每一個(gè)上的整數(shù)的順序,通過(guò)排列提供給上述非路由節(jié)點(diǎn)的每一個(gè)父節(jié)點(diǎn)上的整數(shù)形成上述第1排列,為了使上述頂點(diǎn)節(jié)點(diǎn)的每一個(gè)移動(dòng)到父節(jié)點(diǎn),在生成上述第3排列的步驟上使上述計(jì)算機(jī)執(zhí)行特定上述第1排列中保存在與頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符相對(duì)應(yīng)的位置上的節(jié)點(diǎn)識(shí)別符的步驟;把移動(dòng)后的頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符決定為保存到上述相對(duì)應(yīng)的位置的節(jié)點(diǎn)識(shí)別符的步驟。
在其它的實(shí)施方式中,使同代的節(jié)點(diǎn)比子節(jié)點(diǎn)優(yōu)先,向包括路由節(jié)點(diǎn)的節(jié)點(diǎn)上提供固有的連續(xù)的整數(shù),按照提供給作為上述路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的非路由節(jié)點(diǎn)的每一個(gè)上的整數(shù)的順序,通過(guò)排列提供給上述非路由節(jié)點(diǎn)的每一個(gè)父節(jié)點(diǎn)上的整數(shù)而形成上述第1排列,為了使上述頂點(diǎn)節(jié)點(diǎn)的每一個(gè)移動(dòng)到兄節(jié)點(diǎn),在生成上述第3排列的步驟上使上述計(jì)算機(jī)執(zhí)行特定上述第1排列中保存在與頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符相對(duì)應(yīng)的位置上的第1節(jié)點(diǎn)識(shí)別符的步驟;特定在上述第1排列中保存在僅比上述頂點(diǎn)節(jié)點(diǎn)識(shí)別符相對(duì)應(yīng)的位置的值小1的值的保存位置上的第2節(jié)點(diǎn)識(shí)別符的步驟;在上述第1節(jié)點(diǎn)識(shí)別符與上述第2節(jié)點(diǎn)識(shí)別符一致的情況下,把上述移動(dòng)后的頂點(diǎn)節(jié)點(diǎn)識(shí)別符決定為與上述第2節(jié)點(diǎn)識(shí)別符的保存位置相對(duì)應(yīng)的節(jié)點(diǎn)識(shí)別符的步驟。
進(jìn)而,在其它的實(shí)施方式中,使同代的節(jié)點(diǎn)比子節(jié)點(diǎn)優(yōu)先,對(duì)包含路由節(jié)點(diǎn)的節(jié)點(diǎn)上提供固有的連續(xù)的整數(shù),按照提供給作為上述路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的非路由節(jié)點(diǎn)的每一個(gè)上的整數(shù)的順序,通過(guò)排列提供給上述非路由節(jié)點(diǎn)的每一個(gè)父節(jié)點(diǎn)上的整數(shù)而形成上述第1排列,為了使上述頂點(diǎn)節(jié)點(diǎn)的每一個(gè)移動(dòng)到弟節(jié)點(diǎn),在生成上述第3排列的步驟上使上述計(jì)算機(jī)執(zhí)行特定在上述第1排列中保存在與頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符相對(duì)應(yīng)的位置上的第1節(jié)點(diǎn)識(shí)別符的步驟;特定在上述第1排列中保存在僅比上述頂點(diǎn)節(jié)點(diǎn)識(shí)別符相對(duì)應(yīng)的位置的值大1的值的保存位置上的第3節(jié)點(diǎn)識(shí)別符的步驟;在上述第1節(jié)點(diǎn)識(shí)別符與第3節(jié)點(diǎn)識(shí)別符一致的情況下,把上述移動(dòng)后的頂點(diǎn)節(jié)點(diǎn)識(shí)別符決定為與上述第3節(jié)點(diǎn)識(shí)別符的保存位置相對(duì)應(yīng)的節(jié)點(diǎn)識(shí)別符的步驟。
進(jìn)而,在優(yōu)選的實(shí)施方式中,使子節(jié)點(diǎn)比同代的節(jié)點(diǎn)優(yōu)先,向包含路由節(jié)點(diǎn)的節(jié)點(diǎn)上提供固有的連續(xù)的整數(shù),按照提供給作為上述路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的非路由節(jié)點(diǎn)的每一個(gè)上的整數(shù)的順序,通過(guò)排列提供給上述非路由節(jié)點(diǎn)的每一個(gè)父節(jié)點(diǎn)上的整數(shù)而形成上述第1排列,
為了使上述頂點(diǎn)節(jié)點(diǎn)的每一個(gè)移動(dòng)到子節(jié)點(diǎn),在生成上述第3排列的步驟上使上述計(jì)算機(jī)執(zhí)行特定在上述第1排列中保存了頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符的保存位置的步驟;把移動(dòng)后的頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符決定為與該保存位置相對(duì)應(yīng)的節(jié)點(diǎn)識(shí)別符的步驟。
另外,在優(yōu)選的實(shí)施方式中,使子節(jié)點(diǎn)比同代的節(jié)點(diǎn)優(yōu)先,向包含路由節(jié)點(diǎn)的節(jié)點(diǎn)上提供固有的連續(xù)的整數(shù),按照提供給作為上述路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的非路由節(jié)點(diǎn)的每一個(gè)上的整數(shù)的順序,通過(guò)排列提供給上述非路由節(jié)點(diǎn)的每一個(gè)父節(jié)點(diǎn)上的整數(shù)而形成上述第1排列,為了使上述頂點(diǎn)節(jié)點(diǎn)的每一個(gè)移動(dòng)到父節(jié)點(diǎn),在生成上述第3排列的步驟上使上述計(jì)算機(jī)執(zhí)行特定在上述第1排列中保存在與頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符相對(duì)應(yīng)的位置的節(jié)點(diǎn)識(shí)別符的步驟;把移動(dòng)后的頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符決定為保存在上述相對(duì)應(yīng)的位置的節(jié)點(diǎn)識(shí)別符的步驟。
另外,在其它優(yōu)選的實(shí)施方式中,使子節(jié)點(diǎn)比同代的節(jié)點(diǎn)優(yōu)先,向包含路由節(jié)點(diǎn)的節(jié)點(diǎn)上提供固有的連續(xù)的整數(shù),按照提供給作為上述路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的非路由節(jié)點(diǎn)的每一個(gè)上的整數(shù)的順序,通過(guò)排列提供給上述非路由節(jié)點(diǎn)的每一個(gè)父節(jié)點(diǎn)上的整數(shù)而形成上述第1排列,為了使上述頂點(diǎn)節(jié)點(diǎn)的每一個(gè)移動(dòng)到兄節(jié)點(diǎn),在生成上述第3排列的步驟上使上述計(jì)算機(jī)執(zhí)行特定在上述第1排列中保存在頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符的保存位置上的第1節(jié)點(diǎn)識(shí)別符的步驟;檢索在上述第1排列中保存在比頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符的保存位置的值小的值的保存位置上、并且與該第1節(jié)點(diǎn)識(shí)別符相同的第4節(jié)點(diǎn)識(shí)別符的步驟;
特定上述第4節(jié)點(diǎn)識(shí)別符的保存位置中的最大保存位置的步驟;把上述移動(dòng)后的頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符決定為與上述最大保存位置相對(duì)應(yīng)的節(jié)點(diǎn)識(shí)別符的步驟。
另外,在其它優(yōu)選的實(shí)施方式中,使子節(jié)點(diǎn)比同代的節(jié)點(diǎn)優(yōu)先,向包括路由節(jié)點(diǎn)的節(jié)點(diǎn)上提供固有的連續(xù)的整數(shù),按照提供給作為上述路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的非路由節(jié)點(diǎn)的每一個(gè)上的整數(shù)的順序,通過(guò)排列提供給上述非路由節(jié)點(diǎn)的每一個(gè)父節(jié)點(diǎn)上的整數(shù)而形成上述第1排列,為了使上述頂點(diǎn)節(jié)點(diǎn)的每一個(gè)移動(dòng)到弟節(jié)點(diǎn),在生成上述第3排列的步驟上使上述計(jì)算機(jī)執(zhí)行特定在上述第1排列中保存在頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符的保存位置的第1節(jié)點(diǎn)識(shí)別符的步驟;檢索在上述第1排列中保存在比頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符的保存位置的值大的值的保存位置上、并且與該第1節(jié)點(diǎn)識(shí)別符相等的第5節(jié)點(diǎn)識(shí)別符的步驟;特定上述第5節(jié)點(diǎn)識(shí)別符的保存位置中的最小保存位置的步驟;把上述移動(dòng)后的頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符決定為與上述最大保存位置相對(duì)應(yīng)的節(jié)點(diǎn)識(shí)別符的步驟。
依據(jù)本發(fā)明,能夠提供與可以有效地跟蹤樹(shù)型數(shù)據(jù)構(gòu)造的數(shù)據(jù)之間的關(guān)系的樹(shù)型數(shù)據(jù)構(gòu)造的表現(xiàn)以及構(gòu)筑有關(guān)的方法。
進(jìn)而,依據(jù)本發(fā)明,能夠提供與可以有效地跟蹤樹(shù)型數(shù)據(jù)構(gòu)造的數(shù)據(jù)之間的關(guān)系的樹(shù)型數(shù)據(jù)構(gòu)造的構(gòu)筑有關(guān)的信息處理裝置。
進(jìn)而,依據(jù)本發(fā)明,能夠提供與可以有效地跟蹤樹(shù)型數(shù)據(jù)構(gòu)造的數(shù)據(jù)之間的關(guān)系的樹(shù)型數(shù)據(jù)構(gòu)造的表現(xiàn)以及構(gòu)筑有關(guān)的程序。
特別是,依據(jù)本發(fā)明,能夠提供用于表現(xiàn)包括特定的節(jié)點(diǎn)及其子孫節(jié)點(diǎn)在內(nèi)的1個(gè)以上的節(jié)點(diǎn)群的排列的生成以及處理該排列的方法、信息處理裝置以及程序。


圖1是處理本發(fā)明實(shí)施方式的樹(shù)型數(shù)據(jù)構(gòu)造的計(jì)算機(jī)系統(tǒng)的框圖。
圖2A、B是作為樹(shù)形式數(shù)據(jù)的一個(gè)例子的POS數(shù)據(jù)的說(shuō)明圖,圖2是視覺(jué)上表現(xiàn)出了該樹(shù)形式數(shù)據(jù)的數(shù)據(jù)構(gòu)造(即拓?fù)?以及數(shù)據(jù)值的例子,圖2B是以XML形式表現(xiàn)相同的樹(shù)形式數(shù)據(jù)的例子。
圖3A~C分別是使用了弧表的樹(shù)型數(shù)據(jù)構(gòu)造的表現(xiàn)形式的一個(gè)例子的說(shuō)明圖。
圖4A~C是基于本發(fā)明一個(gè)實(shí)施例的“子→父”關(guān)系的樹(shù)型數(shù)據(jù)構(gòu)造的表現(xiàn)方法的說(shuō)明圖。
圖5是在存儲(chǔ)裝置上構(gòu)筑本發(fā)明一個(gè)實(shí)施例的樹(shù)型數(shù)據(jù)構(gòu)造的方法流程圖。
圖6A~C是依據(jù)本發(fā)明的一個(gè)實(shí)施例,把ID形式的樹(shù)構(gòu)造型數(shù)據(jù)向整數(shù)連續(xù)號(hào)碼形式的樹(shù)構(gòu)造型數(shù)據(jù)進(jìn)行變換的處理的說(shuō)明圖。
圖7A~C是依據(jù)本發(fā)明的另一個(gè)實(shí)施例,把ID形式的樹(shù)構(gòu)造型數(shù)據(jù)向整數(shù)連續(xù)號(hào)碼形式的樹(shù)構(gòu)造型數(shù)據(jù)進(jìn)行變換的處理的說(shuō)明圖。
圖8是基于本發(fā)明一個(gè)實(shí)施例的深度優(yōu)先的節(jié)點(diǎn)定義處理的流程圖。
圖9是基于根據(jù)本發(fā)明的一個(gè)實(shí)施例制成的“子→父”表現(xiàn)的父子關(guān)系的排列的說(shuō)明圖。
圖10是基于從圖6C所示的深度優(yōu)先的樹(shù)型數(shù)據(jù)構(gòu)造制成的“父→子”表現(xiàn)的父子關(guān)系的排列的說(shuō)明圖。
圖11是基于本發(fā)明一個(gè)實(shí)施例的寬度優(yōu)先的節(jié)點(diǎn)定義處理的流程圖。
圖12是基于根據(jù)本發(fā)明的一個(gè)實(shí)施例制成的“子→父”表現(xiàn)的父子關(guān)系的排列的說(shuō)明圖。
圖13是基于從圖7C所示的寬度優(yōu)先的樹(shù)型數(shù)據(jù)構(gòu)造制成的“父→子”表現(xiàn)的父子關(guān)系的排列的說(shuō)明圖。
圖14A表示基于寬度優(yōu)先模式的樹(shù)型數(shù)據(jù)構(gòu)造,圖14B把該樹(shù)型數(shù)據(jù)構(gòu)造表示成基于“子→父”表現(xiàn)的父子關(guān)系的排列。
圖15A表示頂點(diǎn)節(jié)點(diǎn)列表的例子,圖15B是表示在頂點(diǎn)節(jié)點(diǎn)列表中特定的部分樹(shù)群的例子的圖。
圖16A表示通過(guò)檢索處理得到的頂點(diǎn)節(jié)點(diǎn)列表的例子,圖16B是表示在頂點(diǎn)節(jié)點(diǎn)列表中特定的部分樹(shù)群的例子的圖。
圖17A表示通過(guò)總計(jì)處理得到的頂點(diǎn)節(jié)點(diǎn)列表以及總計(jì)結(jié)果的排列的例子,圖17B是表示在頂點(diǎn)節(jié)點(diǎn)列表中特定的部分樹(shù)群的例子的圖。
圖18A表示按照節(jié)點(diǎn)數(shù)排序了的頂點(diǎn)節(jié)點(diǎn)列表以及相對(duì)應(yīng)的節(jié)點(diǎn)數(shù)的排列的例子,圖18B是表示在頂點(diǎn)節(jié)點(diǎn)列表中特定的部分樹(shù)的例子的圖。
圖19A、C分別表示成為“與”運(yùn)算的對(duì)象的頂點(diǎn)節(jié)點(diǎn)列表的例子,圖19B、D是分別表示在頂點(diǎn)節(jié)點(diǎn)列表中特定的部分樹(shù)群的例子的圖。
圖20A表示示出了“與”運(yùn)算結(jié)果的頂點(diǎn)節(jié)點(diǎn)列表的例子,圖20B表示在頂點(diǎn)節(jié)點(diǎn)列表中特定的部分樹(shù)群。
圖21A表示本實(shí)施方式的頂點(diǎn)節(jié)點(diǎn)列表,圖21B表示用箭頭示出了頂點(diǎn)節(jié)點(diǎn)的樹(shù)的例子,圖21C表示當(dāng)把頂點(diǎn)節(jié)點(diǎn)向相當(dāng)于孩子的節(jié)點(diǎn)移動(dòng)了時(shí)的頂點(diǎn)節(jié)點(diǎn)列表,圖21D表示用箭頭示出了移動(dòng)了的頂點(diǎn)節(jié)點(diǎn)的樹(shù)的例子。
圖22A表示本實(shí)施方式的頂點(diǎn)節(jié)點(diǎn)列表,圖22B表示用箭頭示出了頂點(diǎn)節(jié)點(diǎn)的樹(shù)的例子,圖22C表示當(dāng)把頂點(diǎn)節(jié)點(diǎn)向相當(dāng)于父親的節(jié)點(diǎn)移動(dòng)了時(shí)的頂點(diǎn)節(jié)點(diǎn)列表,圖22D表示用箭頭示出了移動(dòng)了的頂點(diǎn)節(jié)點(diǎn)的樹(shù)的例子。
圖23A表示本實(shí)施方式的頂點(diǎn)節(jié)點(diǎn)列表,圖23B表示用箭頭示出了頂點(diǎn)節(jié)點(diǎn)的樹(shù)的例子,圖23C表示當(dāng)把頂點(diǎn)節(jié)點(diǎn)向相當(dāng)于弟的節(jié)點(diǎn)移動(dòng)了時(shí)的頂點(diǎn)節(jié)點(diǎn)列表,圖23D表示用箭頭示出移動(dòng)了的頂點(diǎn)節(jié)點(diǎn)的樹(shù)的例子。
圖24是表示在把頂點(diǎn)節(jié)點(diǎn)向相當(dāng)于孩子的節(jié)點(diǎn)移動(dòng)時(shí),在計(jì)算機(jī)系統(tǒng)中所執(zhí)行的處理的流程圖。
圖25B是表示樹(shù)的例子的圖,圖25B是說(shuō)明把頂點(diǎn)節(jié)點(diǎn)向相當(dāng)于孩子的節(jié)點(diǎn)移動(dòng)的處理的圖。
圖26是表示在把頂點(diǎn)節(jié)點(diǎn)向相當(dāng)于父親的節(jié)點(diǎn)移動(dòng)時(shí),在計(jì)算機(jī)系統(tǒng)中所執(zhí)行的處理的流程圖。
圖27A是表示樹(shù)的例子的圖,圖27B是說(shuō)明把頂點(diǎn)節(jié)點(diǎn)向相當(dāng)于父親的節(jié)點(diǎn)移動(dòng)的處理的圖。
圖28是表示在把頂點(diǎn)節(jié)點(diǎn)向相當(dāng)于弟的節(jié)點(diǎn)移動(dòng)時(shí),在計(jì)算機(jī)系統(tǒng)中執(zhí)行的處理的流程圖。
圖29A是表示樹(shù)的例子的圖,圖29B是說(shuō)明把頂點(diǎn)節(jié)點(diǎn)向相當(dāng)于弟的節(jié)點(diǎn)移動(dòng)的處理的圖。
圖30是表示在檢索相當(dāng)于孩子的節(jié)點(diǎn)時(shí),在計(jì)算機(jī)系統(tǒng)中執(zhí)行的處理的流程圖。
圖31A是表示樹(shù)的例子的圖,圖31B是說(shuō)明把頂點(diǎn)節(jié)點(diǎn)向相當(dāng)于孩子的節(jié)點(diǎn)移動(dòng)的處理的圖。
圖32A是表示樹(shù)的例子的圖,圖32B說(shuō)明把頂點(diǎn)節(jié)點(diǎn)向相當(dāng)于父親的節(jié)點(diǎn)移動(dòng)的處理的圖。
圖33是表示在把頂點(diǎn)節(jié)點(diǎn)向相當(dāng)于弟的節(jié)點(diǎn)移動(dòng)時(shí),在計(jì)算機(jī)系統(tǒng)中所執(zhí)行的處理的流程圖。
圖34A是表示樹(shù)的例子的圖,圖34b說(shuō)明把頂點(diǎn)節(jié)點(diǎn)向相當(dāng)于弟的節(jié)點(diǎn)移動(dòng)的處理的圖。
圖35是在存儲(chǔ)裝置上構(gòu)筑本實(shí)施方式的樹(shù)型數(shù)據(jù)構(gòu)造以及頂點(diǎn)節(jié)點(diǎn)列表的信息處理裝置的功能框圖。
具體實(shí)施例方式
以下,參照

本發(fā)明的實(shí)施方式。
圖1是表示處理本發(fā)明實(shí)施方式的樹(shù)型數(shù)據(jù)構(gòu)造的計(jì)算機(jī)系統(tǒng)的硬件結(jié)構(gòu)的框圖。如圖1所示,該計(jì)算機(jī)系統(tǒng)10是與通常的系統(tǒng)同樣的結(jié)構(gòu),具備通過(guò)執(zhí)行程序控制系統(tǒng)整體以及各個(gè)結(jié)構(gòu)部分的CPU12、存儲(chǔ)工作數(shù)據(jù)等RAM(隨機(jī)訪問(wèn)存儲(chǔ)器Random AccessMemory)14、存儲(chǔ)程序等ROM(只讀存儲(chǔ)器Read Only Memory)15、硬盤等固定存儲(chǔ)介質(zhì)18、用于訪問(wèn)CD-ROM19的CD-ROM驅(qū)動(dòng)器20、在與CD-ROM驅(qū)動(dòng)器20或者外部網(wǎng)絡(luò)(未圖示)連接的外部端子之間設(shè)置的接口(I/F)22、由鍵盤或鼠標(biāo)構(gòu)成的輸入裝置24、CRT顯示裝置26。CPU12、RAM14、ROM16、外部存儲(chǔ)介質(zhì)18、I/F22、輸入裝置24以及顯示裝置26經(jīng)由總線28相互連接。
本實(shí)施方式的、在存儲(chǔ)裝置上構(gòu)筑樹(shù)型數(shù)據(jù)構(gòu)造的程序以及在存儲(chǔ)裝置上變換樹(shù)型數(shù)據(jù)構(gòu)造的程序可以收容在CD-ROM19中,由CD-ROM驅(qū)動(dòng)器20讀取,也可以預(yù)先存儲(chǔ)在ROM16中。另外,還可以把一旦從CD-ROM19讀出的內(nèi)容存儲(chǔ)到外部存儲(chǔ)介質(zhì)18的規(guī)定區(qū)域中?;蛘咭部梢越?jīng)過(guò)網(wǎng)絡(luò)(未圖示)、外部端子以及I/F22從外部提供上述程序。
另外,本發(fā)明的實(shí)施方式的信息處理裝置通過(guò)使計(jì)算機(jī)系統(tǒng)10執(zhí)行在存儲(chǔ)裝置上構(gòu)筑樹(shù)型數(shù)據(jù)構(gòu)造的程序以及在存儲(chǔ)裝置上變換樹(shù)型數(shù)據(jù)構(gòu)造的程序來(lái)實(shí)現(xiàn)。
圖2A、B是作為樹(shù)形式數(shù)據(jù)的一個(gè)例子的POS數(shù)據(jù)的說(shuō)明圖。圖2A是視覺(jué)上表現(xiàn)出該樹(shù)形式數(shù)據(jù)的數(shù)據(jù)構(gòu)造(即,拓?fù)?以及數(shù)據(jù)值的一個(gè)例子,圖2B是以XML形式表現(xiàn)出相同的樹(shù)形式數(shù)據(jù)的一個(gè)例子。如圖2A、B所示,樹(shù)型數(shù)據(jù)構(gòu)造由從路由節(jié)點(diǎn)(在本例中是POS數(shù)據(jù))開(kāi)始,在各節(jié)點(diǎn)分支,到達(dá)葉子節(jié)點(diǎn)(端點(diǎn))的節(jié)點(diǎn)與弧線的組合來(lái)表現(xiàn)。各節(jié)點(diǎn)的實(shí)際的值,例如店名節(jié)點(diǎn)的值=“法式店”的保存位置用與店名節(jié)點(diǎn)關(guān)聯(lián)的指針指定。
本發(fā)明由于以樹(shù)型數(shù)據(jù)構(gòu)造的拓?fù)錇閷?duì)象,因此在以下的說(shuō)明中,主要對(duì)于樹(shù)型數(shù)據(jù)構(gòu)造的拓?fù)溥M(jìn)行說(shuō)明。
當(dāng)前,這種樹(shù)型數(shù)據(jù)構(gòu)造通過(guò)用指針把存儲(chǔ)了數(shù)據(jù)的節(jié)點(diǎn)之間連接起來(lái)表現(xiàn)。然而,指針表現(xiàn)具有在指針值中沒(méi)有必然性的缺點(diǎn)。即,在某種情況下,由于特定的節(jié)點(diǎn)A被保存在某個(gè)地址(例如100地址),在其它的情況下,相同的節(jié)點(diǎn)A被保存在其它的地址(例如200地址),因此指針值不恒定,指針值本質(zhì)上只不過(guò)表現(xiàn)節(jié)點(diǎn)的保存地址。因此,例如在根據(jù)深度優(yōu)先的規(guī)則用指針連接節(jié)點(diǎn)的情況下,難以根據(jù)寬度優(yōu)先的規(guī)則用指針再次連接這些節(jié)點(diǎn)。
對(duì)此,本發(fā)明者著眼于樹(shù)型數(shù)據(jù)構(gòu)造的拓?fù)淠軌蛴没”碛浭?。所謂弧表是表示節(jié)點(diǎn)之間的父子關(guān)系的弧線的列表。圖3A~C是使用了弧表的樹(shù)型數(shù)據(jù)構(gòu)造的表現(xiàn)形式的一個(gè)例子的說(shuō)明圖。在該圖的例子中,表示由添加了0、10、20、30、40、50、60、70、80、90、100以及110的節(jié)點(diǎn)識(shí)別符(ID)的12個(gè)節(jié)點(diǎn)構(gòu)成的樹(shù)型數(shù)據(jù)構(gòu)造。圖3A表示樹(shù)型數(shù)據(jù)構(gòu)造的整體。圖3A中,記載在圓形、心形等圖形中央的數(shù)字表示節(jié)點(diǎn)ID,箭頭和記載在箭頭一側(cè)的<0,10>的數(shù)字對(duì)表示弧線。另外,節(jié)點(diǎn)ID不限于文字列,也可以是數(shù)值,特別是整數(shù)。圖3B表示從父節(jié)點(diǎn)(From-ID)到子節(jié)點(diǎn)(To-ID)的弧表,圖3C表示由節(jié)點(diǎn)ID與節(jié)點(diǎn)種類的對(duì)的列表構(gòu)成的節(jié)點(diǎn)列表。另外,由于只是表現(xiàn)樹(shù)型數(shù)據(jù)構(gòu)造的目的,因此也可以沒(méi)有節(jié)點(diǎn)列表。原理上通過(guò)使用這樣的弧表,能夠與指針無(wú)關(guān)地直接記述節(jié)點(diǎn)之間的關(guān)系。
在圖3A~C的例子中,根據(jù)使子節(jié)點(diǎn)與父節(jié)點(diǎn)相對(duì)應(yīng)的“父→子”關(guān)系記述弧表。因此,在一個(gè)父節(jié)點(diǎn)例如路由節(jié)點(diǎn)0中存在3個(gè)子節(jié)點(diǎn)10、60以及80,因此在弧表的From-ID中相同節(jié)點(diǎn)ID的0出現(xiàn)3次。即,由于即使特定父節(jié)點(diǎn)也不能夠特定子節(jié)點(diǎn),因此弧表由要素From-ID的排列和要素To-ID的排列構(gòu)成。在使用弧表的情況下,某個(gè)節(jié)點(diǎn)出現(xiàn)在From-ID的排列和To-ID的排列的雙方排列中。
對(duì)此,父子關(guān)系還能夠由“子→父”關(guān)系來(lái)表現(xiàn)。這種情況下,節(jié)點(diǎn)之間的父子關(guān)系由作為路由節(jié)點(diǎn)以外節(jié)點(diǎn)的非路由節(jié)點(diǎn)的每一個(gè)與相關(guān)聯(lián)起來(lái)的父節(jié)點(diǎn)的、組的排列來(lái)表現(xiàn)。在由該“子→父”關(guān)系表現(xiàn)父子節(jié)點(diǎn)的情況下,有在“父→子”關(guān)系的情況下不能夠得到的重要性質(zhì)。即,在一個(gè)子節(jié)點(diǎn)中由于一定與唯一的父節(jié)點(diǎn)相對(duì)應(yīng),因此通過(guò)特定子節(jié)點(diǎn),能夠立即特定與該子節(jié)點(diǎn)相對(duì)應(yīng)的唯一的父節(jié)點(diǎn)。即,弧表實(shí)際上可以只準(zhǔn)備要素To-ID的排列。作為其結(jié)果,減小用于存儲(chǔ)弧表的存儲(chǔ)容量。該存儲(chǔ)容量的減少由于具有能夠減少對(duì)于存儲(chǔ)器的訪問(wèn)次數(shù)的效果,其結(jié)果能夠?qū)崿F(xiàn)處理的高速化。
圖4A~C是基于本發(fā)明一個(gè)實(shí)施例的“子→父”關(guān)系的樹(shù)型數(shù)據(jù)構(gòu)造的表現(xiàn)方法的說(shuō)明圖。圖4A是樹(shù)總體的說(shuō)明圖,圖4B是基于“子→父”關(guān)系的弧表。圖4B的弧表由于包括針對(duì)路由節(jié)點(diǎn)的父節(jié)點(diǎn)的存儲(chǔ)區(qū)域,因此作為路由節(jié)點(diǎn)的父節(jié)點(diǎn),方便地設(shè)定“-”。但是,由于不存在與路由節(jié)點(diǎn)相對(duì)應(yīng)的父節(jié)點(diǎn),因此如圖4C所示,也可以從基于“子→父”關(guān)系的弧表去除針對(duì)路由節(jié)點(diǎn)的父節(jié)點(diǎn)的存儲(chǔ)區(qū)域。這樣在本發(fā)明的一個(gè)實(shí)施例中,對(duì)于作為路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的非路由節(jié)點(diǎn)的每一個(gè),通過(guò)使非路由節(jié)點(diǎn)的父節(jié)點(diǎn)相關(guān)聯(lián)起來(lái),表現(xiàn)節(jié)點(diǎn)之間的父子關(guān)系。而且,通過(guò)從“子→父”表現(xiàn)出的子的節(jié)點(diǎn)搜索父的節(jié)點(diǎn)的列表,能夠表現(xiàn)樹(shù)的拓?fù)洹?br> 基于這樣的“子→父”關(guān)系的樹(shù)型數(shù)據(jù)構(gòu)造依據(jù)本發(fā)明的一個(gè)實(shí)施例,如圖5所示,通過(guò)使圖1所示的計(jì)算機(jī)系統(tǒng)10執(zhí)行向包括路由節(jié)點(diǎn)的節(jié)點(diǎn)上提供固有的節(jié)點(diǎn)識(shí)別符的節(jié)點(diǎn)定義步驟501、使被提供到作為上述路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的非路由節(jié)點(diǎn)的每一個(gè)上的節(jié)點(diǎn)識(shí)別符與被提供到上述非路由節(jié)點(diǎn)的每一個(gè)父節(jié)點(diǎn)上的節(jié)點(diǎn)識(shí)別符相關(guān)聯(lián)的父子關(guān)系定義步驟502,并構(gòu)筑在RAM14上。這樣,最初根據(jù)字符串、浮點(diǎn)小數(shù)、整數(shù)等任意的識(shí)別信息向節(jié)點(diǎn)提供節(jié)點(diǎn)識(shí)別符,接著,通過(guò)根據(jù)“子→父”表現(xiàn)定義父子關(guān)系,從而通過(guò)從子節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符引進(jìn)(檢查)父節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符,能夠表現(xiàn)樹(shù)的拓?fù)洹?br> 依據(jù)優(yōu)選的一個(gè)實(shí)施例,節(jié)點(diǎn)定義步驟使用數(shù)值作為節(jié)點(diǎn)識(shí)別符,更優(yōu)選的是使用連續(xù)的整數(shù),最優(yōu)選的是使用從0或者1開(kāi)始的整數(shù)連續(xù)號(hào)碼。由此,由于能夠從節(jié)點(diǎn)識(shí)別符簡(jiǎn)單地取得保存有與其節(jié)點(diǎn)相對(duì)應(yīng)的父節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符的地址,因此能夠高速地進(jìn)行從子節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符引進(jìn)父節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符的處理。
在樹(shù)型數(shù)據(jù)構(gòu)造的節(jié)點(diǎn)上作為節(jié)點(diǎn)識(shí)別符提供帶順序的號(hào)碼來(lái)表現(xiàn)節(jié)點(diǎn)之間的父子關(guān)系的情況下,具有通過(guò)按照號(hào)碼的提供順序確定規(guī)則,從而容易處理其以后的樹(shù)型數(shù)據(jù)構(gòu)造的優(yōu)點(diǎn)。依據(jù)本發(fā)明,作為該號(hào)碼的提供順序的規(guī)則,利用使子節(jié)點(diǎn)比同代的節(jié)點(diǎn)優(yōu)先的深度優(yōu)先模式、使同代的節(jié)點(diǎn)比子節(jié)點(diǎn)優(yōu)先的寬度優(yōu)先模式。
圖6A~C是根據(jù)本發(fā)明的一個(gè)實(shí)施例,把ID形式的樹(shù)構(gòu)造型數(shù)據(jù)向整數(shù)連續(xù)號(hào)碼形式的樹(shù)構(gòu)造型數(shù)據(jù)變換的處理的說(shuō)明圖。圖6A中表示向各節(jié)點(diǎn)中提供了ID號(hào)碼的樹(shù)構(gòu)造型數(shù)據(jù),圖6B中表示變換規(guī)則,圖6C中表示對(duì)各節(jié)點(diǎn)上提供了整數(shù)連續(xù)號(hào)碼的樹(shù)構(gòu)造型數(shù)據(jù)。本例的變換規(guī)則是按照深度優(yōu)先提供連續(xù)號(hào)碼的規(guī)則,具體地講,在存在多個(gè)子節(jié)點(diǎn)的情況下,對(duì)長(zhǎng)子(最上面的兄)節(jié)點(diǎn)提供最小號(hào)碼,對(duì)末子(最下面的弟)節(jié)點(diǎn)提供大的號(hào)碼,而且,使子節(jié)點(diǎn)比兄弟節(jié)點(diǎn)優(yōu)先地提供號(hào)碼。在本例中,按照升序進(jìn)行號(hào)碼添加,而也可以按照降序進(jìn)行號(hào)碼添加。
另外,圖7A~C是依據(jù)本發(fā)明的其它一個(gè)實(shí)施例,把ID形式的樹(shù)構(gòu)造型數(shù)據(jù)向整數(shù)連續(xù)號(hào)碼形式的樹(shù)構(gòu)造型數(shù)據(jù)進(jìn)行變換的處理的說(shuō)明圖。圖7A中表示向各節(jié)點(diǎn)添加了ID號(hào)碼的樹(shù)構(gòu)造型數(shù)據(jù),圖7B中表示變換規(guī)則,圖7C中表示向各節(jié)點(diǎn)提供了整數(shù)連續(xù)號(hào)碼的樹(shù)構(gòu)造型數(shù)據(jù)。本例的變換規(guī)則是以寬度優(yōu)先來(lái)提供連續(xù)號(hào)碼的規(guī)則,具體地講,在存在多個(gè)子節(jié)點(diǎn)的情況下,對(duì)長(zhǎng)子(最上面的兄)節(jié)點(diǎn)提供最小號(hào)碼,對(duì)末子(最下面的弟)節(jié)點(diǎn)提供大的號(hào)碼,而且,使兄弟節(jié)點(diǎn)比子節(jié)點(diǎn)優(yōu)先地提供號(hào)碼。在本例中,按照升序進(jìn)行號(hào)碼添加,而也可以按照降序進(jìn)行號(hào)碼添加。
當(dāng)這樣使用號(hào)碼作為節(jié)點(diǎn)識(shí)別符,則能夠從節(jié)點(diǎn)號(hào)碼直接,即按照O(1)等級(jí),引進(jìn)保存了與其節(jié)點(diǎn)有關(guān)的保存值的地址。另外,通過(guò)用“子→父”表現(xiàn)父子關(guān)系,能夠從子節(jié)點(diǎn)直接即、按照O(1)的等級(jí)引進(jìn)父節(jié)點(diǎn)。
依據(jù)本發(fā)明的一個(gè)實(shí)施例,圖6C所示那樣的基于深度優(yōu)先的樹(shù)型數(shù)據(jù)構(gòu)造通過(guò)使圖1所示的計(jì)算機(jī)系統(tǒng)10執(zhí)行使子節(jié)點(diǎn)比同代的節(jié)點(diǎn)優(yōu)先,對(duì)包含路由節(jié)點(diǎn)的節(jié)點(diǎn)提供固有的連續(xù)整數(shù)的節(jié)點(diǎn)定義步驟;把按照被提供給作為路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的非路由節(jié)點(diǎn)的每一個(gè)上的整數(shù)的順序,通過(guò)排列被提供給非路由節(jié)點(diǎn)的每一個(gè)父節(jié)點(diǎn)上的整數(shù)所形成的排列保存到上述存儲(chǔ)裝置中的父子關(guān)系定義步驟,從而被構(gòu)筑到存儲(chǔ)裝置上。由此,節(jié)點(diǎn)按照深度優(yōu)先提供連續(xù)整數(shù),節(jié)點(diǎn)之間的父子關(guān)系通過(guò)“子→父”關(guān)系的排列來(lái)表現(xiàn)。
圖8是本發(fā)明一個(gè)實(shí)施例的基于深度優(yōu)先的節(jié)點(diǎn)定義處理的流程圖。該節(jié)點(diǎn)定義處理通過(guò)使計(jì)算機(jī)系統(tǒng)10執(zhí)行最初對(duì)路由節(jié)點(diǎn)提供號(hào)碼的步驟801;在已經(jīng)提供了號(hào)碼的某個(gè)節(jié)點(diǎn)上存在唯一的子節(jié)點(diǎn)的情況下,對(duì)該子節(jié)點(diǎn)提供已經(jīng)在該某節(jié)點(diǎn)上所提供的上述號(hào)碼的下一個(gè)號(hào)碼的步驟802;在已經(jīng)提供了號(hào)碼的某個(gè)節(jié)點(diǎn)上存在多個(gè)子節(jié)點(diǎn)的情況下,按照該多個(gè)子節(jié)點(diǎn)之間的兄弟關(guān)系,對(duì)從最上面的兄節(jié)點(diǎn)到最下面的弟節(jié)點(diǎn)提供號(hào)碼,使得弟節(jié)點(diǎn)是在對(duì)其緊上方的兄節(jié)點(diǎn)的所有子孫節(jié)點(diǎn)提供了號(hào)碼以后,提供下一個(gè)號(hào)碼的步驟803。由此,按照深度優(yōu)先模式在從同一個(gè)父節(jié)點(diǎn)派生出的多個(gè)子節(jié)點(diǎn)之間定義兄弟關(guān)系。
圖9是基于依據(jù)本發(fā)明的一個(gè)實(shí)施例,從圖6C所示的深度優(yōu)先的樹(shù)型數(shù)據(jù)構(gòu)造制成的“子→父”表現(xiàn)的父子關(guān)系的排列的說(shuō)明圖。如該圖中作為子樹(shù)1或者子樹(shù)2表示的那樣,如果根據(jù)“子→父”關(guān)系排列表現(xiàn)按照深度優(yōu)先提供了連續(xù)號(hào)碼的節(jié)點(diǎn)的父子關(guān)系,則可以得到某個(gè)節(jié)點(diǎn)的子孫節(jié)點(diǎn)出現(xiàn)在連續(xù)區(qū)域中這樣的優(yōu)異性質(zhì)。
在本發(fā)明的一個(gè)實(shí)施例中,通過(guò)利用深度優(yōu)先模式的優(yōu)異性質(zhì),從上述排列中抽取保存了被提供給某個(gè)節(jié)點(diǎn)上的整數(shù)以上的值的連續(xù)區(qū)域,從而特定上述某個(gè)節(jié)點(diǎn)的所有子孫節(jié)點(diǎn)。由此,作為上述排列內(nèi)的連續(xù)塊能夠獲得表示某個(gè)節(jié)點(diǎn)的子孫節(jié)點(diǎn)的節(jié)點(diǎn)群。例如,如果把連續(xù)塊的尺寸記為m,則用于特定某個(gè)節(jié)點(diǎn)的所有子孫節(jié)點(diǎn)的處理速度變成O(m)等級(jí)。
如已經(jīng)說(shuō)明過(guò)的那樣,節(jié)點(diǎn)之間的父子關(guān)系除去“子→父”關(guān)系的排列以外,還能夠由“父→子”關(guān)系的排列來(lái)表現(xiàn)。圖10是基于從圖6C所示的深度優(yōu)先的樹(shù)型數(shù)據(jù)構(gòu)造制成的“父→子”表現(xiàn)的父子關(guān)系的排列的說(shuō)明圖。由于對(duì)于一個(gè)父節(jié)點(diǎn)可以存在多個(gè)子節(jié)點(diǎn),因此父子關(guān)系的排列由用于表示保存針對(duì)各節(jié)點(diǎn)的子節(jié)點(diǎn)的號(hào)碼的區(qū)域的排列Aggr和保存子節(jié)點(diǎn)的號(hào)碼的排列P→C這2個(gè)排列構(gòu)成。例如,從排列Aggr的起始的第2個(gè)要素Aggr[1]的值是“3”,該值表現(xiàn)針對(duì)節(jié)點(diǎn)[1]的子節(jié)點(diǎn)的號(hào)碼被保存在排列P→C的要素P→C[3]以后。由此可知,節(jié)點(diǎn)
,即針對(duì)路由節(jié)點(diǎn)的子節(jié)點(diǎn)是從排列P→C的起始的3個(gè)元素,P→C
的1,P→C[1]的6以及P→C[2]的8。
說(shuō)明基于“父→子”表現(xiàn)的父子關(guān)系的排列的求取方法。
(1)在節(jié)點(diǎn)的號(hào)碼與排列P→C的最大腳注(=11)一致的情況下,不存在屬于該節(jié)點(diǎn)的節(jié)點(diǎn)。從而,不繼續(xù)進(jìn)行處理。
(2)從在該圖中用粗體字表現(xiàn)的父節(jié)點(diǎn)的號(hào)碼求Aggr值。該Aggr值表示排列P→C的開(kāi)始點(diǎn)。
(3)求與用粗體字表現(xiàn)的父節(jié)點(diǎn)號(hào)碼+1相對(duì)應(yīng)的Aggr值。該Aggr值-1是排列P→C的結(jié)束點(diǎn)。
例如,節(jié)點(diǎn)0的子節(jié)點(diǎn)的開(kāi)始點(diǎn)是Aggr
,即是0,結(jié)束點(diǎn)是Aggr[1]-1,即3-1=2。從而,節(jié)點(diǎn)0的子節(jié)點(diǎn)是排列P→C的第0~2的要素,即1、6以及8。
或者,基于“父→子”表現(xiàn)的父子關(guān)系還能夠更單純地根據(jù)父節(jié)點(diǎn)號(hào)碼的排列和相對(duì)應(yīng)的子節(jié)點(diǎn)號(hào)碼的排列這2個(gè)排列表現(xiàn)。然而,由于為了利用該排列發(fā)覺(jué)父子關(guān)系,必須檢索父節(jié)點(diǎn)的號(hào)碼,即由于需要log(n)的訪問(wèn)時(shí)間,因此效率差。
依據(jù)本發(fā)明的一個(gè)實(shí)施例,基于圖7C所示那樣的寬度優(yōu)先的樹(shù)型數(shù)據(jù)構(gòu)造通過(guò)使圖1所示的計(jì)算機(jī)系統(tǒng)10執(zhí)行使同代的節(jié)點(diǎn)比子節(jié)點(diǎn)優(yōu)先,向包含路由節(jié)點(diǎn)的節(jié)點(diǎn)提供固有的連續(xù)整數(shù)的節(jié)點(diǎn)定義步驟;
按照提供給作為上述路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的非路由節(jié)點(diǎn)的每一個(gè)上的整數(shù)的順序,把通過(guò)排列被提供給上述非路由節(jié)點(diǎn)的每一個(gè)父節(jié)點(diǎn)上的整數(shù)而形成的排列保存到上述存儲(chǔ)裝置中的父子關(guān)系定義步驟,從而被構(gòu)筑到存儲(chǔ)裝置上。由此,節(jié)點(diǎn)以寬度優(yōu)先模式提供連續(xù)整數(shù),節(jié)點(diǎn)之間的父子關(guān)系由“子→父”關(guān)系的排列來(lái)表現(xiàn)。
圖11是基于本發(fā)明一個(gè)實(shí)施例的寬度優(yōu)先的節(jié)點(diǎn)定義處理的流程圖。該節(jié)點(diǎn)定義處理是使計(jì)算機(jī)系統(tǒng)10執(zhí)行計(jì)算各節(jié)點(diǎn)是從路由節(jié)點(diǎn)起第幾代節(jié)點(diǎn)以及包含在各代中的節(jié)點(diǎn)數(shù)的步驟1101;最初向上述路由節(jié)點(diǎn)提供號(hào)碼的步驟1102;如果對(duì)某個(gè)代中包含的所有節(jié)點(diǎn)提供了號(hào)碼,則直到在該某個(gè)代的下一代中不存在節(jié)點(diǎn)為止,對(duì)于包含在該下一代中的所有節(jié)點(diǎn),在父節(jié)點(diǎn)不同的情況下,按照對(duì)該父節(jié)點(diǎn)上提供號(hào)碼的順序?qū)υ摴?jié)點(diǎn)提供號(hào)碼,在該父節(jié)點(diǎn)是相同的情況下,在從該父節(jié)點(diǎn)派生出的多個(gè)子節(jié)點(diǎn)之間定義兄弟關(guān)系,對(duì)從最上面的兄節(jié)點(diǎn)到最下面的弟節(jié)點(diǎn)按順序提供從提供給緊接之前的號(hào)碼的下一個(gè)號(hào)碼開(kāi)始連續(xù)變化的固有整數(shù)的步驟1103。由此,以寬度優(yōu)先模式在從相同父節(jié)點(diǎn)派生出的多個(gè)子節(jié)點(diǎn)之間定義兄弟關(guān)系。
圖12是根據(jù)本發(fā)明的一個(gè)實(shí)施例,基于從圖7C所示的寬度優(yōu)先的樹(shù)型數(shù)據(jù)構(gòu)造制成的“子→父”表現(xiàn)的父子關(guān)系的排列的說(shuō)明圖。如該圖所示,如果根據(jù)“子→父”關(guān)系排列表現(xiàn)按照寬度優(yōu)先提供了連續(xù)號(hào)碼的節(jié)點(diǎn)的父子關(guān)系,則可以得到某個(gè)節(jié)點(diǎn)的子節(jié)點(diǎn)在連續(xù)區(qū)域中出現(xiàn)的優(yōu)異性質(zhì)。這是由于如果根據(jù)“子→父”關(guān)系排列表現(xiàn)以寬度優(yōu)先模式提供了連續(xù)號(hào)碼的節(jié)點(diǎn)的父子關(guān)系,則在父節(jié)點(diǎn)上所提供的號(hào)碼在上述排列中按照帶順序(升序或者降序)方式出現(xiàn)。
從而,在本發(fā)明的一個(gè)實(shí)施例中,通過(guò)利用寬度優(yōu)先模式的優(yōu)異性質(zhì),從上述排列抽取保存了與提供給某個(gè)節(jié)點(diǎn)上的整數(shù)相同值的連續(xù)區(qū)域,從而特定上述某個(gè)節(jié)點(diǎn)的所有子節(jié)點(diǎn)。由此,例如能夠使用二分搜索等方法檢索某個(gè)節(jié)點(diǎn)的子節(jié)點(diǎn),即,能夠以O(shè)(log(n))等級(jí)進(jìn)行檢索。
如已經(jīng)說(shuō)明過(guò)的那樣,節(jié)點(diǎn)之間的父子關(guān)系除去“子→父”關(guān)系的排列以外,還能夠由“父→子”關(guān)系的排列來(lái)表現(xiàn)。圖13是基于從圖7C所示的寬度優(yōu)先的樹(shù)型數(shù)據(jù)構(gòu)造制成的“父→子”表現(xiàn)的父子關(guān)系的排列的說(shuō)明圖。由于對(duì)于圖13的一個(gè)父節(jié)點(diǎn)存在多個(gè)子節(jié)點(diǎn),因此父子關(guān)系的排列由用于表示保存針對(duì)各節(jié)點(diǎn)的子節(jié)點(diǎn)的號(hào)碼的區(qū)域的排列Aggr和保存有子節(jié)點(diǎn)的號(hào)碼的排列P→C這2個(gè)排列構(gòu)成。例如,從排列Aggr起始的第2個(gè)元素Aggr[1]的值是“3”,該值表示針對(duì)節(jié)點(diǎn)[1]的子節(jié)點(diǎn)的號(hào)碼存儲(chǔ)在排列P→C的元素P→C[3]以后。由此可知,節(jié)點(diǎn)
即針對(duì)路由節(jié)點(diǎn)的子節(jié)點(diǎn)是從排列P→C起始的3個(gè)元素,P→C
的1,P→C[1]的2以及P→C[2]的3。
說(shuō)明基于該“父→子”表現(xiàn)的父子關(guān)系的排列的求取方法。
(1)在節(jié)點(diǎn)的號(hào)碼與排列P→C的最大腳注(=11)一致的情況下,不存在屬于該節(jié)點(diǎn)的子節(jié)點(diǎn)。從而,不繼續(xù)處理。
(2)從在該圖中用粗體字表現(xiàn)的父節(jié)點(diǎn)號(hào)碼求Aggr值。該Aggr值表示排列P→C的開(kāi)始點(diǎn)。
(3)求與用粗體字表現(xiàn)的父節(jié)點(diǎn)號(hào)碼+1相對(duì)應(yīng)的Aggr值。該Aggr值-1是排列P→C的結(jié)束點(diǎn)。
例如,節(jié)點(diǎn)0的子節(jié)點(diǎn)的開(kāi)始點(diǎn)是Aggr
即0,結(jié)束點(diǎn)是Aggr[1]-1即3-1=2。從而,節(jié)點(diǎn)0的子節(jié)點(diǎn)是排列P→C的第0~2個(gè)要素,即,1、2以及3。
在上述的樹(shù)中,考慮用最接近路由節(jié)點(diǎn)的節(jié)點(diǎn)的值表現(xiàn)該節(jié)點(diǎn)以及從其節(jié)點(diǎn)分支到達(dá)葉子節(jié)點(diǎn)(端點(diǎn))的所有節(jié)點(diǎn)。這里,把某個(gè)節(jié)點(diǎn)以及從其節(jié)點(diǎn)分支到達(dá)葉子節(jié)點(diǎn)的節(jié)點(diǎn)群稱為部分樹(shù)。另外,把最接近上述節(jié)點(diǎn)(路由節(jié)點(diǎn))的節(jié)點(diǎn)稱為頂點(diǎn)節(jié)點(diǎn)。
圖14A表示上述的基于寬度優(yōu)先模式的樹(shù)型數(shù)據(jù)構(gòu)造,圖14B是把該樹(shù)型數(shù)據(jù)構(gòu)造表示成基于“子→父”表現(xiàn)的父子關(guān)系的排列圖。例如,頂點(diǎn)節(jié)點(diǎn)[4]包括節(jié)點(diǎn)識(shí)別符{4,8,9},頂點(diǎn)節(jié)點(diǎn)[6]包括節(jié)點(diǎn)識(shí)別符{6},另外,頂點(diǎn)節(jié)點(diǎn)[3]包括節(jié)點(diǎn)識(shí)別符{3,7,10,11}。把這樣的由多個(gè)頂點(diǎn)節(jié)點(diǎn)構(gòu)成的排列稱為頂點(diǎn)節(jié)點(diǎn)列表。根據(jù)頂點(diǎn)節(jié)點(diǎn)列表能夠指定多個(gè)部分樹(shù),把被指定的多個(gè)部分樹(shù)稱為部分樹(shù)群。
以下,把頂點(diǎn)節(jié)點(diǎn)列表表示為[a,b,......]。這里,“a”、“b”、......是與頂點(diǎn)節(jié)點(diǎn)相對(duì)應(yīng)的節(jié)點(diǎn)識(shí)別符。考慮把構(gòu)成頂點(diǎn)節(jié)點(diǎn)列表的頂點(diǎn)節(jié)點(diǎn)的每一個(gè)展開(kāi),求在以該頂點(diǎn)節(jié)點(diǎn)作為頂點(diǎn)的部分樹(shù)中所包含的所有節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符。在所求出的節(jié)點(diǎn)識(shí)別符的列表中,在僅存在一個(gè)某個(gè)節(jié)點(diǎn)識(shí)別符的情況下,即,沒(méi)有重復(fù)出現(xiàn)節(jié)點(diǎn)識(shí)別符的情況下,把該部分樹(shù)群稱為“正規(guī)部分樹(shù)群”。把不是這樣的部分樹(shù)群稱為“非正規(guī)部分樹(shù)群”。
無(wú)論是正規(guī)部分樹(shù)群還是非正規(guī)部分樹(shù)群,都能夠利用頂點(diǎn)節(jié)點(diǎn)列表特定由頂點(diǎn)節(jié)點(diǎn)及其子孫節(jié)點(diǎn)構(gòu)成的部分樹(shù)群。例如,如圖15A所示,由頂點(diǎn)節(jié)點(diǎn)列表[4、6、3]特定圖15B所示的部分樹(shù)群(部分樹(shù){4,8,9},{6},{3、7、10、11})。
根據(jù)頂點(diǎn)節(jié)點(diǎn)列表所特定的部分樹(shù)群能夠作為檢索、總計(jì)、排序、集合運(yùn)算的對(duì)象。
例如,在圖15A、B的例子中,如果對(duì)包括“心形”的節(jié)點(diǎn)的部分樹(shù)進(jìn)行檢索,則可以得到圖16B所示那樣的部分樹(shù)群。圖16A是表示該部分樹(shù)群的頂點(diǎn)節(jié)點(diǎn)列表。
另外,如果總計(jì)屬于各部分樹(shù)的節(jié)點(diǎn)數(shù),則成為圖17B所示。在圖17A中,排列1701是頂點(diǎn)節(jié)點(diǎn)列表,排列1702是表示屬于根據(jù)各頂點(diǎn)節(jié)點(diǎn)所特定的部分樹(shù)的節(jié)點(diǎn)數(shù)的排列。
例如,作為排序,能夠考慮基于屬于各部分樹(shù)的節(jié)點(diǎn)數(shù)的排序。圖18A中,排列1801是被排序了的頂點(diǎn)節(jié)點(diǎn)列表,排列1802是表示屬于由頂點(diǎn)節(jié)點(diǎn)列表所特定的部分樹(shù)的節(jié)點(diǎn)數(shù)的排列。另外,圖18B表示部分樹(shù)隨著節(jié)點(diǎn)數(shù)排序了的狀態(tài)。
進(jìn)而,作為多個(gè)部分樹(shù)群之間的集合運(yùn)算,說(shuō)明“與”。在圖14A、B中表示的樹(shù)中,考慮圖19B表示的部分樹(shù)群(圖19A中表示相對(duì)應(yīng)的頂點(diǎn)節(jié)點(diǎn)列表)與圖19D表示的部分樹(shù)群(圖19C中表示相對(duì)應(yīng)的頂點(diǎn)節(jié)點(diǎn)列表)之間的“與”。
如果把圖19B中的、用節(jié)點(diǎn)識(shí)別符[4]的頂點(diǎn)節(jié)點(diǎn)特定的部分樹(shù)1901與圖19D中的、用節(jié)點(diǎn)識(shí)別符[1]的頂點(diǎn)節(jié)點(diǎn)識(shí)別符特定的部分樹(shù)1911進(jìn)行比較,則部分樹(shù)1901包含在部分樹(shù)1911中。在圖19D表示的部分樹(shù)群中不存在與圖19B中的部分樹(shù)1902具有包含關(guān)系的部分樹(shù)。另外,如果把圖19B中的、用節(jié)點(diǎn)識(shí)別符[3]的頂點(diǎn)節(jié)點(diǎn)特定的部分樹(shù)1903與圖19D中的用節(jié)點(diǎn)識(shí)別符[7]特定的部分樹(shù)1913進(jìn)行比較,則部分樹(shù)1913包含在部分樹(shù)1903中。其結(jié)果,表示“與”運(yùn)算結(jié)果的頂點(diǎn)節(jié)點(diǎn)列表如圖20A所示,成為[4、7]。圖20B是與“與”運(yùn)算結(jié)果相對(duì)應(yīng)的部分樹(shù)群。
如能夠從圖16A、B~圖20A、B理解的那樣,根據(jù)頂點(diǎn)節(jié)點(diǎn)列表(在總計(jì)中,除去該列表以外,還有與頂點(diǎn)節(jié)點(diǎn)列表相同尺寸的保存總計(jì)結(jié)果(節(jié)點(diǎn)數(shù))的排列),能夠表現(xiàn)各個(gè)處理、運(yùn)算的結(jié)果。
在表形式的數(shù)據(jù)中,項(xiàng)目規(guī)則地排列著,因此能夠簡(jiǎn)單地執(zhí)行指定成為顯示、編輯對(duì)象的單元(或者列或行)的操作。另一方面,樹(shù)的數(shù)據(jù)由于節(jié)點(diǎn)未規(guī)則地排列著,因此必須進(jìn)行特定成為顯示、編輯、總計(jì)對(duì)象的節(jié)點(diǎn)(相當(dāng)于表形式數(shù)據(jù)的“單元”)群的操作。根據(jù)上述的頂點(diǎn)節(jié)點(diǎn),能夠指定進(jìn)行這種顯示、編輯、總計(jì)等操作的對(duì)象的節(jié)點(diǎn)群。有時(shí)也把指定成為顯示、編輯、總計(jì)等操作對(duì)象的節(jié)點(diǎn)群的節(jié)點(diǎn)稱為上下文節(jié)點(diǎn)。從而,在本說(shuō)明書(shū)中,頂點(diǎn)節(jié)點(diǎn)具有與上下文節(jié)點(diǎn)相同的功能。
上述的檢索、總計(jì)、排序、集合運(yùn)算是不出現(xiàn)與頂點(diǎn)列表中的值不同的新值的操作。然而,在以部分樹(shù)群為對(duì)象的操作中,經(jīng)常發(fā)生要求移動(dòng)樹(shù)的拓?fù)涞那闆r。
例如,考慮以父親作為頂點(diǎn)節(jié)點(diǎn),表現(xiàn)家族結(jié)構(gòu)的樹(shù)?,F(xiàn)在,頂點(diǎn)節(jié)點(diǎn)位于父節(jié)點(diǎn)上,而在希望得到所有孩子的一覽的情況下,考慮把頂點(diǎn)節(jié)點(diǎn)從父親移動(dòng)到孩子的情況。另外,即使是正規(guī)部分樹(shù)群的頂點(diǎn)節(jié)點(diǎn)列表,移動(dòng)了頂點(diǎn)節(jié)點(diǎn)以后的頂點(diǎn)節(jié)點(diǎn)列表不限于成為正規(guī)部分樹(shù)群,有時(shí)也成為非正規(guī)部分樹(shù)群。
以下,說(shuō)明移動(dòng)頂點(diǎn)節(jié)點(diǎn)的例子。在圖21B所示的樹(shù)中,如圖21A的頂點(diǎn)節(jié)點(diǎn)列表所示那樣,考慮當(dāng)節(jié)點(diǎn)識(shí)別符“1”、“2”以及“3”的節(jié)點(diǎn)分別是頂點(diǎn)節(jié)點(diǎn)時(shí),把該頂點(diǎn)節(jié)點(diǎn)移動(dòng)到相當(dāng)于[孩子]的節(jié)點(diǎn)的情況。另外,在圖21B、D中,標(biāo)注了箭頭的節(jié)點(diǎn)表示是頂點(diǎn)節(jié)點(diǎn)。
這種情況下,如圖22D所示,節(jié)點(diǎn)識(shí)別符“1”的頂點(diǎn)節(jié)點(diǎn)移動(dòng)到節(jié)點(diǎn)識(shí)別符“4”以及“5”的節(jié)點(diǎn)。另外,節(jié)點(diǎn)識(shí)別符“2”的頂點(diǎn)節(jié)點(diǎn)移動(dòng)到節(jié)點(diǎn)識(shí)別符“6”的節(jié)點(diǎn)的同時(shí),節(jié)點(diǎn)識(shí)別符“3”的頂點(diǎn)節(jié)點(diǎn)移動(dòng)到節(jié)點(diǎn)識(shí)別符“7”的節(jié)點(diǎn)。其結(jié)果,表示移動(dòng)后的頂點(diǎn)節(jié)點(diǎn)的頂點(diǎn)節(jié)點(diǎn)列表如圖21C所示,成為[4、5、6、7]。
如圖21D所示,考慮節(jié)點(diǎn)識(shí)別符“4””、“5”、“6”以及“7”的節(jié)點(diǎn)是頂點(diǎn)節(jié)點(diǎn)時(shí),把頂點(diǎn)節(jié)點(diǎn)移動(dòng)到相當(dāng)于“父親”的節(jié)點(diǎn)的情況。節(jié)點(diǎn)識(shí)別符“4”的頂點(diǎn)節(jié)點(diǎn)以及節(jié)點(diǎn)識(shí)別符“5”的頂點(diǎn)節(jié)點(diǎn)分別移動(dòng)到節(jié)點(diǎn)識(shí)別符“1”的節(jié)點(diǎn)。另外,節(jié)點(diǎn)識(shí)別符“6”的頂點(diǎn)節(jié)點(diǎn)移動(dòng)到節(jié)點(diǎn)識(shí)別符“2”的節(jié)點(diǎn),節(jié)點(diǎn)識(shí)別符“7”的頂點(diǎn)節(jié)點(diǎn)移動(dòng)到節(jié)點(diǎn)識(shí)別符“3”的節(jié)點(diǎn)。其結(jié)果,表示移動(dòng)后的頂點(diǎn)節(jié)點(diǎn)的頂點(diǎn)節(jié)點(diǎn)列表成為[1、1、2、3]。
其次,如圖23B所示,考慮當(dāng)節(jié)點(diǎn)識(shí)別符“1”、“2”、“3”的節(jié)點(diǎn)是頂點(diǎn)節(jié)點(diǎn)時(shí),把頂點(diǎn)節(jié)點(diǎn)移動(dòng)到同代而且緊接其下的“弟”的節(jié)點(diǎn),即,如果按照本發(fā)明的節(jié)點(diǎn)識(shí)別符的添加規(guī)則,則移動(dòng)到同代而且父節(jié)點(diǎn)是相同的節(jié)點(diǎn)中具有最接近的節(jié)點(diǎn)識(shí)別符的節(jié)點(diǎn)的情況(參照?qǐng)D23B的虛線箭頭)。這里,“弟”的節(jié)點(diǎn)是與頂點(diǎn)節(jié)點(diǎn)同代的節(jié)點(diǎn),考慮為在從該頂點(diǎn)節(jié)點(diǎn)的父節(jié)點(diǎn)對(duì)頂點(diǎn)節(jié)點(diǎn)連接了弧線以后,如連接有弧線那樣的節(jié)點(diǎn)。另外,作為“兄”的節(jié)點(diǎn),是與該頂點(diǎn)節(jié)點(diǎn)同代的節(jié)點(diǎn),考慮為在從該頂點(diǎn)節(jié)點(diǎn)的父節(jié)點(diǎn)對(duì)頂點(diǎn)節(jié)點(diǎn)連接弧線以前,連接有弧線的節(jié)點(diǎn)。
如圖23B、23D所示,節(jié)點(diǎn)識(shí)別符“1”的頂點(diǎn)節(jié)點(diǎn)移動(dòng)到節(jié)點(diǎn)識(shí)別符“2”的節(jié)點(diǎn),節(jié)點(diǎn)識(shí)別符“2”的頂點(diǎn)節(jié)點(diǎn)移動(dòng)到節(jié)點(diǎn)識(shí)別符“3”的節(jié)點(diǎn)。另一方面,由于節(jié)點(diǎn)識(shí)別符“3”的頂點(diǎn)節(jié)點(diǎn)不存在“弟”的節(jié)點(diǎn)因此消失。從而,如圖23C所示,表示移動(dòng)后的頂點(diǎn)節(jié)點(diǎn)的頂點(diǎn)節(jié)點(diǎn)列表成為[2、3]。
以下,說(shuō)明在本發(fā)明的實(shí)施方式中,使頂點(diǎn)節(jié)點(diǎn)移動(dòng)時(shí)執(zhí)行的處理。首先,說(shuō)明利用了基于依據(jù)寬度優(yōu)先模式的數(shù)型數(shù)據(jù)構(gòu)造作出的[子→父]表現(xiàn)的排列(C-P排列)時(shí)的頂點(diǎn)節(jié)點(diǎn)的移動(dòng)。
圖24是表示把頂點(diǎn)節(jié)點(diǎn)移動(dòng)到相當(dāng)于孩子的節(jié)點(diǎn)時(shí),在計(jì)算機(jī)系統(tǒng)10中執(zhí)行的處理的流程圖。如圖24所示,計(jì)算機(jī)系統(tǒng)10參照保存了頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符的頂點(diǎn)節(jié)點(diǎn)列表的值(步驟2401),在C-P排列中,檢索與該頂點(diǎn)節(jié)點(diǎn)列表的值(節(jié)點(diǎn)識(shí)別符)相同的值(步驟2402)。接著計(jì)算機(jī)系統(tǒng)10把在C-P排列中具有與頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符相同值的節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符保存在新的頂點(diǎn)節(jié)點(diǎn)列表中(步驟2403)。通過(guò)對(duì)所有的頂點(diǎn)節(jié)點(diǎn)列表中的值執(zhí)行步驟2401~2403的處理(參照步驟2404),在新的頂點(diǎn)節(jié)點(diǎn)列表中,保存移動(dòng)到相當(dāng)于孩子的節(jié)點(diǎn)的頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符。
在圖25A的例子中,考慮頂點(diǎn)節(jié)點(diǎn)列表是[1、2、3]。如果著眼于節(jié)點(diǎn)識(shí)別符“1”的頂點(diǎn)節(jié)點(diǎn)(參照箭頭),則檢索C-P排列的結(jié)果,可知關(guān)于節(jié)點(diǎn)識(shí)別符“4”以及“5”,C-P排列的值與頂點(diǎn)節(jié)點(diǎn)列表中的值“1”相同(參照?qǐng)D25)。因此,在新的頂點(diǎn)節(jié)點(diǎn)列表中,保存值“4”以及“5”。另外,在寬度優(yōu)先模式中的C-P排列中由于值是升序,因此容易進(jìn)行步驟2402的檢索。關(guān)于其它的頂點(diǎn)節(jié)點(diǎn)列表中的值“2”、“3”也執(zhí)行相同處理的結(jié)果,能夠得到新的頂點(diǎn)節(jié)點(diǎn)列表[4、5、6、7]。
圖26是表示在把頂點(diǎn)節(jié)點(diǎn)移動(dòng)到相當(dāng)于父親的節(jié)點(diǎn)(父節(jié)點(diǎn))時(shí),在計(jì)算機(jī)系統(tǒng)10中執(zhí)行的處理的流程圖。如圖26所示,計(jì)算機(jī)系統(tǒng)10參照頂點(diǎn)節(jié)點(diǎn)列表的值(步驟2601),取得該頂點(diǎn)節(jié)點(diǎn)列表的值表示的C-P排列的值(步驟2602)。計(jì)算機(jī)系統(tǒng)10把所取得的值保存在新的頂點(diǎn)節(jié)點(diǎn)列表中(步驟2603)。通過(guò)對(duì)于所有的頂點(diǎn)節(jié)點(diǎn)列表中的值執(zhí)行步驟2601~2603的處理(參照步驟2604),在新的頂點(diǎn)節(jié)點(diǎn)列表中保存移動(dòng)到相當(dāng)于父親的節(jié)點(diǎn)的頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符。
圖27A中,考慮頂點(diǎn)節(jié)點(diǎn)列表是[4、5、6、7]。如果著眼于節(jié)點(diǎn)識(shí)別符“4”的頂點(diǎn)節(jié)點(diǎn)(參照箭頭),則由于與節(jié)點(diǎn)識(shí)別符“4”相對(duì)應(yīng)的C-P排列的值是“1”,因此該值被保存在新的頂點(diǎn)節(jié)點(diǎn)列表中。同樣,關(guān)于在頂點(diǎn)節(jié)點(diǎn)列表中所存儲(chǔ)的其它節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符“5”、“6”以及“7”,其相應(yīng)的C-P排列的值分別成為“1”、“2”、“3”。從而,新的頂點(diǎn)節(jié)點(diǎn)列表成為[1、1、2、3]。
圖28是表示當(dāng)把頂點(diǎn)節(jié)點(diǎn)移動(dòng)到相當(dāng)于弟的節(jié)點(diǎn)(弟節(jié)點(diǎn))時(shí),在計(jì)算機(jī)系統(tǒng)10中執(zhí)行的處理的流程圖。如圖28所示,計(jì)算機(jī)系統(tǒng)10參照頂點(diǎn)節(jié)點(diǎn)列表的值(步驟2801),取得表示該頂點(diǎn)節(jié)點(diǎn)列表的值的C-P排列的值(節(jié)點(diǎn)識(shí)別符)(步驟2808)。接著,計(jì)算機(jī)系統(tǒng)10取得該頂點(diǎn)節(jié)點(diǎn)的下一個(gè)值(在本實(shí)施方式中,在原來(lái)的值上加“1”的值)表示的C-P排列的值(節(jié)點(diǎn)識(shí)別符)(步驟2803)。
接著,計(jì)算機(jī)系統(tǒng)10把所取得的兩個(gè)值進(jìn)行比較,在兩者一致的情況下(步驟2804中是Yes),把上述下一個(gè)值(節(jié)點(diǎn)識(shí)別符)保存在新的頂點(diǎn)節(jié)點(diǎn)列表中(步驟2805)。另一方面,在兩者不一致的情況下,如果成為處理對(duì)象的頂點(diǎn)節(jié)點(diǎn)移動(dòng),則判斷為消失。
計(jì)算機(jī)系統(tǒng)10通過(guò)對(duì)于所有的頂點(diǎn)節(jié)點(diǎn)列表中的值執(zhí)行步驟2601~2603的處理(參照步驟2806),在新的頂點(diǎn)節(jié)點(diǎn)列表中,保存移動(dòng)到相當(dāng)于弟的節(jié)點(diǎn)的頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符。
在圖29A中,考慮頂點(diǎn)節(jié)點(diǎn)列表是[4、5、6、7]。如果著眼于節(jié)點(diǎn)識(shí)別符“4”的頂點(diǎn)節(jié)點(diǎn)(參照箭頭),則與節(jié)點(diǎn)識(shí)別符“4”相對(duì)應(yīng)的C-P排列的值是“1”,與節(jié)點(diǎn)識(shí)別符“5”相對(duì)應(yīng)的C-P排列的值也是“1”。從而,由于兩者一致,因此節(jié)點(diǎn)識(shí)別符“5”保存在新的頂點(diǎn)節(jié)點(diǎn)列表中。關(guān)于節(jié)點(diǎn)識(shí)別符“5”、“6”以及“7”,由于與其自身相對(duì)應(yīng)的C-P排列的值與在自身的值上加“1”的值相對(duì)應(yīng)的C-P排列的值分別不同,因此頂點(diǎn)節(jié)點(diǎn)消失。從而,新的頂點(diǎn)節(jié)點(diǎn)列表成為[5]。
另外,在使頂點(diǎn)節(jié)點(diǎn)移動(dòng)到相當(dāng)于“兄”的節(jié)點(diǎn)的情況下,可以把頂點(diǎn)節(jié)點(diǎn)列表中的節(jié)點(diǎn)識(shí)別符表示的C-P排列的值、與該節(jié)點(diǎn)識(shí)別符的一個(gè)以前的節(jié)點(diǎn)識(shí)別符(即,值是“-1”那樣的節(jié)點(diǎn)識(shí)別符)表示的C-P排列的值進(jìn)行比較。
以下,在本發(fā)明的實(shí)施方式中,說(shuō)明使頂點(diǎn)節(jié)點(diǎn)移動(dòng)時(shí)執(zhí)行的處理。首先,說(shuō)明利用了基于從依據(jù)深度優(yōu)先模式的樹(shù)型數(shù)據(jù)構(gòu)造作出的“子→父”表現(xiàn)的排列(C-P排列)情況下的頂點(diǎn)節(jié)點(diǎn)的移動(dòng)。
在深度優(yōu)先模式下,在把頂點(diǎn)節(jié)點(diǎn)移動(dòng)到相當(dāng)于孩子的節(jié)點(diǎn)時(shí),在計(jì)算機(jī)系統(tǒng)10中執(zhí)行的處理與圖24所示的相同。另外,在深度優(yōu)先模式下的C-P排列中值不是升序。而相當(dāng)于孩子的節(jié)點(diǎn)出現(xiàn)在從頂點(diǎn)節(jié)點(diǎn)列表中的節(jié)點(diǎn)識(shí)別符的下一個(gè)(在本實(shí)施方式中是在值上加“1”的)節(jié)點(diǎn)識(shí)別符起,節(jié)點(diǎn)識(shí)別符表示的C-P排列的值比頂點(diǎn)節(jié)點(diǎn)列表的值小的那樣的節(jié)點(diǎn)識(shí)別符的一個(gè)之前(在本實(shí)施方式中,是比這樣的節(jié)點(diǎn)識(shí)別符僅小“1”的節(jié)點(diǎn)識(shí)別符)的節(jié)點(diǎn)的范圍。
從而,在檢索相當(dāng)于孩子的節(jié)點(diǎn)時(shí),如圖30所示,計(jì)算機(jī)系統(tǒng)10以頂點(diǎn)節(jié)點(diǎn)列表中的節(jié)點(diǎn)為基準(zhǔn)節(jié)點(diǎn),在該基準(zhǔn)節(jié)點(diǎn)的下一個(gè)位置(即,在基準(zhǔn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符上加“1”的節(jié)點(diǎn)識(shí)別符表示的位置)中配置檢索用指針(步驟3001),特定檢索用指針表示的C-P排列的值(步驟3002)。接著,判斷所特定的值是否與基準(zhǔn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符相同(步驟3003)。在步驟3003中判斷為Yes的情況下,計(jì)算機(jī)系統(tǒng)10把檢索用指針?biāo)幍墓?jié)點(diǎn)識(shí)別符保存在新的頂點(diǎn)節(jié)點(diǎn)列表中(步驟3004)。然后,檢索用指針前進(jìn)一個(gè)(步驟3005)。
另一方面,在步驟3003中判斷為No的情況下,判斷C-P排列的值是否大于等于基準(zhǔn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符(步驟3006)。在步驟3006中判斷為Yes的情況下,檢索用指針?biāo)幍墓?jié)點(diǎn)識(shí)別符的節(jié)點(diǎn)由于是基準(zhǔn)節(jié)點(diǎn)的子孫,因此為了進(jìn)行下面的處理,檢索用指針前進(jìn)一個(gè)(步驟3005)。在步驟3006中是No是因?yàn)闄z索用指針?biāo)幍墓?jié)點(diǎn)識(shí)別符的節(jié)點(diǎn)不是頂點(diǎn)節(jié)點(diǎn)的子孫,因此結(jié)束處理。
在圖31A的例子中,考慮頂點(diǎn)節(jié)點(diǎn)列表是[1、6、8]。著眼于節(jié)點(diǎn)識(shí)別符“1”的頂點(diǎn)節(jié)點(diǎn)(參照箭頭)。檢索用指針最初配置在節(jié)點(diǎn)識(shí)別符“2”的位置。在該時(shí)刻,檢索用指針表示的C-P排列的值由于是“1”,因此節(jié)點(diǎn)識(shí)別符“2”被保存在新的頂點(diǎn)節(jié)點(diǎn)列表中。
另外,當(dāng)檢索用指針被配置在節(jié)點(diǎn)識(shí)別符“5”時(shí),該檢索用指針表示的C-P排列的值由于是“1”,因此節(jié)點(diǎn)識(shí)別符“5”被保存在新的頂點(diǎn)節(jié)點(diǎn)列表中。然后,當(dāng)檢索用指針位于節(jié)點(diǎn)識(shí)別符“6”時(shí),該檢索用指針表示的C-P排列的值是“0”,由于比基準(zhǔn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符“1”小,因此結(jié)束處理本身。
接著,說(shuō)明在把頂點(diǎn)節(jié)點(diǎn)移動(dòng)到相當(dāng)于父親的節(jié)點(diǎn)時(shí),在計(jì)算機(jī)系統(tǒng)10中執(zhí)行的處理。移動(dòng)到相當(dāng)于父親的節(jié)點(diǎn)時(shí)的處理與圖26所示的相同。在圖32A的例子中,考慮頂點(diǎn)節(jié)點(diǎn)列表是[2、5、7、9]。如果著眼于節(jié)點(diǎn)識(shí)別符“2”的頂點(diǎn)節(jié)點(diǎn)(參照箭頭),則與節(jié)點(diǎn)識(shí)別符“2”相對(duì)應(yīng)的C-P排列的值(參照?qǐng)D32B)由于是“1”,因此該值被保存在新的頂點(diǎn)節(jié)點(diǎn)列表中。同樣,關(guān)于節(jié)點(diǎn)識(shí)別符“5”、“7”、“9”,由于相對(duì)應(yīng)的C-P排列的值分別是“1”、“6”、“8”,因此新的頂點(diǎn)節(jié)點(diǎn)列表成為[1、1、6、8]。
圖33是表示在把頂點(diǎn)節(jié)點(diǎn)移動(dòng)到相當(dāng)于弟的節(jié)點(diǎn)時(shí),在計(jì)算機(jī)系統(tǒng)10中執(zhí)行的處理的流程圖。如圖33所示,計(jì)算機(jī)系統(tǒng)10參照頂點(diǎn)節(jié)點(diǎn)列表的值(步驟3301),取得該頂點(diǎn)節(jié)點(diǎn)列表的值表示的C-P排列的值(節(jié)點(diǎn)識(shí)別符)(步驟3302)。接著,計(jì)算機(jī)系統(tǒng)10在下一個(gè)節(jié)點(diǎn)識(shí)別符(僅大“1”的值的節(jié)點(diǎn)識(shí)別符)以后,檢索具有相同C-P排列的值的節(jié)點(diǎn)識(shí)別符(步驟3303)。如果發(fā)現(xiàn)相同的值(步驟3304中的Yes)則計(jì)算機(jī)系統(tǒng)10把具有其值的節(jié)點(diǎn)識(shí)別符保存到新的頂點(diǎn)節(jié)點(diǎn)列表中(步驟3305)。在沒(méi)有發(fā)現(xiàn)相同值的情況下,判斷為該頂點(diǎn)節(jié)點(diǎn)消失。
計(jì)算機(jī)系統(tǒng)通過(guò)對(duì)所有的頂點(diǎn)節(jié)點(diǎn)列表的值執(zhí)行步驟3301~3305的處理(步驟3306),在新的頂點(diǎn)節(jié)點(diǎn)列表中保存被移動(dòng)到相當(dāng)于弟的節(jié)點(diǎn)的頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符。在圖34A中,考慮頂點(diǎn)節(jié)點(diǎn)列表是[2、5、7、9]。如果著眼于節(jié)點(diǎn)識(shí)別符“2”的頂點(diǎn)節(jié)點(diǎn),則與節(jié)點(diǎn)識(shí)別符相對(duì)應(yīng)的C-P排列的值是“1”。在圖33的處理中,由于能夠檢索C-P排列的值是“1”那樣的節(jié)點(diǎn)識(shí)別符“5”,因此在頂點(diǎn)節(jié)點(diǎn)列表中保存節(jié)點(diǎn)識(shí)別符“5”。關(guān)于節(jié)點(diǎn)識(shí)別符“5”、“7”、“9”的頂點(diǎn)節(jié)點(diǎn),即使搜索C-P排列,也不能夠發(fā)現(xiàn)相同的值。即,作為父節(jié)點(diǎn)不能發(fā)現(xiàn)具有相同號(hào)碼的節(jié)點(diǎn)。從而,這些頂點(diǎn)節(jié)點(diǎn)通過(guò)移動(dòng)而消失。其結(jié)果,新的頂點(diǎn)節(jié)點(diǎn)的頂點(diǎn)節(jié)點(diǎn)列表成為“5”。
圖35是構(gòu)筑本發(fā)明一個(gè)實(shí)施例的樹(shù)型數(shù)據(jù)構(gòu)造,生成頂點(diǎn)節(jié)點(diǎn)列表,而且生成頂點(diǎn)節(jié)點(diǎn)移動(dòng)后的頂點(diǎn)節(jié)點(diǎn)列表的信息處理裝置3500的功能框圖。該信息處理裝置3500實(shí)際上通過(guò)在圖1所示的計(jì)算機(jī)系統(tǒng)10中安裝必要的程序來(lái)實(shí)現(xiàn)。
如圖35所示,信息處理裝置3500具備存儲(chǔ)表現(xiàn)樹(shù)型數(shù)據(jù)構(gòu)造的數(shù)據(jù)以及頂點(diǎn)節(jié)點(diǎn)列表的存儲(chǔ)單元3501;在包括路由節(jié)點(diǎn)的節(jié)點(diǎn)上提供固有的節(jié)點(diǎn)識(shí)別符,把節(jié)點(diǎn)識(shí)別符保存到存儲(chǔ)單元3501中的節(jié)點(diǎn)定義單元3502;使提供給作為上述路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的非路由節(jié)點(diǎn)的每一個(gè)的節(jié)點(diǎn)識(shí)別符與提供給上述非路由節(jié)點(diǎn)的每一個(gè)父節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符相關(guān)聯(lián),把作為表示該關(guān)聯(lián)的排列的C-P排列保存到存儲(chǔ)單元3501中的父子關(guān)系定義單元3503;根據(jù)保存在存儲(chǔ)單元3501中的節(jié)點(diǎn)識(shí)別符以及C-P排列,生成頂點(diǎn)節(jié)點(diǎn)列表的頂點(diǎn)節(jié)點(diǎn)列表生成單元3504;根據(jù)來(lái)自輸入裝置(參照?qǐng)D1的號(hào)碼24)等的指示,使頂點(diǎn)節(jié)點(diǎn)移動(dòng),生成表示移動(dòng)后的頂點(diǎn)節(jié)點(diǎn)的新的頂點(diǎn)節(jié)點(diǎn)列表的頂點(diǎn)節(jié)點(diǎn)移動(dòng)處理單元3505。由頂點(diǎn)節(jié)點(diǎn)列表生成單元35生成的頂點(diǎn)節(jié)點(diǎn)列表或者由頂點(diǎn)節(jié)點(diǎn)移動(dòng)處理單元3505生成的新的頂點(diǎn)節(jié)點(diǎn)列表被存儲(chǔ)在存儲(chǔ)單元3501中。
優(yōu)選的是,節(jié)點(diǎn)定義單元3502作為節(jié)點(diǎn)識(shí)別符使用數(shù)值,更優(yōu)選的是作為節(jié)點(diǎn)識(shí)別符使用連續(xù)的整數(shù)。另外,父子關(guān)系定義單元3503在存儲(chǔ)單元3501中保存被提供給非路由節(jié)點(diǎn)的每一個(gè)上的節(jié)點(diǎn)識(shí)別符與提供給相關(guān)聯(lián)的父節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符的、組的排列。
另外,如果根據(jù)來(lái)自輸入裝置(參照?qǐng)D1的號(hào)碼24)的指示等指定節(jié)點(diǎn),則頂點(diǎn)節(jié)點(diǎn)列表生成單元3504把被指定的節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符保存到頂點(diǎn)節(jié)點(diǎn)列表中。另外,如果根據(jù)來(lái)自輸入裝置的指示等,提供頂點(diǎn)節(jié)點(diǎn)的移動(dòng)指示(向相當(dāng)于父親的節(jié)點(diǎn)的移動(dòng)、向相當(dāng)于子的節(jié)點(diǎn)的移動(dòng)、向相當(dāng)于弟(兄)的節(jié)點(diǎn)的移動(dòng)),則頂點(diǎn)節(jié)點(diǎn)移動(dòng)處理單元3505從存儲(chǔ)單元3501取得C-P排列以及頂點(diǎn)節(jié)點(diǎn)列表,生成新的頂點(diǎn)節(jié)點(diǎn)列表,存儲(chǔ)到存儲(chǔ)單元3501中。
本發(fā)明不限于以上的實(shí)施方式,在權(quán)利要求的范圍記載的本發(fā)明的范圍內(nèi),能夠進(jìn)行各種變更,這些變更當(dāng)然也包含在本發(fā)明的范圍內(nèi)。
權(quán)利要求
1.一種排列生成方法,其特征在于,在具備了由第1排列所表現(xiàn)的樹(shù)型數(shù)據(jù)構(gòu)造的數(shù)據(jù)的計(jì)算機(jī)中,具備以下步驟為了分別表現(xiàn)包括特定的節(jié)點(diǎn)以及其子孫節(jié)點(diǎn)的、1個(gè)以上的節(jié)點(diǎn)群,把該特定的節(jié)點(diǎn)作為頂點(diǎn)節(jié)點(diǎn),設(shè)置保存了該節(jié)點(diǎn)識(shí)別符的第2排列的步驟;參照上述第1排列,使在上述第2排列中保存了節(jié)點(diǎn)識(shí)別符的頂點(diǎn)節(jié)點(diǎn)的每一個(gè)移動(dòng)到a)用弧線直接連接該頂點(diǎn)節(jié)點(diǎn),而且該弧線從頂點(diǎn)節(jié)點(diǎn)延伸的子節(jié)點(diǎn),b)用弧線直接連接該頂點(diǎn)節(jié)點(diǎn),而且該弧線從那里延伸到頂點(diǎn)節(jié)點(diǎn)的父節(jié)點(diǎn),c)與該頂點(diǎn)節(jié)點(diǎn)同代的節(jié)點(diǎn),且是從該頂點(diǎn)節(jié)點(diǎn)的父節(jié)點(diǎn)對(duì)于頂點(diǎn)節(jié)點(diǎn)連接弧線以前,連接有弧線的兄節(jié)點(diǎn),d)與該頂點(diǎn)節(jié)點(diǎn)同代的節(jié)點(diǎn),且是從該頂點(diǎn)節(jié)點(diǎn)的父節(jié)點(diǎn)對(duì)于頂點(diǎn)節(jié)點(diǎn)連接了弧線以后,連接有弧線的弟節(jié)點(diǎn)中的某一個(gè),生成保存了移動(dòng)后的新的頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符的第3排列的步驟,其中上述第1排列是向節(jié)點(diǎn)中提供固有的節(jié)點(diǎn)識(shí)別符,且節(jié)點(diǎn)之間的父子關(guān)系是由向作為路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的、非路由節(jié)點(diǎn)的每一個(gè)上提供的節(jié)點(diǎn)識(shí)別符和與非路由節(jié)點(diǎn)的每一個(gè)相關(guān)聯(lián)起來(lái)的父節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符的組構(gòu)成。
2.根據(jù)權(quán)利要求1所述的排列生成方法,其特征在于,使同代的節(jié)點(diǎn)比子節(jié)點(diǎn)優(yōu)先,向包含路由節(jié)點(diǎn)的節(jié)點(diǎn)提供固有的連續(xù)的整數(shù),按照提供給作為上述路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的非路由節(jié)點(diǎn)的每一個(gè)上的整數(shù)的順序,通過(guò)排列提供給上述非路由節(jié)點(diǎn)的每一個(gè)父節(jié)點(diǎn)上的整數(shù)而形成上述第1排列,為了使上述頂點(diǎn)節(jié)點(diǎn)的每一個(gè)移動(dòng)到子節(jié)點(diǎn),而生成上述第3排列的步驟具有特定上述第1排列中保存了頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符的保存位置的步驟;以及把移動(dòng)后的頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符決定為與該保存位置相對(duì)應(yīng)的節(jié)點(diǎn)識(shí)別符的步驟。
3.根據(jù)權(quán)利要求1所述的排列生成方法,其特征在于,使同代的節(jié)點(diǎn)比子節(jié)點(diǎn)優(yōu)先,對(duì)包含路由節(jié)點(diǎn)的節(jié)點(diǎn)上提供固有的連續(xù)的整數(shù),按照提供給作為上述路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的非路由節(jié)點(diǎn)的每一個(gè)上的整數(shù)的順序,通過(guò)排列提供給上述非路由節(jié)點(diǎn)的每一個(gè)父節(jié)點(diǎn)上的整數(shù)形成上述第1排列,為了使上述頂點(diǎn)節(jié)點(diǎn)的每一個(gè)移動(dòng)到父節(jié)點(diǎn),生成上述第3排列的步驟具有特定上述第1排列中保存在與頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符相對(duì)應(yīng)的位置上的節(jié)點(diǎn)識(shí)別符的步驟;把移動(dòng)后的頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符決定為保存到上述相對(duì)應(yīng)的位置的節(jié)點(diǎn)識(shí)別符的步驟。
4.根據(jù)權(quán)利要求1所述的排列生成方法,其特征在于,使同代的節(jié)點(diǎn)比子節(jié)點(diǎn)優(yōu)先,向包括路由節(jié)點(diǎn)的節(jié)點(diǎn)上提供固有的連續(xù)的整數(shù),按照提供給作為上述路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的非路由節(jié)點(diǎn)的每一個(gè)上的整數(shù)的順序,通過(guò)排列提供給上述非路由節(jié)點(diǎn)的每一個(gè)父節(jié)點(diǎn)上的整數(shù)而形成上述第1排列,為了使上述頂點(diǎn)節(jié)點(diǎn)的每一個(gè)移動(dòng)到兄節(jié)點(diǎn),生成上述第3排列的步驟具有特定上述第1排列中保存在與頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符相對(duì)應(yīng)的位置上的第1節(jié)點(diǎn)識(shí)別符的步驟;特定在上述第1排列中保存在僅比上述頂點(diǎn)節(jié)點(diǎn)識(shí)別符相對(duì)應(yīng)的位置的值小1的值的保存位置上的第2節(jié)點(diǎn)識(shí)別符的步驟;在上述第1節(jié)點(diǎn)識(shí)別符與上述第2節(jié)點(diǎn)識(shí)別符一致的情況下,把上述移動(dòng)后的頂點(diǎn)節(jié)點(diǎn)識(shí)別符決定為與上述第2節(jié)點(diǎn)識(shí)別符的保存位置相對(duì)應(yīng)的節(jié)點(diǎn)識(shí)別符的步驟。
5.根據(jù)權(quán)利要求1所述的排列生成方法,其特征在于,使同代的節(jié)點(diǎn)比子節(jié)點(diǎn)優(yōu)先,對(duì)包含路由節(jié)點(diǎn)的節(jié)點(diǎn)上提供固有的連續(xù)的整數(shù),按照提供給作為上述路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的非路由節(jié)點(diǎn)的每一個(gè)上的整數(shù)的順序,通過(guò)排列提供給上述非路由節(jié)點(diǎn)的每一個(gè)父節(jié)點(diǎn)上的整數(shù)而形成上述第1排列,為了使上述頂點(diǎn)節(jié)點(diǎn)的每一個(gè)移動(dòng)到弟節(jié)點(diǎn),生成上述第3排列的步驟具有特定在上述第1排列中保存在與頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符相對(duì)應(yīng)的位置上的第1節(jié)點(diǎn)識(shí)別符的步驟;特定在上述第1排列中保存在僅比上述頂點(diǎn)節(jié)點(diǎn)識(shí)別符相對(duì)應(yīng)的位置的值大1的值的保存位置上的第3節(jié)點(diǎn)識(shí)別符的步驟;在上述第1節(jié)點(diǎn)識(shí)別符與第3節(jié)點(diǎn)識(shí)別符一致的情況下,把上述移動(dòng)后的頂點(diǎn)節(jié)點(diǎn)識(shí)別符決定為與上述第3節(jié)點(diǎn)識(shí)別符的保存位置相對(duì)應(yīng)的節(jié)點(diǎn)識(shí)別符的步驟。
6.根據(jù)權(quán)利要求1所述的排列生成方法,其特征在于,使子節(jié)點(diǎn)比同代的節(jié)點(diǎn)優(yōu)先,向包含路由節(jié)點(diǎn)的節(jié)點(diǎn)上提供固有的連續(xù)的整數(shù),按照提供給作為上述路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的非路由節(jié)點(diǎn)的每一個(gè)上的整數(shù)的順序,通過(guò)排列提供給上述非路由節(jié)點(diǎn)的每一個(gè)父節(jié)點(diǎn)上的整數(shù)而形成上述第1排列,為了使上述頂點(diǎn)節(jié)點(diǎn)的每一個(gè)移動(dòng)到子節(jié)點(diǎn),生成上述第3排列的步驟具有特定在上述第1排列中保存了頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符的保存位置的步驟;把移動(dòng)后的頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符決定為與該保存位置相對(duì)應(yīng)的節(jié)點(diǎn)識(shí)別符的步驟。
7.根據(jù)權(quán)利要求1所述的排列生成方法,其特征在于,使子節(jié)點(diǎn)比同代的節(jié)點(diǎn)優(yōu)先,向包含路由節(jié)點(diǎn)的節(jié)點(diǎn)上提供固有的連續(xù)的整數(shù),按照提供給作為上述路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的非路由節(jié)點(diǎn)的每一個(gè)上的整數(shù)的順序,通過(guò)排列提供給上述非路由節(jié)點(diǎn)的每一個(gè)父節(jié)點(diǎn)上的整數(shù)而形成上述第1排列,為了使上述頂點(diǎn)節(jié)點(diǎn)的每一個(gè)移動(dòng)到父節(jié)點(diǎn),生成上述第3排列的步驟具有特定在上述第1排列中保存在與頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符相對(duì)應(yīng)的位置的節(jié)點(diǎn)識(shí)別符的步驟;把移動(dòng)后的頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符決定為保存在上述相對(duì)應(yīng)的位置的節(jié)點(diǎn)識(shí)別符的步驟。
8.根據(jù)權(quán)利要求1所述的排列生成方法,其特征在于,使子節(jié)點(diǎn)比同代的節(jié)點(diǎn)優(yōu)先,向包含路由節(jié)點(diǎn)的節(jié)點(diǎn)上提供固有的連續(xù)的整數(shù),按照提供給作為上述路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的非路由節(jié)點(diǎn)的每一個(gè)上的整數(shù)的順序,通過(guò)排列提供給上述非路由節(jié)點(diǎn)的每一個(gè)父節(jié)點(diǎn)上的整數(shù)而形成上述第1排列,為了使上述頂點(diǎn)節(jié)點(diǎn)的每一個(gè)移動(dòng)到兄節(jié)點(diǎn),生成上述第3排列的步驟具有特定在上述第1排列中保存在頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符的保存位置上的第1節(jié)點(diǎn)識(shí)別符的步驟;檢索在上述第1排列中保存在比頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符的保存位置的值小的值的保存位置上、并且與該第1節(jié)點(diǎn)識(shí)別符相同的第4節(jié)點(diǎn)識(shí)別符的步驟;特定上述第4節(jié)點(diǎn)識(shí)別符的保存位置中的最大保存位置的步驟;把上述移動(dòng)后的頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符決定為與上述最大保存位置相對(duì)應(yīng)的節(jié)點(diǎn)識(shí)別符的步驟。
9.根據(jù)權(quán)利要求1所述的排列生成方法,其特征在于,使子節(jié)點(diǎn)比同代的節(jié)點(diǎn)優(yōu)先,向包括路由節(jié)點(diǎn)的節(jié)點(diǎn)上提供固有的連續(xù)的整數(shù),按照提供給作為上述路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的非路由節(jié)點(diǎn)的每一個(gè)上的整數(shù)的順序,通過(guò)排列提供給上述非路由節(jié)點(diǎn)的每一個(gè)父節(jié)點(diǎn)上的整數(shù)而形成上述第1排列,為了使上述頂點(diǎn)節(jié)點(diǎn)的每一個(gè)移動(dòng)到弟節(jié)點(diǎn),生成上述第3排列的步驟具有特定在上述第1排列中保存在頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符的保存位置的第1節(jié)點(diǎn)識(shí)別符的步驟;檢索在上述第1排列中保存在比頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符的保存位置的值大的值的保存位置上、并且與該第1節(jié)點(diǎn)識(shí)別符相等的第5節(jié)點(diǎn)識(shí)別符的步驟;特定上述第5節(jié)點(diǎn)識(shí)別符的保存位置中的最小保存位置的步驟;把上述移動(dòng)后的頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符決定為與上述最大保存位置相對(duì)應(yīng)的節(jié)點(diǎn)識(shí)別符的步驟。
10.一種排列生成程序,該排列生成程序是能夠由具備了由第1排列所表現(xiàn)的樹(shù)型數(shù)據(jù)構(gòu)造的數(shù)據(jù)的計(jì)算機(jī)讀取的計(jì)算機(jī)程序,且使該計(jì)算機(jī)執(zhí)行以下步驟為了分別表現(xiàn)包括特定的節(jié)點(diǎn)以及其子孫節(jié)點(diǎn)的、1個(gè)以上的節(jié)點(diǎn)群,把該特定的節(jié)點(diǎn)作為頂點(diǎn)節(jié)點(diǎn),設(shè)置保存了該節(jié)點(diǎn)識(shí)別符的第2排列的步驟;參照上述第1排列,使在上述第2排列中保存了節(jié)點(diǎn)識(shí)別符的頂點(diǎn)節(jié)點(diǎn)的每一個(gè)移動(dòng)到a)用弧線直接連接該頂點(diǎn)節(jié)點(diǎn),而且該弧線從頂點(diǎn)節(jié)點(diǎn)延伸的子節(jié)點(diǎn),b)用弧線直接連接該頂點(diǎn)節(jié)點(diǎn),而且該弧線從那里延伸到頂點(diǎn)節(jié)點(diǎn)的父節(jié)點(diǎn),c)與該頂點(diǎn)節(jié)點(diǎn)同代的節(jié)點(diǎn),且是從該頂點(diǎn)節(jié)點(diǎn)的父節(jié)點(diǎn)對(duì)于頂點(diǎn)節(jié)點(diǎn)連接弧線以前,連接有弧線的兄節(jié)點(diǎn),d)與該頂點(diǎn)節(jié)點(diǎn)同代的節(jié)點(diǎn),且是從該頂點(diǎn)節(jié)點(diǎn)的父節(jié)點(diǎn)對(duì)于頂點(diǎn)節(jié)點(diǎn)連接了弧線以后,連接有弧線的弟節(jié)點(diǎn)中的某一個(gè),生成保存了移動(dòng)后的新的頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符的第3排列的步驟,其中上述第1排列是向節(jié)點(diǎn)中提供固有的節(jié)點(diǎn)識(shí)別符,且節(jié)點(diǎn)之間的父子關(guān)系是由向作為路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的、非路由節(jié)點(diǎn)的每一個(gè)上提供的節(jié)點(diǎn)識(shí)別符和與非路由節(jié)點(diǎn)的每一個(gè)相關(guān)聯(lián)起來(lái)的父節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符的組構(gòu)成。
11.根據(jù)權(quán)利10所述的排列生成程序,其特征在于,使同代的節(jié)點(diǎn)比子節(jié)點(diǎn)優(yōu)先,向包含路由節(jié)點(diǎn)的節(jié)點(diǎn)提供固有的連續(xù)的整數(shù),按照提供給作為上述路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的非路由節(jié)點(diǎn)的每一個(gè)上的整數(shù)的順序,通過(guò)排列提供給上述非路由節(jié)點(diǎn)的每一個(gè)父節(jié)點(diǎn)上的整數(shù)而形成上述第1排列,為了使上述頂點(diǎn)節(jié)點(diǎn)的每一個(gè)移動(dòng)到子節(jié)點(diǎn),而在生成上述第3排列的步驟上使上述計(jì)算機(jī)執(zhí)行特定上述第1排列中保存了頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符的保存位置的步驟;以及把移動(dòng)后的頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符決定為與該保存位置相對(duì)應(yīng)的節(jié)點(diǎn)識(shí)別符的步驟。
12.根據(jù)權(quán)利10所述的排列生成程序,其特征在于,使同代的節(jié)點(diǎn)比子節(jié)點(diǎn)優(yōu)先,對(duì)包含路由節(jié)點(diǎn)的節(jié)點(diǎn)上提供固有的連續(xù)的整數(shù),按照提供給作為上述路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的非路由節(jié)點(diǎn)的每一個(gè)上的整數(shù)的順序,通過(guò)排列提供給上述非路由節(jié)點(diǎn)的每一個(gè)父節(jié)點(diǎn)上的整數(shù)形成上述第1排列,為了使上述頂點(diǎn)節(jié)點(diǎn)的每一個(gè)移動(dòng)到父節(jié)點(diǎn),在生成上述第3排列的步驟上使上述計(jì)算機(jī)執(zhí)行特定上述第1排列中保存在與頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符相對(duì)應(yīng)的位置上的節(jié)點(diǎn)識(shí)別符的步驟;把移動(dòng)后的頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符決定為保存到上述相對(duì)應(yīng)的位置的節(jié)點(diǎn)識(shí)別符的步驟。
13.根據(jù)權(quán)利10所述的排列生成程序,其特征在于,使同代的節(jié)點(diǎn)比子節(jié)點(diǎn)優(yōu)先,向包括路由節(jié)點(diǎn)的節(jié)點(diǎn)上提供固有的連續(xù)的整數(shù),按照提供給作為上述路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的非路由節(jié)點(diǎn)的每一個(gè)上的整數(shù)的順序,通過(guò)排列提供給上述非路由節(jié)點(diǎn)的每一個(gè)父節(jié)點(diǎn)上的整數(shù)而形成上述第1排列,為了使上述頂點(diǎn)節(jié)點(diǎn)的每一個(gè)移動(dòng)到兄節(jié)點(diǎn),在生成上述第3排列的步驟上使上述計(jì)算機(jī)執(zhí)行特定上述第1排列中保存在與頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符相對(duì)應(yīng)的位置上的第1節(jié)點(diǎn)識(shí)別符的步驟;特定在上述第1排列中保存在僅比上述頂點(diǎn)節(jié)點(diǎn)識(shí)別符相對(duì)應(yīng)的位置的值小1的值的保存位置上的第2節(jié)點(diǎn)識(shí)別符的步驟;在上述第1節(jié)點(diǎn)識(shí)別符與上述第2節(jié)點(diǎn)識(shí)別符一致的情況下,把上述移動(dòng)后的頂點(diǎn)節(jié)點(diǎn)識(shí)別符決定為與上述第2節(jié)點(diǎn)識(shí)別符的保存位置相對(duì)應(yīng)的節(jié)點(diǎn)識(shí)別符的步驟。
14.根據(jù)權(quán)利10所述的排列生成程序,其特征在于,使同代的節(jié)點(diǎn)比子節(jié)點(diǎn)優(yōu)先,對(duì)包含路由節(jié)點(diǎn)的節(jié)點(diǎn)上提供固有的連續(xù)的整數(shù),按照提供給作為上述路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的非路由節(jié)點(diǎn)的每一個(gè)上的整數(shù)的順序,通過(guò)排列提供給上述非路由節(jié)點(diǎn)的每一個(gè)父節(jié)點(diǎn)上的整數(shù)而形成上述第1排列,為了使上述頂點(diǎn)節(jié)點(diǎn)的每一個(gè)移動(dòng)到弟節(jié)點(diǎn),在生成上述第3排列的步驟上使上述計(jì)算機(jī)執(zhí)行特定在上述第1排列中保存在與頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符相對(duì)應(yīng)的位置上的第1節(jié)點(diǎn)識(shí)別符的步驟;特定在上述第1排列中保存在僅比上述頂點(diǎn)節(jié)點(diǎn)識(shí)別符相對(duì)應(yīng)的位置的值大1的值的保存位置上的第3節(jié)點(diǎn)識(shí)別符的步驟;在上述第1節(jié)點(diǎn)識(shí)別符與第3節(jié)點(diǎn)識(shí)別符一致的情況下,把上述移動(dòng)后的頂點(diǎn)節(jié)點(diǎn)識(shí)別符決定為與上述第3節(jié)點(diǎn)識(shí)別符的保存位置相對(duì)應(yīng)的節(jié)點(diǎn)識(shí)別符的步驟。
15.根據(jù)權(quán)利10所述的排列生成程序,其特征在于,使子節(jié)點(diǎn)比同代的節(jié)點(diǎn)優(yōu)先,向包含路由節(jié)點(diǎn)的節(jié)點(diǎn)上提供固有的連續(xù)的整數(shù),按照提供給作為上述路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的非路由節(jié)點(diǎn)的每一個(gè)上的整數(shù)的順序,通過(guò)排列提供給上述非路由節(jié)點(diǎn)的每一個(gè)父節(jié)點(diǎn)上的整數(shù)而形成上述第1排列,為了使上述頂點(diǎn)節(jié)點(diǎn)的每一個(gè)移動(dòng)到子節(jié)點(diǎn),在生成上述第3排列的步驟上使上述計(jì)算機(jī)執(zhí)行特定在上述第1排列中保存了頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符的保存位置的步驟;把移動(dòng)后的頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符決定為與該保存位置相對(duì)應(yīng)的節(jié)點(diǎn)識(shí)別符的步驟。
16.根據(jù)權(quán)利10所述的排列生成程序,其特征在于,使子節(jié)點(diǎn)比同代的節(jié)點(diǎn)優(yōu)先,向包含路由節(jié)點(diǎn)的節(jié)點(diǎn)上提供固有的連續(xù)的整數(shù),按照提供給作為上述路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的非路由節(jié)點(diǎn)的每一個(gè)上的整數(shù)的順序,通過(guò)排列提供給上述非路由節(jié)點(diǎn)的每一個(gè)父節(jié)點(diǎn)上的整數(shù)而形成上述第1排列,為了使上述頂點(diǎn)節(jié)點(diǎn)的每一個(gè)移動(dòng)到父節(jié)點(diǎn),在生成上述第3排列的步驟上使上述計(jì)算機(jī)執(zhí)行特定在上述第1排列中保存在與頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符相對(duì)應(yīng)的位置的節(jié)點(diǎn)識(shí)別符的步驟;把移動(dòng)后的頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符決定為保存在上述相對(duì)應(yīng)的位置的節(jié)點(diǎn)識(shí)別符的步驟。
17.根據(jù)權(quán)利10所述的排列生成程序,其特征在于,使子節(jié)點(diǎn)比同代的節(jié)點(diǎn)優(yōu)先,向包含路由節(jié)點(diǎn)的節(jié)點(diǎn)上提供固有的連續(xù)的整數(shù),按照提供給作為上述路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的非路由節(jié)點(diǎn)的每一個(gè)上的整數(shù)的順序,通過(guò)排列提供給上述非路由節(jié)點(diǎn)的每一個(gè)父節(jié)點(diǎn)上的整數(shù)而形成上述第1排列,為了使上述頂點(diǎn)節(jié)點(diǎn)的每一個(gè)移動(dòng)到兄節(jié)點(diǎn),在生成上述第3排列的步驟上使上述計(jì)算機(jī)執(zhí)行特定在上述第1排列中保存在頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符的保存位置上的第1節(jié)點(diǎn)識(shí)別符的步驟;檢索在上述第1排列中保存在比頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符的保存位置的值小的值的保存位置上、并且與該第1節(jié)點(diǎn)識(shí)別符相同的第4節(jié)點(diǎn)識(shí)別符的步驟;特定上述第4節(jié)點(diǎn)識(shí)別符的保存位置中的最大保存位置的步驟;把上述移動(dòng)后的頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符決定為與上述最大保存位置相對(duì)應(yīng)的節(jié)點(diǎn)識(shí)別符的步驟。
18.根據(jù)權(quán)利10所述的排列生成程序,其特征在于,使子節(jié)點(diǎn)比同代的節(jié)點(diǎn)優(yōu)先,向包括路由節(jié)點(diǎn)的節(jié)點(diǎn)上提供固有的連續(xù)的整數(shù),按照提供給作為上述路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的非路由節(jié)點(diǎn)的每一個(gè)上的整數(shù)的順序,通過(guò)排列提供給上述非路由節(jié)點(diǎn)的每一個(gè)父節(jié)點(diǎn)上的整數(shù)而形成上述第1排列,為了使上述頂點(diǎn)節(jié)點(diǎn)的每一個(gè)移動(dòng)到弟節(jié)點(diǎn),在生成上述第3排列的步驟上使上述計(jì)算機(jī)執(zhí)行特定在上述第1排列中保存在頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符的保存位置的第1節(jié)點(diǎn)識(shí)別符的步驟;檢索在上述第1排列中保存在比頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符的保存位置的值大的值的保存位置上、并且與該第1節(jié)點(diǎn)識(shí)別符相等的第5節(jié)點(diǎn)識(shí)別符的步驟;特定上述第5節(jié)點(diǎn)識(shí)別符的保存位置中的最小保存位置的步驟;把上述移動(dòng)后的頂點(diǎn)節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符決定為與上述最大保存位置相對(duì)應(yīng)的節(jié)點(diǎn)識(shí)別符的步驟。
全文摘要
本發(fā)明提供能夠有效地跟蹤樹(shù)型數(shù)據(jù)構(gòu)造的數(shù)據(jù)之間的例如父子、祖先、子孫、兄弟、同輩等關(guān)系的樹(shù)型數(shù)據(jù)構(gòu)造的表現(xiàn)方法,在存儲(chǔ)器中設(shè)置有由C-P排列表現(xiàn)的樹(shù)型數(shù)據(jù)構(gòu)造的數(shù)據(jù)和頂點(diǎn)節(jié)點(diǎn)列表,其中C-P排列是向節(jié)點(diǎn)上提供固有的節(jié)點(diǎn)識(shí)別符,且節(jié)點(diǎn)之間的父子關(guān)系是由向作為路由節(jié)點(diǎn)以外的節(jié)點(diǎn)的非路由節(jié)點(diǎn)的每一個(gè)上提供的節(jié)點(diǎn)識(shí)別符和與非路由節(jié)點(diǎn)的每一個(gè)相關(guān)聯(lián)的父節(jié)點(diǎn)的節(jié)點(diǎn)識(shí)別符這樣的組構(gòu)成,上述頂點(diǎn)節(jié)點(diǎn)列表是為了分別表現(xiàn)包含特定的節(jié)點(diǎn)以及其子孫節(jié)點(diǎn)的1個(gè)以上的節(jié)點(diǎn)群,以特定的節(jié)點(diǎn)作為頂點(diǎn)節(jié)點(diǎn),保存了其節(jié)點(diǎn)識(shí)別符的頂點(diǎn)節(jié)點(diǎn)列表。系統(tǒng)10參照C-P排列,把頂點(diǎn)節(jié)點(diǎn)的每一個(gè)移動(dòng)到子節(jié)點(diǎn)、父節(jié)點(diǎn)或者與頂點(diǎn)節(jié)點(diǎn)同代的節(jié)點(diǎn)(兄節(jié)點(diǎn)或弟節(jié)點(diǎn)),生成新的頂點(diǎn)節(jié)點(diǎn)列表。
文檔編號(hào)G06F17/30GK101031892SQ200580032898
公開(kāi)日2007年9月5日 申請(qǐng)日期2005年9月28日 優(yōu)先權(quán)日2004年10月1日
發(fā)明者古莊晉二 申請(qǐng)人:特博數(shù)據(jù)實(shí)驗(yàn)室公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1