JPS63132339A - 木走査方法、および装置 - Google Patents

木走査方法、および装置

Info

Publication number
JPS63132339A
JPS63132339A JP61280032A JP28003286A JPS63132339A JP S63132339 A JPS63132339 A JP S63132339A JP 61280032 A JP61280032 A JP 61280032A JP 28003286 A JP28003286 A JP 28003286A JP S63132339 A JPS63132339 A JP S63132339A
Authority
JP
Japan
Prior art keywords
scanning
subtree
tree
sequential data
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP61280032A
Other languages
English (en)
Inventor
Takanori Nishio
西尾 高典
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP61280032A priority Critical patent/JPS63132339A/ja
Priority to US07/123,777 priority patent/US4868743A/en
Publication of JPS63132339A publication Critical patent/JPS63132339A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Devices For Executing Special Programs (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、木構造情報処理における木走査方法、および
装置に関し、特に、木を構成する節点情報の評価を、木
走査前、あるいは木走査時に行うことが不可能である場
合にも、木走査の効率を向上することが可能な木走査方
法、および装置に関する。
〔従来技術〕
木構造のデータを走査し2個々の節点への訪問類に、そ
の節点の情報に基づく処理をする方法は、コンパイラを
始めとする各種ソフトウェアにおいて、頻繁に用いられ
ている。
この走査の対象となるデータは、例えば、第7図のよう
に、その構成要素である節点201、および1節点20
1を結ぶ枝202とから構成される木構造200をなし
、さらに、この木構造200の節点201の中、最上部
にある節点を根と呼び、ある節点の下に他の節点が接続
されない場合、その節点を葉と呼ぶ。また、枝202に
より接続された節点201同志の関係については、例え
ば、ある節点Xの直ぐ下に接続される節点yを、その節
点Xの子と呼び、節点Xを節点yの親と呼ぶ。
さらに、親を共有する節点同志には順序関係があり、親
の節点Xの左端の子、および右端の子を、それぞれ節点
Xの長子、および末子と呼び、また、節点Xの右隣りの
節点を、節点Xの第と呼び、節点Xを、その第に対し兄
と呼ぶ。
なお、これらの節点は、木構造を構成するため、自分の
長子データの場所、および第データの場所を保持する。
また、長子や第が存在しない節点は、それらの場所の代
りに特殊な値nilを保持する。
このような構造を持つ木を走査する場合、深さ優先探索
、すなわち、その木の根からスター(・シ、まず、一番
左個にある子から順次下方に探索し、葉に到達すると1
つ親に戻って、当該葉の第がある場合には5該第につい
てg索を続け2ない場合には1つ親に戻る、という探索
によって、個々の節点に対して、該節点のすべての子の
訪問前に訪問する先順、子の肋間の中間に訪問する生類
、すべての子の訪問後に訪問する後順の全てを含む順序
で木走査を行い、その訪問順序に従い、逐次的に該節点
の訪問順序に対応したデータを配置する方法がある。
例えば、第8図(1)のように、節点Rは3つの子を有
し、それぞれの子は、さらに、部分的木構造a−cを有
する木構造に対して、上記の方法により、木走査を行っ
て逐次的にデータを配列すると、(2)のように、部分
的木構造a−cの前の節点Rへの木走査(先*)の結果
RLv部分的木構造aと部分的木構造すとの間における
節点Rへの木走査(生類)の結果R2y部分的木構造す
と部分的木構造Cとの間における節点Rへの木走査(生
類)の結果R3,および、部分的木構造a−cより後の
節点Rへの木走査(後順)の結果R4が、逐次配置され
る6 従って5木走査において、現在木走査の対象となってい
る節点は、自分の子の総数+1個の状態を有する。この
状態が、節点についての走査段階であり50から該節点
の子の総数までの整数により表現する。また1個々の節
点は、各走査段階における属性、すなわち、逐次的に配
置する内容R工〜R4pあるいは、それらの内容R1〜
R1Iを指示する情報を備える。
このような木走査方法は、特に、木走査開始以前に、全
ての節点の属性の評価を低コストで行うことが可能な場
合、あるいは、木走査開始以前には困難であるが、木走
査時の訪問類に従い、個々の属性の評価が可能である場
合等について適用される。
しかし、節点同志が依存しあい、ある節点の属性評価の
ため、木全体を走査する必要がある場合、あるいは、属
性の評価に必要な情報が膨大であり、−回の走査におい
て、全ての節点の属性を配置することが不可能である場
合等、個々の節点の属性の評価順序が規定され、その評
価順序と木走査における各節点への木走査順序とが一致
していない場合は、このような方法を適用して各操作を
行うことができない。
例えば、′アルゴリズム子データ構造=プログラム、N
、 Wirt、b著1片山卓也訳、1979年、日本コ
ンピュータ協会刊″に記載されている方法では、木構造
の根を出発点として木全体を走査し、個々の節点訪問時
に先順、生類、後順毎に処理を行っている。このため、
−回の走査で処理対象となる節点が限定されている場合
、その走査において、全く処理されない節点も含む木全
体に対する走査を操り返す必要があった。
〔発明が解決しようとする問題点〕
上記従来技術では、−回の走査で処理対象となる節点が
限定されている場合、木全体を操り返して走査するため
、処理の効率に問題があった。
また、例えば、個々の節点を訪問したときの処理結果を
逐次構造に配置する場合等、処理対象が異なる節点の処
理同志が相互に干渉しあう場合については配慮がなされ
ず、このような場合に対する処理は容易でなかった。
本発明の目的は、このような問題点を改善し5複数回の
木走査を必要とする場合の処理効率を向上することがで
き、また、各走査の処理結果が干渉しあう場合でも、正
しい処理結果を得ることが可能な木走査方法、および装
置を提供することにある。
〔問題を解決するための手段〕
上記目的を達成するため、本発明の木走査方法は1節点
から構成された木構造データを蓄積する手段を備え、各
節点は、その木構造における走査段階を示す属性と、そ
の属性の評価順序を節点単位に規定する種別とを持ち、
木構造データの各節点の走査段階に対応する属性の評価
結果を、メモリ上に深さ優先探索順に逐次的に並べる処
理を、属性の評価順序に従い、段階的に行う木走査装置
において、上記メモリは2個のメモリから構成され、上
記種別が等しく、連結した節点群を部分木として認識し
、その部分木の根の走査時に、部分木の開始位置、およ
び終了位置にあることを示す記号を、それぞれ、先順、
および後順に逐次的に並べ、部分木の中間に位置するこ
とを示す記号を、その部分木の6葉において、その種別
と異なる種別の子の走査から戻った時点で、2個のメモ
リの一方に、逐次的に並べる第1の処理を行う手段、第
1処理手段により、各種別毎に逐次的に並べられたデー
タ列を探索しながら、当該種別に属さない部分木の開始
記号、中間記号、および終了記号を、2個のメモリの他
方に複写し、当該種別に属する部分木の開始記号を発見
すると、その部分木走査の開始を指示し、中間記号、お
よび終了記号を発見すると、部分木走査の再開を指示す
る第2の処理を行う手段、および、第2処理手段の指示
により、当該種別に届する部分木の走査を行い、その部
分木の属性を該2個のメモリの他方に展開する第3の手
段を備え、第1処理手段により、該逐次データ列を該一
方のメモリに展開し、第2処理手段により、逐次データ
列を探索し、@3処理手段は、第2処理手段の開始指示
を受け1部分木の走査を開始し、その種別と異なる種別
の節点を検出すると、走査を一時中断して、第2処理手
段により、再び、一方のメモリに格納された逐次データ
列の探索を行い、また、第3処理手段は、第2処理手段
の再開指示により、部分木走査を再開し、走査と並行し
て、当該種別に属する部分木の属性を、他方のメモリ上
に展開する処理を行うことに特徴がある。
また、本発明の木走査装置は、節点から構成された木構
造データを蓄積する手段(木構造蓄積回路)を備え、各
節点は、その木構造の走査における走査段階を示す属性
と、その属性の評価順序を節点単位に規定する種別とを
持ち、木構造データの各節点の走査段階対応する属性の
評価結果を、深さ優先探索順に、逐次的に並べる処理を
、その属性の評価順序に従い、段階的に行う木走査装置
において、上記木構造蓄積回路に蓄積された節点が持つ
情報から構成された初期的な逐次データ列を、原始デー
タ列としてM積する手段、上記木走査装置を起動する初
期起動信号を入力して木走査を行い、木構造蓄積手段に
蓄積された木構造データから、各節点が持つ情報を読み
込みながら、初期的な逐次データ列を、その原始逐次デ
ータ蓄積手段に書き込む手段(初期木走査回路)、現在
、評価対象である種別の各節点の属性と、評価対象以外
の逐次データとを、目的逐次データ列として蓄積する手
段、同一の種別が連結した節点群を部分木とし、その部
分木の走査処理の状態を示すデータの場所情報を蓄積・
管理する手段(部分木走査管理情報蓄積回路)、原始逐
次データ蓄積手段から逐次データを読み込んで、目的逐
次データ蓄積手段に書き込むとともに、部分木走査管理
情報蓄積回路が蓄積した部分木走査情報を参照・更新し
ながら1部分木走査処理を管理し、その逐次データを探
索する手段(逐次データ探索回路)、および、逐次デー
タ探索回路が指定した部分木の根により、木構造蓄積手
段から、その根に連結して部分木を構成する節点の情報
を読み込みながら、各節点の属性を目的逐次データ蓄積
手段に書き込む手段(部分木走査回路)を備えたことに
特徴がある。
〔作用〕
本発明においては、各走査の対象となる節点群を種別し
て色付けし、同じ色を持つ節点が連結した節点群を部分
木と見なして、その部分木を管理し、各部分木走査と管
理とがコル−チン的に呼び合う。
すなわち、部分木の集まりは、個々の部分木の根を識別
子とする括弧構造として管理され、その部分木の集まり
を管理するため、−回の走査の間に、その括弧構造を複
写する。その複写中に、現在の種別の部分木が出現する
と、複写を中断して部分木の走査を開始し、括弧構造の
中に処理結果を反映させ、部分木の走査完了前に異種節
点に到達すると、該当部分の括弧構造の複写を続行する
こうして、括弧構造において、−回の走査の間に現在の
種別の部分木群のみを走査し、処理結果を展開すること
ができるため、−回の走査における処理を、対象となる
節点の走査のみに限定して、処理効率を向上することが
でき、また、各処理結果を括弧構造により管理するため
、各処理結果の干渉の反映が可能である。
〔実施例〕
以下、本発明の一実施例を図面により説明する。
第5図は、本発明の一実施例における節点、および部分
木の説明図、第6図は本発明の一実施例における逐次デ
ータ列の説明図である。
本実施例における木走査方式では、予め、第5図(1)
のように、走査対象となる木を構成する節点の集合を、
各節点の評価順序によって分類し、その分類に対応して
5点線で分けられた部分集合を、その節点の種別A−C
とする。また、個々の節点は、各節点の属する種別の名
称を保持し、走査対象の木は、第5図(2)のように、
その種別A〜Cに基づいて色付けされる。
なお、木構造を構成する部分木については、下記の通り
定義する。
(1)木全体の根、あるいは、親の種別と異なる種別で
ある節点を、属する部分木の根とする。
(11)ある部分木に腐する節点の子の種別が、親の種
別と一致するとき、子はその部分木に属する。
(iii )葉、あるいは、全ての子の種別が自分の種
別と異なる節点を、属する部分木の葉とする。
従って1以上の定義により、第5図(2)のように、点
線で区切られた領域が、以上の定義による部分木を示す
。また、個々の部分木の根の場所により、各部分木を識
別する。
このように対象となる木に色付けすると、まず、木走査
を行って、第6図(1)のように、逐次、走査した節点
の場所、その節点の種別、および、その節点と、その節
点が馬する領域の境界との位置関係を示すマークにより
、部分木を認識する。
この認識により、第5図(2)に示した木構造から、第
6図(2)のような構成の逐次データ列を展開する。
この場合、親と異なる種別の節点においては、先順で、
その節点を新しい部分木の根と認識し、その節点の場所
、種別、および、開始記号を保持するデータ(開始記号
データ)を、逐次データ列の末尾に配置する。
また、ある節点において5走査段階がi (i≧、1)
の場合、第j子の種別が、その節点の種別と異なれば、
種別、および中間記号を保持するデータ(中間記号デー
タ)を、逐次データ列の末尾に配置する。
さらに、ある部分木において、最後に出現する中間記号
データは末尾から削除し、その部分木の根においては、
後産で2種別、および終了記号を保持するデータ(#了
記号データ)を逐次データ列の末尾に配置する。
こうして作成した逐次データ列は、第5図(2)の木を
、第6図(3)のように、各種別A−Cを示す部分木を
単位とする木とすると、この木を第6図(4)のように
、括弧構造で表現することができる。従フて、第6図(
2)の逐次データ列における開始記号、終了記号、およ
び中間記号は、それぞれ、この括弧構造の左括弧、右括
弧、および区切りに対応する。
また、この逐次データ列を初期逐次データ列と呼び、評
価順序を示す種別に従い、若い種別から順次、逐次デー
タ列の探索を行って、目的とする逐次データ列を得る。
なお、第1回目に探索を行う種別については、初期逐次
データ列を原始逐次データ列と見なし、第2回目以降の
種別については、前回の目的逐次データ列を原始逐次デ
ータ列と見なす。
このような原始逐次データ列を探索し、目的逐次データ
列を展開する場合、まず、その原始逐次データ列の先端
から末尾までの逐次的な探索を行いながら、各データの
種別が目的とする当該種別と一致しなければ、そのデー
タを目的逐次データ列の末尾に配置する。
その探索中に、当該種別と一致する開始記号データに到
達した場合、そのデータの保持する節点の場所から部分
木走査を開始し、当該種別と異なる節点が出現して、そ
の部分木走査を中断するか。
あるいは、その部分木走査が終了することを待った後、
その次のデータから探索を続行する。
また、その探索中に、当該種別と一致する中間記号デー
タ、または終了、!2号データに到達した場合、その到
達以前に尚該種別と異なる節点が出現したため、一時中
所していた部分木走査を再開し、さらに、当該種別と異
なる節点が出現して、その部分木走査が中断するか、あ
るいは終了することを待った後、次のデータから探索を
続行する。なお、指示した時点で当該部分木走査が終了
している場合、そのデータの次のデータからvA索を続
行する。
このように、原始逐次データ列から当該種別の逐次デー
タを探索して、目的逐次データ列を得る過程において、
指示された節点を根とする部分木走査を開始し、木走査
される個々の節点について、その走査段階に対応する属
性が必要ならば、その時点で評価し、その値を目的逐次
データ列の末尾に配置する。
例えば、ある節点において、第i子がその部分木に居さ
ない場合、走査段W1iの直前の状態で走査を中断し、
指示待ちとなる。
この場合、その逐次データが当該種別と一致する中間記
号データ、あるいは終了記号データであれば、再開指示
を行い、対応する部分木走査を。
中断した節点の走査段Pliから再開する。なお、対応
する部分木走査が存在しない場合、すなわち、その部分
木走査が既に走査を終了している場合は、再び指示待ち
となる。
原始逐次データ列の探索において、原始逐次データ列の
末尾データの処理終了が、1つの種別に対する原始逐次
データ列の探索、および部分木走査の完結を意味し、次
の種別が存在する場合は、いままでの目的逐次データ列
を原始逐次データ列と見なして、次の種別の逐次データ
を得るため、その先頭から原始逐次データ列の探索を開
始する。
また、本実施例における木走査方式では、部分木走査中
に、ある節点の種別が当該種別と一致しないため、部分
木走査を中断し、さらに、その逐次データのマークが中
間記号、あるいは終了記号であるため、再開指示を行い
、その時点の中間記号データ5および終了記号データと
対応する開始記号データから開始された部分木走査を再
開する場合1個々の部分木走査に必要な環境、節点、お
よび走査段階等、部分木走査を再開する位置を示す情報
(部分木走査情報)を保持する場所、つまり部分木走査
情報ポインタをスタック構造で管理する。この部分木走
査情報ポインタは、木走査再開指示の際、対応する部分
木走査の開始位置を示す情報として使用される。このた
め、新しい開始記号データ到達時に、それまで用いてい
た部分木走査情報ポインタを、そのスタックにブツシュ
し、終了記号データ到達時に、そのスタックからポツプ
する。
第1図は、本発明の一実施例における木走査装置の構成
図である。
本実施例の木走査装置1は、木走査制御装置2、初期木
走査回路3、木走査情報蓄積回路4、木構造M積回路5
.逐次データ探索回路6、部分木走査管理情報蓄積回路
7、部分木走査回路8、部分木走査情報蓄積回路9、逐
次データ読出・書込切換回路10、および逐次データ蓄
積回路11.12を備える。
木構造蓄積回路5は、予め、木構造情報26゜各節点の
属性情報27等の木構造データを蓄積し、ある節点の長
子、および第の場所等の構造情報や、その節点の各走査
段階の属性情報の参照、あるいは更新要求等の木構造ア
クセス21.28に対し。
該当する節点情報22.29を出力する。
木走査制御回路2は、木走査開始信号13が入力される
と、逐次データ読出・書込切換回路10に対して初期信
号17を出力し、さらに、初期木走査回路3に対して開
始信号15を出力する。
また、木走査制御回路2は、種別情報14が入力される
と、この入力が、初期木走査回路3に対する開始信号1
5の出力より後に行われた場合、および、逐次データ探
索回路6に対する開始信号19の出力より後に行われた
場合は、そオLぞれ、初期木走査回路3から送られる終
了信号16の入力、および、逐次データ探索回路6から
送られる終了信号20の入力を待ち、終了信号16、あ
るいは20が入力されると、逐次データ続出・書込切換
回路10に切換信号18を出力し、さらに。
逐次データ探索回路6に対して該当する種別の探索の開
始信号19を出力する。
逐次データ読出・書込切換向110は、初期信号17が
入力されると、逐次データ蓄積回路11を目的逐次デー
タ列の蓄積場所として割りめでるため、入力される逐次
データ25.35のチャネルと、逐次データ蓄積回路1
1への書込データである逐次データ41のチャネルとを
接続し、また。
逐次データ読出・書込切換回路10への読出信号36、
および、逐次データ読出・書込切換回路1.0からの出
力である逐次データ37のチャネルと、逐次データ蓄積
回路12への読出信号46.および、逐次データ蓄積回
路12からの読出データである逐次データ47のチャネ
ルとを接続して、逐次データ蓄積回路11に対し、リセ
ット信号40を出力する。その後、逐次データ25が入
力される毎に、逐次データ蓄積回路11に書き込まれる
逐次データ41として出力する。
また、逐次データ続出・書込切換回路10は、切換信号
18が入力されると、入力される逐次データ25.35
のチャネルと、逐次データ蓄積回路11へ書き込まれる
逐次データ41のチャネルとが接続されている場合、そ
の入力データ25.35のチャネルを、逐次データ蓄積
回路12へ書き込まれる逐次データ45のチャネルに切
り換えて接続し、その入力データ25.35のチャネル
と、逐次データ蓄積回路12へ書き込まれる逐次データ
45のチャネルとが接続されている場合は、その入力デ
ータ25.35のチャネルを、逐次データ蓄積回路11
へ曹き込まれる逐次データ41のチャネルに切り換えて
接続する。
さらに、読出信号36、および、逐次データ探索回路6
に出力される逐次データ37のチャネルと、読出信号4
6、および、逐次データ蓄積回路12から読み出される
逐次データ47のチャネルとが接続されている場合、読
出信号36、および、逐次データ探索回路6に出力され
る逐次データ37のチャネルを、読出信号42、および
逐次データ43のチャネルに切り換えて接続し、逐次デ
ータ蓄積回路11に対してリセット信号44を出力する
。また、逆に、読出信号36、および逐次データ37の
チャネルと、読出信号42、および逐次データ43のチ
ャネルとが接続されている場合、続出信号36、および
逐次データ37のチャネルを、読出信号46.および逐
次データ47のチャネルに切り換えて接続し、逐次デー
タ蓄積回路12に対して、リセット信号44を出力する
その後、逐次データ続出・書込切換回路[0は、逐次デ
ータ35を入力する毎に、チャネルが接続されている側
の逐次データ蓄積回路11、あるい、  は12へ1き
込まれる逐次データ42、あるいは46として出力する
。また、読出信号36を入力する毎に、チャネルが接続
されている個の逐次データ蓄積回路11、あるいは12
へ、読出信号42゜あるいは46として出力し、逐次デ
ータ蓄積回路11、あるいは12から、それぞれ読み出
される逐次データ43、あるいは47を入力して、出力
データ37として出力する。
逐次データ蓄積回路11.12は、入力されたデータを
逐次的に配置する記憶部と、記憶部において、末尾に配
置されたデータの場所を示すポインタとを備え、リセッ
ト信号40.44が入力されると、ポインタを記憶部の
先頭の場所に設定し、書込データとして逐次データ41
.45が入力されると、現在のポインタを1デ一タ分、
進めて、そのポインタが示す場所に、その書込データ4
1゜45を格納し、読出信号42.46が入力されると
、現在のポインタが示す場所の逐次データ43゜47を
読出データとして出力し、そのポインタを1データ分戻
す。
これらのデータは5節点、種別、およびマークの3つの
フィールドから構成されたデータか、あるいは、属性デ
ータである。その節点フィールドは節点データの場所を
保持し、種別フィールドは節点の種別を保持し、マーク
・フィールドはデータの開始記号、中間記号、および終
了記号の何れかを保持する。従って、節点フィールド、
種別フィールド、およびマーク・フィールドから構成さ
れるデータは、まだ展開されていない種別の部分木に関
する情報であり、属性データは、既に展開された節点の
属性情報自体を示す。
第2図は、本発明の一実施例における初期木走査回路の
初期逐次データ列の作成処理フローチャートである。な
お、N0DEは、走査時における現在の節点の場所を示
し、N0DE Lは、現在の節点の子の場所を示す。
第1図のように、初期木走査回路3は、木走査情報蓄積
回路4に対してブツシュ操作、およびポツプ操作を行い
、木走査情報蓄積回路4は、初期木走査回路3のブツシ
ュ操作により、待避情報23を入力してスタック構造の
末尾に蓄積し、初期木走査回路3のポツプ操作により、
スタック構造の末尾の情報を取り出して、復帰情報24
として出力する。
第2図のように、まず、木走査制御回路2が開始信号1
5を出力すると、初期木走査回路3は。
この開始信号15を入力し、木構造蓄積回路5に格納さ
れた木構造の根から探索を始める。
この木走査における現在の節点の場所を示すN0DEが
根であるか、あるいは、そのN0DEの種別が親の種別
と異なる場合、部分木の根であると判断しく60)、そ
の節点について、開始記号データを作成して(61)、
逐次データ続出・書込切換回路10を介し、目的逐次デ
ータ蓄積回路11に書き込む(62)。
次に、そのjく○DEの長子から順に、子孫の長子を走
査するため、現在のN0DE、N0DE 1 。
および親の種類を、木走査情報蓄積回路4にブツシュし
く65)、子の情報を設定し直して(66)、l ab
el 1に戻り、MODEの種別が親の種別と等しいか
否かを判断する(60)。
また、部分木の根において、第が存在しない場合(67
)、逐次データ列の末尾が中間記号データならば、その
中間記号データを削除し、終了記号データを作成して逐
次データ列の末尾に配置する(68)。
さらに、子の走査から戻った時点で、木走査情報蓄積回
路4をポツプして、現在の情報を復帰する(69)。な
お、ポツプする情報がないときは処理を終る。
また、子の種別と自分の種別とが異なると判断すると(
70)、その節点について、中間記号データを作成しく
71)、逐次データ続出・書込切換回路10を介して、
目的逐次データ蓄積回路11に#iき込む(72〕。
こうして、中間記号データの書き込みが終了すると、M
ODE 1にN0DE 1の第を設定して(73)、l
 abel 2に戻り、MODE Lがnilか否かを
判断する(64)。
第3図は、本発明の一実施例の逐次データ探索回路にお
ける原始逐次データ列から目的逐次データ列への展開処
理フローチャートである。なお。
逐次データ蓄積回路J1は、原始逐次データ列を蓄積し
、逐次データ蓄積回路12は目的逐次データ列を蓄積す
るものとし、また、逐次データ読出・書込切換回路10
の経由については言及しない。
第1図のように、逐次データ探索回路6は、部分木走査
管理情報蓄積回路7に対してブツシュ操作を行い、部分
木走査管理情報蓄積回路7は、待避情報30を入力して
、スタック構造の末尾に蓄積し、逐次データ探索口16
のポツプ操作により、スタック構造の末尾の情報を取り
出して、復帰情報31として出力する。
第3図のように、まず、逐次データ探索回路6は、木走
査制御回路2から開始信号19を入力すると、逐次デー
タ蓄積回路11内の原始逐次データ列の先頭から探索を
行うため、データを読み出す(80,93)。
読み出すデータが空データであれば(81)、木走査制
御回′i42に終了信号20を出力し、木走査制御回路
2からの開始信号19を待つ状態となる。
読み出すデータが有れば(81)、そのデータの種別フ
ィールドの値が、現在の種別と一致するか否かを調べ(
82)、異なる場合、そのデータを逐次データ蓄積回路
12に書き込む(84)。
そのデータの種別フィールドの値が、現在の種別と一致
する場合、次に、そのデータのマークを調べる(83)
マーク・フィールドが開始記号であれば、現在の部分木
走査のための情報の中、部分木走査情報蓄積回路9内の
場所を示す値(部分木走査情報ポインタ)を待避情報3
0として、部分木走査管理情報蓄積回路7にブツシュし
く85)、新しい部分木走査の開始を節点フィールドの
節点の場所を伴う部分木走査開始信号32により、部分
木走査回路8に指示しく86)、部分木走査回路8から
の部分木走査停止信号34を待つ(87)。なお、この
部分木走査停止信号34は、新しい部分木走査のための
部分木走査情報ポインタを伴い、逐次データ探索回路6
は、現在の部分木走査の環境の場所を部分木走査管理情
報蓄積回路7にブツシュするまで、一時的に保持する。
その後、部分木走査停止信号34が入力されると、再び
、逐次データ蓄積回路11からデータを読み出す(93
)。
また、マーク・フィールドが中間記号であれば、部分木
走査回路8に対して、現在の部分木走査情報ポインタ3
0を伴う部分木走査再開信号33により、この部分木走
査の再開を指示しく88)、部分木走査回路8からの部
分木走査停止信号34を待つ(89)。こうして、部分
木走査停止信号34が入力されると、再び、逐次データ
蓄積回路11からデータを読み出す(93)。
さらに、マーク・フィールドが終了記号であれば、中間
記号の場合(88,89)と同様に、現在の部分木走査
の再開を指示しく90)、部分木走査回路8からの部分
木走査停止信号34を待ち(91)、その後、部分木走
査管理情報蓄積回路7から最新の部分木走査情報ポイン
タ31をポツプして(92)、再び、逐次データ蓄積回
路11からデータを読み出す(93)。
第4図は、本発明の一実施例の部分木走査回路における
木構造から目的逐次データ列への展開処理フローチャー
トである。なお、N0DEは、走査時における現在の節
点の場所を示し、MODElは、現在の節点の子の場所
を示し、5TAGEは、N0DEの走査段階を示す。
第1図のように、部分木走査回路8の生成操作により、
部分木走査情報蓄積回路9は、生成信号48を入力して
、新しい部分木に対応する領域を確保し、その場所(部
分木走査情報ポインタ49)を部分木走査回路8に出力
し、部分木走査回路8のブツシュ操作により、待避情報
38を入力して、待避情報38が伴う部分木走査情報ポ
インタの指定する領域上のスタック構造の末尾に蓄積し
、部分木走査回路8のポツプ操作により、同様に、指定
する領域上のスタック構造の末尾の情報を取り出し、復
帰情報39として出力する。
第4図のように、部分木走査回N8は、逐次データ探索
回16から節点の場所を伴う開始信号32を入力すると
、木構造蓄積回路5内の木構造を、その節点を根として
走査する。この場合、部分木走査@路8は、部分木走査
情報蓄積回19に生成信号48を出力して、部分木走査
情報ポインタ49を入力する(100,101)。
N0DEの種別が当該種別と異なる場合(]02)、そ
の部分木走査情報ポインタを伴う部分木走査停止信号3
4を逐次データ探索回路6に対して出力し、動作を中断
する(103)。逐次データ探索回路6から部分木走査
再開信号33が入力さ九ると、その部分木走査再開信号
33に伴う部分木走査情報ポインタを、部分木走査情報
蓄積回路9上の現在の領域を示すポインタとして設定し
、動作を再開する(104)。
また、MODEの種別が当該種別と一致する場合(10
2)、5TAGE=OにおけるN0DEの属性を逐次デ
ータ50として、逐次データ蓄積回路12に書き込む(
105,1,06)。さらに、N0DELにN0DEの
長子を設定する(107)。
N0DE 1がnilでなければ(] 08)、N。
DEの長子から順に、子孫の長子を走査するため、現在
のN0DE、N0DE 1.および5TAGEを、部分
木走査情報蓄積回路9の現在の領域にブツシュしく]0
9)、子の情報を設定し直して(110)、再び、La
bellに戻り、N0DEの種別が現在の種別と一致す
るか否かを確める(102)。
また、MODEがnilならば(108)、子の操作か
ら戻った時点で、部分木走査情報蓄積回路9上の現在の
領域からポツプして、現在の情報を復帰する(111)
この場合、ポツプするデータが無ければ(112)、こ
の部分木の走査を終了し、部分木走査情報ポインタが示
す領域を放棄して、逐次データ探索回路6に対し、部分
木走査停止信号34を出力して、部分木走査開始信号3
2、あるいは部分木走査再開信号33を待つ。
また、復帰情報39があれば(112) 、そのS T
 A、 G Eをカウントアツプしく113) 、その
5TAGEにおけるN0DEの属性を示す逐次データ5
0を逐次データM積回路12に書き込み(114,)、
第の走査を行うため、N0DE 1にN0DEIの第を
設定して(115)、再び、I abe12に戻り、N
0DE 1がnilか否かを確める(108)。なお、
部分木走査再開信号33に伴う部分木走査情報ポインタ
の示す領域が既に放棄されている場合、以上の処理を実
行することなく部分木走査停止信号34を出力し、部分
木走査開始信号32、あるいは部分木走査再開信号33
を待つ。
〔発明の効果〕
本発明によれば、木構造のデータを処理する木走査にお
いて、節点の走査順に節点を処理することが不可能であ
り、複数回の走査が必要な場合。
個々の走査では、対象となる節点の周辺のみ走査するた
め、処理効率を向上することができる。
また、各節点を処理するために必要な情報を一括して保
有できない等の理由から、複数回の走査で対処しきれな
い場合でも、木全体を一回の走査で処理した場合と同様
の節点処理結果を得ることができる。
【図面の簡単な説明】
下1図は本発明の一実施例における木走査装置の構成図
、第2図は本発明の一実施例における初期木走査回路の
初期逐次データ列の作成処理フローチャート、第3図は
本発明の一実施例の原始逐次データ列から目的逐次デー
タ列への展開処理フローチャート、i4図は本発明の一
実施例の部分木走査回路における木構造から目的逐次デ
ータ列への展開処理フローチャート、第5図は本発明の
一実施例における節点、および部分木の説明図、第6図
は本発明の一実施例における逐次データ列の説明図、第
7図は木構造データの説明図、第8図は木構造データに
対する操作の説明図である。 l:木走査装置、2:木走査制御回路、3:初期木走査
回路、4:木走査情報蓄積回路、5:木構造蓄積回路、
6:逐次データ探索回路、7:部分木走査管理情報蓄積
回路、8:部分木走査回路。 9:部分木走査情報蓄積回路、10:逐次データ読出・
書込切換回路、11,12:逐次データ蓄積回路、13
;木走査開始信号、14:種別情報。 ?5,19:開始信号、16,20:終了信号。 】7:初期信号、18;切換信号、21.28:木構造
アクセス、22,29:節点情報、23゜30.38:
待避情報、24,31,398復帰情報、25,35,
37,41,43..45,47゜50 : ’4次チ
ー’)、 26 :木構造till、 27 、 m性
情報、32:部分木走査開始信号、33一部分木走査再
開信号、34:部分木走査停止信号、36゜42.46
:読出信号、40.44:リセット信号、48:生成信
号、49:部分木走査情報ポインタ、200:木構造、
201:節点、202:枝、A−C:種別。 第   5   図 第   5   図 第   6   図 (A(C(B)、B(A、C,A)))第  6   
図 ■開始・開始記号 中間:中間記号 終了:終了記号 第  7  図 第   8   図

Claims (1)

  1. 【特許請求の範囲】 1、節点から構成された木構造データを蓄積する手段を
    備え、該節点は、iが1以上、かつ、該節点の子の総数
    以下の整数であれば、該節点の第1子の走査前、あるい
    は、第i子の走査後であるという該木構造における走査
    段階を示す属性と、該属性の評価順序を節点単位に規定
    する種別とを持ち、該木構造データの各節点の走査段階
    に対応する属性の評価結果を、メモリ上に深さ優先探索
    順に逐次的に並べる処理を、該属性の評価順序に従い、
    段階的に行う木走査装置において、上記メモリは2個の
    メモリから構成され、上記種別が等しく、連結した節点
    群を部分木として認識し、該部分木の根の走査時に、該
    部分木の開始位置、および終了位置にあることを示す記
    号を、それぞれ先順、および後順に逐次的に並べ、該部
    分木の中間に位置することを示す記号を、該部分木の各
    葉において、該種別と異なる種別の子の走査から戻った
    時点で、該2個のメモリの一方に、逐次的に並べる第1
    の処理を行う手段、該第1処理手段により各該種別毎に
    逐次的に並べられたデータ列を探索しながら、当該種別
    に属さない部分木の該開始記号、該中間記号、および該
    終了記号を、該2個のメモリの他方に複写し、当該種別
    に属する部分木の該開始記号を発見すると、該部分木走
    査の開始を指示し、該中間記号、および該終了記号を発
    見すると、該部分木走査の再開を指示する第2の処理を
    行う手段、および、該第2処理手段の指示により、当該
    種別に属する部分木の走査を行い、該部分木の属性を該
    2個のメモリの他方に展開する処理を行う第3の手段を
    備え、該第1処理手段により、該逐次データ列を該一方
    のメモリに展開し、該第2処理手段により、該逐次デー
    タ列を探索し、該第3処理手段は、該第2処理手段の該
    開始指示を受け、該部分木の走査を開始し、該種別と異
    なる種別の節点を検出すると、該走査を一時中断して、
    該第2処理手段により、再び、該一方のメモリに格納さ
    れた該逐次データ列の探索を行い、また、該第3処理手
    段は、該第2処理手段の該再開指示により、該部分木走
    査を再開し、該走査と並行して、当該種別に属する部分
    木の属性を、該他方のメモリ上に展開する処理を行うこ
    とを特徴とする木走査方法。 2、節点から構成された木構造データを蓄積する手段を
    備え、該節点は、iが1以上、かつ、該節点の子の総数
    以下の整数であれば、該節点の第1子の走査前、あるい
    は、第i子の走査後であるという該木構造の走査におけ
    る走査段階を示す属性と、該属性の評価順序を節点単位
    に規定する種別とを持ち、該木構造データの各節点の走
    査段階に対応する属性の評価結果を、深さ優先探索順に
    、逐次的に並べる処理を、該属性の評価順序に従い、段
    階的に行う木走査装置において、上記木構造蓄積手段に
    蓄積された節点が持つ上記節点情報から構成された初期
    的な逐次データ列を、原始逐次データ列として蓄積する
    手段、上記木走査装置を起動する初期起動信号を入力し
    て木走査を行い、該蓄積手段に蓄積された木構造データ
    から上記節点が持つ情報を読み込みながら、初期的な逐
    次データ列を該原始逐次データ蓄積手段に書き込む手段
    、現在、評価対象である種別の各節点の属性と、評価対
    象種別以外の逐次データとを、目的逐次データ列として
    蓄積する手段、同一種別の連結した節点群を部分木とし
    、該部分木の走査処理の状態を示すデータの場所情報を
    蓄積・管理する手段、該原始逐次データ蓄積手段から逐
    次データを読み込んで、該目的逐次データ蓄積手段に書
    き込むとともに、該部分木走査管理情報蓄積手段が蓄積
    した部分木走査情報を参照・更新しながら部分木走査処
    理を管理し、逐次データを探索する手段、および、該逐
    次データ探索手段が指定した部分木の根により、該木構
    造蓄積手段から該根に連結して該部分木を構成する節点
    の情報を読み込みながら、各該節点の属性を該目的逐次
    データ蓄積手段に書き込む手段を備えたことを特徴とす
    る木走査装置。
JP61280032A 1986-11-25 1986-11-25 木走査方法、および装置 Pending JPS63132339A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP61280032A JPS63132339A (ja) 1986-11-25 1986-11-25 木走査方法、および装置
US07/123,777 US4868743A (en) 1986-11-25 1987-11-23 Traversal method of processing tree structure information and apparatus using the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP61280032A JPS63132339A (ja) 1986-11-25 1986-11-25 木走査方法、および装置

Publications (1)

Publication Number Publication Date
JPS63132339A true JPS63132339A (ja) 1988-06-04

Family

ID=17619346

Family Applications (1)

Application Number Title Priority Date Filing Date
JP61280032A Pending JPS63132339A (ja) 1986-11-25 1986-11-25 木走査方法、および装置

Country Status (1)

Country Link
JP (1) JPS63132339A (ja)

Similar Documents

Publication Publication Date Title
KR100286501B1 (ko) 래티스를 키로 하여 검색을 행하는 사전 검색 장치 및 방법
JP2534360B2 (ja) 接続方法、ノ―ド接続方法、デ―タ処理方法、及び木内にノ―ドを挿入する方法
JP3417984B2 (ja) キャッシュ競合削減コンパイル方法
JP3554459B2 (ja) テキストデータ登録検索方法
CN106462990A (zh) 使用图形处理单元的可定制路线规划
JPH0782544B2 (ja) マルチテンプレートを用いるdpマツチング方法及び装置
WO2015010509A1 (zh) 一种基于一维线性空间实现Trie树的词典检索方法
US4956791A (en) Merging pattern-matching networks including retes
JPS63132339A (ja) 木走査方法、および装置
WO2013108333A1 (ja) 検索装置、検索方法、及び、検索プログラム
JPH0192836A (ja) 木走査方法
JPH1166095A (ja) データ管理装置
JPS63178321A (ja) 木走査方式
Metaxas Parallel algorithms for graph problems
JP3346014B2 (ja) 有向グラフ編集処理装置
JP3395362B2 (ja) 文書処理装置
JPH11194480A (ja) 描画用マスクパタンデータ生成方法とその装置
JPH06162088A (ja) 有向グラフ生成方法および装置
JP2591758B2 (ja) 複数パターンの検索方法
JPH038083A (ja) 識別子付情報の木構造管理方式
JP2002530785A (ja) ディジタル・メモリ構造と装置及びそれの管理方法
JPH05151292A (ja) 経路探索処理方法
JP2549493B2 (ja) 図形処理装置
JPS6382529A (ja) デ−タベ−ス間変換生成方法
Lindstrom Algorithms for list structure condensation