JP4082615B2 - 判定装置、判定方法、及びプログラム - Google Patents

判定装置、判定方法、及びプログラム Download PDF

Info

Publication number
JP4082615B2
JP4082615B2 JP2004378117A JP2004378117A JP4082615B2 JP 4082615 B2 JP4082615 B2 JP 4082615B2 JP 2004378117 A JP2004378117 A JP 2004378117A JP 2004378117 A JP2004378117 A JP 2004378117A JP 4082615 B2 JP4082615 B2 JP 4082615B2
Authority
JP
Japan
Prior art keywords
regular expression
element data
series
sequences
subset
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
Application number
JP2004378117A
Other languages
English (en)
Other versions
JP2006185176A (ja
Inventor
晶彦 戸澤
道治 工藤
真 村田
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to JP2004378117A priority Critical patent/JP4082615B2/ja
Publication of JP2006185176A publication Critical patent/JP2006185176A/ja
Application granted granted Critical
Publication of JP4082615B2 publication Critical patent/JP4082615B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、判定装置、判定方法、及びプログラムに関する。特に、本発明は、要素データの系列の集合を規定する第1の正規表現Lが、第2の正規表現Rに包含されるか否かを判定する判定装置、判定方法、及びプログラムに関する。
近年、電子的な文書管理の効率化等を目的として、XML(Extensible Markup Language)に基づくXML文書が広く用いられるようになってきている。このため、膨大な量のXML文書を処理する必要性が高まっており、その処理を効率化する技術が注目されている。例えば、XMLのスキーマ言語は、XML文書の取り得る構造を記述したものであり、XML文書がその構造に準拠しているか否かを判定する技術に用いられる(非特許文献4参照。)。この技術の応用範囲は非常に広く、例えば通信により受信したデータの誤りチェックや、データベース等におけるデータの妥当性チェック等に用いられる。
従来、あるスキーマ言語により規定される構造が、他のスキーマ言語により規定される構造に包含されるか否かを判定する技術が研究されている(非特許文献1及び2参照。)。この技術は、スキーマ言語の互換性チェックや、XMLプログラミングにおける型検査等に適用可能である。例えば、第1のスキーマ言語に準拠したデータがデータベースに格納されている場合において、これらのデータが第2のスキーマ言語にも準拠していることを証明するには、第1のスキーマ言語が第2のスキーマ言語に包含されることだけを調べればよい。即ちこれにより、データベース中の膨大なデータについての妥当性チェックに代えてスキーマ言語同士の包含チェックを1回だけ行えばよいので、効率がよい。
非特許文献3については後述する。
John E. Hopcroft and Jeffery D. Ullman, Introduction to Automata Theory, Languages and Computation I, Addison Wesley, 1979 Haruo Hosoya and Jerome Vouillon and Benjamin C. Pierce, Regular Expression Types for XML, Proceedings of the International Conference on Functional Programming (ICFP), 11-22, Sep., 2000 S. Minato, Zero-Suppressed BDDs for Set Manipulation in Combinatorial Problems, Proceedings of the 30th ACM/IEEE Design Automation Conference, 272-277, 1993 XML Schema, World Wide Web Consortium, 2000
スキーマ言語であるXML schema(非特許文献4参照。)には、通常の正規表現には含まれないxs:allという演算子が含まれている。例えば、XML schemaにおいては、以下のような記載が可能である。
<xs:all>
<xs:element name="a" minOccurs="1" maxOccurs="1"/>
<xs:element name="b" minOccurs="0" maxOccurs="1"/>
<xs:element name="c" minOccurs="1" maxOccurs="1"/>
</xs:all>
これは、要素aを1個、要素bを1個又は0個、及び、要素cを1個含み、他の要素は含まない全ての系列の集合を示すスキーマ言語である。このスキーマ言語は、指定された2以上の要素データを任意の順序で配列した系列の集合を示す存在演算子&を用いて、以下の正規表現として表すことができる。
a&(b|ε)&c
非特許文献1又は2の技術は、スキーマ言語を、XML文書中の現れる要素や属性等の配列を示す正規表現(又は木正規表現)とみなして、複数の正規表現が互いに包含関係にあるか否かの判断技術を応用している。しかしながら、これらの技術の何れもが通常の正規表現のみを対象としており、xs:allが含まれた正規表現についての包含関係を判定することはできなかった。
なお、xs:all演算子を、正規表現の既存の演算子に書き換えることにより、非特許文献1又は2の技術を応用可能とも考えられる。例えば、a&b&.....&zという正規表現は、以下のように書き換えることができる。
a&b&. ..&z
= a, (b&….&z) | b,(a&c&… &z) | … | z,(a&…&y)
更に、第1項は、以下のように展開される。
a, (b&….&z)
= a, b, (c&…&z) | a, c,(b&d&….&z) | … | a, z,(b&…&y)
同様に、第2項以降もそれぞれ展開することができる。
しかしながら、このような書き換えによって展開される項の数は、要素の数の増加に応じて指数関数的に増加し、組み合わせ爆発を起こす。このような書き換えによって既存の技術を応用したのでは、包含判定の計算が現実的な時間で終了しない場合があり、適切でない。
そこで本発明は、上記の課題を解決することのできる判定装置、判定方法、及びプログラムを提供することを目的とする。この目的は特許請求の範囲における独立項に記載の特徴の組み合わせにより達成される。また従属項は本発明の更なる有利な具体例を規定する。
上記課題を解決するために、本発明においては、要素データの系列の集合を規定する第1の正規表現Lが、第2の正規表現Rに包含されるか否かを判定する判定装置であって、正規表現L及び正規表現Rの各々が、指定した2以上の要素データを任意の順序で配列した系列の集合を示す存在演算子を含むか否かを判断する存在演算子包含判断部と、正規表現Lが存在演算子を含まず、かつ、正規表現Rが存在演算子を含むことを条件として、正規表現Rに包含されない全ての系列の集合を示す補言語を算出する補言語算出部と、正規表現Lにより規定される要素データの系列の集合と、正規表現Rの補言語により規定される要素データの系列の集合との共通部分が空集合であることを条件として、正規表現Lが正規表現Rに包含されると判定する包含判定部とを備える判定装置、当該判定装置を用いた判定方法、及びコンピュータを当該判定装置として機能させるプログラムを提供する。
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションもまた、発明となりうる。
本発明によれば、新たな演算子を含む正規表現について、その正規表現によって規定される系列の集合が他の正規表現によって規定される系列の集合を包含するか否かを効率的に判定することができる。
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図1は、判定装置10の機能を機能ブロックに分類して示す。判定装置10は、要素データの系列の集合を規定する第1の正規表現Lが、第2の正規表現Rに包含されるか否かを判定する。この際、正規表現L及びRの少なくとも何れか一方が、指定された2以上の要素データを任意の順序で配列した系列の集合を示す存在演算子&を含む場合であっても、正確かつ効率的に包含の判定を行うことを目的とする。
本実施例の説明にあたり、正規表現L及びRは、上記非特許文献4のXML schemaにより記述可能な要素データの系列の集合を示すものとする。具体的には、正規表現L及びRに含まれる存在演算子&は、以下の規則に従う。
(1)存在演算子&は、演算子の入れ子構造の最上位階層のみで用いられる。例えば、(a&b)*、(a&b),c等の表現は許されない
(2)存在演算子&の指定対象が要素データ、又は、要素データ若しくは空系列の何れかである。例えば、a又は(a|ε)という表現のみが指定対象として許可され、a*&bや(a,b)&cは許されない
(3)存在演算子&により複数の同一の要素データが指定されない。例えば、a&a等の表現は許されない
判定装置10は、存在演算子包含判断部100と、入替可能言語判断部110と、補言語算出部120と、順序規定系列生成部130と、制約部分集合生成部140と、閉包集合生成部150と、包含判定部160とを備える。存在演算子包含判断部100は、正規表現L及び正規表現Rの各々が存在演算子を含みか否かを判断する。入替可能言語判断部110は、正規表現Lのみが存在演算子を含む場合に、正規表現Rが、当該正規表現により規定される集合中の全ての系列について、その系列中の要素データを並べ替えた他の何れの系列もその集合に含まれる入替可能言語であるか否かを判断する。
例えば、入替可能言語判断部110は、正規表現Rが、系列中に要素データを配列する順序を規定する順序規定演算子を含まないことを条件として、正規表現Rを入替可能言語であると判断してもよい。なお、上述した、正規表現L及びRに表記可能な存在演算子&の規則によれば、存在演算子&を含む正規表現は入替可能言語である。従って、正規表現L及び正規表現Rの何れもが存在演算子を含む場合には、正規表現L及び正規表現Rの何れも入替可能言語である。また、正規表現Lのみが存在演算子&を含み、正規表現Rが入替可能言語であると入替可能言語判断部110により判断された場合には、正規表現L及び正規表現Rの何れも入替可能言語である。
補言語算出部120は、正規表現Lが存在演算子&を含まず、かつ、正規表現Rが存在演算子&を含むことを条件として、正規表現Rに包含されない全ての系列の集合を示す補言語を算出する。順序規定系列生成部130は、正規表現L及び正規表現Rの何れもが入替可能言語である場合において、正規表現Lにより規定される系列の集合のうち、配列される要素データが予め定められた順序に従う順序規定系列の集合を求める。更に、順序規定系列生成部130は、正規表現Rにより規定される系列の集合のうち、配列される要素データが当該予め定められた順序に従う順序規定系列の集合を求める。
制約部分集合生成部140は、正規表現Lが存在演算子&を含み、かつ正規表現Rが入替可能言語でない場合に、正規表現Rにより規定される集合の制約部分集合を生成する。正規表現Rの制約部分集合とは、正規表現Rにより規定される系列の部分集合であって、当該部分集合に含まれる全ての系列について当該系列中の要素データを並べ替えた結果得られる全ての並べ替え系列を含み、かつ、当該系列中の全ての要素データが最大1回のみ出現する最大の部分集合をいう。
具体的な処理として、制約部分集合生成部140は、まず、正規表現Rに包含されない全ての系列の集合を規定する正規表現Rの否定正規表現〜Rを生成する。次に、制約部分集合生成部140は、否定正規表現〜Rの閉包集合を閉包集合生成部150により生成させる。そして、制約部分集合生成部140は、否定正規表現〜Rの閉包集合を、全ての要素データが最大1回のみ出現する全ての系列の集合から除外した系列の集合を生成し、制約部分集合とする。この際、閉包集合生成部150は、入力された正規表現(例えばこの例では否定正規表現〜R)に基づいて、当該正規表現が示す系列中の要素データを並べ替えた結果得られる全ての並べ替え系列を含み、かつ当該系列中の全ての要素データが最大1回のみ出現する系列の集合を生成し、当該正規表現の閉包集合とする。
包含判定部160は、正規表現Lが、正規表現Rに包含されるか否かを判定する。この判定の処理は、正規表現L及びRが存在演算子&を含むか否か、及び、入替可能言語であるか否かによって異なる。正規表現Lが存在演算子&を含まず、かつ、正規表現Rが存在演算子&を含む場合には、包含判定部160は、正規表現Lにより規定される要素データの系列の集合と正規表現Rの補言語により規定される要素データの系列の集合との共通部分が空集合であることを条件として、正規表現Lが正規表現Rに包含されると判定する。
また、正規表現L及び正規表現Rの何れもが入替可能言語である場合において、包含判定部160は、正規表現Lの順序規定系列の集合が、正規表現Rの順序規定系列の集合に包含されることを条件として、正規表現Lが正規表現Rに包含されると判定する。また、正規表現Lが存在演算子&を含み、かつ正規表現Rが入替可能言語でない場合には次の処理となる。まず、包含判定部160は、正規表現Lの閉包集合を閉包集合生成部150により生成させる。そして、包含判定部160は、正規表現Lの閉包集合が、正規表現Rの制約部分集合に含まれることを条件として、正規表現Lが正規表現Rに含まれると判定する。
図2は、判定装置10により正規表現Lが正規表現Rに含まれるか否かが判定される処理のフローチャートを示す。判定装置10は、正規表現L及び正規表現Rを入力する(S200)。そして、存在演算子包含判断部100は、正規表現L及び正規表現Rの各々が存在演算子を含むか否かを判断する(S210)。正規表現L及び正規表現Rの何れもが存在演算子&を含まない場合については、従来公知の技術により包含判定が可能であるので説明を省略する。
正規表現Rのみが存在演算子&を含み、かつ、正規表現Lが存在演算子&を含まない場合に(S210:Rのみ含む)、補言語算出部120は、正規表現Rの補言語を算出する(S220)。正規表現Rを一般化したa1&a2&・・・&anについて、その補言語を算出する具体例を述べる。まず、以下の右辺に示す各々の正規表現を、その左辺に示す表現に置き換える置き換え規則(1)を設ける。
one(a) = (Σ-a)*,a,(Σ-a)*
zero_or_one(a) = (Σ-a)*,(ε|a,(Σ-a)*)
zero_or_many(a) =(Σ-a)*,(ε|a,Σ*,a,Σ*) …規則(1)
one_or_many(a) =Σ*,a,Σ*
many(a) =Σ*,a,Σ*,a,Σ*
これらの置き換え規則(1)は、それぞれ、要素データaを、「一回のみ」、「0回か一回」、「0回か2回以上」、「1回以上」、「2回以上」含む系列を規定する正規表現を示す。ここで(Σ-a)*は、a以外の要素データの任意の繰り返しを表す。
これらの置き換え規則を用いると、以下の式(2)に示すように、正規表現Rの補言語~Rを、存在演算子&を含まない正規表現で表すことができる。
~R = Σ* - R
= Σ* - ((a1|…|an)* ∩ one(a1) ∩ one(a2) ∩ … ∩ one(an)) …式(2)
= one_or_many(Σ-{a1,…,an}) | zero_or_many(a1) | … | zero_or_many(an)
なお、さらにもし正規表現Rがa1& … & (ai|ε)& … & an のように (ai|ε)という正規表現を含んでいるとしたら、上記の式の2行目で one(ai) の代わりに zero_or_one(ai) を使うということなので、3行目では対応する部分のzero_or_many(ai)に代えてmany (ai)を用いればよい。
続いて、包含判定部160は、正規表現Lにより規定される要素データの系列の集合と正規表現Rの補言語により規定される要素データの系列の集合との共通部分が空集合であることを条件として、正規表現Lが正規表現Rに包含されると判定する(S225)。正規表現L、及び、正規表現Rの補言語の何れもが存在演算子を含まないのであるから、この判定方法は従来公知の正規表現の演算により行うことができる。
一方、正規表現L及び正規表現Rの何れもが存在演算子を含む場合に(S210:LもRも含む)、正規表現L及び正規表現Rの何れもが入替可能言語であるので、順序規定系列生成部130は、正規表現L及び正規表現Rの順序規定系列の集合を生成する(S240)。例えば正規表現Lが(a&b)であり、正規表現Rが(a&b&(c|ε))である場合に、順序規定系列生成部130は、これらの正規表現に含まれる系列の集合のうち、要素データa、b、cがアルファベットの辞書順で出現する系列の集合を生成する。
例えば、要素データa、b、cのみが出現する系列において、順序規定系列生成部130は、正規表現L∩a*b*c*の演算を行った結果、正規表現Lの順序規定系列の集合として(a,b)を生成する。また、順序規定系列生成部130は、正規表現R∩a*b*c*の演算を行った結果、正規表現Rの順序規定系列の集合として(a,b,(c|ε))を生成する。より詳細には、存在演算子&により指定される要素データをアルファベット順に並べ替えた後、存在演算子&を順序規定演算子「,」に置き換えれば順序規定系列の集合が求められる。そして、包含判定部160は、正規表現Lの順序規定系列の集合が、正規表現Rの順序規定系列の集合に包含されることを条件として、正規表現Lが正規表現Rに包含されると判定する(S245)。
一方、正規表現Lのみが存在演算子&を含み、正規表現Rが存在演算子&を含まない場合に(S210:Lのみ含む)、入替可能言語判断部110は、正規表現Rが入替可能言語か否かを判断する。正規表現Rが入替可能言語である場合に(S230:入替可)、正規表現L及び正規表現Rの何れもが入替可能言語であるので、判定装置10は、S240に処理を移す。一方、正規表現Rが入替可能言語でない場合に(S230:入替不可)、制約部分集合生成部140は、次の処理を行う。
制約部分集合生成部140は、正規表現Rにより規定される集合の制約部分集合を生成する(S250)。制約部分集合をrestrict(R)とする。具体的には、制約部分集合生成部140は、まず、正規表現Rに包含されない全ての系列の集合を規定する正規表現Rの否定正規表現〜Rを生成する。いま、正規表現Rは存在演算子&を含まないので、正規表現Rの否定正規表現の算出は、従来公知の方法により実現できる(例えば、上述の非特許文献1参照。)。特に、本実施例が対象とするXML Schemaにおいては常に「決定的」正規表現が使われるため、否定正規表現〜Rを計算するための決定的多項式時間のアルゴリズムが知られている。
次に、制約部分集合生成部140は、否定正規表現〜Rの閉包集合を閉包集合生成部150により生成させる。具体的には、閉包集合生成部150は、入力された正規表現(例えばこの例では否定正規表現〜R)に基づいて、当該正規表現が示す系列中の要素データを並べ替えた結果得られる全ての並べ替え系列を含み、かつ当該系列中の全ての前記要素データが最大1回のみ出現する系列の集合を生成し、当該正規表現の閉包集合とする。例えば、正規表現を入力としてその正規表現の閉包集合を求める関数coverは、以下の式(3)で定義される。
cover(a) = {{a}| a}
cover(ε) = {{}}
cover(E,E') = cover(E&E') = …式(3)
{X ∪ Y | X ∈ cover(E), Y ∈ cover(E'), X と Y は共通部分を持たない}
cover(E|E') = cover(E) ∪ cover(E')
cover(E*) =
{{}} ∪ {X1 ∪ …∪ Xn | 任意の i について Xi ∈ cover(E),
また i ≠ j なら Xi と Xj は共通部分を持たない}
そして、制約部分集合生成部140は、否定正規表現〜Rの閉包集合cover(~R)を、全ての要素データが最大1回のみ出現する全ての系列の集合(∪U)から除外した系列の集合を生成し、制約部分集合restrict(R)とする。この処理を示す数式の導出過程は以下の式(4)で表される。但し、入替可能言語のクラスをPとする。
restrict(R) = ∪{R' | R' ⊆ R, R' ∈ P ∩ U}
= ∪U ∩(∪{R' | R' ⊆ R, R' ∈ P})
= ∪U - ∩{ ∪U - R' | R' ⊆ R, R' ∈ P}
= ∪U - ∩{ ∪U - R' | ∪U - R' ⊇ ~R ∩ ∪U, R' ∈ P} …式(4)
= ∪U - ∩{ R'' | R'' ⊇ ~R ∩ ∪U, R'' ∈ U, ∪U - R'' ∈ P}
= ∪U - ∩{ R'' | R'' ⊇ ~R ∩ ∪U, R'' ∈ P ∩ U}
= ∪U - cover(~R)
なお、上の等式を導くためには R'' が U に含まれるなら ∪U - R'' ∈ P であることと、R'' ∈ P であることが等しいという性質を使っている。これは, R'' も ∪U - R'' も共に、ある集合(それぞれの文字の出現を覚えておくような集合)の言語として表現できることを考えれば明らかな性質である。
次に、包含判定部160は、正規表現Lの閉包集合を閉包集合生成部150により生成させる(S260)。そして、包含判定部160は、正規表現Lの閉包集合が、正規表現Rの制約部分集合に含まれることを条件として、正規表現Lが正規表現Rに含まれると判定する(S270)。
図3は、閉包集合を求める処理に用いられる二分決定グラフ(BDD:Binary Decision Diagram)の一例を示す。図3(A)は、系列の集合を表すBDDを示し、図3(B)は、そのBDDによって規定される系列の集合を示す。図2のS250等において閉包集合を算出するには、BDDのひとつであるZBDDを用いた方法が効率的である。本図では、まず、BDDの構造について具体例を用いて説明する。ZBDDの更に詳細な構造については非特許文献3を参照されたい。
BDDは、各要素データに対応するノードを有し、各ノード間に有向枝を有する非循環有向グラフ(DAG:Directed Acyclic Graph)である。例えば要素データa、b、cの各々には、ルートノード300、ノード330、及びノード360が対応付けられている。そして、BDDにおいて、各要素データに対応するノードは、その要素データが系列に含まれる場合に選択される第1ラベルhが付加された第1有向枝と、その要素データが系列に含まれない場合に選択される第2ラベルlが付加された第2有向枝とに接続される。
例えば、ルートノード300は、aが系列に含まれる場合に選択される第1有向枝310と、aが系列に含まれない場合に選択される第2有向枝320とに接続される。また、ノード330は、bが系列に含まれる場合に選択される第1有向枝340と、bが系列に含まれない場合に接続される第2有向枝350とに接続される。また、ノード360は、cが系列に含まれる場合に接続される第1有向枝370と、cが系列に含まれない場合に接続される第2有向枝380とに接続される。
そして、BDDにおいて、当該集合に含まれる全ての系列について各々の要素データが含まれるか否かに応じて第1有向枝又は第2有向枝を選択した結果得られる経路が、当該集合が当該系列を含むことを示す包含末端ノードに接続される。例えば、系列{a,b}は当該集合に含まれるので、ルートノード300の第1有向枝340とノード330の第1有向枝340とを順次選択した結果得られる経路は、包含末端ノード390に接続される。
更に、当該集合に含まれない全ての系列について各々の要素データが含まれるか否かに応じて第1有向枝又は第2有向枝を選択した結果得られる経路が、当該集合が当該系列を含まないことを示す非包含末端ノードに接続される。例えば、系列{a}は、当該集合に含まれないので、ルートノード300の第1有向枝310とノード330の第2有向枝350とノード360の第2有向枝380とを順次選択した結果得られる経路は、非包含末端ノード395に接続される。
次に、集合演算をBDDの演算により表す方法を示す。BDDによって規定される系列の集合についての集合演算は、BDDに対する演算として表される。例えば、集合のユニオン演算は、以下の式(5)により定義されるBDDのユニオン演算によって表される。
n ∪ 0 = 0 ∪ n = n
1 ∪ 1 = 1
n ∪ 1 = 1 ∪ n = zbdd (n.v, n.l ∪1, n.h) …式(5)
n ∪ m = m ∪ n = zbdd (n.v, n.l ∪m, n.h) (n.v < m.v の場合)
n ∪ m = m ∪ n = zbdd (n.v, n.l ∪m.l, n.h ∪m.h) (n.v = m.v の場合)
ここで、m、nはBDDのノードを示す。また、n.vは、nに対応する要素データを示す。また、n.v=m.vは、n及びmによって表される要素データが同一であることを意味し、n.v <m.vは、nによって表される要素データが、mによって表される要素データと比較してアルファベットの辞書順の先頭側であることを示す。また、0は、非包含終端ノードを示し、1は、包含終端ノードを示す。
また、ノードnの第2有向枝に接続するノード、及びノードnの第1有向枝に接続するノードを、それぞれn.l及びn.hとする。また、zbdd(v,l,h)は、要素データvに対応するノードを新たに生成して当該ノードの第2有向枝及び第1有向枝にノードl及びノードhをそれぞれ接続する処理の関数を示す。ただし zbddでは第1有向枝が非包含終端ノードに接続されるようなノードは作られず、zbdd(v、l、0)= l となる.
また、例えば、集合のインターセクション演算は、以下の式(6)により定義されるBDDのインターセクション演算によって表される。
n ∩ 0 = 0 ∩ n = 0
1 ∩ 1 = 1
n ∩ 1 = 1 ∩ n = n.l ∩1 …式(6)
n ∩ m = m ∩ n = n.l ∩m (n.v < m.v の場合)
n ∩ m = m ∩ n = zbdd (n.v, n.l ∩m.l, n.h ∩m.h) (n.v = m.v の場合)
更に、本実施例においては、存在演算子&に対応するBDDの演算を以下の式(7)に定義する。
n & 0 = 0 & n = 0
1 & n = n & 1 = n …式(7)
n & m = m & n = zbdd (n.v, n.l & m, n.h + m) (n.v < m.v の場合)
n & m = m & n = zbdd (n.v, n.l & m.l, (n.h & m.l) ∪ (n.l & m.h))
(n.v = m.v の場合)
更に、本実施例においては、要素データを繰り返した系列を示す演算子「*」に対応するBDDの演算を以下の式(8)に定義する。
0* = 1* = 1
n* = zbdd (n.v, n.l*, n.l* & n.h) …式(8)
以上に定義した演算を用いて、閉包集合生成部150は、以下の式(9)により、入力とする正規表現の閉包集合を示す二分決定グラフを生成する。
cover(a) = zbdd (a, 0, 1)
cover(ε) = 1
cover(E,E') = cover(E&E') = cover(E) & cover (E') …式(9)
cover(E|E') = cover(E) ∪ cover(E')
cover(E*) = cover(E)*
そして、包含判定部160は、正規表現Lの閉包集合を示す二分決定グラフcover(L)と、否定正規表現〜Rの閉包集合を示す二分決定グラフcover(~R)とに対して、二分決定グラフのインターセクション演算を行う(cover(L)∩cover(~R))。そして、包含判定部160は、その結果が、非包含末端ノード(即ちBDDにおける0)であることを条件として、正規表現Lが正規表現Rに含まれると判定する。
以下に、zbddによって表される系列の集合の意味を説明する。ここで、式[|x|]=yが、ZBDDのノードxが表す系列の集合yを示すものとする。ZBDD の意味は、以下のようであると解釈する。
[|0 |] = {}
[|1 |] = {{}}
[|n |] = [| n.l |] ∪ {X ∪{n.v} | X ∈ [|n.h |]}
このとき、 演算 ∩ の正しさ (集合の上での∩と同じ意味をもつこと) は次のように説明される。
[|n |] ∩ [|0 |] = [|0 |] ∩ [|n |] = {} = [|0 |]
[|1 |] ∩ [|1 |] = {{}} = [|1 |]
[|n |] ∩ [|1 |] = [|1 |] ∩ [|n |]
= {{}} ∩ ([|n.l |] ∪ {X ∪{n.v} | X ∈ [|n.h |]})
= {{}} ∩ [|n.l |] ∪ {{}} ∩ {X ∪{n.v} | X ∈ [|n.h |]}
= {{}} ∩ [|n.l |]
(X ∪{n.v} は {} ではありえないため)
= [| n.l ∩1 |]
[|n |] ∩ [|m |] = [|m |] ∩ [|n |] = (n.v < m.v の場合)
= ([| n.l |]∪ {X ∪{n.v} | X ∈ [|n.h |]}) ∩ [|m |]
= [| n.l |]∩ [|m |]∪ {X ∪{n.v} | X ∈ [|n.h |]}) ∩ [|m |]
= [| n.l |]∩ [|m |]
(※n.v < m.v より [|m |] には X ∪{n.v} は含まれないため)
[|n |] ∩ [|m |] = [|m |] ∩ [|n |] (n.v = m.v の場合)
= ([| n.l |]∪ {X ∪{n.v} | X ∈ [|n.h |]})
∩ ([| m.l |]∪ {X ∪{n.v} | X ∈ [|m.h |]})
= [| n.l |]∩ [| m.l |]
∪ [| n.l |]∩ {X ∪{n.v} | X ∈ [|m.h |]}
∪ [| m.l |]∩ {X ∪{n.v} | X ∈ [|n.h |]}
∪ {X ∪{n.v} | X ∈ [|n.h |]} ∩ {X ∪{n.v} | X ∈ [|m.h |]}
= [| n.l |]∩ [| m.l |]
∪ {X ∪{n.v} | X ∈ [|n.h |] ∩ [|m.h |]}
(※[|n.l |] また [|m.l |] には, X ∪{n.v} の形のものは含まれない)
= [| zbdd (n.v, n.l∩ m.l, n.h ∩ m.h) |]
また、演算 ∪ の正しさ (集合の上での ∪ と同じ意味をもつこと) は次のように説明される。
[|n |] ∪ [|0 |] = [|0 |] ∪ [|n |] = {} ∪ [|n |] = [|n |]
[|1 |] ∪ [|1 |] = {{}} = [|1 |]
[|n |] ∪ [|1 |] = [|1 |] ∪ [|n |]
= [|1 |] ∪ [|n.l |] ∪ {X ∪{n.v} | X ∈ [|n.h |]}
= [| zbdd(n.v, n.l ∪1, n.h) |]
[|n |] ∪ [|m |] = [|m |] ∪ [|n |] = (n.v < m.v の場合)
= [| n.l |] ∪ [|m |] ∪ {X ∪{n.v} | X ∈ [|n.h |]})
= [| zbdd(n.v, n.l ∪m, n.h) |]
[|n |] ∪ [|m |] = [|m |] ∪ [|n |] (n.v = m.v の場合)
= [| n.l |] ∪ [| m.l |]
∪{X ∪{n.v} | X ∈ [|n.h |]} ∪ {X ∪{n.v} | X ∈ [|m.h |]})
= [| n.l |]∪ [| m.l |]
∪ {X ∪{n.v} | X ∈ [|n.h |] ∪[|m.h |]}
= [| zbdd (n.v, n.l ∪ m.l, n.h ∪ m.h) |]
さて、本実施例において導入された演算&と演算 * については, これによって S と T を要素データの集合の集合とするとき、
S & T = {X ∪ Y | X ∈ S, Y ∈ T, X と Y は共通部分を持たない}
S* = {{}} ∪{X1 ∪ …∪ Xn | 任意の i について Xi ∈ S,
また i ≠ j なら Xi と Xj は共通部分を持たない}
のような集合の演算に対応するように定義されていればよい。
これらの正しさは次のように説明される。まず&の正しさについては、
[|n |] & [|0 |] = [|0 |] & [|n |] = {} = [|0 |]
[|n |] & [|1 |] = [|1 |] & [|n |] = {{}} & [|n |] = [|n |]
(※{} はどんな集合とも共通部分を持たないことに注意)
[|n |] & [|m |] = [|m |] & [|n |] = (n.v < m.v の場合)
= ([| n.l |] ∪ {X ∪{n.v} | X ∈ [|n.h |]}) & [|m |]
= [| n.l |] & [|m |] ∪ {X ∪{n.v} | X ∈ [|n.h |]} & [|m |]
= [| n.l |] & [|m |] ∪
{X ∪ Y ∪ {n.v} | X ∈ [| n.h |], Y∈ [|m |] かつ X ∪{n.v} と Y は共通部分を持たない.}
= [| n.l |] & [|m |] ∪
{X ∪ Y ∪ {n.v} | X ∈ [| n.h |], Y∈ [|m |] かつ X と Y は共通部分を持たない.}
(※n.v < m.v より Y には n.v は含まれないから)
= [| zbdd (n.v, m.l & m, n.h & m) |]
[|n |] & [|m |] = [|m |] & [|n |] (n.v = m.v の場合)
= ([| n.l |] ∪ {X ∪{n.v} | X ∈ [|n.h |]})
& ([| m.l |]∪ {X ∪{n.v} | X ∈ [|m.h |]})
= [| n.l |] & [| m.l |]
∪ [| n.l |] & {X ∪{n.v} | X ∈ [|m.h |]}
∪ [| m.l |] & {X ∪{n.v} | X ∈ [|n.h |]}
∪ {X ∪{n.v} | X ∈ [|n.h |]} & {X' ∪{n.v} | X' ∈ [|m.h |]}
= [| n.l |]∪ [| m.l |]
∪ [| n.l |] & {X ∪{n.v} | X ∈ [|m.h |]}
∪ [| m.l |] & {X ∪{n.v} | X ∈ [|n.h |]}
(※X ∪{n.v} と X' ∪{n.v} は必ず共通部分 n.v を持つ.)
= [| zbdd (n.v, m.l & m.l, n.h & m.l ∪ n.l & m.h) |]
次に、*の正しさは以下のように説明される。
[|0 |]* = {{}} ∪ {} = {{}}
[|1 |]* = {{}} ∪ {X1 | X1 ∈ {{}}} = {{}}
[|n |]* = {{}}
∪ {X1 ∪ …∪ Xn |
任意の i≦n について Xi ∈ [|n.l |] ∪ {X ∪{n.v} | X∈[|n.h |]},
また i≠j なら Xi と Xj は共通部分を持たない}
= {{}} ∪
∪ {X1 ∪ …∪ Xn |
任意の i≦k について Xi ∈ [|n.l |],
また i≠j なら Xi と Xj は共通部分を持たない}
∪ {X1 ∪ …∪ Xk ∪ Y1 ∪ …∪ Ym | 任意の i≦k について Xi ∈ [|n.l |],
任意の i≦m について Yi ∈ {X ∪{n.v} | X ∈ [|n.h |]},
i ≠ j なら Xi と Xj は共通部分を持たない,
i ≠ j なら Yi と Yj は共通部分を持たない,
任意の Xi と Yj は共通部分を持たない.}
= {{}}
∪ [|n.l* |]
∪ {X1 ∪ …∪ Xk ∪ Y1 | 任意の i≦k について Xi ∈ [|n.l |],
Y1 ∈ {X ∪{n.v} | X ∈ [|n.h |]}, i ≠ j なら Xi と Xj は共通部分を持たない,
また X1 ∪ …∪ Xk と Y1 は共通部分を持たない.}
(※なぜなら, Y1 と Y2 があったらそれらは共通部分 n.v を持つから.)
= {{}} ∪ [|n.l* |] ∪ [|n.l*|] & {X ∪ {n.v} | X ∈ [|n.h |]}
= {{}} ∪ [|n.l*|] ∪ {X ∪ {n.v} | X ∈ [|n.l*|] & [|n.h|]}
= [| zbdd (n.v, n.l*, n.l* & n.h) |]
とくに演算 * のこのような実現方法により実施例は高速である。たとえば* を & を使って計算する他の方法も考えられる。例えば、n* = 1 ∪ 1 & n ∪ 1 & n & n ∪ … という演算をくりかえし行うことになるが、この方法での計算はあまり速くない。
以上、閉包集合の計算をBDDによって行えば、閉包集合を高速かつ効率的に求めることができる。実際に、本実施例に示した方法を、従来技術を応用する方法と比較する実験を行った。その際、従来技術を応用する方法としては、本明細書の「発明が解決しようとする課題」の欄に記載の、「存在演算子を書き換える」手法を採用した。その結果、従来技術を応用する方法においてはメモリの必要容量が大きすぎて実現できない場合であっても、適切に包含判定できることが確かめられた。また、従来技術を応用する方法によっても判定可能な場合であっても、本実施例の方が数百倍高速に判定を行うことができた。
図4は、判定装置10として機能するコンピュータ500のハードウェア構成の一例を示す。コンピュータ500は、ホストコントローラ1082により相互に接続されるCPU1000、RAM1020、及びグラフィックコントローラ1075を有するCPU周辺部と、入出力コントローラ1084によりホストコントローラ1082に接続される通信インターフェイス1030、ハードディスクドライブ1040、及びCD−ROMドライブ1060を有する入出力部と、入出力コントローラ1084に接続されるROM1010、フレキシブルディスクドライブ1050、及び入出力チップ1070を有するレガシー入出力部とを備える。
ホストコントローラ1082は、RAM1020と、高い転送レートでRAM1020をアクセスするCPU1000及びグラフィックコントローラ1075とを接続する。CPU1000は、ROM1010及びRAM1020に格納されたプログラムに基づいて動作し、各部の制御を行う。グラフィックコントローラ1075は、CPU1000等がRAM1020内に設けたフレームバッファ上に生成する画像データを取得し、表示装置1080上に表示させる。これに代えて、グラフィックコントローラ1075は、CPU1000等が生成する画像データを格納するフレームバッファを、内部に含んでもよい。
入出力コントローラ1084は、ホストコントローラ1082と、比較的高速な入出力装置である通信インターフェイス1030、ハードディスクドライブ1040、及びCD−ROMドライブ1060を接続する。通信インターフェイス1030は、ネットワークを介して外部の装置と通信する。ハードディスクドライブ1040は、コンピュータ500が使用するプログラム及びデータを格納する。CD−ROMドライブ1060は、CD−ROM1095からプログラム又はデータを読み取り、RAM1020を介して入出力チップ1070に提供する。
また、入出力コントローラ1084には、ROM1010と、フレキシブルディスクドライブ1050や入出力チップ1070等の比較的低速な入出力装置とが接続される。ROM1010は、コンピュータ500の起動時にCPU1000が実行するブートプログラムや、コンピュータ500のハードウェアに依存するプログラム等を格納する。フレキシブルディスクドライブ1050は、フレキシブルディスク1090からプログラム又はデータを読み取り、RAM1020を介して入出力チップ1070に提供する。入出力チップ1070は、フレキシブルディスク1090や、例えばパラレルポート、シリアルポート、キーボードポート、マウスポート等を介して各種の入出力装置を接続する。
コンピュータ500に提供されるプログラムは、フレキシブルディスク1090、CD−ROM1095、又はICカード等の記録媒体に格納されて利用者によって提供される。プログラムは、入出力チップ1070及び/又は入出力コントローラ1084を介して、記録媒体から読み出されコンピュータ500にインストールされて実行される。プログラムがコンピュータ500等に働きかけて行わせる動作は、図1から図3において説明した判定装置10における動作と同一であるから、説明を省略する。
以上に示したプログラムは、外部の記憶媒体に格納されてもよい。記憶媒体としては、フレキシブルディスク1090、CD−ROM1095の他に、DVDやPD等の光学記録媒体、MD等の光磁気記録媒体、テープ媒体、ICカード等の半導体メモリ等を用いることができる。また、専用通信ネットワークやインターネットに接続されたサーバシステムに設けたハードディスク又はRAM等の記憶装置を記録媒体として使用し、ネットワークを介してプログラムをコンピュータ500に提供してもよい。
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
図1は、判定装置10の機能を機能ブロックに分類して示す。 図2は、判定装置10により正規表現Lが正規表現Rに含まれるか否かが判定される処理のフローチャートを示す。 図3は、閉包集合を求める処理に用いられる二分決定グラフ(BDD)の一例を示す。 図4は、判定装置10として機能するコンピュータ500のハードウェア構成の一例を示す。
符号の説明
10 判定装置
100 存在演算子包含判断部
110 入替可能言語判断部
120 補言語算出部
130 順序規定系列生成部
140 制約部分集合生成部
150 閉包集合生成部
160 包含判定部
300 ルートノード
310 第1有向枝
320 第2有向枝
330 ノード
340 第1有向枝
350 第2有向枝
360 ノード
370 第1有向枝
380 第2有向枝
390 包含末端ノード
395 非包含末端ノード
500 コンピュータ

Claims (12)

  1. 要素データの系列の集合を規定する第1の正規表現Lが、第2の正規表現Rに包含されるか否かを判定する判定装置であって、
    前記正規表現L及び前記正規表現Rの各々が、指定した2以上の要素データを任意の順序で配列した系列の集合を示す存在演算子を含むか否かを判断する存在演算子包含判断部と、
    前記正規表現Lが前記存在演算子を含まず、かつ、前記正規表現Rが前記存在演算子を含むことを条件として、前記正規表現Rに包含されない全ての前記系列の集合を示す補言語を算出する補言語算出部と、
    前記正規表現Lにより規定される要素データの系列の集合と、前記正規表現Rの補言語により規定される要素データの系列の集合との共通部分が空集合であることを条件として、前記正規表現Lが前記正規表現Rに包含されると判定する包含判定部と
    を備える判定装置。
  2. 要素データの系列の集合を規定する第1の正規表現Lが、第2の正規表現Rに包含されるか否かを判定する判定装置であって、
    前記正規表現L及び前記正規表現Rの何れもが、当該正規表現により規定される集合中の全ての系列について、当該系列中の要素データを並べ替えた他の何れの系列も当該集合に含まれる入替可能言語である場合において、
    前記正規表現Lにより規定される系列の集合のうち、配列される要素データが予め定められた順序に従う順序規定系列の集合、及び、前記正規表現Rにより規定される系列の集合のうち、配列される要素データが前記予め定められた順序に従う順序規定系列の集合を求める順序規定系列生成部と、
    前記正規表現Lの前記順序規定系列の集合が、前記正規表現Rの前記順序規定系列の集合に包含されることを条件として、前記正規表現Lが前記正規表現Rに包含されると判定する包含判定部と
    を備える判定装置。
  3. 入力した正規表現が、系列中に要素データを配列する順序を規定する順序規定演算子を含まないことを条件として、当該正規表現が前記入替可能言語であると判断する入替可能言語判断部を更に備え、
    前記順序規定系列生成部は、前記正規表現L及び前記正規表現Rの何れもが前記入替可能言語判断部により前記入替可能言語であると判断された場合、又は、予め前記入替可能言語であると定められている場合を条件として、前記順序規定系列の集合を求める
    請求項2記載の判定装置。
  4. 要素データの系列の集合を規定する第1の正規表現Lが、第2の正規表現Rに包含されるか否かを判定する判定装置であって、
    前記正規表現Rにより規定される系列の部分集合であって、当該部分集合に含まれる全ての系列について当該系列中の前記要素データを並べ替えた結果得られる全ての並べ替え系列を含み、かつ、当該系列中の全ての前記要素データが最大1回のみ出現する最大の部分集合を生成し、前記正規表現Rにより規定される集合の制約部分集合とする制約部分集合生成部と、
    前記正規表現Lにより規定される前記系列の集合が、前記制約部分集合に含まれることを条件として、前記正規表現Lが前記正規表現Rに包含されると判定する包含判定部と
    を備える判定装置。
  5. 入力された正規表現に基づいて、当該正規表現が示す系列中の前記要素データを並べ替えた結果得られる全ての並べ替え系列を含み、かつ当該系列中の全ての前記要素データが最大1回のみ出現する前記系列の集合を生成し、当該正規表現の閉包集合とする閉包集合生成部を更に備え、
    前記制約部分集合生成部は、前記正規表現Rに包含されない全ての前記系列の集合を規定する前記正規表現Rの否定正規表現〜Rを生成し、前記否定正規表現〜Rの閉包集合を前記閉包集合生成部により生成させ、前記否定正規表現〜Rの閉包集合を、全ての前記要素データが最大1回のみ出現する全ての前記系列の集合から除外した前記系列の集合を生成し、前記制約部分集合とし、
    前記包含判定部は、前記正規表現Lの閉包集合を前記閉包集合生成部により生成させ、前記正規表現Lの閉包集合が、前記正規表現Rの制約部分集合に含まれることを条件として、前記正規表現Lが前記正規表現Rに含まれると判定する
    請求項4記載の判定装置。
  6. 前記閉包集合生成部は、入力された正規表現に基づいて、当該正規表現の閉包集合を示す二分決定グラフ(BDD:Binary Decision Diagram)であって、
    (1)各要素データに対応するノードを有し、
    (2)各要素データに対応するノードが、当該要素データが前記系列に含まれる場合に選択される第1ラベルhが付加された第1有向枝と、当該要素データが前記系列に含まれない場合に選択される第2ラベルlが付加された第2有向枝とに接続され、
    (3)当該集合に含まれる全ての前記系列について各々の前記要素データが含まれるか否かに応じて前記第1有向枝又は前記第2有向枝を選択した結果得られる経路が、当該集合が当該系列を含むことを示す包含末端ノードに接続され、
    (4)当該集合に含まれない全ての前記系列について各々の前記要素データが含まれるか否かに応じて前記第1有向枝又は前記第2有向枝を選択した結果得られる経路が、当該集合が当該系列を含まないことを示す非包含末端ノードに接続される、
    二分決定グラフを生成し、
    前記包含判定部は、前記正規表現Lの閉包集合を示す二分決定グラフと、前記否定正規表現〜Rの閉包集合を示す二分決定グラフとを、二分決定グラフのインターセクション演算した結果が、前記非包含末端ノードであることを条件として、前記正規表現Lが前記正規表現Rに含まれると判定する
    請求項5記載の判定装置。
  7. 要素データの系列の集合を規定する第1の正規表現Lが、第2の正規表現Rに包含されるか否かを判定する判定方法であって、
    前記正規表現L及び前記正規表現Rの各々が、指定した2以上の要素データを任意の順序で配列した系列の集合を示す存在演算子を含むか否かを判断する存在演算子包含判断段階と、
    前記正規表現Lが前記存在演算子を含まず、かつ、前記正規表現Rが前記存在演算子を含むことを条件として、前記正規表現Rに包含されない全ての前記系列の集合を示す補言語を算出する補言語算出段階と、
    前記正規表現Lにより規定される要素データの系列の集合と、前記正規表現Rの補言語により規定される要素データの系列の集合との共通部分が空集合であることを条件として、前記正規表現Lが前記正規表現Rに包含されると判定する包含判定段階と
    を備える判定方法。
  8. 要素データの系列の集合を規定する第1の正規表現Lが、第2の正規表現Rに包含されるか否かを判定する判定装置として、コンピュータを機能させるプログラムであって、
    前記コンピュータを、
    前記正規表現L及び前記正規表現Rの各々が、指定した2以上の要素データを任意の順序で配列した系列の集合を示す存在演算子を含むか否かを判断する存在演算子包含判断部と、
    前記正規表現Lが前記存在演算子を含まず、かつ、前記正規表現Rが前記存在演算子を含むことを条件として、前記正規表現Rに包含されない全ての前記系列の集合を示す補言語を算出する補言語算出部と、
    前記正規表現Lにより規定される要素データの系列の集合と、前記正規表現Rの補言語により規定される要素データの系列の集合との共通部分が空集合であることを条件として、前記正規表現Lが前記正規表現Rに包含されると判定する包含判定部と
    して機能させるプログラム。
  9. 要素データの系列の集合を規定する第1の正規表現Lが、第2の正規表現Rに包含されるか否かを判定する判定方法であって、
    前記正規表現L及び前記正規表現Rの何れもが、当該正規表現により規定される集合中の全ての系列について、当該系列中の要素データを並べ替えた他の何れの系列も当該集合に含まれる入替可能言語である場合において、
    前記正規表現Lにより規定される系列の集合のうち、配列される要素データが予め定められた順序に従う順序規定系列の集合、及び、前記正規表現Rにより規定される系列の集合のうち、配列される要素データが前記予め定められた順序に従う順序規定系列の集合を求める順序規定系列生成段階と、
    前記正規表現Lの前記順序規定系列の集合が、前記正規表現Rの前記順序規定系列の集合に包含されることを条件として、前記正規表現Lが前記正規表現Rに包含されると判定する包含判定段階と
    を備える判定方法。
  10. 要素データの系列の集合を規定する第1の正規表現Lが、第2の正規表現Rに包含されるか否かを判定する判定装置として、コンピュータを機能させるプログラムであって、
    前記正規表現L及び前記正規表現Rの何れもが、当該正規表現により規定される集合中の全ての系列について、当該系列中の要素データを並べ替えた他の何れの系列も当該集合に含まれる入替可能言語である場合において、
    前記コンピュータを、
    前記正規表現Lにより規定される系列の集合のうち、配列される要素データが予め定められた順序に従う順序規定系列の集合、及び、前記正規表現Rにより規定される系列の集合のうち、配列される要素データが前記予め定められた順序に従う順序規定系列の集合を求める順序規定系列生成部と、
    前記正規表現Lの前記順序規定系列の集合が、前記正規表現Rの前記順序規定系列の集合に包含されることを条件として、前記正規表現Lが前記正規表現Rに包含されると判定する包含判定部と
    して機能させるプログラム。
  11. 要素データの系列の集合を規定する第1の正規表現Lが、第2の正規表現Rに包含されるか否かを判定する判定方法であって、
    前記正規表現Rにより規定される系列の部分集合であって、当該部分集合に含まれる全ての系列について当該系列中の前記要素データを並べ替えた結果得られる全ての並べ替え系列を含み、かつ、当該系列中の全ての前記要素データが最大1回のみ出現する最大の部分集合を生成し、前記正規表現Rにより規定される集合の制約部分集合とする制約部分集合生成段階と、
    前記正規表現Lにより規定される前記系列の集合が、前記制約部分集合に含まれることを条件として、前記正規表現Lが前記正規表現Rに包含されると判定する包含判定段階と
    を備える判定方法。
  12. 要素データの系列の集合を規定する第1の正規表現Lが、第2の正規表現Rに包含されるか否かを判定する判定装置として、コンピュータを機能させるプログラムであって、
    前記コンピュータを、
    前記正規表現Rにより規定される系列の部分集合であって、当該部分集合に含まれる全ての系列について当該系列中の前記要素データを並べ替えた結果得られる全ての並べ替え系列を含み、かつ、当該系列中の全ての前記要素データが最大1回のみ出現する最大の部分集合を生成し、前記正規表現Rにより規定される集合の制約部分集合とする制約部分集合生成部と、
    前記正規表現Lにより規定される前記系列の集合が、前記制約部分集合に含まれることを条件として、前記正規表現Lが前記正規表現Rに包含されると判定する包含判定部と
    して機能させるプログラム。
JP2004378117A 2004-12-27 2004-12-27 判定装置、判定方法、及びプログラム Expired - Fee Related JP4082615B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004378117A JP4082615B2 (ja) 2004-12-27 2004-12-27 判定装置、判定方法、及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004378117A JP4082615B2 (ja) 2004-12-27 2004-12-27 判定装置、判定方法、及びプログラム

Publications (2)

Publication Number Publication Date
JP2006185176A JP2006185176A (ja) 2006-07-13
JP4082615B2 true JP4082615B2 (ja) 2008-04-30

Family

ID=36738248

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004378117A Expired - Fee Related JP4082615B2 (ja) 2004-12-27 2004-12-27 判定装置、判定方法、及びプログラム

Country Status (1)

Country Link
JP (1) JP4082615B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102548695B (zh) * 2009-10-09 2014-01-29 株式会社天田 带锯床的主体虎钳装置

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6665498B2 (ja) 2015-11-16 2020-03-13 富士ゼロックス株式会社 情報処理装置、画像処理システム及びプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102548695B (zh) * 2009-10-09 2014-01-29 株式会社天田 带锯床的主体虎钳装置

Also Published As

Publication number Publication date
JP2006185176A (ja) 2006-07-13

Similar Documents

Publication Publication Date Title
CN111444320B (zh) 文本检索方法、装置、计算机设备和存储介质
EP3796176A1 (en) Fault root cause analysis method and apparatus
CN111859986B (zh) 基于多任务孪生网络的语义匹配方法、装置、设备和介质
Zhu et al. In the light of deep coalescence: revisiting trees within networks
CN111428457B (zh) 数据表的自动格式化
Olmezogullari et al. Representation of click-stream datasequences for learning user navigational behavior by using embeddings
US11537797B2 (en) Hierarchical entity recognition and semantic modeling framework for information extraction
WO2022140900A1 (zh) 个人知识图谱构建方法、装置及相关设备
CN105706092A (zh) 四值模拟的方法和系统
CN110245349A (zh) 一种句法依存分析方法、装置及一种电子设备
KR20210121921A (ko) 키워드 공동출현 네트워크를 기반으로 핵심 키워드를 추출하는 방법 및 장치
JP4082615B2 (ja) 判定装置、判定方法、及びプログラム
JP2022154862A (ja) 情報処理方法、プログラム及び情報処理装置
CN115512374A (zh) 针对表格文本的深度学习特征提取分类方法及装置
Bin et al. Multiview Translation Learning for Knowledge Graph Embedding
CN107220249A (zh) 基于分类的全文搜索
CN112529743A (zh) 合同要素抽取方法、装置、电子设备及介质
Mukherjee et al. Browsing fatigue in handhelds: semantic bookmarking spells relief
Isberner et al. LearnLib Tutorial: An Open-Source Java Library for Active Automata Learning
JP7204431B2 (ja) 単語ベクトルリスト生成装置
CN116451795B (zh) 一种量子线路图处理方法、装置及电子设备和存储介质
CN115167913B (zh) 一种操作系统的分层方法、计算设备及存储介质
CN117149999B (zh) 基于法律要素层次网络和文本特征的类案推荐方法及装置
US11868737B2 (en) Method and server for processing text sequence for machine processing task
RU2812301C2 (ru) Способ и сервер для выполнения контекстно-зависимого перевода

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071112

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20071207

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20080107

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20080205

RD14 Notification of resignation of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7434

Effective date: 20080207

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080207

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110222

Year of fee payment: 3

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110222

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110222

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120222

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees