JP2795110B2 - 有向グラフ作成装置 - Google Patents
有向グラフ作成装置Info
- Publication number
- JP2795110B2 JP2795110B2 JP4336800A JP33680092A JP2795110B2 JP 2795110 B2 JP2795110 B2 JP 2795110B2 JP 4336800 A JP4336800 A JP 4336800A JP 33680092 A JP33680092 A JP 33680092A JP 2795110 B2 JP2795110 B2 JP 2795110B2
- Authority
- JP
- Japan
- Prior art keywords
- edge
- directed graph
- child
- data
- sibling
- 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.)
- Expired - Fee Related
Links
Landscapes
- Document Processing Apparatus (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
【0001】
【産業上の利用分野】本発明は、有向グラフ生成方法お
よび装置に関し、特に、有向グラフによりネットワーク
のデータ構造を表現してデータ処理に利用する場合に、
メモリスペースを効率よく利用して少ないデータ量で有
向グラフを表現でき、有向グラフを作成できる有向グラ
フ生成装置に関するものである。
よび装置に関し、特に、有向グラフによりネットワーク
のデータ構造を表現してデータ処理に利用する場合に、
メモリスペースを効率よく利用して少ないデータ量で有
向グラフを表現でき、有向グラフを作成できる有向グラ
フ生成装置に関するものである。
【0002】
【従来の技術】有向グラフは、これを要素として、木構
造,ネットワーク構造をそのままの形状で表現できるた
め、最近のデータ処理においてデータを表わすデータ構
造として多く利用されるようなっている。例えば、デー
タベースを構成する場合に、木構造のデータ構造を作成
して階層的な検索処理に利用される。また、ネットワー
ク表現により、関係する関連データまでも検索が可能に
なる。
造,ネットワーク構造をそのままの形状で表現できるた
め、最近のデータ処理においてデータを表わすデータ構
造として多く利用されるようなっている。例えば、デー
タベースを構成する場合に、木構造のデータ構造を作成
して階層的な検索処理に利用される。また、ネットワー
ク表現により、関係する関連データまでも検索が可能に
なる。
【0003】従来、有向グラフを計算機上で表現して扱
うため、一般に用いられている有向グラフの表示方法で
は、まず、節をそれぞれに特定し、辺が指す節をポイン
タにより表現して、ある節から発する各辺を当該節にお
いて、その指示先の節を示すポインタの集合として表現
している。このような表現方法によれば、有向グラフで
構成されるネットワークのデータ表現で、辺を表現する
場合、まず、節の位置をそれぞれに特定し、1つの節か
ら発する辺を記録し、次に、この辺と同じ節から発する
直後の辺である兄弟辺を順次に記録する。このようなデ
ータ表現の形態においては、各辺のデータが、明示的に
参照先の節のポインタを表現するものとなっており、こ
の場合、ポインタ数は辺数に等しくなる。
うため、一般に用いられている有向グラフの表示方法で
は、まず、節をそれぞれに特定し、辺が指す節をポイン
タにより表現して、ある節から発する各辺を当該節にお
いて、その指示先の節を示すポインタの集合として表現
している。このような表現方法によれば、有向グラフで
構成されるネットワークのデータ表現で、辺を表現する
場合、まず、節の位置をそれぞれに特定し、1つの節か
ら発する辺を記録し、次に、この辺と同じ節から発する
直後の辺である兄弟辺を順次に記録する。このようなデ
ータ表現の形態においては、各辺のデータが、明示的に
参照先の節のポインタを表現するものとなっており、こ
の場合、ポインタ数は辺数に等しくなる。
【0004】図8および図9は、従来における有向グラ
フによるネットワーク構造の表現方法を説明する図であ
る。図8に有向グラフを用いたネットワークの節と辺の
関係を図式的に示し、図9にはその有向グラフを表現し
ているデータ要素の集合のテーブルを示している。図8
において、1〜10の数字を付加した丸印はそれぞれの
節を示し、その節と節との間を結ぶ矢印が、それぞれの
有向グラフの辺を示している。節には有向グラフの属性
から、開始節,中間節,終了節の種類がある。図8にお
いては、開始節81は破線の丸印で表記し、終了節8
2,83は2重線の丸印で表記している。矢印で表記さ
れている各辺は、指示先の節の番号をポインタとして持
ち、また、ラベルを持つ。ここでは、各々の辺に持つラ
ベルは、各辺を示す矢印の線分部分の近傍に表記してい
る。
フによるネットワーク構造の表現方法を説明する図であ
る。図8に有向グラフを用いたネットワークの節と辺の
関係を図式的に示し、図9にはその有向グラフを表現し
ているデータ要素の集合のテーブルを示している。図8
において、1〜10の数字を付加した丸印はそれぞれの
節を示し、その節と節との間を結ぶ矢印が、それぞれの
有向グラフの辺を示している。節には有向グラフの属性
から、開始節,中間節,終了節の種類がある。図8にお
いては、開始節81は破線の丸印で表記し、終了節8
2,83は2重線の丸印で表記している。矢印で表記さ
れている各辺は、指示先の節の番号をポインタとして持
ち、また、ラベルを持つ。ここでは、各々の辺に持つラ
ベルは、各辺を示す矢印の線分部分の近傍に表記してい
る。
【0005】これらの各々の辺データを表現するデータ
構造としては、例えば、図9に示すようなテーブル形式
の各々のレコードデータ(エントリ)の集合で表現され
るものが利用される。個々の辺を表現するレコードデー
タを格納するデータテーブル90には、節番号を格納す
る節番号フィールド91,当該節が終了節であるか否か
を示す終了節フラグを格納する終了節フラグフィールド
92,当該節から発する辺数を格納する辺数フィールド
93,各辺のラベルを格納するラベルフィールド94,
および当該辺の指示先である節を示すポインタを格納す
るポインタフィールド95から構成されている。図9に
示すテーブルにおいて、ポインタフィールド95に格納
されているポインタの数は、ここで表現されている有向
グラフの辺の数に等しい。
構造としては、例えば、図9に示すようなテーブル形式
の各々のレコードデータ(エントリ)の集合で表現され
るものが利用される。個々の辺を表現するレコードデー
タを格納するデータテーブル90には、節番号を格納す
る節番号フィールド91,当該節が終了節であるか否か
を示す終了節フラグを格納する終了節フラグフィールド
92,当該節から発する辺数を格納する辺数フィールド
93,各辺のラベルを格納するラベルフィールド94,
および当該辺の指示先である節を示すポインタを格納す
るポインタフィールド95から構成されている。図9に
示すテーブルにおいて、ポインタフィールド95に格納
されているポインタの数は、ここで表現されている有向
グラフの辺の数に等しい。
【0006】図8に示す有向グラフにおいて、各々の節
から発する各辺で、順次に暗黙に記録順序が決まるもの
を括弧でくくり、その各要素で明示的にポインタが必要
になる部分に→印を付けて示すと、次のようになる。す
なわち、ここでは10個の節があり、その間を結ぶ15
個の辺がある有向グラフを例とする。その表記では、辺
を発しない節は除かれるので、9個の節と、この節から
発する15個の辺とで表現される。それぞれに指示先の
節の番号で表現すると、 となる。なお、この表記では、各節から発する辺には順
序があるものとし、図8においては上が先になるものと
している。
から発する各辺で、順次に暗黙に記録順序が決まるもの
を括弧でくくり、その各要素で明示的にポインタが必要
になる部分に→印を付けて示すと、次のようになる。す
なわち、ここでは10個の節があり、その間を結ぶ15
個の辺がある有向グラフを例とする。その表記では、辺
を発しない節は除かれるので、9個の節と、この節から
発する15個の辺とで表現される。それぞれに指示先の
節の番号で表現すると、 となる。なお、この表記では、各節から発する辺には順
序があるものとし、図8においては上が先になるものと
している。
【0007】ところで、有向グラフを開始節から順に辿
った時に、ある節を最初に指す辺を単に「初参照辺」と
呼ぶことにし、初参照辺以外の辺を「再参照辺」と呼ぶ
ことにすると、全ての辺は、初参照辺または再参照辺の
いずれかである。また、初参照辺は、それが指す節に1
対1に対応し、そのような節は有向グラフ全体で開始節
を除く全ての節となる。図8に示す有向グラフにおい
て、開始節81から出発して、各節における初参照辺と
再参照辺とを、上述のような規則の順序で各辺を順序付
けると、辺84,辺85,辺86と順序付けることがで
き、この順序で各辺のデータを順次にテーブル形式のデ
ータ構造にまとめると、図9に示すようなテーブルが構
成できる。
った時に、ある節を最初に指す辺を単に「初参照辺」と
呼ぶことにし、初参照辺以外の辺を「再参照辺」と呼ぶ
ことにすると、全ての辺は、初参照辺または再参照辺の
いずれかである。また、初参照辺は、それが指す節に1
対1に対応し、そのような節は有向グラフ全体で開始節
を除く全ての節となる。図8に示す有向グラフにおい
て、開始節81から出発して、各節における初参照辺と
再参照辺とを、上述のような規則の順序で各辺を順序付
けると、辺84,辺85,辺86と順序付けることがで
き、この順序で各辺のデータを順次にテーブル形式のデ
ータ構造にまとめると、図9に示すようなテーブルが構
成できる。
【0008】
【発明が解決しようとする課題】ところで、上述のよう
なデータ表現形式のテーブル(図9)により、有向グラ
フのネットワーク(図8)を表現する場合は、明らか
に、各々の辺数に等しい数だけのポインタが必要とな
り、この数のポインタのデータを格納する領域が必要と
なる。したがって、大規模な有向グラフのネットワーク
を表現する場合には、その多くの辺数に応じて、格納す
ベき必要なポインタの数が多くなる。また、ポインタ数
が多くなると、更にその個々のポインタを表わすアドレ
ス幅が広げなければならず、これらのデータを表現する
ためのデータ量が非常に大きくなる。
なデータ表現形式のテーブル(図9)により、有向グラ
フのネットワーク(図8)を表現する場合は、明らか
に、各々の辺数に等しい数だけのポインタが必要とな
り、この数のポインタのデータを格納する領域が必要と
なる。したがって、大規模な有向グラフのネットワーク
を表現する場合には、その多くの辺数に応じて、格納す
ベき必要なポインタの数が多くなる。また、ポインタ数
が多くなると、更にその個々のポインタを表わすアドレ
ス幅が広げなければならず、これらのデータを表現する
ためのデータ量が非常に大きくなる。
【0009】したがって、大規模な有向グラフのネット
ワークを表現する場合、多くの辺数に応じて、多くのポ
インタを格納するためのデータ領域が非常に大きくな
り、このような有向グラフを扱うデータ処理において
は、多くのポインタにかかるデータ処理のために、その
データ格納領域に関し、また、そのデータ処理速度に関
して、多くのデータ量の故に多大な負荷を強いられるこ
とになる。
ワークを表現する場合、多くの辺数に応じて、多くのポ
インタを格納するためのデータ領域が非常に大きくな
り、このような有向グラフを扱うデータ処理において
は、多くのポインタにかかるデータ処理のために、その
データ格納領域に関し、また、そのデータ処理速度に関
して、多くのデータ量の故に多大な負荷を強いられるこ
とになる。
【0010】本発明の上記のような課題を解決するため
のなされたものであり、本発明の目的は、有向グラフに
よりネットワークのデータ構造を表現してデータ処理を
行う場合に、メモリスペースを効率よく利用して少ない
データ量で有向グラフを表現し、有向グラフを作成し、
それを利用することができる有向グラフ生成装置を提供
することにある。
のなされたものであり、本発明の目的は、有向グラフに
よりネットワークのデータ構造を表現してデータ処理を
行う場合に、メモリスペースを効率よく利用して少ない
データ量で有向グラフを表現し、有向グラフを作成し、
それを利用することができる有向グラフ生成装置を提供
することにある。
【0011】
【課題を解決するための手段】上述のような目的を達成
するため、本発明の有向グラフ生成装置においては、あ
る節を最初に指示する辺である初参照辺,対象とする辺
が指示する節から発する最初の辺である子辺,および対
象とする辺と同一の節から発して隣接する辺である兄弟
辺により構成される構造の有向グラフを、各辺データを
所定の順序に従って1次元的に記録して構成し、有向グ
ラフのネットワークを作成する場合、初参照辺を記録
し、前記初参照辺の次に子辺を記録し、兄弟辺がある場
合には前記子辺以下の記録が終了した後に、当該兄弟辺
を記録する。
するため、本発明の有向グラフ生成装置においては、あ
る節を最初に指示する辺である初参照辺,対象とする辺
が指示する節から発する最初の辺である子辺,および対
象とする辺と同一の節から発して隣接する辺である兄弟
辺により構成される構造の有向グラフを、各辺データを
所定の順序に従って1次元的に記録して構成し、有向グ
ラフのネットワークを作成する場合、初参照辺を記録
し、前記初参照辺の次に子辺を記録し、兄弟辺がある場
合には前記子辺以下の記録が終了した後に、当該兄弟辺
を記録する。
【0012】このため、本発明の有向グラフ生成装置で
は、ある節を最初に指示する辺である初参照辺,対象と
する辺が指示する節から発する最初の辺である子辺,お
よび対象とする辺と同一の節から発して隣接する辺であ
る兄弟辺により構成される構造の有向グラフを作成する
有向グラフ作成装置において、初参照辺であるか否かを
指示する初参照辺フラグと、辺のラベルデータと、当該
辺を発する節が終了節であるか否かを指示する終了節フ
ラグと、子辺の有無を指示する子辺フラグと、兄弟辺の
有無を指示する兄弟辺フラグと、子辺の直前の初参照辺
を指示するポインタを記録する各フィールドデータから
構成される各辺のレコードデータを、その記録順とし
て、初参照辺、前記初参照辺の子辺、前記子辺に子辺が
ある場合の子辺、前記子辺に子辺がなく兄弟辺がある場
合の当該兄弟辺の順序に記録したレコードテーブルと、
前記レコードテーブルにおける各辺のレコードデータを
記録順に読み込み、初参照辺、子辺および兄弟辺により
構成される構造の有向グラフのネットワークを作成する
有向グラフ作成手段を備えることを特徴とする。
は、ある節を最初に指示する辺である初参照辺,対象と
する辺が指示する節から発する最初の辺である子辺,お
よび対象とする辺と同一の節から発して隣接する辺であ
る兄弟辺により構成される構造の有向グラフを作成する
有向グラフ作成装置において、初参照辺であるか否かを
指示する初参照辺フラグと、辺のラベルデータと、当該
辺を発する節が終了節であるか否かを指示する終了節フ
ラグと、子辺の有無を指示する子辺フラグと、兄弟辺の
有無を指示する兄弟辺フラグと、子辺の直前の初参照辺
を指示するポインタを記録する各フィールドデータから
構成される各辺のレコードデータを、その記録順とし
て、初参照辺、前記初参照辺の子辺、前記子辺に子辺が
ある場合の子辺、前記子辺に子辺がなく兄弟辺がある場
合の当該兄弟辺の順序に記録したレコードテーブルと、
前記レコードテーブルにおける各辺のレコードデータを
記録順に読み込み、初参照辺、子辺および兄弟辺により
構成される構造の有向グラフのネットワークを作成する
有向グラフ作成手段を備えることを特徴とする。
【0013】
【作用】本発明の有向グラフ生成装置において、作成さ
れる有向グラフは、ある節を最初に指示する辺である初
参照辺,対象とする辺が指示する節から発する最初の辺
である子辺,および対象とする辺と同一の節から発して
隣接する辺である兄弟辺により構成される構造の有向グ
ラフである。この場合、初参照辺および子辺の関係を第
1優先の順序関係とし、初参照辺および兄弟辺の関係を
第2優先の順序関係として利用して、有向グラフを表わ
す辺データを記録するレコードテーブルを作成して、有
向グラフが含むポインタ数を減少させる。このため、有
向グラフはテーブル構造のデータとして、記録する辺デ
ータの記録順序を定めて、テーブルの格納位置に所定の
順序に従って、各辺データを1次元的に記録できる。
れる有向グラフは、ある節を最初に指示する辺である初
参照辺,対象とする辺が指示する節から発する最初の辺
である子辺,および対象とする辺と同一の節から発して
隣接する辺である兄弟辺により構成される構造の有向グ
ラフである。この場合、初参照辺および子辺の関係を第
1優先の順序関係とし、初参照辺および兄弟辺の関係を
第2優先の順序関係として利用して、有向グラフを表わ
す辺データを記録するレコードテーブルを作成して、有
向グラフが含むポインタ数を減少させる。このため、有
向グラフはテーブル構造のデータとして、記録する辺デ
ータの記録順序を定めて、テーブルの格納位置に所定の
順序に従って、各辺データを1次元的に記録できる。
【0014】有向グラフのネットワークを作成する場合
にあっては、テーブルの所定の格納位置に順序に従っ
て、まず、最初に、初参照辺を記録し、次に、前記初参
照辺の子辺を記録する。次に記録した辺を初参照辺と
し、その辺と子辺の関係にある辺を順次に記録する。こ
の子辺の記録が終了の後、兄弟辺がある場合には該当の
兄弟辺を記録する。また、兄弟辺の記録の次には、当該
兄弟辺に対する子辺の記録を行い、その子辺以下の記録
が終了した後に、次の該当の兄弟辺を記録する。これに
より、初参照辺と子辺の関係および初参照辺と兄弟辺の
関係においてポインタが必要でなくなり、有向グラフを
表わすテーブルが含むポインタ数を大幅に減らすことが
できる。なお、ポインタは、ネットワーク構造を表現す
るため、辺が指示する節を結合させる場合にのみ付加す
れば良く、木構造を表現する場合においてはポインタは
不要となる。
にあっては、テーブルの所定の格納位置に順序に従っ
て、まず、最初に、初参照辺を記録し、次に、前記初参
照辺の子辺を記録する。次に記録した辺を初参照辺と
し、その辺と子辺の関係にある辺を順次に記録する。こ
の子辺の記録が終了の後、兄弟辺がある場合には該当の
兄弟辺を記録する。また、兄弟辺の記録の次には、当該
兄弟辺に対する子辺の記録を行い、その子辺以下の記録
が終了した後に、次の該当の兄弟辺を記録する。これに
より、初参照辺と子辺の関係および初参照辺と兄弟辺の
関係においてポインタが必要でなくなり、有向グラフを
表わすテーブルが含むポインタ数を大幅に減らすことが
できる。なお、ポインタは、ネットワーク構造を表現す
るため、辺が指示する節を結合させる場合にのみ付加す
れば良く、木構造を表現する場合においてはポインタは
不要となる。
【0015】本発明の有向グラフ作成装置においては、
ある節を最初に指示する辺である初参照辺,対象とする
辺が指示する節から発する最初の辺である子辺,および
対象とする辺と同一の節から発して隣接する辺である兄
弟辺により構成される構造の有向グラフを作成する。そ
のため、レコードテーブルと、有向グラフ作成手段が備
えられ、レコードテーブルが、初参照辺であるか否かを
指示する初参照辺フラグと、辺のラベルデータと、当該
辺を発する節が終了節であるか否かを指示する終了節フ
ラグと、子辺の有無を指示する子辺フラグと、兄弟辺の
有無を指示する兄弟辺フラグと、子辺の直前の初参照辺
を指示するポインタを記録する各フィールドデータから
構成される各辺のレコードデータを、その記録順とし
て、初参照辺、前記初参照辺の子辺、前記子辺に子辺が
ある場合の子辺、前記子辺に子辺がなく兄弟辺がある場
合の当該兄弟辺の順序に記録する。このレコードテーブ
ルにより、有向グラフ作成手段は、前記レコードテーブ
ルにおける各辺のレコードデータを記録順に読み込み、
初参照辺、子辺および兄弟辺により構成される構造の有
向グラフのネットワークを作成する。
ある節を最初に指示する辺である初参照辺,対象とする
辺が指示する節から発する最初の辺である子辺,および
対象とする辺と同一の節から発して隣接する辺である兄
弟辺により構成される構造の有向グラフを作成する。そ
のため、レコードテーブルと、有向グラフ作成手段が備
えられ、レコードテーブルが、初参照辺であるか否かを
指示する初参照辺フラグと、辺のラベルデータと、当該
辺を発する節が終了節であるか否かを指示する終了節フ
ラグと、子辺の有無を指示する子辺フラグと、兄弟辺の
有無を指示する兄弟辺フラグと、子辺の直前の初参照辺
を指示するポインタを記録する各フィールドデータから
構成される各辺のレコードデータを、その記録順とし
て、初参照辺、前記初参照辺の子辺、前記子辺に子辺が
ある場合の子辺、前記子辺に子辺がなく兄弟辺がある場
合の当該兄弟辺の順序に記録する。このレコードテーブ
ルにより、有向グラフ作成手段は、前記レコードテーブ
ルにおける各辺のレコードデータを記録順に読み込み、
初参照辺、子辺および兄弟辺により構成される構造の有
向グラフのネットワークを作成する。
【0016】すなわち、この有向グラフの構造では、あ
る節を最初に指示する辺である初参照辺,対象とする辺
が指示する節から発する最初の辺である子辺,および対
象とする辺と同一の節から発して隣接する辺である兄弟
辺により構成されるデータ構造を、初参照辺を記録し、
前記初参照辺の次に子辺を記録し、兄弟辺がある場合に
前記子辺以下の記録が終了した後に当該兄弟辺を記録す
る辺直列形式のレコードデータとし、初参照辺,子辺,
および兄弟辺の各辺データを所定順序に従って順次に記
録する辺直列表現のレコードデータとして記憶する。
る節を最初に指示する辺である初参照辺,対象とする辺
が指示する節から発する最初の辺である子辺,および対
象とする辺と同一の節から発して隣接する辺である兄弟
辺により構成されるデータ構造を、初参照辺を記録し、
前記初参照辺の次に子辺を記録し、兄弟辺がある場合に
前記子辺以下の記録が終了した後に当該兄弟辺を記録す
る辺直列形式のレコードデータとし、初参照辺,子辺,
および兄弟辺の各辺データを所定順序に従って順次に記
録する辺直列表現のレコードデータとして記憶する。
【0017】このため、ここでの辺直列表現のレコード
データにおける各辺データは、初参照辺であるか否かを
指示するフラグと、辺のラベルデータと、この辺を発す
る節が終了節であるか否かを指示するフラグと、子辺の
有無を指示するフラグと、弟辺の有無を指示するフラグ
とから構成されており、有向グラフ作成手段が、辺デー
タを所定順序により読み出し、読み出し順序関係に基づ
いて、各々のフラグを参照し、各辺データにおける初参
照辺,子辺,兄弟辺の関係を判別し、有向グラフの辺を
作成して、ネットワークを作成することになる。この結
果、データ処理では、フラグデータのみのテーブルから
のフラグデータの読み出し,フラグの判定の処理によ
り、有向グラフの生成処理が実行できるので、高速な処
理が可能となる。
データにおける各辺データは、初参照辺であるか否かを
指示するフラグと、辺のラベルデータと、この辺を発す
る節が終了節であるか否かを指示するフラグと、子辺の
有無を指示するフラグと、弟辺の有無を指示するフラグ
とから構成されており、有向グラフ作成手段が、辺デー
タを所定順序により読み出し、読み出し順序関係に基づ
いて、各々のフラグを参照し、各辺データにおける初参
照辺,子辺,兄弟辺の関係を判別し、有向グラフの辺を
作成して、ネットワークを作成することになる。この結
果、データ処理では、フラグデータのみのテーブルから
のフラグデータの読み出し,フラグの判定の処理によ
り、有向グラフの生成処理が実行できるので、高速な処
理が可能となる。
【0018】
【実施例】以下、本発明の実施例を図面を用いて具体的
に説明する。図1および図2は、本発明による有向グラ
フ生成装置により作成された有向グラフによるネットワ
ーク構造の表現方法を説明する図である。図1に有向グ
ラフを用いたネットワークの節と辺の関係を図式的に示
し、図2にはその有向グラフを表現している辺直列表現
のデータ構造による有向グラフテーブルを示している。
図1において、丸印はそれぞれの節を示し、その節と節
との間を結ぶ矢印が、有向グラフの辺を示している。節
には有向グラフの属性から、開始節,中間節,終了節の
種類がある。図1においては、開始節11は破線の丸印
で表記し、終了節12,13は2重線の丸印で表記して
いる。矢印で表記されている各辺は、当該辺の辺番号と
共に、それぞれに持つラベルを各辺を示す矢印の線分部
分の近傍に表記している。
に説明する。図1および図2は、本発明による有向グラ
フ生成装置により作成された有向グラフによるネットワ
ーク構造の表現方法を説明する図である。図1に有向グ
ラフを用いたネットワークの節と辺の関係を図式的に示
し、図2にはその有向グラフを表現している辺直列表現
のデータ構造による有向グラフテーブルを示している。
図1において、丸印はそれぞれの節を示し、その節と節
との間を結ぶ矢印が、有向グラフの辺を示している。節
には有向グラフの属性から、開始節,中間節,終了節の
種類がある。図1においては、開始節11は破線の丸印
で表記し、終了節12,13は2重線の丸印で表記して
いる。矢印で表記されている各辺は、当該辺の辺番号と
共に、それぞれに持つラベルを各辺を示す矢印の線分部
分の近傍に表記している。
【0019】図2に示すように、これらの各辺データを
表現するデータ構造では、有向グラフテーブル20にお
いて、辺直列表現によるテーブル形式データとして、各
辺データが各々のレコードデータ(エントリ)で表現さ
れる。個々の辺を表現するレコードデータを格納す有向
グラフテーブル20は、辺番号を格納する辺番号フィー
ルド21,各辺のラベルを格納するラベルフィールド2
2,当該辺が初参照辺であるか否かを示すfirstpフラグ
を格納するfirstpフラグフィールド23,当該辺による
指示先の節が終了節であるか否かを指すfinalpフラグを
格納するfinalpフラグフィールド24,当該辺が子辺を
有するか否かを示すsonpフラグを格納するsonpフラグフ
ィールド25,当該辺が兄弟辺を有するか否かを示すbr
otherpフラグを格納するbrotherpフラグフィールド2
6,および当該辺の指示先の節と同じ節を指示する初参
照辺の辺番号を示すポインタを格納するポインタフィー
ルド27から構成される。
表現するデータ構造では、有向グラフテーブル20にお
いて、辺直列表現によるテーブル形式データとして、各
辺データが各々のレコードデータ(エントリ)で表現さ
れる。個々の辺を表現するレコードデータを格納す有向
グラフテーブル20は、辺番号を格納する辺番号フィー
ルド21,各辺のラベルを格納するラベルフィールド2
2,当該辺が初参照辺であるか否かを示すfirstpフラグ
を格納するfirstpフラグフィールド23,当該辺による
指示先の節が終了節であるか否かを指すfinalpフラグを
格納するfinalpフラグフィールド24,当該辺が子辺を
有するか否かを示すsonpフラグを格納するsonpフラグフ
ィールド25,当該辺が兄弟辺を有するか否かを示すbr
otherpフラグを格納するbrotherpフラグフィールド2
6,および当該辺の指示先の節と同じ節を指示する初参
照辺の辺番号を示すポインタを格納するポインタフィー
ルド27から構成される。
【0020】また、開始節が終了節であるかどうかを示
すために、init-finalpフラグフィールド28が有向フ
ラグテーブル20に対して付加されている。開始節が終
了節である場合は、つまり、開始節と終了節が一致して
しまう場合は、このフィールドの値はinit-finalp=tと
される。init-finalp=nilの場合、開始節と終了節が一
致せず、終了節は開始節とは別に存在することを示して
いる。なお、init-finalpフラグの利用法の詳細は後述
する。
すために、init-finalpフラグフィールド28が有向フ
ラグテーブル20に対して付加されている。開始節が終
了節である場合は、つまり、開始節と終了節が一致して
しまう場合は、このフィールドの値はinit-finalp=tと
される。init-finalp=nilの場合、開始節と終了節が一
致せず、終了節は開始節とは別に存在することを示して
いる。なお、init-finalpフラグの利用法の詳細は後述
する。
【0021】ここでの有向グラフテーブル20において
用いられる各フラグについて、その意味付けを説明して
おくと、init-finalpフラグは、第1番目の辺データか
ら始まる開始節が終了節であるかどうかを示すフラグで
あり、有向グラフテーブルに対して設けられる。firstp
フラグは、初参照辺であるか否かを示すフラグである。
finalpフラグは、初参照辺(firstp=t)のときに存在
し、指示先が終了節であるか否かを指すフラグとなって
いる。sonpフラグは、子辺の有無を示すフラグである。
brotherpフラグは、兄弟辺の有無を示すフラグである。
なお、ポインタはこれらのフラグと共に設けられるが、
辺データが初参照辺(firstp=t)のときに存在し、当該
辺の指示先の節を指示する。ポインタの指示先として、
同じ指示先の節を有する該当辺を示すことで、これに替
えることも可能である。
用いられる各フラグについて、その意味付けを説明して
おくと、init-finalpフラグは、第1番目の辺データか
ら始まる開始節が終了節であるかどうかを示すフラグで
あり、有向グラフテーブルに対して設けられる。firstp
フラグは、初参照辺であるか否かを示すフラグである。
finalpフラグは、初参照辺(firstp=t)のときに存在
し、指示先が終了節であるか否かを指すフラグとなって
いる。sonpフラグは、子辺の有無を示すフラグである。
brotherpフラグは、兄弟辺の有無を示すフラグである。
なお、ポインタはこれらのフラグと共に設けられるが、
辺データが初参照辺(firstp=t)のときに存在し、当該
辺の指示先の節を指示する。ポインタの指示先として、
同じ指示先の節を有する該当辺を示すことで、これに替
えることも可能である。
【0022】この有向グラフテーブル20では、有向グ
ラフが含むポインタ数を減らすことにより、有向グラフ
を効率よく表現し、当該有向グラフ表現をデータ処理で
利用する場合の負荷を軽減させる。このため、有向グラ
フテーブル20においては、辺直列表現によるテーブル
形式データとして各辺データを記録する。すなわち、あ
る辺のデータをレコードデータ(エントリ)として記録
すると、暗黙に次のエントリのデータ位置には初参照辺
の子辺(対象としている辺の指示する節から発する最初
の辺)のデータを記録するものとする。もし、記録する
辺が再参照辺であり、その子辺が既に記録済みになって
いる場合は、当該子辺へのポインタを記録する。
ラフが含むポインタ数を減らすことにより、有向グラフ
を効率よく表現し、当該有向グラフ表現をデータ処理で
利用する場合の負荷を軽減させる。このため、有向グラ
フテーブル20においては、辺直列表現によるテーブル
形式データとして各辺データを記録する。すなわち、あ
る辺のデータをレコードデータ(エントリ)として記録
すると、暗黙に次のエントリのデータ位置には初参照辺
の子辺(対象としている辺の指示する節から発する最初
の辺)のデータを記録するものとする。もし、記録する
辺が再参照辺であり、その子辺が既に記録済みになって
いる場合は、当該子辺へのポインタを記録する。
【0023】このように、暗黙に順次に子辺を記録して
いくので、兄弟辺がある場合には、明示的に兄弟辺があ
ることを記録しておくフラグが必要となる。このフラグ
の有無により、ある辺をレコードデータ(エントリ)と
して記録した後、その辺から子辺へのポインタを必要と
する場合(すなわち、子辺が既に記録済となっている場
合)は、その直後には何を記録しても良い自由度ができ
るので、有向グラフテーブル20では、このエントリ位
置に、兄弟辺を(あれば)記録することにしている。
いくので、兄弟辺がある場合には、明示的に兄弟辺があ
ることを記録しておくフラグが必要となる。このフラグ
の有無により、ある辺をレコードデータ(エントリ)と
して記録した後、その辺から子辺へのポインタを必要と
する場合(すなわち、子辺が既に記録済となっている場
合)は、その直後には何を記録しても良い自由度ができ
るので、有向グラフテーブル20では、このエントリ位
置に、兄弟辺を(あれば)記録することにしている。
【0024】更に、本発明の実施例にかかる有向グラフ
テーブル20のデータ構造について詳細に説明する。こ
の辺直列表現によるテーブルでは、有向グラフを効率的
に表現するため、また、どのような形の有向グラフにも
対応させるため、次のようなフラグを用意して、辺と子
辺とを単位として記録する。(辺直列表現によるテーブ
ルが持つフラグ) 1.開始節が終了節かどうかを示すフラグ(init−
firstpフラグ)を用意する。 2.各辺データのエントリには、初参照辺か再参照辺か
のどちらかであるかを示すフラグ(firstpフラ
グ)と、兄弟辺の有無を示すフラグ(brotherp
フラグ)を用意する。また、初参照辺では、更に子辺の
有無を示すフラグ(sonsフラグ)を用意する。
テーブル20のデータ構造について詳細に説明する。こ
の辺直列表現によるテーブルでは、有向グラフを効率的
に表現するため、また、どのような形の有向グラフにも
対応させるため、次のようなフラグを用意して、辺と子
辺とを単位として記録する。(辺直列表現によるテーブ
ルが持つフラグ) 1.開始節が終了節かどうかを示すフラグ(init−
firstpフラグ)を用意する。 2.各辺データのエントリには、初参照辺か再参照辺か
のどちらかであるかを示すフラグ(firstpフラ
グ)と、兄弟辺の有無を示すフラグ(brotherp
フラグ)を用意する。また、初参照辺では、更に子辺の
有無を示すフラグ(sonsフラグ)を用意する。
【0025】ここでの有向グラフテーブル20では、辺
と子辺を単位として記録する。有向グラフのネットワー
クにおいて、開始節(1箇所)を除く全ての節には、そ
れを指す初参照辺が1対1に対応する(以下、ここでの
初参照辺と節の組を適宜に辺節と呼ぶ)が、辺を発しな
い節(子辺を持たない節)は不規則に存在する。そこ
で、初参照辺に子辺の持つ情報を合せて持たせることに
すると、節の情報は不要となる。辺を発しない節が単独
で持たなければならない情報は終了節か否かを示す情報
のみである。そこで、ここでは、特に、有向グラフテー
ブルのテーブルデータに対してinit−firstp
フラグフィールド28を設けている。
と子辺を単位として記録する。有向グラフのネットワー
クにおいて、開始節(1箇所)を除く全ての節には、そ
れを指す初参照辺が1対1に対応する(以下、ここでの
初参照辺と節の組を適宜に辺節と呼ぶ)が、辺を発しな
い節(子辺を持たない節)は不規則に存在する。そこ
で、初参照辺に子辺の持つ情報を合せて持たせることに
すると、節の情報は不要となる。辺を発しない節が単独
で持たなければならない情報は終了節か否かを示す情報
のみである。そこで、ここでは、特に、有向グラフテー
ブルのテーブルデータに対してinit−firstp
フラグフィールド28を設けている。
【0026】なお、前述のように原則的には、有向グラ
フテーブルには再参照辺には子辺のポインタを記録する
方法とするが、この場合、初参照辺に子辺の持つ情報を
合せて持たせると、再参照辺から子辺を参照しても、再
参照辺の指す節の情報は得られない。この情報は、その
子辺の直前の初参照辺にあるので、ここでの有向グラフ
テーブル20においては、再参照辺に子辺のポインタを
記録する方法をとらずに、当該子辺の直前の初参照辺へ
のポインタを記録するようにしている(ポインタフィー
ルド27)。
フテーブルには再参照辺には子辺のポインタを記録する
方法とするが、この場合、初参照辺に子辺の持つ情報を
合せて持たせると、再参照辺から子辺を参照しても、再
参照辺の指す節の情報は得られない。この情報は、その
子辺の直前の初参照辺にあるので、ここでの有向グラフ
テーブル20においては、再参照辺に子辺のポインタを
記録する方法をとらずに、当該子辺の直前の初参照辺へ
のポインタを記録するようにしている(ポインタフィー
ルド27)。
【0027】次に、図2に示すように構成された有向グ
ラフテーブル20から、図1に示すうような構造の有向
グラフを作成する場合のアルゴリズムについて説明す
る。この場合のアルゴリズムは、次のようなステップ
(A)〜(E)の処理を繰り返して行うことにより、辺
直列表現のレコードデータの有向グラフテーブル20に
よる表現から対応する有向グラフの生成が可能となる。
ラフテーブル20から、図1に示すうような構造の有向
グラフを作成する場合のアルゴリズムについて説明す
る。この場合のアルゴリズムは、次のようなステップ
(A)〜(E)の処理を繰り返して行うことにより、辺
直列表現のレコードデータの有向グラフテーブル20に
よる表現から対応する有向グラフの生成が可能となる。
【0028】なお、この有向グラフの生成処理では、初
期設定データとして、スタックbrothers={}、開始節が
最終節の場合はinit-finalp=t、それ以外の場合は、ini
t-finalp=nilとする。開始節を指す(仮想的な)辺を辺0
とし、辺0は初参照辺(firstp=t)とする。 (A) 開始節を作成する。 (B) i=1とする。 (C) 辺がなければ、終了。 (C−1) 辺(i-1)が初参照辺(firstp=t)で、子辺が
ある(sonp=t)場合には、子辺として、辺iを生成する。
brotherp=tなら、iをbrothersにプッシュする。 (C−2) 辺(i-1)が初参照辺(firstp=t)で、子辺が
ない(sonp=nil)場合には、brothersをポップした値jを
得て、辺jの兄弟辺として、辺iを作成する。そして、
brotherp=tなら、iをbrothersにプッシュする。 (C−3) 辺(i-1)が再参照辺(firstp=nil)の場合、b
rothersをポップした値jを得て、辺jの兄弟辺とし
て、辺iを作成する。そして、brotherp=tなら、iをbr
othersにプッシュする。 (D) i=i+1とする。 (E) そのまま(C)に戻る。
期設定データとして、スタックbrothers={}、開始節が
最終節の場合はinit-finalp=t、それ以外の場合は、ini
t-finalp=nilとする。開始節を指す(仮想的な)辺を辺0
とし、辺0は初参照辺(firstp=t)とする。 (A) 開始節を作成する。 (B) i=1とする。 (C) 辺がなければ、終了。 (C−1) 辺(i-1)が初参照辺(firstp=t)で、子辺が
ある(sonp=t)場合には、子辺として、辺iを生成する。
brotherp=tなら、iをbrothersにプッシュする。 (C−2) 辺(i-1)が初参照辺(firstp=t)で、子辺が
ない(sonp=nil)場合には、brothersをポップした値jを
得て、辺jの兄弟辺として、辺iを作成する。そして、
brotherp=tなら、iをbrothersにプッシュする。 (C−3) 辺(i-1)が再参照辺(firstp=nil)の場合、b
rothersをポップした値jを得て、辺jの兄弟辺とし
て、辺iを作成する。そして、brotherp=tなら、iをbr
othersにプッシュする。 (D) i=i+1とする。 (E) そのまま(C)に戻る。
【0029】図3は、本発明の一実施例にかかる有向グ
ラフ生成装置の要部の構成を示すブロック図である。図
3において、30は有向グラフテーブル、31は入力装
置、32はデータ処理装置、33は記憶装置、34は出
力装置、35は有向グラフ生成処理部、36は文字列解
析処理部である。記憶装置33には、解析する対象に応
じて、ラベルデータなどが設定された有向グラフを表現
する有向グラフテーブル30が予じめ作成されて備えら
れている。データ処理装置32における有向グラフ生成
処理部35は、有向グラフテーブル30のデータを利用
して、有向グラフを作成し、また、文字列解析処理部3
6は、有向グラフテーブル30のデータを利用して、文
字列の解析処理を行う。解析対象となる文字列は、入力
装置31から入力され、解析された結果の出力は出力装
置34から出力される。
ラフ生成装置の要部の構成を示すブロック図である。図
3において、30は有向グラフテーブル、31は入力装
置、32はデータ処理装置、33は記憶装置、34は出
力装置、35は有向グラフ生成処理部、36は文字列解
析処理部である。記憶装置33には、解析する対象に応
じて、ラベルデータなどが設定された有向グラフを表現
する有向グラフテーブル30が予じめ作成されて備えら
れている。データ処理装置32における有向グラフ生成
処理部35は、有向グラフテーブル30のデータを利用
して、有向グラフを作成し、また、文字列解析処理部3
6は、有向グラフテーブル30のデータを利用して、文
字列の解析処理を行う。解析対象となる文字列は、入力
装置31から入力され、解析された結果の出力は出力装
置34から出力される。
【0030】図4は、有向グラフ生成処理部35が行う
有向グラフ作成処理の処理フローを示すフローチャート
である。図4を参照して、ここでの有向グラフ作成処理
を説明する。処理を開始すると、まず、ステップ40に
おいて、スタックbrothersを空リストにする。
次に、ステップ41において、開始節を作成し、これを
辺節0とする。次にステップ42において、制御変数i
=1とする。次に、ステップ43に進み、辺節(i−
1)の子辺として、辺節iを作成する。次に、ステップ
44において、有向グラフテーブルからフラグデータを
参照し、brotherp=tならば、後に兄弟辺を作
成するために、制御変数iの値をスタックbrothe
rsにプッシュする。次に、ステップ45において、制
御変数iをインクリメントして、次のステップ46にお
いて、辺iの辺データがあるか否かを判定する。辺デー
タがなければ、処理を終了とする。
有向グラフ作成処理の処理フローを示すフローチャート
である。図4を参照して、ここでの有向グラフ作成処理
を説明する。処理を開始すると、まず、ステップ40に
おいて、スタックbrothersを空リストにする。
次に、ステップ41において、開始節を作成し、これを
辺節0とする。次にステップ42において、制御変数i
=1とする。次に、ステップ43に進み、辺節(i−
1)の子辺として、辺節iを作成する。次に、ステップ
44において、有向グラフテーブルからフラグデータを
参照し、brotherp=tならば、後に兄弟辺を作
成するために、制御変数iの値をスタックbrothe
rsにプッシュする。次に、ステップ45において、制
御変数iをインクリメントして、次のステップ46にお
いて、辺iの辺データがあるか否かを判定する。辺デー
タがなければ、処理を終了とする。
【0031】ステップ46の判定処理において、辺iの
辺データが存在する場合、ステップ47に進む。ステッ
プ47では、辺データから辺節(i-1)が初参照辺(firstp
=t)であるか否かを判定する。初参照辺である場合に
は、ステップ48に進み、更に辺データから辺節(i-1)
に子辺(sonp=t)があるか否かを判定し、子辺がない場合
にステップ49に進む。
辺データが存在する場合、ステップ47に進む。ステッ
プ47では、辺データから辺節(i-1)が初参照辺(firstp
=t)であるか否かを判定する。初参照辺である場合に
は、ステップ48に進み、更に辺データから辺節(i-1)
に子辺(sonp=t)があるか否かを判定し、子辺がない場合
にステップ49に進む。
【0032】ステップ48の判定処理において、辺節(i
-1)に子辺(sonp=t)があると判定できると、ステップ4
3に戻り、ステップ43における子辺の作成処理から、
次の処理を続行する。また、ステップ47で辺節(i-1)
が初参照辺(firstp=t)でないと判定された場合、およ
び、ステップ48で辺節(i-1)に子辺(sonp=t)があると
判定されない場合、ステップ49に進んで、兄弟辺を作
成する処理を行う。この処理では、ステップ49で、ス
タックbrothersをポップした値jを得て、次のステップ
50において、辺節jの兄弟辺として、辺節iを作成す
る。そして、次のステップ44に戻り、ステップ44か
ら処理を繰り返し行う。
-1)に子辺(sonp=t)があると判定できると、ステップ4
3に戻り、ステップ43における子辺の作成処理から、
次の処理を続行する。また、ステップ47で辺節(i-1)
が初参照辺(firstp=t)でないと判定された場合、およ
び、ステップ48で辺節(i-1)に子辺(sonp=t)があると
判定されない場合、ステップ49に進んで、兄弟辺を作
成する処理を行う。この処理では、ステップ49で、ス
タックbrothersをポップした値jを得て、次のステップ
50において、辺節jの兄弟辺として、辺節iを作成す
る。そして、次のステップ44に戻り、ステップ44か
ら処理を繰り返し行う。
【0033】このように、この処理においては、有向フ
ラグテーブルのレコードデータ(エントリ)の辺データ
から、子辺が存在する場合には順次に子辺を作成して行
き、その間、兄弟辺がある場合、兄弟辺の存在する位置
をスタックbrothersにプッシュしておく。子辺
の存在がなくなると、次にスタックbrothersに
プッシュしておいた兄弟辺の存在する位置で、兄弟辺を
作成する。この処理を繰り返し行い、有向グラフを作成
する。
ラグテーブルのレコードデータ(エントリ)の辺データ
から、子辺が存在する場合には順次に子辺を作成して行
き、その間、兄弟辺がある場合、兄弟辺の存在する位置
をスタックbrothersにプッシュしておく。子辺
の存在がなくなると、次にスタックbrothersに
プッシュしておいた兄弟辺の存在する位置で、兄弟辺を
作成する。この処理を繰り返し行い、有向グラフを作成
する。
【0034】この処理により、例えば、図2に示す有向
グラフテーブル20のフラグデータから図1に示すよう
な有向グラフ10が作成される。有向グラフ10では、
図1に示すように、開始節から始まり、その上側の初参
照辺の辺を辿り、それから順次にその子辺が作成され、
子辺がなくなると、兄弟辺が存在する位置まで戻り、兄
弟辺を作成する。この作成順序は、有向フラグテーブル
20の辺データの記録順序と対応しており、記録順序の
番号を辺のラベルと共にその辺に付けて示している。
グラフテーブル20のフラグデータから図1に示すよう
な有向グラフ10が作成される。有向グラフ10では、
図1に示すように、開始節から始まり、その上側の初参
照辺の辺を辿り、それから順次にその子辺が作成され、
子辺がなくなると、兄弟辺が存在する位置まで戻り、兄
弟辺を作成する。この作成順序は、有向フラグテーブル
20の辺データの記録順序と対応しており、記録順序の
番号を辺のラベルと共にその辺に付けて示している。
【0035】このように作成された有向グラフ10は、
例えば、前述の図8の有向グラフの説明と同様な表現法
に従い、各々の節および当該節から発する各辺で、暗黙
に記録順序が決まるものを括弧でくくり、その各要素で
明示的にポインタが必要になる部分に→印を付けて示す
と、次のように表現される。すなわち、この有向グラフ
10の例では、全ての辺データは暗黙に記録順序が決ま
るので、一つの括弧でくくることができる。前述の図8
の場合と同様にして、各辺データで明示的に他の辺への
ポインタが必要になる部分に→を付けて示し、また、兄
弟辺があることを記録する部分に下線を付けて表現する
と、{1,2,3,4,5,6→,7,8→,9→,1
0,11,12→,13,14→,15→}となる。
例えば、前述の図8の有向グラフの説明と同様な表現法
に従い、各々の節および当該節から発する各辺で、暗黙
に記録順序が決まるものを括弧でくくり、その各要素で
明示的にポインタが必要になる部分に→印を付けて示す
と、次のように表現される。すなわち、この有向グラフ
10の例では、全ての辺データは暗黙に記録順序が決ま
るので、一つの括弧でくくることができる。前述の図8
の場合と同様にして、各辺データで明示的に他の辺への
ポインタが必要になる部分に→を付けて示し、また、兄
弟辺があることを記録する部分に下線を付けて表現する
と、{1,2,3,4,5,6→,7,8→,9→,1
0,11,12→,13,14→,15→}となる。
【0036】図5は、文字列解析処理部36が行う入力
記号列解析処理の処理フローを示すフローチャートであ
る。図5を参照して、ここでの入力記号列解析処理を説
明する。この入力記号列解析処理は、例えば、図1に示
すような有向グラフにより形成されているネットワーク
構造を参照して、そのネットワークを辿り、入力された
入力記号の文字列の受理また拒絶の判定を行う処理であ
るが、ここでは、図1のような有向グラフの形態を利用
するのでなく、図2に示すような有向グラフテーブル2
0のデータをそのまま利用して入力記号列解析処理を行
う。
記号列解析処理の処理フローを示すフローチャートであ
る。図5を参照して、ここでの入力記号列解析処理を説
明する。この入力記号列解析処理は、例えば、図1に示
すような有向グラフにより形成されているネットワーク
構造を参照して、そのネットワークを辿り、入力された
入力記号の文字列の受理また拒絶の判定を行う処理であ
るが、ここでは、図1のような有向グラフの形態を利用
するのでなく、図2に示すような有向グラフテーブル2
0のデータをそのまま利用して入力記号列解析処理を行
う。
【0037】処理を開始すると、まず、ステップ51に
おいて、入力された文字列の最初の文字を現在の入力記
号とする。次に、ステップ52において、辺1を現在の
辺とする。次に、ステップ53に進み、現在の入力記号
と現在の辺のラベルが一致するか否かを判定する。一致
する場合には、次に、ステップ54において、子辺を次
の辺とする。次に、ステップ55において、次の入力記
号があるか否かを判定する。次の入力記号がある場合に
は、次のステップ56に進み、次の入力記号を現在の入
力記号とする。次にステップ57において、次の辺を現
在の辺として、ステップ53に戻り、ステップ53から
処理を繰り返し行う。
おいて、入力された文字列の最初の文字を現在の入力記
号とする。次に、ステップ52において、辺1を現在の
辺とする。次に、ステップ53に進み、現在の入力記号
と現在の辺のラベルが一致するか否かを判定する。一致
する場合には、次に、ステップ54において、子辺を次
の辺とする。次に、ステップ55において、次の入力記
号があるか否かを判定する。次の入力記号がある場合に
は、次のステップ56に進み、次の入力記号を現在の入
力記号とする。次にステップ57において、次の辺を現
在の辺として、ステップ53に戻り、ステップ53から
処理を繰り返し行う。
【0038】また、ステップ53の判定処理において、
現在の入力記号と現在の辺のラベルが一致しない場合
は、兄弟辺に対して、同様なラベルの一致の判定を行う
ため、ステップ58に進み、兄弟辺があるか否かを判定
する。兄弟辺がある場合は、ステップ59に進み、兄弟
辺を現在の辺として、ステップ53に戻り、ステップ5
3から処理を繰り返し行う。ステップ58で兄弟辺がな
い場合には、有向グラフを辿れないので、失敗終了とな
る。
現在の入力記号と現在の辺のラベルが一致しない場合
は、兄弟辺に対して、同様なラベルの一致の判定を行う
ため、ステップ58に進み、兄弟辺があるか否かを判定
する。兄弟辺がある場合は、ステップ59に進み、兄弟
辺を現在の辺として、ステップ53に戻り、ステップ5
3から処理を繰り返し行う。ステップ58で兄弟辺がな
い場合には、有向グラフを辿れないので、失敗終了とな
る。
【0039】このようにして、ステップ53〜ステップ
57までの処理を繰り返し行い、また、ステップ58お
よびステップ59の処理を含めて、ステップ53〜ステ
ップ57までの処理を繰り返し行う。そして、ステップ
55の判定処理において、次の入力記号がなくなったこ
とが判定できると、次に、ステップ60に進み、この入
力記号列解析処理の最終的な判定処理を行う。すなわ
ち、現在の辺が指示する節が終了節であれば、入力記号
は受理できるので、ステップ60において、現在の辺は
finalp=tであるか否かを判定する。この結果、現在の辺
がfinalp=tであれば、成功終了とし、そうでなければ、
失敗終了とする。
57までの処理を繰り返し行い、また、ステップ58お
よびステップ59の処理を含めて、ステップ53〜ステ
ップ57までの処理を繰り返し行う。そして、ステップ
55の判定処理において、次の入力記号がなくなったこ
とが判定できると、次に、ステップ60に進み、この入
力記号列解析処理の最終的な判定処理を行う。すなわ
ち、現在の辺が指示する節が終了節であれば、入力記号
は受理できるので、ステップ60において、現在の辺は
finalp=tであるか否かを判定する。この結果、現在の辺
がfinalp=tであれば、成功終了とし、そうでなければ、
失敗終了とする。
【0040】このような入力記号列の判定処理は、入力
された入力記号に対して有向グラフの各辺のラベルの一
致を判定して、有向グラフのネットワークの各辺を辿る
処理であるが、ここでの処理では、有向グラフのネット
ワークの各辺を辿る場合に、図2に示すような有向グラ
フテーブルの辺データを順次に読み出し、辺データにお
ける各々のフラグの判定を行い、入力記号列の判定を行
う。なお、この判定処理で、子辺を辿り、そのラベルが
不一致の場合に、兄弟辺を辿ることになるが、有向グラ
フテーブルにおいて、兄弟辺に辿りつけることは有向グ
ラフと対応する辺直列表現の有向グラフテールの等価性
から明らかである。また、有向グラフの辺の順序が決定
的でない場合、つまり、同一の節から同じラベルを持つ
辺が複数存在する場合には、子辺から先の辿り方に、成
功および失敗の区別をし、失敗の場合には、ラベルの比
較が失敗した時と同様に、兄弟辺を辿ることになる。
された入力記号に対して有向グラフの各辺のラベルの一
致を判定して、有向グラフのネットワークの各辺を辿る
処理であるが、ここでの処理では、有向グラフのネット
ワークの各辺を辿る場合に、図2に示すような有向グラ
フテーブルの辺データを順次に読み出し、辺データにお
ける各々のフラグの判定を行い、入力記号列の判定を行
う。なお、この判定処理で、子辺を辿り、そのラベルが
不一致の場合に、兄弟辺を辿ることになるが、有向グラ
フテーブルにおいて、兄弟辺に辿りつけることは有向グ
ラフと対応する辺直列表現の有向グラフテールの等価性
から明らかである。また、有向グラフの辺の順序が決定
的でない場合、つまり、同一の節から同じラベルを持つ
辺が複数存在する場合には、子辺から先の辿り方に、成
功および失敗の区別をし、失敗の場合には、ラベルの比
較が失敗した時と同様に、兄弟辺を辿ることになる。
【0041】このような有向グラフテーブルの辺データ
を用いるアクセス法について、現在の節の状態および入
力記号がない場合に対しても対応可能なようにしたアル
ゴリズムをまとめておくと、次のようなアルゴリズムに
より有向グラフを辿ることができる。 〔開始節が終了節となっている場合の処理)この場合、
入力記号がない場合に成功終了となる。 a) 初期設定;i=0 b) 辺0(仮想的な辺)を現在の辺とする。有向グラ
フテーブル自体に付加されているinit-finalpを得る。
文字列の最初の文字を現在の入力記号とする。 c) 入力記号がなくなり、init-finalp=tなら成功終
了、init-finalp=nilなら失敗終了。 〔開始節が終了節となっていない場合の処理〕通常の処
理であり、入力記号の文字列が取り込まれる。 (1) 初期設定;i=0 (2) 辺1を現在の辺とする。 (3) 現在の入力記号と現在の辺のラベルを比較す
る。 (3−1) 一致すれば、子辺を次の辺とする。 (3−2) 一致しない場合、 (3−2−1) 兄弟辺があれば、兄弟辺を次の辺とす
る。 (3−2−2) 兄弟辺がなければ、失敗終了とする。 (4) 次の入力記号がなくなり、finalp=tなら成功終
了、finalp=nilなら失敗終了。 (5) 次の入力記号を現在の入力記号とする。次の辺
を現在の辺とする。 (6) そのまま(3)に戻る。 このようなアルゴリズムにより、入力記号の各々の文字
列に対応して、有向グラフのネットワークの各辺を辿る
ことができる。
を用いるアクセス法について、現在の節の状態および入
力記号がない場合に対しても対応可能なようにしたアル
ゴリズムをまとめておくと、次のようなアルゴリズムに
より有向グラフを辿ることができる。 〔開始節が終了節となっている場合の処理)この場合、
入力記号がない場合に成功終了となる。 a) 初期設定;i=0 b) 辺0(仮想的な辺)を現在の辺とする。有向グラ
フテーブル自体に付加されているinit-finalpを得る。
文字列の最初の文字を現在の入力記号とする。 c) 入力記号がなくなり、init-finalp=tなら成功終
了、init-finalp=nilなら失敗終了。 〔開始節が終了節となっていない場合の処理〕通常の処
理であり、入力記号の文字列が取り込まれる。 (1) 初期設定;i=0 (2) 辺1を現在の辺とする。 (3) 現在の入力記号と現在の辺のラベルを比較す
る。 (3−1) 一致すれば、子辺を次の辺とする。 (3−2) 一致しない場合、 (3−2−1) 兄弟辺があれば、兄弟辺を次の辺とす
る。 (3−2−2) 兄弟辺がなければ、失敗終了とする。 (4) 次の入力記号がなくなり、finalp=tなら成功終
了、finalp=nilなら失敗終了。 (5) 次の入力記号を現在の入力記号とする。次の辺
を現在の辺とする。 (6) そのまま(3)に戻る。 このようなアルゴリズムにより、入力記号の各々の文字
列に対応して、有向グラフのネットワークの各辺を辿る
ことができる。
【0042】ところで、前述のような有向グラフテーブ
ルの辺データにより、有向グラフを辿る処理を行う場合
において、初参照辺で兄弟辺が存在することを示すbrot
herpフラグがセットされている場合には、子辺の次に兄
弟辺を辿ることになるが、その参照速度を向上させるた
めに、その実体がどこにあるかを示すポインタを加える
ことができる。このような兄弟辺を参照するポインタ
(brother)を持たせておき、有向グラフテーブルを構
成すると、図6に示すような有向グラフテーブル61が
構成できる。なお、この場合、前述したように、再参照
辺で兄弟辺の有無を示すフラグがセットされている場合
は、その直後に兄弟辺を保存できるので、ポインタは不
要となる。
ルの辺データにより、有向グラフを辿る処理を行う場合
において、初参照辺で兄弟辺が存在することを示すbrot
herpフラグがセットされている場合には、子辺の次に兄
弟辺を辿ることになるが、その参照速度を向上させるた
めに、その実体がどこにあるかを示すポインタを加える
ことができる。このような兄弟辺を参照するポインタ
(brother)を持たせておき、有向グラフテーブルを構
成すると、図6に示すような有向グラフテーブル61が
構成できる。なお、この場合、前述したように、再参照
辺で兄弟辺の有無を示すフラグがセットされている場合
は、その直後に兄弟辺を保存できるので、ポインタは不
要となる。
【0043】図6は、兄弟辺に対するポインタを含めて
構成した有向グラフテーブルの一例を説明する図であ
る。図6に示す有向グラフテーブル61において、有向
グラフを示す各辺データを表現するデータ構造は、図2
に示した有向グラフテーブルにおいて、更に兄弟辺への
ポインタを示すbrotherフィールド62を付加したもの
となっている。前述のように、このbrotherフィールド
62によるポインタを必要とするのは、初参照辺で兄弟
辺が存在する辺データの参照時である。したがって、図
2の有向グラフテーブル20に対応して、作成された兄
弟辺ポインタ付き有向グラフテーブル61においては、
そのフラグが(firstp=t & brotherp=t)である辺1,
辺3,辺7の辺データにのみ、兄弟辺へのポインタが、
brotherフィールド62により付加される。
構成した有向グラフテーブルの一例を説明する図であ
る。図6に示す有向グラフテーブル61において、有向
グラフを示す各辺データを表現するデータ構造は、図2
に示した有向グラフテーブルにおいて、更に兄弟辺への
ポインタを示すbrotherフィールド62を付加したもの
となっている。前述のように、このbrotherフィールド
62によるポインタを必要とするのは、初参照辺で兄弟
辺が存在する辺データの参照時である。したがって、図
2の有向グラフテーブル20に対応して、作成された兄
弟辺ポインタ付き有向グラフテーブル61においては、
そのフラグが(firstp=t & brotherp=t)である辺1,
辺3,辺7の辺データにのみ、兄弟辺へのポインタが、
brotherフィールド62により付加される。
【0044】この場合においても、有向グラフを高速に
辿るために、兄弟辺へのポインタを必要とするのは、初
参照辺(firstp=t)のうち、broyherp
=tであり、かつ、sonp=tのもののみである(s
onp=nilなら、直後に兄弟辺を置ける)。したが
って、その個数は初参照辺の数以下であるので、初参照
辺へのポインタと、兄弟辺へのポインタを合せた個数
は、少なくても全辺数以下となっており、従来に比べて
十分にポインタ数を減少させたデータ構造となってい
る。このポインタ数は、有向グラフの形態により変化す
る。
辿るために、兄弟辺へのポインタを必要とするのは、初
参照辺(firstp=t)のうち、broyherp
=tであり、かつ、sonp=tのもののみである(s
onp=nilなら、直後に兄弟辺を置ける)。したが
って、その個数は初参照辺の数以下であるので、初参照
辺へのポインタと、兄弟辺へのポインタを合せた個数
は、少なくても全辺数以下となっており、従来に比べて
十分にポインタ数を減少させたデータ構造となってい
る。このポインタ数は、有向グラフの形態により変化す
る。
【0045】また、更に、ここでの有向グラフテーブル
20を変形して、そのデータ容量を少なくすることがで
きる。これは、有向グラフテーブルの各々の辺データに
おいて、ラベルが同一の辺データが存在する場合に、そ
の同一のラベルの辺を参照するようにして、同一のラベ
ルの格納域を省略するように変形する。前述のように有
向グラフをデータ処理に利用する場合においては、ラベ
ル比較の処理が伴うので、各々の辺データにおいてラベ
ルデータは必須のものであるが、ラベルデータとして保
持するデータ輻が処理内容によっては非常に大きくなる
場合ある。このため、図7に示すように、有向グラフテ
ーブル70においては、更にラベルが既存の辺データと
同一である旨を指示するlabel−eqフラグを格納
するlabel−eqフラグフィールドを設けた構造と
し、ラベルが同一の辺データが存在する場合に、その同
一のラベルの辺を参照するようなデータ構造とする。こ
れにより、同一のラベルの格納域を省略したデータ構造
とすることができ、有向グラフテーブルのデータ量を減
少させることができる。
20を変形して、そのデータ容量を少なくすることがで
きる。これは、有向グラフテーブルの各々の辺データに
おいて、ラベルが同一の辺データが存在する場合に、そ
の同一のラベルの辺を参照するようにして、同一のラベ
ルの格納域を省略するように変形する。前述のように有
向グラフをデータ処理に利用する場合においては、ラベ
ル比較の処理が伴うので、各々の辺データにおいてラベ
ルデータは必須のものであるが、ラベルデータとして保
持するデータ輻が処理内容によっては非常に大きくなる
場合ある。このため、図7に示すように、有向グラフテ
ーブル70においては、更にラベルが既存の辺データと
同一である旨を指示するlabel−eqフラグを格納
するlabel−eqフラグフィールドを設けた構造と
し、ラベルが同一の辺データが存在する場合に、その同
一のラベルの辺を参照するようなデータ構造とする。こ
れにより、同一のラベルの格納域を省略したデータ構造
とすることができ、有向グラフテーブルのデータ量を減
少させることができる。
【0046】図7は、兄弟辺に対するポインタおよび同
一ラベル指示フラグを含めて構成した有向グラフテーブ
ルの一例を説明する図である。図7に示す有向グラフテ
ーブル71において、有向グラフを示す各辺データを表
現するデータ構造は、図2に示した有向グラフテーブル
において、兄弟辺へのポインタを示すbrotherフィール
ド62を付加し、更に、ラベルが同じであることを示す
フラグのlabel-eqフラグフィールド72を設けた構造と
なっている。ここでのlabel-eqフラグフィールド72を
利用する場合に、再参照辺が既に記録されている同一辺
を指す辺のラベルと一致する場合、ラベルが同じである
ことを示すlabel-eqフラグをセットし、ポインタフィー
ルド73により、参照する辺データをポイントする。こ
の場合、必ずしも初参照辺へのポインタを記録するので
なく、既に記録されている同一辺を指す辺へのポインタ
を記録するようにしてもよい。
一ラベル指示フラグを含めて構成した有向グラフテーブ
ルの一例を説明する図である。図7に示す有向グラフテ
ーブル71において、有向グラフを示す各辺データを表
現するデータ構造は、図2に示した有向グラフテーブル
において、兄弟辺へのポインタを示すbrotherフィール
ド62を付加し、更に、ラベルが同じであることを示す
フラグのlabel-eqフラグフィールド72を設けた構造と
なっている。ここでのlabel-eqフラグフィールド72を
利用する場合に、再参照辺が既に記録されている同一辺
を指す辺のラベルと一致する場合、ラベルが同じである
ことを示すlabel-eqフラグをセットし、ポインタフィー
ルド73により、参照する辺データをポイントする。こ
の場合、必ずしも初参照辺へのポインタを記録するので
なく、既に記録されている同一辺を指す辺へのポインタ
を記録するようにしてもよい。
【0047】このような有向フラグテーブル71(図
7)を構成する場合においては、例えば、図6に示す有
向グラフテーブルのラベルデータを参照すると、辺9の
ラベルが辺5のラベルと同じであり、また、辺14のラ
ベルが辺12のラベルと同じになっているので、辺9の
辺データおよび辺14の辺データにおいてはラベルデー
タを記録せず、これに替えてlabel-eqフラグフィールド
72に、label-eqフラグをセットする。そして、ポイン
タフィールド73に、その同一ラベルの辺をポイントす
るポインタを格納する。
7)を構成する場合においては、例えば、図6に示す有
向グラフテーブルのラベルデータを参照すると、辺9の
ラベルが辺5のラベルと同じであり、また、辺14のラ
ベルが辺12のラベルと同じになっているので、辺9の
辺データおよび辺14の辺データにおいてはラベルデー
タを記録せず、これに替えてlabel-eqフラグフィールド
72に、label-eqフラグをセットする。そして、ポイン
タフィールド73に、その同一ラベルの辺をポイントす
るポインタを格納する。
【0048】また、辺直列表現のテーブルによる有向グ
ラフを利用してデータ処理を行う場合、参照が初参照辺
だけに限られるので、参照のためのポインタのアドレス
空間は、全て辺に対するものよりも小さい。したがっ
て、間接参照テーブルを持たせることにより、ポインタ
のデータ幅を減小させることができる。間接参照テーブ
ルには、絶対アドレスを保存する場合と、現在の辺のア
ドレスとの差である相対アドレスを保存する場合がある
が、ここでの有向グラフテーブルでは、兄弟辺の場合
は、相対アドレスにすると、アドレスの重なりが生じや
すく、間接参照テーブルへのオフセット間を小さくする
ことができる。また、ハフマン符号などで圧縮を行なう
こともできる。これより、ポインタ数が少なく、データ
容量の少ない有向グラフ(有向グラフテーブル)を作成
することができる。
ラフを利用してデータ処理を行う場合、参照が初参照辺
だけに限られるので、参照のためのポインタのアドレス
空間は、全て辺に対するものよりも小さい。したがっ
て、間接参照テーブルを持たせることにより、ポインタ
のデータ幅を減小させることができる。間接参照テーブ
ルには、絶対アドレスを保存する場合と、現在の辺のア
ドレスとの差である相対アドレスを保存する場合がある
が、ここでの有向グラフテーブルでは、兄弟辺の場合
は、相対アドレスにすると、アドレスの重なりが生じや
すく、間接参照テーブルへのオフセット間を小さくする
ことができる。また、ハフマン符号などで圧縮を行なう
こともできる。これより、ポインタ数が少なく、データ
容量の少ない有向グラフ(有向グラフテーブル)を作成
することができる。
【0049】(有向グラフ作成処理の具体例) ここでは、図1に示すような有向グラフに対応して、作
成されている図2の辺直列表現の有向グラフテーブルを
参照しながら、有向グラフ(図1)を作成する場合の処
理を順を追って説明する。次に示す処理の括弧で示した
(1からの)数字は、有向グラフテーブルの各行の辺デ
ータに対応している。すなわち、例えば「処理(1)は
第1行の辺1の辺データに対する処理である。 処理(0):初期化処理として、スタックbrothe
rs={},i=1とし、開始節を作成する。init
−finalpの値に基づいて、終了節の場合にはその
印を付ける。 (ステップ40,41,42;図4)、brother
s={} 処理(1):辺0の子辺として、ラベルが“a”の辺1
を作成する。brotherp=tなので、i=1をb
rothersにプッシュする。 (ステップ43,44;図4)、brothers=
{1} 処理(2):辺1の子辺として、ラベルが“b”の辺2
を作成する。この場合、brotherp=nilなの
で、brothersはそのままとする。 (ステップ47,48,43,44;図4)、brot
hers:{1} 処理(3):辺2の子辺として、ラベルが“c”の辺3
を作成する。brotherp=tなので、i=3をb
rothersにプッシュする。 (ステップ47,48,43,44;図4)、brot
hers={3,1} 処理(4):辺3の子辺として、ラベルが“d”の辺4
を作成する。この場合、brotherp=nilなの
で、brothersはそのままとする。 (ステップ47,48,43,44;図4)、brot
hers={3,1} 処理(5):辺4は初参照辺であるが、子辺がないの
で、brothersをポップし、j=3を得る。辺3
の兄弟辺として、ラベルが“x”の辺5を作成する。b
rotherp=nilなので、brothersはそ
のままとする。 (ステップ47,48,49,50,44;図4)、b
rothers={1} 処理(6):辺5の子辺として、ラベルが“j”の辺6
を作成する。この場合、brotherp=nilなの
で、brothersはそのままとする。 (ステップ47,48,43,44;図4)、brot
hers={1} 処理(7):辺6は初参照辺でないので、brothe
rsをポップして、j=1を得る。辺1の兄弟辺とし
て、ラベルが“e”の辺7を作成する。brother
p=tなので、i=7をbrothersにプッシュす
る。 (ステップ47,49,50,44;図4)、brot
hers={7} 処理(8):辺7の子辺として、ラベルが“f”の辺8
を作成する。brotherp=tなので、i=8をb
rothersにプッシュする。 (ステップ47,48,43,44;図4)、brot
hers={8,7} 処理(9):辺8は初参照辺でないので、brothe
rsをポップして、j=8を得る。辺8の兄弟辺とし
て、ラベルが“x”の辺9を作成する。brother
p=nilなので、brothersはそのままとす
る。 (ステップ47,49,50,44;図4)、brot
hers={7} 処理(10):辺9は初参照辺でないので、broth
ersをポップして、j=7を得る。辺7の兄弟辺とし
て、ラベルが“g”の辺10を作成する。brothe
rp=nilなので、brothersはそのままとす
る。 (ステップ47,49,50,44;図4)、brot
hers={} 処理(11):辺10の子辺として、ラベルが“h”の
辺11を作成する。この場合、brotherp=ni
lなので、brothersはそのままとする。 (ステップ47,48,43,44;図4)、brot
hers:{} 処理(12):辺11の子辺として、ラベルが“y”の
辺12を作成する。この場合は、brotherp=t
なので、i=12をbrothersにプッシュする。 (ステップ47,48,43,44:図4)、brot
hers={12} 処理(13):辺12は初参照辺でないので、brot
hersをポップして、j=12を得る。辺12の兄弟
辺として、ラベルが“i”の辺13を作成する。bro
therp=nilなので、brothersはそのま
まとする。 (ステップ47,49,50,44:図4)、brot
hers={} 処理(14):辺13の子辺として、ラベルが“y”の
辺14を作成する。この場合は、brotherp=t
なので、i=14をbrothersにプッシュする。 (ステップ47,48,43,44;図4)、brot
hers={14} 処理(15):辺14は初参照辺でないので、brot
hersをポップして、j=14を得る。辺14の兄弟
辺として、ラベルが“k”の辺15を作成する。bro
therp=nilなので、brothersはそのま
まとする。 (ステップ47,49,50,44;図4)、brot
hers={}
成されている図2の辺直列表現の有向グラフテーブルを
参照しながら、有向グラフ(図1)を作成する場合の処
理を順を追って説明する。次に示す処理の括弧で示した
(1からの)数字は、有向グラフテーブルの各行の辺デ
ータに対応している。すなわち、例えば「処理(1)は
第1行の辺1の辺データに対する処理である。 処理(0):初期化処理として、スタックbrothe
rs={},i=1とし、開始節を作成する。init
−finalpの値に基づいて、終了節の場合にはその
印を付ける。 (ステップ40,41,42;図4)、brother
s={} 処理(1):辺0の子辺として、ラベルが“a”の辺1
を作成する。brotherp=tなので、i=1をb
rothersにプッシュする。 (ステップ43,44;図4)、brothers=
{1} 処理(2):辺1の子辺として、ラベルが“b”の辺2
を作成する。この場合、brotherp=nilなの
で、brothersはそのままとする。 (ステップ47,48,43,44;図4)、brot
hers:{1} 処理(3):辺2の子辺として、ラベルが“c”の辺3
を作成する。brotherp=tなので、i=3をb
rothersにプッシュする。 (ステップ47,48,43,44;図4)、brot
hers={3,1} 処理(4):辺3の子辺として、ラベルが“d”の辺4
を作成する。この場合、brotherp=nilなの
で、brothersはそのままとする。 (ステップ47,48,43,44;図4)、brot
hers={3,1} 処理(5):辺4は初参照辺であるが、子辺がないの
で、brothersをポップし、j=3を得る。辺3
の兄弟辺として、ラベルが“x”の辺5を作成する。b
rotherp=nilなので、brothersはそ
のままとする。 (ステップ47,48,49,50,44;図4)、b
rothers={1} 処理(6):辺5の子辺として、ラベルが“j”の辺6
を作成する。この場合、brotherp=nilなの
で、brothersはそのままとする。 (ステップ47,48,43,44;図4)、brot
hers={1} 処理(7):辺6は初参照辺でないので、brothe
rsをポップして、j=1を得る。辺1の兄弟辺とし
て、ラベルが“e”の辺7を作成する。brother
p=tなので、i=7をbrothersにプッシュす
る。 (ステップ47,49,50,44;図4)、brot
hers={7} 処理(8):辺7の子辺として、ラベルが“f”の辺8
を作成する。brotherp=tなので、i=8をb
rothersにプッシュする。 (ステップ47,48,43,44;図4)、brot
hers={8,7} 処理(9):辺8は初参照辺でないので、brothe
rsをポップして、j=8を得る。辺8の兄弟辺とし
て、ラベルが“x”の辺9を作成する。brother
p=nilなので、brothersはそのままとす
る。 (ステップ47,49,50,44;図4)、brot
hers={7} 処理(10):辺9は初参照辺でないので、broth
ersをポップして、j=7を得る。辺7の兄弟辺とし
て、ラベルが“g”の辺10を作成する。brothe
rp=nilなので、brothersはそのままとす
る。 (ステップ47,49,50,44;図4)、brot
hers={} 処理(11):辺10の子辺として、ラベルが“h”の
辺11を作成する。この場合、brotherp=ni
lなので、brothersはそのままとする。 (ステップ47,48,43,44;図4)、brot
hers:{} 処理(12):辺11の子辺として、ラベルが“y”の
辺12を作成する。この場合は、brotherp=t
なので、i=12をbrothersにプッシュする。 (ステップ47,48,43,44:図4)、brot
hers={12} 処理(13):辺12は初参照辺でないので、brot
hersをポップして、j=12を得る。辺12の兄弟
辺として、ラベルが“i”の辺13を作成する。bro
therp=nilなので、brothersはそのま
まとする。 (ステップ47,49,50,44:図4)、brot
hers={} 処理(14):辺13の子辺として、ラベルが“y”の
辺14を作成する。この場合は、brotherp=t
なので、i=14をbrothersにプッシュする。 (ステップ47,48,43,44;図4)、brot
hers={14} 処理(15):辺14は初参照辺でないので、brot
hersをポップして、j=14を得る。辺14の兄弟
辺として、ラベルが“k”の辺15を作成する。bro
therp=nilなので、brothersはそのま
まとする。 (ステップ47,49,50,44;図4)、brot
hers={}
【0050】(有向グラフテーブルを利用する入力記号
解析処理の具体例1)ここでは、入力記号が“ghy
j”の場合に、有向グラフテーブルの辺データを順次に
辿り、その入力記号の文字列を解析する場合の処理を説
明する。入力された文字列の入力記号から最初の文字を
取り出し、現在の入力記号とし、有向グラフテーブルの
最初の辺データを現在の辺として解析処理を開始する。
(ステップ51,52;図5) 処理(1): 入力記号“g”と辺1のラベル“a”を
比較すると等しくないので、辺1からその兄弟辺の辺7
を参照する。なお、兄弟辺のポインタが明示されていな
い場合には、兄弟辺までの全ての辺(子辺)を順に辿
る。(ステップ53,58,59;図5) 処理(2): 入力記号“g”と辺7のラベル“e”を
比較すると等しくないので、更に、辺7からその兄弟辺
の辺10を参照する。(ステップ53,58,59;図
5) 処理(3): 入力記号“g”と辺10のラベル“g”
を比較すると等しいので、次にその子辺の辺11を参照
する。辺10は、初参照辺なので子辺11はその直後に
ある。(ステップ53,54,55,56,57;図
5) 処理(4): 入力記号“h”と辺11のラベル“h”
を比較する。この比較結果は等しいので、次にその子辺
の辺12を参照する。辺11は、初参照辺なので子辺1
2はその直後にある。(ステップ53,54,55,5
6,57;図5) 処理(5): 入力記号“y”と辺12のラベル“y”
を比較すると等しいので、次にその子辺を参照する。し
かし、辺12は再参照辺なので、その子辺はその直後に
なく、辺12が指示する節と、同じ節を同じく指示する
初参照辺となっている辺5から、その子辺となっている
辺6を得て、辺6を参照する。(ステップ53,54,
55,56,57;図5) 処理(6): 入力記号“j”と辺6のラベル“j”を
比較する。この比較結果は等しいので、次にその子辺を
参照する。この場合も、前述と同様に、辺6は再参照辺
なので、その子辺はその直後になく、辺6が指示する節
と、同じ節を同じく指示する初参照辺となっている辺4
を得て、辺4からその子辺となっている辺を次に得よう
とするが、辺4が指示する節は終了節となっており、該
当する辺は存在しない。(ステップ53,54;図5) 処理(7): 入力記号がなくなったので結果を判定す
る。現在の辺が指示する節は終了節となっているので、
入力記号列“ghyj”は受理される。(ステップ5
5,60;図5)
解析処理の具体例1)ここでは、入力記号が“ghy
j”の場合に、有向グラフテーブルの辺データを順次に
辿り、その入力記号の文字列を解析する場合の処理を説
明する。入力された文字列の入力記号から最初の文字を
取り出し、現在の入力記号とし、有向グラフテーブルの
最初の辺データを現在の辺として解析処理を開始する。
(ステップ51,52;図5) 処理(1): 入力記号“g”と辺1のラベル“a”を
比較すると等しくないので、辺1からその兄弟辺の辺7
を参照する。なお、兄弟辺のポインタが明示されていな
い場合には、兄弟辺までの全ての辺(子辺)を順に辿
る。(ステップ53,58,59;図5) 処理(2): 入力記号“g”と辺7のラベル“e”を
比較すると等しくないので、更に、辺7からその兄弟辺
の辺10を参照する。(ステップ53,58,59;図
5) 処理(3): 入力記号“g”と辺10のラベル“g”
を比較すると等しいので、次にその子辺の辺11を参照
する。辺10は、初参照辺なので子辺11はその直後に
ある。(ステップ53,54,55,56,57;図
5) 処理(4): 入力記号“h”と辺11のラベル“h”
を比較する。この比較結果は等しいので、次にその子辺
の辺12を参照する。辺11は、初参照辺なので子辺1
2はその直後にある。(ステップ53,54,55,5
6,57;図5) 処理(5): 入力記号“y”と辺12のラベル“y”
を比較すると等しいので、次にその子辺を参照する。し
かし、辺12は再参照辺なので、その子辺はその直後に
なく、辺12が指示する節と、同じ節を同じく指示する
初参照辺となっている辺5から、その子辺となっている
辺6を得て、辺6を参照する。(ステップ53,54,
55,56,57;図5) 処理(6): 入力記号“j”と辺6のラベル“j”を
比較する。この比較結果は等しいので、次にその子辺を
参照する。この場合も、前述と同様に、辺6は再参照辺
なので、その子辺はその直後になく、辺6が指示する節
と、同じ節を同じく指示する初参照辺となっている辺4
を得て、辺4からその子辺となっている辺を次に得よう
とするが、辺4が指示する節は終了節となっており、該
当する辺は存在しない。(ステップ53,54;図5) 処理(7): 入力記号がなくなったので結果を判定す
る。現在の辺が指示する節は終了節となっているので、
入力記号列“ghyj”は受理される。(ステップ5
5,60;図5)
【0051】(有向グラフテーブルを利用する入力記号
解析処理の具体例2)ここでは、入力記号が“ghk”
の場合に、有向グラフテーブルの辺データを順次に辿
り、その入力記号の文字列を解析する場合の処理を説明
する。入力された文字列の入力記号から最初の文字を取
り出し、現在の文字と入力記号とし、有向グラフテーブ
ルの最初の辺データを現在の辺として解析処理を開始す
る。 処理(1): 入力記号“g”と辺1のラベル“a”を
比較すると等しくないので、辺1からその兄弟辺の辺7
を参照する。(ステップ53,58,59;図5) 処理(2): 入力記号“g”と辺7のラベル“e”を
比較すると等しくないので、更に、辺7からその兄弟辺
の辺10を参照する。(ステップ53,58,59;図
5) 処理(3): 入力記号“g”と辺10のラベル“g”
を比較すると等しいので、次にその子辺の辺11を参照
する。(ステップ53,54,55,56,57;図
5) 処理(4): 入力記号“h”と辺11のラベル“h”
を比較する。この比較結果は等しいので、次にその子辺
の辺12を参照する。(ステップ53,54,55,5
6,57;図5) 処理(5): 入力記号“k”と辺12のラベル“y”
を比較すると等しくないので、次には、辺12から、そ
の兄弟辺である辺13を参照する。(ステップ53,5
8,59;図5) 処理(6): 入力記号“k”と辺13のラベル“i”
を比較する。この比較結果も等しくないので、更に辺1
3からその兄弟辺を参照しようとするが、存在しないの
で、この場合は、入力記号列“ghk”は拒絶される。
(ステップ53,58;図5)
解析処理の具体例2)ここでは、入力記号が“ghk”
の場合に、有向グラフテーブルの辺データを順次に辿
り、その入力記号の文字列を解析する場合の処理を説明
する。入力された文字列の入力記号から最初の文字を取
り出し、現在の文字と入力記号とし、有向グラフテーブ
ルの最初の辺データを現在の辺として解析処理を開始す
る。 処理(1): 入力記号“g”と辺1のラベル“a”を
比較すると等しくないので、辺1からその兄弟辺の辺7
を参照する。(ステップ53,58,59;図5) 処理(2): 入力記号“g”と辺7のラベル“e”を
比較すると等しくないので、更に、辺7からその兄弟辺
の辺10を参照する。(ステップ53,58,59;図
5) 処理(3): 入力記号“g”と辺10のラベル“g”
を比較すると等しいので、次にその子辺の辺11を参照
する。(ステップ53,54,55,56,57;図
5) 処理(4): 入力記号“h”と辺11のラベル“h”
を比較する。この比較結果は等しいので、次にその子辺
の辺12を参照する。(ステップ53,54,55,5
6,57;図5) 処理(5): 入力記号“k”と辺12のラベル“y”
を比較すると等しくないので、次には、辺12から、そ
の兄弟辺である辺13を参照する。(ステップ53,5
8,59;図5) 処理(6): 入力記号“k”と辺13のラベル“i”
を比較する。この比較結果も等しくないので、更に辺1
3からその兄弟辺を参照しようとするが、存在しないの
で、この場合は、入力記号列“ghk”は拒絶される。
(ステップ53,58;図5)
【0052】以上に、説明したように、本実施例による
有向グラフテーブルによれば、データ構造を辺直列表現
のレコードデータ(エントリ)とするので、ポインタ数
が少なくなっており、子辺へのポインタ数が「辺数−節
数+1」以下となっている。すなわち、有向グラフテー
ブルの辺データにおいて、各々の初参照辺は、ポインタ
を記録する必要がない。初参照辺はそれが指す節に1対
1に対応し、そのような節は、有向グラフ全体で開始節
を除く、全ての節となっている。したがって、子辺への
ポインタを必要とする辺数は「辺数−節数+1」以下と
なる。
有向グラフテーブルによれば、データ構造を辺直列表現
のレコードデータ(エントリ)とするので、ポインタ数
が少なくなっており、子辺へのポインタ数が「辺数−節
数+1」以下となっている。すなわち、有向グラフテー
ブルの辺データにおいて、各々の初参照辺は、ポインタ
を記録する必要がない。初参照辺はそれが指す節に1対
1に対応し、そのような節は、有向グラフ全体で開始節
を除く、全ての節となっている。したがって、子辺への
ポインタを必要とする辺数は「辺数−節数+1」以下と
なる。
【0053】
【発明の効果】以上に述べたように、本発明の有向グラ
フ生成装置によれば、有向グラフテーブルを辺直列表現
によるデータ構造のテーブルとして、有向グラフを表現
する場合のポインタ数を減少できるので、有向グラフに
よりネットワークのデータ構造を表現してデータ処理を
行う場合に、メモリスペースを効率よく利用して少ない
データ量で有向グラフを表現し、有向グラフを作成し、
それを利用することができるという効果を奏する。
フ生成装置によれば、有向グラフテーブルを辺直列表現
によるデータ構造のテーブルとして、有向グラフを表現
する場合のポインタ数を減少できるので、有向グラフに
よりネットワークのデータ構造を表現してデータ処理を
行う場合に、メモリスペースを効率よく利用して少ない
データ量で有向グラフを表現し、有向グラフを作成し、
それを利用することができるという効果を奏する。
【図1】 図1は有向グラフを用いたネットワークの節
と辺の関係を図式的に示す図、
と辺の関係を図式的に示す図、
【図2】 図2は図1の有向グラフを表現している辺直
列表現によるデータ構造の有向グラフテーブルを示す
図、
列表現によるデータ構造の有向グラフテーブルを示す
図、
【図3】 図3は本発明の一実施例にかかる有向グラフ
生成装置の要部の構成を示すブロック図、
生成装置の要部の構成を示すブロック図、
【図4】 図4は有向グラフ生成処理部35が行う有向
グラフ作成処理の処理フローを示すフローチャート、
グラフ作成処理の処理フローを示すフローチャート、
【図5】 図5は文字列解析処理部36が行う入力記号
列解析処理の処理フローを示すフローチャート、
列解析処理の処理フローを示すフローチャート、
【図6】 図6は兄弟辺に対するポインタを含めて構成
した有向グラフテーブルの一例を説明する図、
した有向グラフテーブルの一例を説明する図、
【図7】 図7は兄弟辺に対するポインタおよび同一ラ
ベル指示フラグを含めて構成した有向グラフテーブルの
一例を説明する図、
ベル指示フラグを含めて構成した有向グラフテーブルの
一例を説明する図、
【図8】 図8は従来における有向グラフによるネット
ワーク構造の表現方法により、その有向グラフのネット
ワークの節と辺の関係を図式的に示す図、
ワーク構造の表現方法により、その有向グラフのネット
ワークの節と辺の関係を図式的に示す図、
【図9】 図9は従来における有向グラフによるネット
ワーク構造の表現方法により、その有向グラフのネット
ワークを表現しているデータ要素の集合のテーブルを示
す図である。
ワーク構造の表現方法により、その有向グラフのネット
ワークを表現しているデータ要素の集合のテーブルを示
す図である。
10…有向グラフのネットワーク表現、11…開始節、
12…終了節、13…終了節、14,15,16,17
…辺、20…有向グラフテーブル、21…辺番号フィー
ルド、22…ラベルフィールド、23…firstpフラグフ
ィールド、24…finalpフラグフィールド、25…sonp
フラグフィールド、26…brotherpフラグフィールド、
27…ポインタフィールド、28…init-finalpフラグ
フィールド、30…有向グラフテーブル、31…入力装
置、32…データ処理装置、33…記憶装置、34…出
力装置、35…有向グラフ生成処理部、36…文字列解
析処理部、61有向グラフテーブル(第1の変形例)、
62…brotherフィールド、71…有向グラフテーブル
(第2の変形例)、72…label-eqフラグフィールド、
73…ポインタフィールド、80…有向グラフのネット
ワーク表現、81…開始節、82…終了節、83…終了
節、84,85,86…辺、90…データテーブル、9
1…節番号フィール、92…終了節フラグフィールド、
93…辺数フィールド、94…ラベルフィールド、95
…ポインタフィールド。
12…終了節、13…終了節、14,15,16,17
…辺、20…有向グラフテーブル、21…辺番号フィー
ルド、22…ラベルフィールド、23…firstpフラグフ
ィールド、24…finalpフラグフィールド、25…sonp
フラグフィールド、26…brotherpフラグフィールド、
27…ポインタフィールド、28…init-finalpフラグ
フィールド、30…有向グラフテーブル、31…入力装
置、32…データ処理装置、33…記憶装置、34…出
力装置、35…有向グラフ生成処理部、36…文字列解
析処理部、61有向グラフテーブル(第1の変形例)、
62…brotherフィールド、71…有向グラフテーブル
(第2の変形例)、72…label-eqフラグフィールド、
73…ポインタフィールド、80…有向グラフのネット
ワーク表現、81…開始節、82…終了節、83…終了
節、84,85,86…辺、90…データテーブル、9
1…節番号フィール、92…終了節フラグフィールド、
93…辺数フィールド、94…ラベルフィールド、95
…ポインタフィールド。
Claims (1)
- 【請求項1】 ある節を最初に指示する辺である初参照
辺,対象とする辺が指示する節から発する最初の辺であ
る子辺,および対象とする辺と同一の節から発して隣接
する辺である兄弟辺により構成される構造の有向グラフ
を作成する有向グラフ作成装置において、 初参照辺であるか否かを指示する初参照辺フラグと、辺
のラベルデータと、当該辺を発する節が終了節であるか
否かを指示する終了節フラグと、子辺の有無を指示する
子辺フラグと、兄弟辺の有無を指示する兄弟辺フラグ
と、子辺の直前の初参照辺を指示するポインタを記録す
る各フィールドデータから構成される各辺のレコードデ
ータを、その記録順として、初参照辺、前記初参照辺の
子辺、前記子辺に子辺がある場合の子辺、前記子辺に子
辺がなく兄弟辺がある場合の当該兄弟辺の順序に記録し
たレコードテーブルと、 前記レコードテーブルにおける各辺のレコードデータを
記録順に読み込み、初参照辺、子辺および兄弟辺により
構成される構造の有向グラフのネットワークを作成する
有向グラフ作成手段 を備える ことを特徴とする有向グラ
フ作成装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP4336800A JP2795110B2 (ja) | 1992-11-25 | 1992-11-25 | 有向グラフ作成装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP4336800A JP2795110B2 (ja) | 1992-11-25 | 1992-11-25 | 有向グラフ作成装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH06162088A JPH06162088A (ja) | 1994-06-10 |
JP2795110B2 true JP2795110B2 (ja) | 1998-09-10 |
Family
ID=18302805
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP4336800A Expired - Fee Related JP2795110B2 (ja) | 1992-11-25 | 1992-11-25 | 有向グラフ作成装置 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2795110B2 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3346014B2 (ja) * | 1994-01-25 | 2002-11-18 | 富士ゼロックス株式会社 | 有向グラフ編集処理装置 |
JPH10319990A (ja) * | 1997-05-20 | 1998-12-04 | Denso Corp | 単語辞書データの圧縮方法、単語辞書データの展開方法、音声認識装置、音声認識機能付きナビゲーションシステム及び記録媒体 |
JPH11203324A (ja) * | 1998-01-13 | 1999-07-30 | Tokyo Electron Ltd | データ処理方法及びデータ検索方法 |
JP3277906B2 (ja) | 1998-12-18 | 2002-04-22 | 日本電気株式会社 | 階層構造作成方法及び装置 |
-
1992
- 1992-11-25 JP JP4336800A patent/JP2795110B2/ja not_active Expired - Fee Related
Non-Patent Citations (1)
Title |
---|
守屋,「コンピュータサイエンスのための離散数学」,サイエンス社 (平4−5−25),P.126−130 |
Also Published As
Publication number | Publication date |
---|---|
JPH06162088A (ja) | 1994-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4413286B2 (ja) | エッジデータ構造を統一する方法 | |
JP4886693B2 (ja) | 情報処理方法、情報処理装置および情報処理プログラム | |
US7962494B2 (en) | Method, information processing apparatus, and program for generating array | |
US6016492A (en) | Forward extensible property modifiers for formatting information in a program module | |
US7937399B2 (en) | Method, information processing apparatus, and program of searching for, aggregating and sorting trees | |
JP2729025B2 (ja) | データ処理システムにおけるフォント導出の方法 | |
JP4712718B2 (ja) | 配列の生成方法、及び、配列生成プログラム | |
CN112667860A (zh) | 一种子图匹配方法、装置、设备及存储介质 | |
KR20050020927A (ko) | 구조화 문서의 데이터를 검색하는 장치 및 방법 | |
CN114168608A (zh) | 一种用于更新知识图谱的数据处理系统 | |
JP3205406B2 (ja) | 参照対象変数決定処理方法および翻訳処理システム | |
JPH05189490A (ja) | 関数結果をセーブし検索する方法と装置 | |
US20090019067A1 (en) | Method, apparatus, and program for inserting node | |
WO2022091536A1 (ja) | 意味表現解析システム及び意味表現解析方法 | |
JPH10105551A (ja) | プロセッサを用いて第1グラフの単一化の一部として第1節と第2節を結合する方法 | |
JP2795110B2 (ja) | 有向グラフ作成装置 | |
US11074401B2 (en) | Merging delta object notation documents | |
CN115016770A (zh) | 一种数据处理方法、装置、设备及存储介质 | |
US20210124799A1 (en) | Generation and application of object notation deltas | |
CN115244539A (zh) | 单词或词段词元化的推断方法 | |
JP3346014B2 (ja) | 有向グラフ編集処理装置 | |
Engelfriet et al. | The equivalence of bottom-up and top-down tree-to-graph transducers | |
JP2010020643A (ja) | データファイル操作システム、そのプログラム | |
JP2001134596A (ja) | 構造化文書管理装置および構造化文書検索方法 | |
JP2722684B2 (ja) | ファイルシステムの検索装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
LAPS | Cancellation because of no payment of annual fees |