JPS63178321A - 木走査方式 - Google Patents

木走査方式

Info

Publication number
JPS63178321A
JPS63178321A JP62010190A JP1019087A JPS63178321A JP S63178321 A JPS63178321 A JP S63178321A JP 62010190 A JP62010190 A JP 62010190A JP 1019087 A JP1019087 A JP 1019087A JP S63178321 A JPS63178321 A JP S63178321A
Authority
JP
Japan
Prior art keywords
scanning
subtree
node
sequential data
type
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
JP62010190A
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 JP62010190A priority Critical patent/JPS63178321A/ja
Priority to US07/123,777 priority patent/US4868743A/en
Publication of JPS63178321A publication Critical patent/JPS63178321A/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

【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、節点間の情報伝播を伴う木構造情報処理にお
ける本走査方式に関し、特に、木を構成する節点情報の
評価を、本走査前、あるいは本走査時に行うことが困難
な場合、本走査の効率を向上することが可能な本走査方
式に関する。
〔従来技術〕
本構造のデータを走査し、個々の節点への訪問類に、そ
の節点の情報に基づく処理を行う方法は、コンパイラを
始めとする各種ソフトウェアにおいて、頻繁に用いられ
ている。
この走査の対象となるデータは1例えば、第9図のよう
に、その構成要素である節点201、および1節点20
1を結ぶ枝202とから構成される木構造200をなし
、さらに、この木構造200の節点201の中、最上部
にある節点を根と呼び、ある節点の下に他の節点が接続
されない場合、その節点を葉と呼ぶ。また、枝202に
より接続された節点201同志の関係については、例え
ば、ある節点Xの直ぐ下に接続される節点yを、その節
点Xの子と呼び、節点Xを親と呼ぶ。さらに、親を共有
する節点同志の関係では、親の節点Xの左端の子、およ
び右側の子を、それぞれ節点Xの長子、および末子と呼
び、また1節点Xの右隣りの節点を、節点Xの第と呼び
、節点Xを、その第に対する兄と呼ぶ。
なお、これらの節点は、本構造を構成するため、自分の
長子データの場所、および第データの場所を保持する。
また、長子や第が存在しない節点は、それらの場所の代
りに特殊な値ni1を保持する。
このような構造を持つ木を走査する場合、深さ優先探索
、つまり、その木の根からスタートし、まず、一番左側
にある子から順次下方に探索し、子が無くなると1つ戻
って、同様に右側に向ってg索を続ける。
また、この探索中に、各節点を訪問して操作を行う場合
、個々の節点に対して、先に根を訪問して操作する先順
、中間に根を訪問して操作する生類、およびNk@に根
を訪問して操作する後順の全てを含む順序で本走査を行
い、その訪問順序に従って逐次的にデータを配置する方
法がある。
例えば、第1O図(1)のように、節点Rは3つの子を
有し、それぞれの子は、さらに1部分的本構造a−cを
有する木構造に対して、上記の方法により、本走査を行
って逐次的にデータを配列すると、(2)のように、部
分的木構造a ’= cの前の節点Rへの走査(先順)
の結果R↓2部分部分的本構造Cとの間における節点R
への本走査(生類)の結果R2,部分的木構造すとCと
の間における節点Rへの本走査(生類)の結果R3yお
よび部分的本構造a −cより後の節点Rへの本走査(
後順)の結果R1Iが逐次配置される。
従って、本走査において、現在本走査の対象となってい
る節点は、自分の子の総数+1個の状態を有する。この
状態が、節点についての走査段階であり、Oから、その
節点の子の総数までの整数により表現する。また1個々
の節点は、各走査段階における属性、つまり、逐次的に
配置する内容R,〜R4+あるいは、それらの内容R1
〜R4を指示する情報を備える。
このような本走査方法は、特に、本走査開始以前に、全
ての節点の展性の評価を低コストで行うことが可能な場
合、あるいは本走査開始以前には困難であるが、本走査
時の訪問順に従い、個々の属性の評価が可能である場合
等について適用される。
しかし、節点同志が依存しあい、ある節点の属性評価の
ため、木全体を走査する必要がある場合、あるいは属性
の評価に必要な情報が膨大であり、−回の走査において
、全ての節点の属性を配置することが不可能な場合等、
個々の節点の属性の評価順序が規定され、その評価順序
と本走査における各節点への本走査順序とが一致してい
ない場合は、このような方法を適用して各操作を行うこ
とができない。
例えば、″アルゴリズム子デ構造溝造=プログラム、N
、Wirth著、片山卓也訳、1979年、日本コンピ
ュータ協会刊″に記載されている方法では、木構造の根
を出発点として木全体を走査し、個々の節点訪問時に、
先順、生類、後順毎に処理を行っている。このため、−
回の走査で処理対象となる節点が限定される場合、その
走査において、全く処理されない節点も含む木全体に対
する走査を操り返す必要があった。
さらに、このような方法では、ある節点から子孫への属
性伝播が発生する場合、共通エリアを設けて、全ての伝
播情報を格納し、各節点の探索を行う度に参照する必要
があり、大きな共通エリアが必要であった。
〔発明が解決しようとする問題点〕  ゛上記従来技術
では、−回の走査で処理対象となる節点が限定されてい
る場合、木全体を操り返して走査するため、処理効率に
問題があった。
また、例えば、個々の節点を訪問したときの処理結果を
逐次構造に配置する場合等、処理対象が異なる節点の処
理同志が相互に干渉しあう場合については配慮がなされ
ていない。
さらに、ある節点から子孫への属性伝播が発生する際、
その節点において、伝播属性が生成さ糺るタイミングと
、その伝播属性を参照して子孫の節点を評価するタイミ
ングとが具なる場合について、配慮がなされていない。
本発明の目的は、このような問題点を改善し、複数回の
木走査が必要な場合、処理効率を向上させ、また、異な
るタイミングで木走査を行う場合も、属性を伝播するこ
とが可能な本走査方式を提供することにある。
〔問題を解決するための手段〕
上記目的を達成するため、本発明の本走査方式は、節点
から構成された本構造データを蓄積する手段を備え、節
点は、iが1以上、かつ、その節点の子の総数以下の整
数であれば、節点の第1子の走査前、あるいは第i子の
走査後であるという木構造における走査段階を示す属性
と、属性の評価順序を節点単位に規定する種別とを持ち
、木構造データの各節点の走査段階に対応する属性の評
価結果を、メモリ上に深さ優先探索順に逐次的に並べる
処理を、属性の評価順序に従い、段階的に行う木走査装
置において、上記メモリは2fllのメモリから構成し
、ある節点が保有する属性を、その節点の子孫の属性評
価時に参照する必要がある場合、上記種別が等しく、連
結した節点群を部分木として認識し、また、伝播対象と
なる情報を生成する節点を根とし、その節点の子孫にお
いて、伝播情報を参照しない最も上位の節点(切断点)
を除く領域を、伝播情報の伝播可能領域として認識し、
全ての伝播情報を保持する属性値ベクトルを、伝播元に
確保して、その場所を示す属性値ベクトル・ポインタを
伝播元に格納し、各部分木の根の走査時に、その根の最
も近い祖先の伝播元の属性値ベクトルの場所を保持した
部分木の開始位置、および終了位置にあることを示す記
号を、それぞれ先順、および後順に逐次的番こ並べ、そ
の部分木の中間に位置することを示す記号を、その部分
木の各葉において、当該種別と異なる種別の子の走査か
ら戻った時点で、2個のメモリの一方に、逐次的に並べ
る第1の処理を行う手段と、その第1処理手段により、
各種別毎に逐次的に並べられたデータ列を探索しながら
、当該種別に属さない部分木の開始記号、中間記号、お
よび終了記号を、2個のメモリの他方に複写し、当該種
別に属する部分木の開始記号を発見すると、部分木走査
の開始を指示し、中間記号、および終了記号を発見する
と、部分木走査の再開を指示する第2の処理を行う手段
と、第2処理手0の指示により、当該種別に属する部分
木の走査を行い、その部分木の属性を2個のメモリの他
方に展開する第3の処理を行う手段とを備え、第1処理
手段により、逐次データ列を一方のメモリに展開し、第
2処理手段により、その逐次データ列を探索し、第3処
理手段は、第2処理手段の開始指示を受け、部分木の走
査を開始し、当該種別と異なる種別の節点を検出すると
、走査を一時中断して、第2処理手段により、再び、一
方のメモリに格納された逐次データ列の探索を行い、ま
た、第3処理手段は、第2処理手段の再開指示により、
部分木走査を再開し。
その走査と並行して、当該種別に属する部分木の属性を
、他方のメモリ上に展開する処理を行うことに特徴があ
る。
〔作用〕
本発明においては、各走査の対象となる節点群の種別を
色付けし、同じ色の節点が連結した節点群を部分木と見
なして、その部分木を管理し、各部分木走査と管理とが
コル−チン的に呼び合う。
また、伝播情報については、伝播情報の伝播可能な領域
を、その種別による部分木とは別の部分木として認識し
、伝播される属性の値の設定場所(属性値ベクトル)を
、伝播元毎に予め確保し、ある部分木から下位の部分木
に伝播するため、部分木走査のヘッダ情報として保持す
る。
すなわち1部分木の集まりは、個々の部分木の根を識別
子とする括弧構造として管理され、その部分木の集まり
を管理するため、−回の走査の間に、その括弧構造を複
写する。その複写中に、現在目的とする種別の部分木が
出現すると、複写を中断して部分木の走査を開始し、括
弧構造の中に処理結果を反映させ、部分木の走査完了前
に異種節点に到達すると、該当部分の括弧構造の複写を
続行する。
このような部分木の集まりに対して、伝播される属性の
伝播可能領域が複数の部分木に含まれる場合、伝播情報
の生成を伴う走査とは異なる走査において、属性値ベク
トルにより、当該伝播情報を伝播する。
こうして、括弧構造において、−回の走査の間に現在の
種別の部分木群のみを走査し、処理結果を展開すること
ができるため、−回の走査における処理を、対象となる
節点の走査のみに限定することができる。また、各処理
結果を括弧構造により管理するため、各処理結果の干渉
の反映が可能である。さらに、異なるタイミングで走査
が行われる場合も、必要な属性を伝播して正しい走査結
果を得ることができる。
〔実施例〕
以下、本発明の一実施例を図面により説明する。
第6図〜第8図は、本発明の一実施例における節点、お
よび部分木の説明図、第5図は本発明の一実施例におけ
る逐次データ列の説明図である。
本実施例における木走査方式では、予め、第8図(1)
のように、走査対象となる木を構成する節点1〜17の
集合を5各節点1〜17の評価順序によって分類し、そ
の分類に対応して、点線で分けられた部分集合を、その
節点の種別A−r)とする、また、個々の節点は、各節
点が属する種別の名称を保持し、走査対象の木は、(2
)のように、その種別A−Dに基づいて色付けされる。
なお、本構造を構成する部分木については、下記の通り
定義する。
(1)木全体の根、あるいは親の種別と異なる種別であ
る節点を、属する部分木の根とする。
(11)ある部分木に属する節点の子の種別が、親の種
別と一致するとき、子は、その部分木に腐する。
(ii+ )葉、あるいは全ての子の種別が、自分の種
別と異なる節点を、属する部分木の葉とする。
従って5以上のような定義により、(2)のように、点
線で区切られた領域が種別毎の部分木となる。また、個
々の部分木の根の場所により、各部分木を識別する。
さらに、本実施例の木走査方式では、その種別に基づく
節点属性の評価時に、その節点の祖先が有する情報、つ
まり、伝播情報を参照する必要がある場合、その伝播情
報を容易に伝播して参照する。
伝播情報は、その値を定義する節点から、その値を参照
する可能性がある子孫の節点まで伝播される。例えば、
ある節点Xの子である節点yの子孫において、その伝播
情報が参照される可能性が無い場合、あるいは節点yに
おいて、伝播情報として別の値が伝播される場合には、
節点Xは節点yに対して、その伝播情報を伝えない。こ
の場合、節点yを伝播情報の切断点と呼ぶ。
このにょうに、伝播情報が伝播可能である領域、つまり
伝播可能領域は、下記のような部分木として定義される
(1)伝播情報を定義する節点を、その部分木の根とす
る。
(11)親が、その部分木に属し、切断点でない節点は
、その部分木に厘する。
(iii )その部分木に属し、葉、あるいは全ての子
が切断点である節点は、その部分木の葉とする。
以上のような定義により、例えば、第7図のように、層
性a、の伝播可能領域は、層性a□を生成する節点9か
ら、属性aLの切断点である節点14の前までである。
従って、節点9〜13が構成する部分木が、属性a工の
伝播可能領域であり、節点14〜17が構成する部分木
は、属性a□を参照しない領域である。
また、伝播可能領域は、一般に、(1)ある部分木に含
まれる場合と、(:i)複数の部分木に含まれる場合と
がある。
(1)の場合、その部分木の走査時にのみ、当該伝播情
報の生成、および参照が行われる。
(11)の場合、伝播情報の生成を伴う走査と異なる走
査において、当該伝播情報を伝播する必要がある。つま
り、伝播情報の生成を伴う走査は、その伝播情報の参照
を伴う走査より先に行われる必要があり、本実施例の本
走査方式における各部分木の評価順序は、この条件を満
足するものとする。
さらに、伝播情報は幾つかの種類に分けられ、その種類
別に伝播される。
つまり、ある伝播情報の生成と参照とは、それぞれの節
点において、同名の種類を指定することによりtテわれ
る。従って、ある伝播情報の伝播可能領域において、そ
の伝播情報の値は唯一であり、伝播情報の伝播について
は、伝播情報の各種別毎のlit!を保持する属性値ベ
クトルによって行われる。
例えば、本構造を構成する節点群は、第6図のように、
層性の評価順序を示す種別A−Dに色付けされ、その色
付けに基づいて、部分木を構成する。さらに、その種別
による部分木とは別に、属性の伝播領域に基づいて、属
性a、の伝播光の節点9.および伝播可能領域の節点l
O〜13から構成される部分木と、属性ajの伝播光の
節点2、および伝播可能領域の節点3〜8から構成され
る部分木と、層性a□の切断点である節点14、および
属性a工を参照しない領域の節点15〜17から構成さ
れる部分木とに識別される。
このような種別による色付け、および伝播される層性の
種類による分類が行われると、まず、対象となる木の本
走査を行いながら、部分木を認識する。この認識につい
ては、逐次、走査した節点の場所、節点の種別、および
、その節点と、その節点が属する領域の境界との位置関
係を示すマーク(開始記号・、中間記号、終了記号)に
より、部分木を認識する。さらに、ある伝播情報を生成
する節点に先順で到達すると、第5図(2)のように、
伝播される属性の値の設定場所、つまり層性値べ/7ト
ル領域A I HA 2HA工′、a2′の格納場所を
1単位確保し、その場所を示す層性値ベクトル・ポイン
タを、その節点に格納する。
この認識により、第6図に示した本構造から、第5図(
1)のような構成の逐次データを、(2)のように、逐
次データ列として展開する。
こうして、親と異なる種別の節点に先順で到達すると、
その節点を新しい部分木の根と認識し、その節点の場所
、種別、開始記)、および、その節点から最も近い祖先
で確保された属性値ベクトルのポインタを保持す盃デー
タ(開始記)データ)を、逐次データ列の末尾に配置す
る。
また、ある節点において、走査段階がi (i≧l)の
場合、第1子の種別が、その節点の種別と異なると、種
別、および中間記けを保持するデータ(申開記号データ
)を、逐次データ列の末尾に配F1t″る7 さらに、ある部分木において、最後に出現する中間記)
データは末尾から削除し、その部分木の根に後頭で到達
すると、種別、および終了記号を保持するデータ(終了
記号データ)を逐次データ列の末尾に配置する。
こうして作成した逐次データ列は、第6図の木を、第5
図(3)のように、各種別A−D毎の部分木を単位とす
る氷とすると、この木を(4)のように、括弧構造で表
現することができる。従って、(2)の逐次データ列に
おける開始記号、終了記号、および中間記)は、そ九ぞ
れ、この括弧構造の左括弧、右括弧、および区切りに対
応する。
また、この逐次データ列を初期逐次データ列と呼び、属
性の評新順序を示す種別に従い、若い種別から順次、種
別の個数回、逐次データ列の探索を行って、目的とする
逐次データ列を得る。なお、第1回目に探索を行う種別
については、初期逐次データ列を原始逐次データ列と見
なし、第2回目以降の種別については、前回の目的逐次
データ列を原始逐次データ列と見なす。
この原始逐次データ列をg索し、目的逐次データ列を展
開する場合、まず、その原始逐次データ列の先端から末
尾までの逐次的な探索を行いながら、各データの種別が
、目的とする当該種別と一致しなければ、そのデータを
目的逐次データ列の末尾に配置する。
その探索中、当該種別と一致する開始記号データに到達
した場合、その開始記号データ中の属性値ベクトル・ポ
インタを含む開始指示データを作成し、そのデータが保
持する節点の場所から部分木走査を開始し、当該種別と
異なる節点が出現して、その部分木走査を中断するか、
あるいは、その部分木走査が終了することを待った後、
その次のデータから探索を続行する。
また、その探索中、当該種別と一致する中間記号データ
、または終了記はデータに到達した場合、その到達以前
に、当該種別と異なる節点が出現して、一時中断してい
た部分木走査を再開する。さらに、再開した部分木走査
で、当該種別と異なる節点が出現すると、その部分木走
査が中断するが、あるいは終了することを待った後、次
のデータから探索を続行する、なお、指示した時点で歯
部分木走査が終了している場合、その次のデータから探
索を続行する。
このように、原始逐次データ列から当該種別の逐次デー
タを探索して、目的逐次データ列を得る過程において、
指示された節点を根とする部分木走査を開始する。
このとき、部分木走査の開始を指示した開始指示データ
中の属性値ベクトル・ポインタを、現在の1性値ベクト
ルの場所として保持する。また、部分木走査において、
現在の属性値ベクトル・ポインタを正しく伝播するため
、スタック構造を生成する。
この走査中、ある伝播属性を生成する節点に先順で到着
すると、その節点における処理開始前に、現在の属性値
ベクトル・ポインタ値をスタックにブツシュし、その節
点に対して既に割り付けられた属性値ベクトルの格納場
所を、現在の属性値ベクトル・ポインタとして、その伝
播属性評価結果を反映したベクトル値を、その格納場所
に格納する。
また、その節点に生類、および後頭で到達するど、その
節点における処理終了後にスタックからポツプしたポイ
ンタ値を、現在の属性値ベクトル・ポインタとして親に
戻る。
こうして、本走査される個々の節点について、その走査
段階に対応する属性を、必要ならば、その時点で評価し
、その値を目的逐次データ列の末尾に配置する。
例えば、ある節点において、第i子が、その部分木に属
さない場合、走査段階1の直前の状態で走査を中止し、
指示待ちとなる。
こ、の場合、その逐次データが当該種別と一致する中間
記号データ、あるいは終了記号データであれば、対応す
る部分木走査を、中断した節点の走前段階から再開する
なお、対応する部分木走査が存在しない場合、すなわち
、その部分木が既に走査を終了している場合は、再び指
示待ちとなる。
このような原始逐次データ列の探索において、原始逐次
データ列の末尾データの処理終了が、1つの種別に対す
る原始逐次データ列の探索、および部分木走査の完結を
意味し、次の種別が存在する場合、以上の探索における
目的逐次データ列を原始逐次データ列と見なして、次の
種別の逐次データを得るため、その先頭から原始逐次デ
ータ列の探索を開始する。
また、本実施例における本走査方式では、部分木走査中
に、ある節点の種別が当該種別と一致しないため、部分
木走査を中断し、さらに、その逐次データのマークが中
間記号、あるいは終了記号であるため、再開指示により
、その時点の中間記号データ、および終了記ゆデータと
対応する開始記号データから開始された部分木走査を再
開する場合、個々の部分木走査に必要な環境、節点、お
よび走査段階等1部分木走査を再開する位置を示す情報
(部分木走査情報)を保持する場所、つまり部分木走査
情報ポインタをスタックttV造で管理する。
この部分木走査情報ポインタは、本走査再開指示の際、
対応する部分木走査の開始位置を示す情報どして使用さ
れる。このため、新しい開始記号デー、り到達時に、そ
れまで用いた部分木走査情報ポインタを、そのスタック
にブツシュし、終了記号デーごり到達時に、そのスタッ
クからポツプする。
第1図は、本発明の一実施例における木走査装置の構成
図である。
本実施例の本走査袋@71は、本走査制御回路72、初
期本走査回路73、本走査情報蓄積回路711、本構造
蓄積回路75、逐次データ探索回路71〕、部分木走査
管理情報蓄積回路77、部分木走査回路78、部分木走
査情報蓄積回路79、逐次データ読出・書込切換回路8
0、および逐次データ蓄積回路81.82を備える。
本構造蓄積回路75は、予め、木構造情報26、各節点
の属性情報27等の本構造データを蓄積し、ある節点の
長子、および第の場所等の構造情報や、その節点の各走
査段階の属性情報の参照、あるいは更新要求等の本構造
アクセス21.28に対し、該当する節点情報22.2
9を出力する。
本走査制御回路72は、本走査開始信号83が入力され
ると、逐次データ読出・書込切換回路80に対して初期
信号87を出力し、さらに、初期本走査回路73に対し
て開始信号85を出力する。
また、本走査制御回路72は、種別情報84が入力され
ると、この入力が、初期本走査回路73に対する開始信
号85の出力より後に行われた場合5および、逐次デー
タ探索回路7Gに対する開始信吐19の出力より後に行
われた場合は、それぞれ、初期本走査回路73から送ら
れる終了信号8Gの入力、および、逐次データ探索回路
7Gから送られる終了信号20の入力を待ち、終了信号
8G、あるいは20が入力されると、逐次データ読出・
書込切換回路80に切換信号18を出力し、さらに、逐
次データ探索回路7Gに対して該当する種別の探索の開
始信号19を出力する。
逐次デー、り読出・書込切換回路80は、初期信号87
が入力されろと、逐次データ菩積回′IP181を目的
逐次データ列の蓄積場所どして割り当てるため、入力さ
れる逐次データ25.35のチャネルど、逐次データ蓄
積回路81への書込データである逐次データ41のチャ
ネルとを接続し、また。
逐次データ読出・書込切換回路80への読出信号・3G
、および、逐次データ読出・書込切換回路80からの出
力である逐次データ37のチャネルと、逐次データ蓄積
回路82への読出信号4G、および逐次データ蓄積回路
82からの読出データである逐次データ47のチャネル
とを接続して、逐次データ蓄積回路81に対し、リセッ
ト信号40を出力する。その後、逐次データ25が入力
される毎に、逐次データ蓄積回路81に書き込まれる逐
次データ41として出力する。
また、逐次デー、り読出・書込切換回路80は、切換信
号18が入力されると5人力された逐次データ25.3
5のチャネルと、逐次データ蓄積回路81へ書き込まれ
る逐次データ41のチャネルとが接続されている場合、
入力データとして入力される逐次データ25.35のチ
ャネルを、逐次データ蓄積回路82へ書き込まれる逐次
データ45のチャネルに切り換えて接続し、この入力デ
ータ25.35のチャネルと、逐次データ蓄積回路82
八書き込まれる逐次データ45のチャネルとが接続され
ている場合は、この入力データ25.35のチャネルを
、逐次データ蓄積回j1881へ書き込まれる逐次デー
タ41のチャネルに切り換えて接続する。
さらに、逐次データ読出・書込切換回路80は、切換信
号・18が入力されると、読出信936、および、逐次
データ探索回路76に出力される逐次データ37のチャ
ネルと、読出信号4G、および、逐次データ蓄積四18
2から読み出される逐次データ47のチャネルとが接続
されている場合、読出漬汁36、および、逐次データ探
索回路76に出力される逐次データ37のチャネルを、
読出信号42、および逐次データ43のチャネルに切り
換えて接続し、逐次データ蓄積回路81に対してリセッ
ト・漬け44を出力する。逆に、読出信号36、および
、逐次データ探索回路76に出力される逐次データ37
のチャネルと、読出信す42、および逐次データ43の
チャネルとが接続されている場合、読出信93G、およ
び逐次データ37のチャネルを、読出信号46、および
逐次データ47のチャネルに切り換えて接続し、逐次デ
ータ蓄積回路82に対して、リセット信号44を出力す
る。その後、逐次データ読出・書込切換回路80は、逐
次データ35を入力する毎に、チャネルが接続されてい
る側の逐次データ蓄積回路81、あるいは82へ書き込
まれる逐次データ41、あるいは45として出力する。
また、読出信号3Gを入力する毎に、チャネルが接続さ
れている側の逐次データ蓄積回路81、あるいは82へ
、読出信号42、あるいは4Gとして出力し、逐次デー
タ蓄積回路81、あるいは82から、それぞれ読み出さ
れる逐次データ43、あるいは47を入力して、出力デ
ータ37として出力するっ 逐次データ蓄積回路81.82は5、入力されたデータ
を逐次的に配置する記憶部と、その記憶部において、末
尾に配置されたデータの場所を示すポインタとを備え、
リセット信号40.44が入力されると、そのポインタ
を記憶部の先頭の場所に設定し、書込データとして逐次
データ41.45が入力されると、現在のポインタを1
デ一タ分、進めて、そのポインタが示す場所に、その書
込データ41.45を格納し、読出信号42.4Gが入
力されると、現在のポインタが示す場所の逐次データ4
3.47を読出データとして出力し、そのポインタを1
デ一タ分、戻す。
これらのデータは、節点、種別、マーク、および属性値
ベクトル・ポインタの4つのフィールドから構成される
データか、あるいは属性データである。その節点フィー
ルドは節点データの場所を保持し、種別フィールドは節
点の種別を保持する。
また、マーク・フィールドはデータの開始記号、中間記
号、および終了記号の何れかを保持し、属性値ベクトル
・ポインタ・フィールドは伝播される属性の値の設定場
所(属性値ベクトル)を示す属性値ベクトル・ポインタ
を保持する。
従って、節点フィールド、種別フィールド、マーク・フ
ィールド、および属性値ベクトル・ポインタ・フィール
ドから構成されるデータは、まだ展開されていない種別
の部分木に関する情報であり、属性デー、りは、既に展
開された節点の属性情報自体を示す。
第2図は、本発明の一実施例における初期本走査回路の
初期逐次データ列の作成処理フローチャートである。な
お、N0DEは、走豆時における節点の場所を示し、N
0DE1は、現在の節点の子の場所を示す。
第1図のように、初期本走査回路73は、本走査情報蓄
積回P!74に対してブツシュ操作、およびポツプ操作
を行い、本走査情報蓄積回路74は、初期本走査回路7
3のブツシュ操作により、待避情報23を入力してスタ
ック構造の末尾に蓄積し、初期本走査回路73のポツプ
操作により、スタッり構造の末尾の情報を取り出して、
復帰情報24として出力する。
第2図のように、まず、本走査制御回路72が開始信号
85を出力すると、初期本走査回路73は、この開始信
号85を入力し、木構造蓄積回路75に格納された本構
造の根から探索を始める。
そのN0DEが、ある伝播情報を作成する節点であれば
(274)、属性値ベクトルの格納場所を1単位、確保
しく275)、その場所を現在の属性値ベクトル・ポイ
ンタとする(276)。
また、伝播情報を作成する節点でなければ(274)、
親の設定した属性値ベクトル・ポインタを現在の属性値
ベクトル・ポインタとする。
次に、そのNor)Eが根であるか、あるいはN0DE
の種別が親の種別と異なる場合は、部分木の根であると
判断しく260)、その節点について開始記号データを
作成して(261)、逐次データ読出・書込切換回路8
0を介し、逐次データ蓄積回路81に書き込む(262
)。
さらに、MODElに、そのN0DEの長子を設定しl
:263)、N OD E +の値がnilでなければ
(264)、N0r)Fの長子から順に子孫の長子を走
査するため、現在のN0Dr’:、N0DF:1゜親の
種類、および現在の属性値ベクトル・ポインタを本走査
情報蓄積回路74にブツシュしく265)、その情報を
設定し直して(266)、1abel 1に戻る。
また、MODE 1の値がnilであり(264)。
部分木の根において、第が存在しない場合(267)、
逐次データ列の末尾が中間記号データであれば、その中
間記号データを削除し、終了記号データを作成して、逐
次データ列の末尾に配置する(2C:8)。
次に、子の走査から戻った時点で、本走査情報蓄積回路
74をポツプし、現在の情報を復帰する(269)。
このとき、ポツプする情報が無ければ(270)、処理
を終了し、また、子の種別と自分の種別が異なると判断
した時は(270)、その接点について5中間記針デー
タを作成しく271)、逐次データ読出・書込切換回路
80を介して、逐次データ蓄積回路81に杏き込む(2
72)。
次に、N0DELにN0DE Lの第を設定して(27
3)、1able 2に戻る。
第3図は、本発明の一実施例の逐次データm索回路にお
ける原始逐次データ列から目的逐次データ列への展開処
理ブローチヤードである。なお、逐次データ蓄積回路8
1は原始逐次データ列を格納し、逐次データ蓄積口18
2は目的逐次データ列を格納するもCとし、また、逐次
データ読出・書込切換回路80については言及しない。
第1図のように、逐次データ探索回路7Gは、部分木走
査管理情報蓄積回路77に対してブツシュ操作を行い、
部分木走査管理情報蓄積回路77は、待避情報30を入
力して、スタック構造の末尾に蓄積し、逐次データW4
索回路76のポツプ操作により、スタック構造の末尾の
情報を取り出して、復帰情報31として出力する。
第3図のように、まず、逐次データ探索回路76は、本
走査制御回路72から開始信号19を入力すると、逐次
データ蓄積回路81内の原始逐次データ列の先頭からW
4索を行うため、データを読み出す(380)。
読み出すデータが空データであれば(381)、本走査
制御回路72に終了信号20を出力し、本走査制御回路
72からの開始信号19を待つ。
読み出すデータが有れば(381)、そのデータの種別
フィールドの値が、現在の種別と一致するか百かを調べ
る(382)。
異なる場合は(382)、そのデータを逐次データ蓄積
回路82に書き込む(384)。
また、そのデータの種別フィールドの値が、現在の種別
と一致する場合(382)、次に、そのデータのマーク
を調べる(383)。
マーク・フィールドが開始記号であれば(383)、現
在の部分木走査のための情報の中、部分木走査情報蓄積
回路79内の場所を示す値(部分木走査情報ポインタ)
を待避情報30として、部分木走査管理情報蓄積回路7
7にブツシュしく385)、新しい部分木走査の開始を
節点フィールドの節点の場所、および開始記号データ内
の属性ベクトル・ポインタを伴う部分木走査開始信号3
2により、部分木走査回路78に指示して(386)、
部分木走査回路78からの部分木走査停止信号34を待
つ(387)。
なお、この部分木走査停止信号34は、新しい部分木走
査のための部分木走査情報ポインタを伴い、逐次データ
探索回路76は、現在の部分木走査の環境の場所を部分
木走査管理情報蓄積回路77にブツシュするまで、一時
的に保持する。
その後、部分木走査停止信号34が入力されると、再び
、逐次データ蓄積回路81からデータを読み出す(39
3)。
また、マーク・フィールドが中間記号であれば(383
)、部分木走査回路78に対して、現在の部分木走査情
報ポインタを伴う部分木走査回路信933により、この
部分木走査の再開を指示しく388)、部分木走査回路
78からの部分木走査停止信号34を待つ(389)。
その後、部分木走査停止信号34が入力されると、再び
、逐次データ蓄積回路81からデータを読み出す(39
3)。
さらに、マーク・フィールドが終了記号であれば(38
3)、中間記号の場合(388,389)と同様に、現
在の部分木走査の再開を指示しく390)、部分木走査
回路78からの部分木走査停止信号34を待ち(391
)、部分木走査管理情報蓄積回路77から、復帰情報3
1が伴う最新の部分木走査情報ポインタをポツプする(
392)。
その後、再び、逐次データ蓄積回路81からデータを読
み出しく393)、そのデータが空データならば(38
1)、本走査制御回路72に終了信号20を出力して、
本走査制御回路72からの開始信号19を待つ。
第4図は、本発明の一実施例の部分木走査回路における
木構造から目的逐次データ列への展開処理フローチャー
トである。なお、MODEは、走査時における現在の節
点の場所を示し、N0DE1は、現在の節点の子の場所
を示す。また、5TAGEは、N0DI”:の走査段階
を示す。
第1図のように、部分木走査回路78の生成操作により
、部分木走査情報蓄積回路79は、生成信号48を入力
して、新しい部分木に対応する領域を確保し、その場所
を示す部分木走査情報ポインタ49を部分木走査回路7
8に出力する。さらに、部分木走査回路78のブツシュ
操作により、待避情報38を入力して、待避情報38が
伴う部分木走査情報ポインタの指定する領域上のスタッ
ク構造の末尾に蓄積し、部分木走査回路78のポツプ操
作により、同様に、指定する領域上のスタック構造の末
尾の情報を取り出し、復帰情報39として出力する。
第4図のように5部分木走査回路78は、逐次データ探
索回路76から、節点の場所、および属性ベクトル・ポ
インタを伴う部分木走査開始信号32を入力すると、そ
の属性値ベクトル・ポインタ値を現在の属性値ベクトル
・ポインタの値として設定し、木構造蓄積回路75内の
木構造を、その節点の根として走査する。この場合、部
分木走査情報蓄積回路79に生成信号48を出力して、
部分木走査情報ポインタ49を入力する(100゜10
1)。
次に、そのN0DEの種別が現在の種別と一致するか否
かを調べる(102)。
一致しない場合(102)、その部分木走査情報ポイン
タを伴う部分木走査停止信号34を逐次データ探索回路
76に対して出力し、動作を中断する(103)。
その後、逐次データ探索回路76から部分木走査再開信
号33が入力されると、その部分木走査再開信号33に
伴う部分木走査情報ポインタを、部分木走査情報!@回
路79上の現在の領域を示すポインタとして設定し、動
作を再開する(104)。
また、そのMODEの種別が当該種別と一致する場合(
102)、5TAGE=OにおけるN0DEの属性値ベ
クトル・ポインタにより(105)、ある伝播情報を作
成する節点であると判断すると(+15)、その節点に
割り付けられた属性値ベクトルの格納場所を、現在の属
性値ベクトル・ボインタとする(116)。
次に、5TAGIi:=0における属性を、逐次データ
50として逐次データ蓄積回路82に1Fき込む(10
6)。
さらに、N0DEIにN0DEの長子を設定する(10
7)。
N0DE LがnLL1’なければ(108)、N。
DEの長子から順に子孫の長子を走査するため。
現在のN0DE、N0DEL、5TAGE、および属性
値ベクトル・ポインタ値を、部分木走査情報蓄積回路7
9上の現在の領域にブツシュしく109)、子の情報を
設定し直して(110)、1abe11に戻る。
N0DE1がnilならば(l O8)、子の走査から
戻った時点で、部分木走査情報蓄積回路79上の現在の
領域からポツプして、現在の情報を復帰する(111)
なお、ポツプするデータが無ければ、この部分木の走査
は終了したと判断し、この部分木走査情報ポインタが示
す領域を放棄して、逐次データ探索回路76に対して部
分木走査停止信号34を出力し、部分木走査開始信号3
2、あるいは部分木走査再開信号33を待つ。
復帰情報があれば、その5TAGEをカウントアツプし
て(1,12)、その5TAGEにおけるN0DEの属
性を逐次データ50として逐次データ蓄積回路82に杏
き込み(t 13)、第の走査を行うため、N0DE1
にN0DE1の第を設定して(114)、1abel 
2に戻る。
なお、部分木走査再開信号33に伴う部分木走査情報ポ
インタの示す領域が既に放棄されている場合は、以上の
処理を実行することなく5部分木走査回路信号34を出
力して、部分木走査開始信号32、あるいは部分木走査
再開信号33を待つ。
〔発明の効果〕
本発明によれば、本構造のデータを処理する本走査にお
いて、節点の走査順に節点を処理することが不可能であ
り、複数回の走査が必要な場合、個々の走査では、対象
となる節点の周辺のみ走査するため、処理効率を向上す
ることができる。
また、各節点を処理するために必要な情報を一括して保
有することができない等の理由から、複数回の走査で対
処しきれない場合も、木全体を一回の走査で処理した場
合と同様の節点処理結果を得ることができる。
さらに、ある節点から子孫への属性伝播が発生する際、
ある節点において、その伝播属性が生成される時点と、
その伝播光の節点を参照することにより、子孫の節点が
評価される時点とのタイミングが異なる場合も、その伝
播属性番こより、正しい節点処理結果を得ることが可能
である。
【図面の簡単な説明】
第1図は本発明の一実施例における木走査装置の構成図
、第2図は本発明の一実施例における初期本走査回路の
初期逐次データ列の作成処理フローチャート、第3図は
本発明の一実施例の逐次データ探索回路における原始逐
次データ列から目的逐次データ列への展開処理フローチ
ャート、第4図は本発明の一実施例の部分木走査回路に
おける木構造から目的逐次データ列への展開処理フロー
チャート、第5図は本発明の一実施例における逐次デー
タ列の説明図、第6図〜第8図は本発明の一実施例にお
ける節点、および部分木の説明図、第9図は木構造の説
明図、第1O図は木構造データに対する換作の説明図で
ある。 1〜】7:節点、18:切換信号、19.85 :開始
信号、20,8G?終了信号、21.28:本構造アク
セス、22,29:節点情報、23゜30.38:待避
情報、24,31.39:復帰情報、25,35,37
,41,43,45,47゜50:逐次データ、26:
木構造情報、27:属性情報、32:部分木走査開始信
号、33:部分木走査再開信号、34:部分木走査停止
信号、3G。 42.46:読出信号、40,44:リセット信号、4
8:生成信号、49:部分木走査情報ポインタ、71:
本走査回路、72;木走査制御回路。 73:初期本走査回路、74:木走査情報蓄積回路、7
5:木構造蓄積回路、76:逐次データ探索回路、77
:部分木走査管理情報蓄積回路、78:部分木走査回路
、79:部分木走査情報蓄積回路。 80:逐次データ読出・書込切換回路、81,82 :
逐次データ蓄積回路、83:本走査開始信号、84:種
別情報、87:初期信号、200j本構造、201:節
点、202:枝、A−D:種別t ai+ aJ:属性
Ha−C:部分的木構造、R:節点+R1〜R4:木走
査の結果+”l+a2+al ’ta2 ’ ?属性値
ベクトル領域。 第     5     図 第    5    図 (A(C(B)、B(D、C,A)))第     6
     図 第    7    図 膠照しない狽域 第     8     図 第     8     図 第     9     図 第   10   図 I

Claims (1)

  1. 【特許請求の範囲】 1、節点から構成された木構造データを蓄積する手段を
    備え、該節点は、iが1以上、かつ、該節点の子の総数
    以下であれば、該節点の第1子の走査前、あるいは第1
    子の走査後であるという該木構造における走査段階を示
    す属性と、該属性の評価順序を節点単位に規定する種別
    とを持ち、該木構造データの各節点の走査段階に対応す
    る属性の評価結果を、メモリ上に深さ優先探索順に逐次
    的に並べる処理を、該属性の評価順序に従い、段階的に
    行う木走査装置において、ある節点が保有する属性を該
    節点の子孫の属性評価時に参照する場合、上記メモリは
    2個のメモリから構成し、上記種別が等しく、連結した
    節点群を部分木として認識し、また、伝播対象となる情
    報を生成する節点を根とし、該節点の子孫において、該
    伝播情報を参照しない最も上位の節点を除く領域を、該
    伝播情報の伝播可能領域として認識し、全ての該伝播情
    報を保持する属性値ベクトルを、該伝播情報の伝播元の
    節点に確保して、該属性値ベクトルを示す値を伝播元の
    節点に格納し、各該部分木の根の走査時に、該根の最も
    近い祖先の伝播元の該属性値ベクトルの場所を保持した
    該部分木の開始位置、および終了位置にあることを示す
    記号を、それぞれ先順、および後順に逐次的に並べ、該
    部分木の中間に位置することを示す記号を、該部分木の
    各葉において、該種別と異なる種別の子の走査から戻っ
    た時点で、該2個のメモリの一方に、逐次的に並べる第
    1の処理を行う手段と、該第1処理手段により、各該種
    別毎に逐次的に並べられたデータ列を探索しながら、当
    該種別に属さない部分木の該開始記号、該中間記号、お
    よび該終了記号を、該2個のメモリの他方に複写し、当
    該種別に属する部分木の該開始記号を発見すると、部分
    木走査の開始を指示し、該中間記号、および該終了記号
    を発見すると、部分木走査の再開を指示する第2の処理
    を行う手段と、該第2処理手段の指示により、当該種別
    に属する部分木の走査を行い、該部分木の属性を該2個
    の、メモリの他方に展開する第3の処理を行う手段とを
    備え、該第1処理手段により、該逐次データ列を該一方
    のメモリに展開し、該第2処理手段により、該逐次デー
    タ列を探索し、該第3処理手段は、該第2処理手段の該
    開始指示を受け、該部分木の走査を開始し、該種別と異
    なる種別の節点を検出すると、該走査を一時中断して、
    該第2処理手段により、再び、該一方のメモリに格納さ
    れた該逐次データ列の探索を行い、また、該第3処 搦闥iは、該第2処理手段の該再開指示により、該部分
    木走査を再開し、該走査と並行して、当該種別に属する
    部分木の属性を、該他方のメモリ上に展開する処理を行
    うことを特徴とする木走査方式。
JP62010190A 1986-11-25 1987-01-20 木走査方式 Pending JPS63178321A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP62010190A JPS63178321A (ja) 1987-01-20 1987-01-20 木走査方式
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
JP62010190A JPS63178321A (ja) 1987-01-20 1987-01-20 木走査方式

Publications (1)

Publication Number Publication Date
JPS63178321A true JPS63178321A (ja) 1988-07-22

Family

ID=11743368

Family Applications (1)

Application Number Title Priority Date Filing Date
JP62010190A Pending JPS63178321A (ja) 1986-11-25 1987-01-20 木走査方式

Country Status (1)

Country Link
JP (1) JPS63178321A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0273427A (ja) * 1988-09-09 1990-03-13 Nec Corp 構文解析方式

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0273427A (ja) * 1988-09-09 1990-03-13 Nec Corp 構文解析方式

Similar Documents

Publication Publication Date Title
US4868743A (en) Traversal method of processing tree structure information and apparatus using the same
McCreight A space-economical suffix tree construction algorithm
WO2005104456A1 (ja) 固定長データの検索装置および検索管理方法
EP0369699A2 (en) Updating pattern-matching networks
WO2015010509A1 (zh) 一种基于一维线性空间实现Trie树的词典检索方法
CN109299101A (zh) 数据检索方法、装置、服务器和存储介质
AU2004216965B2 (en) Matching queries to partitioned document path segments
JPH0778739B2 (ja) パターン突合せネットワークの併合方法
JPS63178321A (ja) 木走査方式
WO2013108333A1 (ja) 検索装置、検索方法、及び、検索プログラム
JPH1166095A (ja) データ管理装置
JPS63132339A (ja) 木走査方法、および装置
JPH0192836A (ja) 木走査方法
JP2720426B2 (ja) データベース情報抽出方法および装置
Hsieh et al. A faster implementation of a parallel tree contraction scheme and its application on distance-hereditary graphs
JPH0581102A (ja) テーブル管理方式
JP3346014B2 (ja) 有向グラフ編集処理装置
JPH06162088A (ja) 有向グラフ生成方法および装置
JPH11242627A (ja) データアクセス方法およびプログラムを記録した媒体
JPH05233313A (ja) シンボルテーブル処理方式
CN112804153A (zh) 一种面向gpu加速ip查找的更新方法及系统
JPS63271525A (ja) デ−タ処理装置
JPH05313971A (ja) リレーショナル・データベースにおけるキーワード管理方式
JPH07210563A (ja) 索引処理方法
Das et al. Parallel Dynamic Algorithms for Minimum Spanning Trees