JP7087931B2 - 探索プログラム、探索方法及び探索装置 - Google Patents

探索プログラム、探索方法及び探索装置 Download PDF

Info

Publication number
JP7087931B2
JP7087931B2 JP2018210532A JP2018210532A JP7087931B2 JP 7087931 B2 JP7087931 B2 JP 7087931B2 JP 2018210532 A JP2018210532 A JP 2018210532A JP 2018210532 A JP2018210532 A JP 2018210532A JP 7087931 B2 JP7087931 B2 JP 7087931B2
Authority
JP
Japan
Prior art keywords
strain
binary tree
child
stock
node
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.)
Active
Application number
JP2018210532A
Other languages
English (en)
Other versions
JP2020077236A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2018210532A priority Critical patent/JP7087931B2/ja
Priority to US16/670,405 priority patent/US11526529B2/en
Publication of JP2020077236A publication Critical patent/JP2020077236A/ja
Application granted granted Critical
Publication of JP7087931B2 publication Critical patent/JP7087931B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、探索プログラム、探索方法及び探索装置に関する。
情報処理における基本的なデータ構造の1つとして、二分木の構造を持つデータ(以下、「二分木データ木」と記載する場合がある)が挙げられる。例えば、二分木データ木は、AI(Artificial Intelligence)分野や決定木などの幅広い場面で活用される。
このような二分木データ木の中から、特定の二分木パターンの各ノードが持つラベルと一致する部分木が出現する位置が探索される。例えば、二分木データ木のルートから下層へ向かって順番に二分木パターンを二分木データ木上で走査しつつ、二分木パターンの各ノードを二分木データ木の部分木に対応付ける。これら二分木パターンおよび二分木パターンの部分木の間で全てのノードのラベルが一致するか否かを比較することにより、二分木パターンの探索が実行される。
特開2009-163564号公報
Tatsuya Asai, et al., "Efficient substructure discovery from large semi-structured data," Proc. SDM2002, 158-174.
しかしながら、上記の技術では、二分木パターンが追加される度に、二分木パターンの全てのノードを二分木データ木の部分木に対応付けてラベルを比較する必要がある。このような二分木パターンの探索が行われる場合、二分木データ木のサイズが大きくなるに連れて探索の処理量も増大する。それ故、上記の技術では、特定の二分木パターンの探索の高速化に限界がある。
1つの側面では、本発明は、特定の二分木パターンの探索を高速化できる探索プログラム、探索方法及び探索装置を提供することを目的とする。
一態様では、探索プログラムは、対象の二分木データ木における、特定の二分木パターンの探索プログラムであって、コンピュータに、前記特定の二分木パターンを、所定の手順により複数の二分木ユニットの組み合わせに分解し、前記複数の二分木ユニットの中に、先頭からの二分木ユニットの組み合わせであって、前記対象の二分木データ木における位置が対応づけられた登録済二分木パターンが存在する場合、前記登録済二分木パターンの位置を利用して、前記特定の二分木パターンの探索を行う、処理を実行させる探索プログラムであり、前記所定の手順では、最小の二分木であり、根と左子及び右子の2つの子とを有する株から、前記根が他の株に接続されていない親株の前記左子及び右子の2つの子のうち少なくともいずれかに、所定の拡張手法により他の株の前記根を接続する形で拡張した、株の木構造を生成し、前記株の木構造を構成する株それぞれを二分木に展開することにより、前記株の木構造から二分木を生成し、前記所定の拡張手法は、接続対象の株が、前記株の木構造のうち、前記親株から右子に接続された株、若しくは右子に株が接続されていない場合において左子に接続された株を辿って得られる株の系列である最右株列上の株であって、右子にも左子にも株が接続されていない末端の株である場合は、当該接続対象の株の右子若しくは左子に新たな株を接続して拡張し、接続対象の株が、前記株の木構造のうち、前記株の木構造の最右株列上の株であって、末端の株以外である場合は、当該接続対象の株の右子にのみ新たな株を接続して拡張し、接続対象の株が、前記株の木構造のうち、前記親株から左子に接続された株、若しくは左子に株が接続されていない場合において右子に接続された株を辿って得られる株の系列である最左株列上の末端の株である場合は、当該接続対象の株の右子若しくは左子に新たな株を接続して拡張し、接続対象の株が、前記株の木構造のうち、前記株の木構造の最左株列上の株であって、末端の株以外である場合は、当該接続対象の株の左子にのみ新たな株を接続して拡張する。
特定の二分木パターンの探索を高速化できる。
図1は、実施例1に係る探索装置の機能的構成の一例を示すブロック図である。 図2は、二分木データ木と二分木パターンの対応付けの一例を示す図である。 図3は、二分木パターン間の包含関係の一例を示す図である。 図4は、二分木データ木と二分木パターンの対応付けの一例を示す図である。 図5は、株の一例を示す図である。 図6は、二分木パターンの一例を示す図である。 図7は、二分木の探索アルゴリズムの動作例を示す図である。 図8は、実施例1に係る探索処理の手順を示すフローチャートである。 図9は、実施例1及び実施例2に係る探索プログラムを実行するコンピュータのハードウェア構成例を示す図である。
以下に添付図面を参照して本願に係る探索プログラム、探索方法及び探索装置について説明する。なお、この実施例は開示の技術を限定するものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
図1は、実施例1に係る探索装置の機能的構成の一例を示すブロック図である。図1に示す探索装置10は、対象の二分木データ木の中から、特定の二分木パターンの各ノードが持つラベルと一致する部分木が出現する位置を探索する探索処理を実行する。このような探索処理の一側面として、特定の二分木パターンが対象の二分木データ木の中で出現する位置の探索を高速化する仕組みに創作の困難性がある。
以下、本実施例に係る探索装置10の機能ブロックを説明するのに先立って、(1)課題の一側面を説明した後に、(2)課題解決のアプローチの一側面について説明することとする。
(1)課題の一側面
上記の背景技術の欄でも説明した通り、上記の従来技術では、二分木パターンが追加される度に、二分木パターンの全てのノードを二分木データ木の部分木に対応付けてラベルを比較する必要がある。
図2は、二分木データ木と二分木パターンの対応付けの一例を示す図である。図2には、二分木データ木D01上における出現位置を探索する特定の二分木パターンの一例として、二分木パターンP01、二分木パターンP02の順にパターンが生成される例が示されている。これら二分木データ木D01、二分木パターンP01および二分木パターンP02は、いずれも全てのノードが0個または2個の子ノードを持つ木構造を有し、各ノードにラベルが割り当てられたラベル付き二分木であることとする。なお、図2では、二分木の構造のうちノードが円の図形で表現されると共に、ノード間を結ぶリンク(エッジとも呼ばれる)が直線で表現される。さらに、ノードに割り当てられたラベルは、ラベルが英大文字のアルファベットで模式化された状態でノードに対応する円の図形の内部に記入されることにより表現される。
例えば、二分木パターンP01が生成された場合、上記の従来技術では、二分木データ木D01の根に対応するノードn01から下層へ向かって順番に二分木パターンP01が二分木データ木D01上で走査される。まず、二分木パターンP01の根に対応するノードN01が二分木データ木D01の根に対応するノードn01に対応付けられる。このように、二分木パターンP01の根に対応するノードN01が二分木データ木D01に対応付けられた段階で、当該ノードN01の子ノードであるノードN02およびノードN03を対応付ける二分木データ木D01上のノードも定まる。すなわち、二分木データ木D01のノードn02に二分木パターンP01のノードN02が対応付けられると共に、二分木データ木D01のノードn03に二分木パターンP01のノードN03が対応付けられる。
その上で、二分木データ木D01及び二分木パターンP01の間で各ノードのラベルが照合される。すなわち、ノードN01及びノードn01の間でラベルが一致し、ノードN02及びノードn02の間でラベルが一致し、かつノードN03及びノードn03の間でラベルが一致するか否かが照合される。図2に示す例では、ノードN01及びノードn01は、いずれもラベルが「A」であるので一致し、ノードN02及びノードn02も、互いのラベルが「B」であるので一致し、さらに、ノードN03及びノードn03も、互いのラベルが「C」であるので一致する。この場合、二分木データ木D01における二分木パターンP01の出現位置C1-1として、二分木データ木D01のノードn01、ノードn02及びノードn03が得られる。
このようなノード間の対応付けおよびラベルの照合が繰り返される。図2の例で言えば、二分木パターンP01の根に対応するノードN01を二分木データ木D01のノードn02、ノードn03、・・・、ノードn09に対応付ける探索処理が残り8回繰り返される。
例えば、二分木パターンP01の根に対応するノードN01が二分木データ木D01のノードn02またはノードn03に対応付けられる場合、ノードN01の子ノードであるノードN02およびノードN03に対応付ける二分木データ木D01上のノードが存在する。その一方で、二分木データ木D01及び二分木パターンP01の間で各ノードのラベルが一致しない。これらの場合、二分木パターンP01の出現位置が探索結果として得られない。また、二分木パターンP01の根に対応するノードN01が二分木データ木D01のノードn04、ノードn05、ノードn07~ノードn09に対応付けられる場合、ノードN01の子ノードであるノードN02およびノードN03に対応付ける二分木データ木D01上のノードがそもそも存在しない。これらの場合にも、二分木パターンP01の出現位置が探索結果として得られない。
一方、二分木パターンP01の根に対応するノードN01が二分木データ木D01のノードn06に対応付けられる場合、二分木パターンP01の出現位置C1-2が探索結果として得られる。すなわち、ノードN01の子ノードであるノードN02およびノードN03に対応付ける二分木データ木D01上のノードとして、ノードn08およびノードn09が存在する。さらに、二分木データ木D01及び二分木パターンP01の間で各ノードのラベルが一致する。すなわち、図2に示す通り、ノードN01及びノードn06は、いずれもラベルが「A」であるので一致し、ノードN02及びノードn08も、互いのラベルが「B」であるので一致し、さらに、ノードN03及びノードn09も、互いのラベルが「C」であるので一致する。この場合、二分木データ木D01における二分木パターンP01の出現位置C1-2として、二分木データ木D01のノードn06、ノードn08及びノードn09が得られる。
このように二分木パターンP01および二分木データ木D01の間で計9回の対応付けが行われる。この結果、二分木データ木D01における二分木パターンP01の出現位置C1-1およびC1-2が得られる。
次に、二分木パターンP02が生成された場合にも、上記の従来技術では、二分木データ木D01の根に対応するノードn01から下層へ向かって順番に二分木パターンP02が二分木データ木D01上で走査される。すなわち、二分木パターンP02の根に対応するノードN04を二分木データ木D01のノードn01、ノードn02、ノードn03、・・・、ノードn09の順に対応付ける探索処理が計9回繰り返される。
このうち、二分木パターンP02の根に対応するノードN04が二分木データ木D01のノードn01に対応付けられる場合、ノードN04の子ノードであるノードN05およびノードN06に対応付ける二分木データ木D01上のノードが存在すると共に、ノードN05の子ノードであるノードN07およびノードN08に対応付ける二分木データ木D01上のノードが存在する。その一方で、二分木データ木D01及び二分木パターンP02の間で各ノードのラベルが一致しない。この場合、二分木パターンP02の出現位置が探索結果として得られない。
また、二分木パターンP02の根に対応するノードN04が二分木データ木D01のノードn02、ノードn04、ノードn05~ノードn09に対応付けられる場合、ノードN05の子ノードであるノードN07およびノードN08に対応付ける二分木データ木D01上のノードが存在しない。これらの場合にも、二分木パターンP02の出現位置が探索結果として得られない。
一方、二分木パターンP02の根に対応するノードN04が二分木データ木D01のノードn03に対応付けられる場合、二分木パターンP02の出現位置C2-1が探索結果として得られる。すなわち、ノードN04の子ノードであるノードN05およびノードN06に対応付ける二分木データ木D01上のノードとして、ノードn06およびノードn07が存在すると共に、ノードN05の子ノードであるノードN07およびノードN08に対応付ける二分木データ木D01上のノードとして、ノードn08およびノードn09が存在する。さらに、二分木データ木D01及び二分木パターンP02の間で各ノードのラベルが一致する。すなわち、図2に示す通り、ノードN04及びノードn03、ノードN05及びノードn06、ノードN06及びノードn07、ノードN07及びノードn08、ノードN08及びノードn09の各々のノード間でラベルが一致する。この場合、二分木データ木D01における二分木パターンP02の出現位置C2-1として、二分木データ木D01のノードn03、ノードn06、ノードn07、ノードn08及びノードn09が得られる。
このように二分木パターンP02および二分木データ木D01の間で計9回の対応付けが行われる。この結果、二分木データ木D01における二分木パターンP02の出現位置C2-1が得られる。
以上のように、二分木パターン及び二分木データ木の間におけるノード間の対応付けの回数は、二分木データ木のサイズが大きくなるにしたがって増加し、ラベル照合の回数も二分木データ木のサイズ及び二分木パターンのノード数が多くなるにしたがって増加する。
このような状況の下、上記の従来技術では、新たな二分木パターンが生成される度に、二分木データ木及び二分木パターンの間でノード間の対応付けを二分木データ木上の全てのノードで行う必要がある。
すなわち、二分木パターンP01及び二分木パターンP02のパターンが生成される度に、二分木データ木D01上で二分木データ木D01の根に対応するノードn01から下層のノードへ向かって二分木パターンP01の根ノードN01および二分木パターンP02の根ノードN04を9回ずつ対応付ける必要がある。ここで、図2には、あくまで要点を絞り込んで説明する側面から、ノード数が「9」である二分木データ木D01が示されているが、実際には、探索される対象である二分木データ木のノード数は膨大な数にのぼることもある。そして、二分木データ木のサイズが大きくなるに連れて対応付けの回数も増大する。
さらに、上記の従来技術では、新たな二分木パターンが生成される度に、二分木データ木及び二分木パターンの間でラベルの照合を二分木パターンの全ノード数に対応する回数にわたって行う必要がある。
すなわち、二分木パターンP01または二分木パターンP02に含まれる各ノードが二分木データ木D01に対応付けられる度に、二分木パターンP01または二分木パターンP02が有する全てのノードの数に対応する回数分、ラベルの照合を行う必要がある。例えば、二分木パターンP01には、ノードN01~ノードN03の3つのノードが含まれる。このため、二分木パターンP01のノードN01~ノードN03と、ノードN01~ノードN03が対応付けられた二分木データ木D01上の3つのノードとの間で3回のラベル照合が行われる。また、二分木パターンP02には、ノードN04~ノードN08の5つのノードが含まれる。このため、二分木パターンP02のノードN04~ノードN08と、ノードN04~ノードN08が対応付けられた二分木データ木D01上の5つのノードとの間で5回のラベル照合が行われる。
つまり、上記の従来技術では、新たな二分木パターンが生成される度に、ローラ作戦の要領で二分木パターンの探索が行われるので、探索の処理量が増大する。それ故、上記の従来技術では、特定の二分木パターンの探索の高速化に限界がある。
このようにローラ作戦の要領で二分木パターンの探索を行うのを避ける観点から、先行して生成される二分木パターンと、後続して生成される二分木パターンとの間で生じる差分に絞り込んで二分木パターンの探索を実行する課題解決のアプローチが有効であると考えられる。
図3は、二分木パターン間の包含関係の一例を示す図である。図3には、図2に示す二分木パターンP01および二分木パターンP02が示されると共に、互いのラベルの配列が共通する部分がハッチングで示されている。図3に示すように、二分木パターンP02は、二分木パターンP01が持つノードN01、ノードN02及びノードN03との間でラベルの配列が一致するノードN05、ノードN07及びノードN08を部分木として有する。このため、二分木パターンP02は、二分木パターンP01を包含していることがわかる。このような包含関係を利用して、二分木パターンP01及び二分木パターンP02の差分となるノードN04及びノードN06に絞り込んで二分木データ木D01に対する二分木パターンP02の探索を実行できれば、探索の処理量を削減することが期待できる。
しかしながら、上記の課題解決のアプローチを採用する場合、次のような創作の困難性がある。例えば、ある二分木パターンが新たに生成された場合、新たに生成された二分木パターンが包含する二分木パターンがそもそも過去に生成されているとは限らない。また、過去に生成された二分木パターンの集合の中に互いが包含関係にある二分木パターンが存在するとしても、膨大な集合の中から包含関係にある二分木パターンを探索するのには、膨大なコストが発生する。このように包含関係のある二分木パターンの探索に膨大なコストを掛けたのでは、二分木データ木における二分木パターンの探索のコストを削減できたとしても本末転倒となる。結局のところ、上記の従来技術のように、新たな二分木パターンが生成される度に、ローラ作戦の要領でノード間の対応付けやラベルの照合を行った方が効率的になりがちである。
(2)課題解決のアプローチの一側面
そこで、本実施例に係る探索装置10では、上記の課題解決のアプローチを採用するために、子ノードとして右子および左子を含む株と呼ばれる二分木の最小構造を特定の順序で付け加えることで二分木パターンを一意に列挙する二分木の生成アルゴリズムを二分木パターンの生成に用いる点に優位性がある。
この二分木の生成アルゴリズムについての詳細は後述するが、二分木の生成アルゴリズムにしたがって二分木パターンが生成される場合、1つ前に生成された二分木パターンに新たな株を接続するという手順が繰り返されることにより、新たな二分木パターンが生成される。このため、新たに生成される二分木パターンは、その1つ前に生成されていた二分木パターンを包含するという包含関係も受け継ぎつつ、二分木パターンの拡張を繰り返すことができる。それ故、一部の二分木パターンだけにしか包含関係が現れないといった事態が起こらないので、二分木パターンの探索を二分木パターン間の差分に絞り込むパフォーマンスを向上できる。
さらに、本実施例に係る探索装置10は、二分木パターンが生成される度に、当該二分木パターンの木構造のうち次の二分木パターンの生成時に新規の株の接続が他の株よりも優先される優先株、すなわち後述の最右列株または最右下株の右子および左子が二分木データ木上で出現する位置を当該二分木パターンの識別情報に対応付けて保存する。このように次の二分木パターンの生成に備えて優先株の右子および左子が二分木データ木上で出現する位置を保存するのは、次に生成される二分木パターンと二分木データ木との間で対応付ける二分木データ木上のノードの位置を絞り込むためである。以下、次の二分木パターンの生成に備えて保存する、優先株の右子および左子が二分木データ木上で出現する位置のことを「優先株の子ノード出現位置」と記載することがある。これによって、次の二分木パターンの生成時に次の二分木パターンを二分木データ上で走査してノード間の対応付けを行わずともよいので、ノード間の対応付けの回数を削減できる。
その後、二分木パターンが新たに生成された場合、本実施例に係る探索装置10は、1つ前に生成された二分木パターンに追加された新規の株の右子および左子と、次の二分木パターンの生成に備えて保存されていた優先株の子ノード出現位置の右子および左子との間でラベルを照合する。これによって、新たに生成された二分木パターンが有する全てのノードから新規の株の右子および左子の2つのノードにラベルの照合を実行するノードを絞り込むことができる。この結果、ラベルの照合の回数を削減できる。
図4は、二分木データ木と二分木パターンの対応付けの一例を示す図である。図4には、図2と同様の表現でノード、リンクおよびラベルが示されることとする。図4に示すように、上記の二分木の生成アルゴリズムにしたがって株と呼ばれる二分木の最小構造を特定の順序で追加することにより、二分木パターンP11、二分木パターンP12の順にパターンが列挙される。
まず、ラベル「A」が割り当てられた親のノードN11と、ラベル「B」が割り当てられた左子のノードN12と、ラベル「C」が割り当てられた右子のノードN13との3つのノードを持つ株b11が二分木パターンP11として生成される。このように二分木パターンP11が最初に生成された場合、二分木パターンP11には株b11しか存在しないので、株b11が優先株に対応する。この二分木パターンP11が生成された後、二分木データ木D11の根に対応するノードn11から下層へ向かって順番に二分木パターンP11が二分木データ木D11上で走査される。すなわち、二分木パターンP11の根に対応するノードN11を二分木データ木D11のノードn11、ノードn12、ノードn13、・・・、ノードn19に対応付ける処理が9回繰り返される。
例えば、二分木パターンP11の根に対応するノードN11が二分木データ木D11のノードn11に対応付けられる場合、二分木パターンP11の出現位置C11-1が探索結果として得られる。すなわち、ノードN11の子ノードであるノードN12およびノードN13に対応付ける二分木データ木D01上のノードとして、ノードn12およびノードn13が存在する。さらに、二分木データ木D11及び二分木パターンP11の間で各ノードのラベルが一致する。すなわち、図4に示す通り、ノードN11及びノードn11は、いずれもラベルが「A」であるので一致し、ノードN12及びノードn12も、互いのラベルが「B」であるので一致し、さらに、ノードN13及びノードn13も、互いのラベルが「C」であるので一致する。この場合、二分木データ木D11における二分木パターンP11の出現位置C1-1として、二分木データ木D11のノードn11、ノードn12及びノードn13が得られる。
これと同様に、二分木パターンP11の根に対応するノードN11が二分木データ木D11のノードn16に対応付けられた場合にも、二分木パターンP11の出現位置C11-2として、二分木データ木D11のノードn16、ノードn18及びノードn19が得られる。
この他の場合、ノードN11の子ノードであるノードN12およびノードN13に対応付ける二分木データ木D11上のノードが存在しないか、あるいは存在しても二分木データ木D11及び二分木パターンP11の間で各ノードのラベルが一致しないので、二分木パターンP11の出現位置が探索結果として得られない。
このような二分木パターンP11の探索に加えて、当該二分木パターンP11の優先株b11の右子および左子が二分木データ木D11上で出現する位置、すなわち優先株b11の子ノード出現位置が保存される。あくまで一例として、二分木パターンP11に対応付けて、優先株b11の左子のノードが二分木データ木D11上で出現する位置、すなわちノードn12およびノードn18が優先株b11の左子出現位置として保存される。さらに、二分木パターンP11に対応付けて、優先株b11の右子のノードが二分木データ木D11上で出現する位置、すなわちノードn13およびノードn19が優先株b11の右子出現位置」として保存される。
二分木パターンP11の生成に続いて、二分木パターンP12が生成される。例えば、二分木パターンP12は、1つ前に生成された二分木パターンP11の優先株b11の左子に、ラベル「B」の親のノードN11、ラベル「B」の左子のノードN12およびラベル「C」の右子のノードN13の3つのノードを持つ新規の株b12が接続されることにより生成される。
ここで、二分木パターンP12の探索では、当該二分木パターンP12と二分木データ木D11との間でラベルの照合を実行する二分木データ木D11上のノードの位置が、1つ前の二分木パターンP11が生成された段階で次の二分木パターンP12の生成に備えて保存されていた優先株の子ノード出現位置の右子および左子に絞り込まれる。このとき、二分木パターンP11の拡張時には、二分木パターンP11の優先株b11の左子に新規の株b12が接続されている。このため、優先株b11の子ノード出現位置のうち、優先株b11の左子出現位置が参照される。
その上で、1つ前に生成された二分木パターンP11に追加された新規の株b12の右子および左子と、二分木パターンP11が生成された段階で保存されていた優先株b11の左子出現位置の右子および左子との間でノードを対応付ける。ここで、優先株b11の左子出現位置は、上述の通り、ノードn12およびノードn18の2箇所である。このため、上記の従来技術であれば、二分木パターンP12の根に対応するノードN11を二分木データ木D11のノードn11、ノードn12、ノードn13、・・・、ノードn19に対応付ける処理が9回繰り返されるところ、本実施例では、新規の株b12の右子および左子をノードn12の右子および左子とノードn18の右子および左子とに対応付ける2回で済む。それ故、本実施例は、上記の従来技術に比べて、ノード間の対応付けの回数を7回削減できる。
これら優先株b11の左子出現位置のうちノードn12には、右子および左子が存在する。このため、新規の株b12の右子のノードN14および左子のノードN15と、ノードn12の右子のノードn14および左子のノードn15とが対応付けられる。その上で、ノードN14およびノードn14の間でラベルが一致し、かつノードN15およびノードn15の間でラベルが一致する否かが照合される。図4に示す例では、ノードN14及びノードn14は、いずれもラベルが「C」であるので一致し、さらに、ノードN15及びノードn15も、互いのラベルが「D」であるので、2つともラベルが一致する。この場合、二分木パターンP11及び二分木パターンP12の差分、すなわち新規の株b12の左子および右子の出現位置C2-1として、二分木データ木D11のノードn14及びノードn15が得られる。これはあくまで差分の出現位置であるので、二分木パターンP12全体の出現位置が出力される場合、二分木パターンP11の出現位置C1-1および差分の出現位置C2-1を出力することとすればよい。なお、優先株b11の左子出現位置のうちノードn18には、右子および左子が存在しないので、二分木パターンP11及び二分木パターンP12の差分の出現位置は探索結果として得られない。
ここで、上記の従来技術であれば、二分木パターンP12には、ノードN11~ノードN15の5つのノードが含まれるので、ノードN11~ノードN15と、ノードN11~ノードN15が対応付けられた二分木データ木D11上の5つのノードとの間で5回のラベル照合が行われる。その一方で、本実施例では、二分木パターンP12が有する全てのノードの数に対応する5回分、ラベルの照合を行わずともよく、新規の株b12および優先株b11の間で互いの右子および左子の2つのノードのラベルを2回照合すればよい。それ故、本実施例は、上記の従来技術に比べて、ラベルの照合の回数を3回削減できる。
以上のように、本実施例に係る探索装置10によれば、ノード間の対応付けの回数およびラベルの照合の回数を削減できるので、特定の二分木パターンの探索を高速化することが可能である。
[探索装置10の構成]
図1に示すように、探索装置10は、インタフェース部11と、記憶部13と、制御部15とを有する。図1には、データの授受の関係を表す実線が示されているが、説明の便宜上、最小限の部分について示されているに過ぎない。すなわち、各処理部に関するデータの入出力は、図示の例に限定されず、図示以外のデータの入出力、例えば処理部及び処理部の間、処理部及びデータの間、並びに、処理部及び外部装置の間のデータの入出力が行われることとしてもかまわない。
インタフェース部11は、探索装置10および外部装置を接続する処理部である。
一側面として、インタフェース部11は、探索装置10および周辺装置、例えば図示しない入力部や出力部などの間でデータを伝送したり、また、探索装置10および外部のコンピュータの間でデータを通信したりする。
記憶部13は、制御部15で実行されるOS(Operating System)を始め、上記の探索処理を実現する探索プログラム、例えばアプリケーションプログラムやミドルウェアなどの各種プログラムに用いられるデータを記憶する記憶デバイスである。
一実施形態として、記憶部13は、探索装置10における補助記憶装置として実装することができる。例えば、記憶部13には、HDD(Hard Disk Drive)、光ディスクやSSD(Solid State Drive)などを採用できる。なお、記憶部13は、必ずしも補助記憶装置として実装されずともよく、探索装置10における主記憶装置として実装することもできる。この場合、記憶部13には、各種の半導体メモリ素子、例えばRAM(Random Access Memory)やフラッシュメモリを採用できる。
記憶部13は、制御部15で実行されるプログラムに用いられるデータの一例として、二分木データ木13aとを記憶する。このようなデータ以外にも、記憶部13には、他の電子データが記憶されることとしてもかまわない。例えば、記憶部13は、上記の二分木の生成アルゴリズムにしたがって生成する二分木パターンの最大のサイズ、例えば株の数や階層の深さなどを二分木パターンの生成条件として記憶することができる。また、記憶部13は、二分木データ木に対する探索を継続する階層の深さなどを二分木パターンの探索条件として記憶することもできる。
二分木データ木13aは、ラベル付き二分木のデータである。この二分木データ木13aは、リスト形式、テーブル形式、あるいはXML等のマークアップ言語で表現されるデータであってかまわない。あくまで例として、ディープラーニング等の機械学習により学習された決定木を始め、バイナリツリーソート等に用いられる二分探索木、XML文書などが挙げられる。
制御部15は、探索装置10の全体制御を行う処理部である。
一実施形態として、制御部15は、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などのハードウェアプロセッサにより実装することができる。ここでは、プロセッサの一例として、CPUやMPUを例示したが、汎用型および特化型を問わず、任意のプロセッサ、例えばGPU(Graphics Processing Unit)やDSP(Digital Signal Processor)の他、GPGPU(General-Purpose computing on Graphics Processing Units)により実装することができる。この他、制御部15は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などのハードワイヤードロジックによって実現されることとしてもかまわない。
制御部15は、図示しない主記憶装置として実装されるRAM(Random Access Memory)のワークエリア上に、上記の探索プログラムを展開することにより、下記の処理部を仮想的に実現する。
図1に示すように、制御部15は、受付部15aと、生成部15bと、探索部15cと、出力部15dとを有する。
受付部15aは、二分木パターンの探索リクエストを受け付ける処理部である。
一側面として、受付部15aは、探索装置10がスタンドアローンで動作する場合、図示しない入力部からインタフェース部11を介して、二分木パターンの探索リクエストを受け付けることができる。他の側面として、受付部15aは、探索装置10が図示しないクライアント端末と接続された状態でクライアントサーバシステムとして動作する場合、図示しないクライアント端末からインタフェース部11を介して、二分木パターンの探索リクエストを受け付けることができる。
この二分木パターンの探索リクエストの受付時には、受付部15aは、各種の設定を併せて受け付けることもできる。例えば、受付部15aは、記憶部13に二分木データ木13aとして保存された複数の二分木データ木の中から、特定の二分木パターンを探索する対象とする二分木データ木の指定を受け付けることができる。この他、受付部15aは、後述の生成部15bが上記の二分木の生成アルゴリズムにしたがって生成する二分木パターンの最大のサイズ、例えば株の数や階層の深さなどを二分木パターンの生成条件として受け付けることもできる。また、受付部15aは、二分木パターンを探索する二分木データ木の階層の深さなどを二分木パターンの探索条件として受け付けることもできる。
生成部15bは、二分木パターンを生成する処理部である。
一実施形態として、生成部15bは、上記の二分木の生成アルゴリズムにしたがって、子ノードとして右子および左子を含む株と呼ばれる二分木の最小構造を特定の順序で付け加えることで二分木パターンを一意に列挙する。このような二分木の生成アルゴリズムの一例として、特願2018-018726号に記載の技術を用いることができる。
ここで、上記の二分木の生成アルゴリズムで用いる「株」の一例を図5に示す。図5は、株の一例を示す図である。図5に示すように、株b11は、ラベル「A」が割り当てられた親ノードN11と、ラベル「B」が割り当てられた左子のノードN12及びラベル「C」が割り当てられた右子のノードN13との3個のノードを有する。これら左子のノードN12及び右子のノードN13には、それぞれ1つだけ株を接続することができる。
例えば、生成部15bは、上記の二分木の生成アルゴリズムにしたがって、二分木パターンに含まれる最右株列上の右子、または、最右下株の左子に新規の株を追加する二分木パターンの拡張を繰り返すことにより、二分木パターンを列挙する。このように株の拡張を繰り返しながら列挙された一連の二分木パターンの間には、先行して列挙された二分木パターンが後続して列挙される二分木パターンに包含されるという包含関係が構築される。
ここで言う「最右株列」とは、二分木パターンにおいて、他の株に接続されていないルートの株から右子および左子の両方に株が接続されていない末端の株へ辿り着くまで、右子のノードに接続された株または右子のノードに株がない場合に左子のノードに接続された株を辿った系列のことを指す。また、「最右下株」とは、最右株列に属する株のうち、左子及び右子のいずれの子ノードにも株が接続されていない末端の株のことを指す。
図6は、二分木パターンの一例を示す図である。図6には、上記の二分木の生成アルゴリズムにしたがって生成された二分木パターンP13が示されている。図6に示すように、二分木パターンP13を辿って最右株列を識別する場合、ルートの株b61から最右株列の探索が開始される。ルートの株b61の右子のノードには、株b62が接続されているので、株b61の次に株b62を辿る。そして、株b62の右子のノードには、株が接続されていないので、株b62の次には、株b62の左子のノードに接続された株b63を辿る。この株b63の右子および左子のいずれにも株が接続されていないので、最右株列の探索は終了となる。このように探索された株b61、株b62および株b63の系列が最右株列L60と識別される。さらに、最右株列L60に属する株b61、株b62および株b63のうち、左子及び右子のいずれの子ノードにも株が接続されていない末端の株b63が最右下株と識別される。これら最右株列L60や最右下株b63が上記の優先株に対応する。
探索部15cは、二分木データ木における特定の二分木パターンを探索する処理部である。
ここで、あくまで一例として、探索部15cが読み出し及び書き込みのアクセスが可能なメモリ(不図示)のワークエリア上で下記のデータを管理しつつ、二分木パターンの探索に使用する。このように二分木パターンの探索に用いるデータの1つとして、「二分木データ木D」、「二分木パターンT」、「二分木パターンT.S」、「最右下株の左子出現位置リストT.l」および「最右下株の右子出現位置リストT.r」などが挙げられる。
ここで言う「二分木データ木D」とは、一連の二分木パターンを探索する対象とする二分木データ木を指す。例えば、二分木データ木Dは、二分木パターンの探索リクエストの受付時などに、記憶部13に二分木データ木13aとして保存された複数の二分木データ木の中から指定を受け付けることによりワークエリア上に保存される。なお、二分木データ木Dは、必ずしも二分木データ木13aの中から指定されずともよく、外部からインタフェース部11を介して受け付けることとしてもよい。
また、「二分木パターンT」及び「二分木パターンT.S」は、いずれも上記の二分木の生成アルゴリズムにしたがって生成される一連の二分木パターンの1つであるが、上記の二分木の生成アルゴリズムにより列挙される順列は異なる。ここで、末尾のラベル「T」及び「T.S」は、新規の株Sが追加される前後2つの二分木パターンのうちいずれの二分木パターンを指すのかを区別する側面から付与される。
また、「最右下株の左子出現位置リストT.l」および「最右下株の右子出現位置リストT.r」は、二分木パターンTの最右下株の左子または右子が二分木データ木D上で出現する位置のリストを指す。例えば、二分木データ木D上の位置は、二分木データ木Dに含まれるノードごとに採番されるノードの識別情報で表現することができる。
このようなデータ管理の下、探索部15cは、生成部15bにより二分木パターンT.Sが生成される度に、二分木パターンT.Sの左子出現位置リストT.S.l及び右子出現位置リストT.S.rの出力を得ることを目的の1つとして、以下のような処理を実行する。すなわち、探索部15cは、二分木パターンT.Sの左子出現位置リストT.S.lおよび右子出現位置リストT.S.rを空のリストとして初期化する。
まず、探索部15cは、二分木パターンTに追加された新規の株Sの位置が下記の3つのうちいずれのノードであるかを識別する。すなわち、上記の二分木の生成アルゴリズムに従えば、(A)二分木パターンTの最右下株の左子、(B)二分木パターンTの最右下株の右子、(C)二分木パターンTの最右株列に属する株の右子のいずれかに新規の株Sが追加される。
(A)二分木パターンTの最右下株の左子
ここで、新規の株Sが二分木パターンTの最右下株の左子に追加された場合、探索部15cは、二分木パターンTの最右下株の左子出現位置リストT.lからノードvを取り出す。その上で、探索部15cは、最右下株の左子出現位置リストT.lから取り出されたノードvの左子v.lと右子v.rのラベルと、新規の株Sの左子と右子のラベルとを照合する。このとき、ノードvの左子v.lのラベルが新規の株Sの左子のラベルと一致し、かつノードvの右子v.rのラベルが新規の株Sの右子のラベルと一致する場合、探索部15cは、ノードvの左子v.lを二分木パターンT.Sの左子出現位置リストT.S.lに追加すると共に、ノードvの右子v.rを二分木パターンT.Sの右子出現位置リストT.S.rに追加する。
(B)二分木パターンTの最右下株の右子
また、新規の株Sが二分木パターンTの最右下株の左子に追加された場合、探索部15cは、二分木パターンTの最右下株の右子出現位置リストT.rからノードvを取り出す。その上で、探索部15cは、最右下株の右子出現位置リストT.rから取り出されたノードvの左子v.lと右子v.rのラベルと、新規の株Sの左子と右子のラベルとを照合する。このとき、ノードvの左子v.lのラベルが新規の株Sの左子のラベルと一致し、かつノードvの右子v.rのラベルが新規の株Sの右子のラベルと一致する場合、探索部15cは、ノードvの左子v.lを二分木パターンT.Sの左子出現位置リストT.S.lに追加すると共に、ノードvの右子v.rを二分木パターンT.Sの右子出現位置リストT.S.rに追加する。
(C)二分木パターンTの最右株列に属する株の右子
また、新規の株Sが二分木パターンTの最右株列に属する株の右子に追加された場合、探索部15cは、二分木パターンTの最右下株の左子出現位置リストT.lからノードvを取り出す。ここで、分岐Cに該当する場合、新規の株Sが最右下株の左子(または右子)ではなく、最右株列に属する株のうち最上段の株の右子に新規の株Sが追加されるのは上記の二分木の生成アルゴリズムから明らかである。このため、二分木パターンTの最右下株の左子(または右子)から、二分木パターンTの最右株列に属する最上段の株の右子までの段差hが求められる。この段差hにしたがって、探索部15cは、最右下株の左子出現位置リストT.lから取り出されたノードvのh段上のノードvの左子v.lと右子v.rのラベルと、新規の株Sの左子と右子のラベルとを照合する。このとき、ノードvの左子v.lのラベルが新規の株Sの左子のラベルと一致し、かつノードvの右子v.rのラベルが新規の株Sの右子のラベルと一致する場合、探索部15cは、ノードvの左子v.lを二分木パターンT.Sの左子出現位置リストT.S.lに追加すると共に、ノードvの右子v.rを二分木パターンT.Sの右子出現位置リストT.S.rに追加する。
なお、複数のノードvが最右下株の左子出現位置リストT.lまたは右子出現位置リストT.rに登録されている場合、複数のノードvを順番に取り出して上記のラベル照合や上記のリスト登録等の処理を順番に実行するか、あるいは複数のノードvを一度に取り出して処理を並列して実行することができるのは言うまでもない。
出力部15dは、二分木パターンの探索結果を出力する処理部である。
一実施形態として、出力部15dは、探索部15cによる二分木パターンの探索の結果、二分木パターンごとに得られる左子出現位置リストT.S.lおよび右子出現位置リストT.S.rに基づいて各種の表示出力や音声出力を行うことができる。例えば、出力部15dは、二分木データ木Dにおける二分木パターンT.Sの出現位置を表示することができる。このように二分木パターンT.Sの出現位置を表示する場合、左子出現位置リストT.S.lおよび右子出現位置リストT.S.rにしたがって新規の株S、すなわち二分木パターンT.Sと1つ前に生成された二分木パターンTとの差分の出現位置を表示することもできるし、二分木パターンT.S全体の出現位置を二分木データ木D上に表示させることもできる。この他、出力部15dは、二分木データ木D上に二分木パターンT.Sが出現する回数を表示することもできる。
このような二分木パターンの探索結果の出力は、各種のユースケースで有用である。あくまで例示として、二分木データ木が「決定木」である場合、二分木パターンの探索結果が出力されることにより、二分木パターンと同じ構造の部分木が二分木データ木上で何度出現しているかなどの情報を与えることができる。このような情報は、あくまで一側面として、決定木がどのように機能しているかを知る手がかりになる。したがって、決定木の検証や監査に有用な情報を提供できる。
[動作例]
ここで、一例として、上記の二分木の探索アルゴリズムの動作例を図7を用いて説明する。図7は、二分木の探索アルゴリズムの動作例を示す図である。図7には、図4に示す二分木データ木D11と、二分木パターンP11及び二分木パターンP12とが示されている。なお、図7においても、図2と同様の表現でノード、リンクおよびラベルが示されることとする。
図7に示すように、上記の二分木の生成アルゴリズムにしたがって株と呼ばれる二分木の最小構造を特定の順序で追加することにより、二分木パターンP11、二分木パターンP12の順にパターンが列挙される。
例えば、二分木パターンP12が生成された段階では、探索部15cがメモリ上で管理するデータは、次の通りとなる。すなわち、二分木データ木「D」の記憶領域には、探索の対象とされる二分木データ木D11が格納される。二分木パターン「T.S」の記憶領域には、新たに生成された二分木パターンP12が格納される。二分木パターン「T」の記憶領域には、二分木パターンP12の1つ前に生成された二分木パターンP11が格納される。さらに、新規の株「S」の記憶領域には、二分木パターンP11に追加される株b12が格納される。
ここで、二分木パターンP11には、株が1つ、すなわち株b11しか存在しない。このため、株b11は、最右列株に属する株であり、なおかつ最右下株でもある。よって、二分木パターンP11が生成された段階で、二分木パターン「T」の最右下株の左子出現位置リスト「T.l」の記憶領域および二分木パターン「T」の最右下株の右子出現位置リスト「T.r」の記憶領域に次のデータを格納できる。すなわち、二分木パターン「T」の最右下株の左子出現位置リスト「T.l」の記憶領域には、二分木パターンP11の最右下株である株b11の左子のノードN12が二分木データ木D11上で出現するノードn12及びノードn18が格納される。さらに、二分木パターン「T」の最右下株の右子出現位置リスト「T.r」の記憶領域には、二分木パターンP11の最右下株である株b11の右子のノードN13が二分木データ木D11上で出現するノードn13及びノードn19が格納される。
このようなデータ管理の下、二分木パターンT.Sの探索が実行される。すなわち、新規の株S(=株b12)が二分木パターンT(=二分木パターンP11)の最右下株b11の左子のノードN12に取り付けられているので、上記の分岐Aに該当する。この場合、二分木パターンT(=二分木パターンP11)の最右下株b11の左子出現位置リストT.lには、ノードn12及びノードn18が格納されているので、これらがノード「v」として1つずつ取り出される。
例えば、左子出現位置リストT.l(=ノードn12、ノードn18)からノードvとしてノードn12が取り出された場合を説明する。この場合、左子出現位置リストT.から取り出されたノードv(=ノードn12)の左子v.l(=ノードn14)及び右子v.r(=ノードn15)のラベルと、新規の株S(=株b12)の左子(=ノードN14)及び右子(=ノードN15)のラベルとが照合される。このとき、ノードv(=ノードn12)の左子v.l(=ノードn14)のラベル(=C)が新規の株S(=株b12)の左子(=ノードN14)のラベル(=C)と一致する。さらに、ノードv(=ノードn12)の右子v.r(=ノードn15)のラベル(=D)が新規の株S(=株b12)の右子(=ノードN15)のラベル(=D)と一致する。これら両者のラベルが一致する場合、ノードv(=ノードn12)の左子v.l(=ノードn14)が二分木パターンT.S(=二分木パターンP12)の左子出現位置リストT.S.lの記憶領域に登録される。さらに、ノードv(=ノードn12)の右子v.r(=ノードn15)が二分木パターンT.S(=二分木パターンP12)の右子出現位置リストT.S.rに登録される。
一方、左子出現位置リストT.l(=ノードn12、ノードn18)からノードvとしてノードn18が取り出された場合を説明する。この場合、左子出現位置リストT.から取り出されたノードv(=ノードn18)には、左子v.l及び右子v.rが存在しない。よって、二分木パターンT.S(=二分木パターンT.S)の右子出現位置リストT.S.rには、登録が実行されない。
この結果、二分木パターンT.S(=二分木パターンP12)の左子出現位置リストT.S.l(=ノードn14)および右子出現位置リストT.S.r(=ノードn15)が得られる。これによって、二分木データ木P12の出現位置として、二分木データ木P11及び二分木データ木P12の差分、すなわち拡張部分である株b12の左子および右子を二分木データ木D11上で表示することができる。
[処理の流れ]
図8は、実施例1に係る探索処理の手順を示すフローチャートである。この処理は、一例として、生成部15bにより二分木パターンT.Sが生成された場合に開始される。図8に示すように、探索部15cは、二分木パターンT.Sの左子出現位置リストT.S.lおよび右子出現位置リストT.S.rを空のリストとして初期化する(ステップS101)。
ここで、新規の株Sが二分木パターンTの最右下株の左子に追加された場合(ステップS102A)、探索部15cは、下記の通り、ラベルの照合結果に応じて二分木パターンT.Sの左子出現位置リストT.S.l及び右子出現位置リストT.S.rを更新する(ステップS103A)。
ステップS103Aでは、次のような処理が実行される。すなわち、二分木パターンTの最右下株の左子出現位置リストT.lからノードvが取り出される。その上で、最右下株の左子出現位置リストT.lから取り出されたノードvの左子v.lと右子v.rのラベルと、新規の株Sの左子と右子のラベルとが照合される。このとき、ノードvの左子v.lのラベルが新規の株Sの左子のラベルと一致し、かつノードvの右子v.rのラベルが新規の株Sの右子のラベルと一致する場合、ノードvの左子v.lが二分木パターンT.Sの左子出現位置リストT.S.lに登録されると共に、ノードvの右子v.rが二分木パターンT.Sの右子出現位置リストT.S.rに登録される。
また、新規の株Sが二分木パターンTの最右下株の左子に追加された場合(ステップS102B)、探索部15cは、下記の通り、ラベルの照合結果に応じて二分木パターンT.Sの左子出現位置リストT.S.l及び右子出現位置リストT.S.rを更新する(ステップS103B)。
ステップS103Bでは、次のような処理が実行される。すなわち、二分木パターンTの最右下株の右子出現位置リストT.rからノードvが取り出される。その上で、最右下株の右子出現位置リストT.rから取り出されたノードvの左子v.lと右子v.rのラベルと、新規の株Sの左子と右子のラベルとが照合される。このとき、ノードvの左子v.lのラベルが新規の株Sの左子のラベルと一致し、かつノードvの右子v.rのラベルが新規の株Sの右子のラベルと一致する場合、ノードvの左子v.lが二分木パターンT.Sの左子出現位置リストT.S.lに登録されると共に、ノードvの右子v.rが二分木パターンT.Sの右子出現位置リストT.S.rに登録される。
また、新規の株Sが二分木パターンTの最右株列に属する株の右子に追加された場合(ステップS102C)、探索部15cは、下記の通り、ラベルの照合結果に応じて二分木パターンT.Sの左子出現位置リストT.S.l及び右子出現位置リストT.S.rを更新する(ステップS103C)。
ステップS103Cでは、次のような処理が実行される。すなわち、二分木パターンTの最右下株の左子出現位置リストT.lからノードvが取り出される。ここで、分岐Cに該当する場合、新規の株Sが最右下株の左子(または右子)ではなく、最右株列に属する株のうち最上段の株の右子に新規の株Sが追加されるのは上記の二分木の生成アルゴリズムから明らかである。このため、二分木パターンTの最右下株の左子(または右子)から、二分木パターンTの最右株列に属する最上段の株の右子までの段差hが求められる。この段差hにしたがって、最右下株の左子出現位置リストT.lから取り出されたノードvのh段上のノードvの左子v.lと右子v.rのラベルと、新規の株Sの左子と右子のラベルとが照合される。このとき、ノードvの左子v.lのラベルが新規の株Sの左子のラベルと一致し、かつノードvの右子v.rのラベルが新規の株Sの右子のラベルと一致する場合、ノードvの左子v.lが二分木パターンT.Sの左子出現位置リストT.S.lに登録されると共に、ノードvの右子v.rが二分木パターンT.Sの右子出現位置リストT.S.rに登録される。
これらステップS103A~ステップS103Cでは、複数のノードvが最右下株の左子出現位置リストT.lまたは右子出現位置リストT.rに登録されている場合、複数のノードvを順番に取り出して上記のラベル照合や上記のリスト登録等の処理を順番に実行するか、あるいは複数のノードvを一度に取り出して処理を並列して実行することができるのは言うまでもない。
その後、出力部15dは、ステップS103A~ステップS103Cのいずれかの結果として得られる左子出現位置リストT.S.lおよび右子出現位置リストT.S.rに基づいて各種の表示出力や音声出力を行い(ステップS104)、処理を終了する。
[効果の一側面]
上述してきたように、本実施例に係る探索装置10は、対象の二分データ木から特定の二分木パターンを探索する際に、二分木の最小単位である株を追加しつつ列挙した二分木パターンを用いて、追加部分のノードの出現位置のみ探索を行う。したがって、本実施例に係る探索装置10によれば、ノード間の対応付けの回数およびラベルの照合の回数を削減できるので、特定の二分木パターンの探索を高速化することが可能である。
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
[二分木の生成アルゴリズム]
上記の実施例1では、あくまで一例として、上記の二分木の生成アルゴリズムが「最右株列」および「最右下株」に基づいて新規の株を追加する拡張手順について説明したが、実施の形態はこれに限られない。例えば、上記の二分木の生成アルゴリズムは、ルート株から、左子に接続された株又は左子に株がない場合に右子に接続された株を辿る、すなわち「左子」と「右子」とを読み替えて、「最左株列」および「最左下株」に基づいて新規の株を追加する拡張手順を行うこととしてもかまわない。
[分散および統合]
また、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されておらずともよい。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、受付部15a、生成部15b、探索部15cまたは出力部15dを探索装置10の外部装置としてネットワーク経由で接続するようにしてもよい。また、受付部15a、生成部15b、探索部15cまたは出力部15dを別の装置がそれぞれ有し、ネットワーク接続されて協働することで、上記の探索装置10の機能を実現するようにしてもよい。また、記憶部13に記憶される二分木データ木13aの全部または一部を別の装置がそれぞれ有し、ネットワーク接続されて協働することで、上記の探索装置10の機能を実現するようにしてもかまわない。
[探索プログラム]
また、上記の実施例で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図9を用いて、上記の実施例と同様の機能を有する探索プログラムを実行するコンピュータの一例について説明する。
図9は、実施例1及び実施例2に係る探索プログラムを実行するコンピュータのハードウェア構成例を示す図である。図9に示すように、コンピュータ100は、操作部110aと、スピーカ110bと、カメラ110cと、ディスプレイ120と、通信部130とを有する。さらに、このコンピュータ100は、CPU150と、ROM160と、HDD0170と、RAM180とを有する。これら110~180の各部はバス140を介して接続される。
HDD0170には、図9に示すように、上記の実施例1で示した受付部15a、生成部15b、探索部15c及び出力部15dと同様の機能を発揮する探索プログラム170aが記憶される。この探索プログラム170aは、図1に示した受付部15a、生成部15b、探索部15c及び出力部15dの各構成要素と同様、統合又は分離してもかまわない。すなわち、HDD0170には、必ずしも上記の実施例1で示した全てのデータが格納されずともよく、処理に用いるデータがHDD0170に格納されればよい。
このような環境の下、CPU150は、HDD0170から探索プログラム170aを読み出した上でRAM180へ展開する。この結果、探索プログラム170aは、図9に示すように、探索プロセス180aとして機能する。この探索プロセス180aは、RAM180が有する記憶領域のうち探索プロセス180aに割り当てられた領域にHDD0170から読み出した各種データを展開し、この展開した各種データを用いて各種の処理を実行する。例えば、探索プロセス180aが実行する処理の一例として、図8に示す処理などが含まれる。なお、CPU150では、必ずしも上記の実施例1で示した全ての処理部が動作せずともよく、実行対象とする処理に対応する処理部が仮想的に実現されればよい。
なお、上記の探索プログラム170aは、必ずしも最初からHDD0170やROM160に記憶されておらずともかまわない。例えば、コンピュータ100に挿入されるフレキシブルディスク、いわゆるFD、CD-ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に探索プログラム170aを記憶させる。そして、コンピュータ100がこれらの可搬用の物理媒体から探索プログラム170aを取得して実行するようにしてもよい。また、公衆回線、インターネット、LAN、WANなどを介してコンピュータ100に接続される他のコンピュータまたはサーバ装置などに探索プログラム170aを記憶させておき、コンピュータ100がこれらから探索プログラム170aを取得して実行するようにしてもよい。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)対象の二分木データ木における、特定の二分木パターンの探索プログラムであって、
コンピュータに、
前記特定の二分木パターンを、所定の手順により複数の二分木ユニットの組み合わせに分解し、
前記複数の二分木ユニットの中に、先頭からの二分木ユニットの組み合わせであって、前記対象の二分木データ木における位置が対応づけられた登録済二分木パターンが存在する場合、前記登録済二分木パターンの位置を利用して、前記特定の二分木パターンの探索を行う、
処理を実行させる探索プログラムであり、
前記所定の手順では、
最小の二分木であり、根と左子及び右子の2つの子とを有する株から、前記根が他の株に接続されていない親株の前記左子及び右子の2つの子のうち少なくともいずれかに、所定の拡張手法により他の株の前記根を接続する形で拡張した、株の木構造を生成し、
前記株の木構造を構成する株それぞれを二分木に展開することにより、前記株の木構造から二分木を生成し、
前記所定の拡張手法は、
接続対象の株が、前記株の木構造のうち、前記親株から右子に接続された株、若しくは右子に株が接続されていない場合において左子に接続された株を辿って得られる株の系列である最右株列上の株であって、右子にも左子にも株が接続されていない末端の株である場合は、当該接続対象の株の右子若しくは左子に新たな株を接続して拡張し、
接続対象の株が、前記株の木構造のうち、前記株の木構造の最右株列上の株であって、末端の株以外である場合は、当該接続対象の株の右子にのみ新たな株を接続して拡張し、
接続対象の株が、前記株の木構造のうち、前記親株から左子に接続された株、若しくは左子に株が接続されていない場合において右子に接続された株を辿って得られる株の系列である最左株列上の末端の株である場合は、当該接続対象の株の右子若しくは左子に新たな株を接続して拡張し、
接続対象の株が、前記株の木構造のうち、前記株の木構造の最左株列上の株であって、末端の株以外である場合は、当該接続対象の株の左子にのみ新たな株を接続して拡張する、
ことを特徴とする探索プログラム。
(付記2)付記1に記載の探索プログラムであって、
前記特定の二分木パターンは、前記新たな株が前記登録済二分木パターンに接続された位置が前記最右株列上の末端の株の右子若しくは左子である場合、前記最右株列上の末端の株の右子若しくは左子が前記登録済二分木パターンで出現するノードの位置で探索される探索プログラム。
(付記3)付記2に記載の探索プログラムであって、
前記特定の二分木パターンは、前記新たな株が前記登録済二分木パターンに接続された位置が前記最右株列上の株であって末端の株以外である場合、前記最右株列上で前記末端よりも上の階層に接続された株の右子が前記登録済二分木パターンで出現するノードの位置で探索される探索プログラム。
(付記4)付記3に記載の探索プログラムであって、
前記特定の二分木パターンは、前記ノードが有する右子及び左子と、前記新たな株の右子及び左子との間でラベルが一致するか否かを照合することにより探索される探索プログラム。
(付記5)付記1に記載の探索プログラムであって、
前記特定の二分木パターンは、前記新たな株が前記登録済二分木パターンに接続された位置が前記最左株列上の末端の株の右子若しくは左子である場合、前記最左株列上の末端の株の右子若しくは左子が前記登録済二分木パターンで出現するノードの位置で探索される探索プログラム。
(付記6)付記5に記載の探索プログラムであって、
前記特定の二分木パターンは、前記新たな株が前記登録済二分木パターンに接続された位置が前記最左株列上の株であって末端の株以外である場合、前記最左株列上で前記末端よりも上の階層に接続された株の左子が前記登録済二分木パターンで出現するノードの位置で探索される探索プログラム。
(付記7)付記6に記載の探索プログラムであって、
前記特定の二分木パターンは、前記ノードが有する右子及び左子と、前記新たな株の右子及び左子との間でラベルが一致するか否かを照合することにより探索される探索プログラム。
(付記8)対象の二分木データ木における、特定の二分木パターンの探索方法であって、
コンピュータが、
前記特定の二分木パターンを、所定の手順により複数の二分木ユニットの組み合わせに分解し、
前記複数の二分木ユニットの中に、先頭からの二分木ユニットの組み合わせであって、前記対象の二分木データ木における位置が対応づけられた登録済二分木パターンが存在する場合、前記登録済二分木パターンの位置を利用して、前記特定の二分木パターンの探索を行う、
処理を実行する探索方法であり、
前記所定の手順では、
最小の二分木であり、根と左子及び右子の2つの子とを有する株から、前記根が他の株に接続されていない親株の前記左子及び右子の2つの子のうち少なくともいずれかに、所定の拡張手法により他の株の前記根を接続する形で拡張した、株の木構造を生成し、
前記株の木構造を構成する株それぞれを二分木に展開することにより、前記株の木構造から二分木を生成し、
前記所定の拡張手法は、
接続対象の株が、前記株の木構造のうち、前記親株から右子に接続された株、若しくは右子に株が接続されていない場合において左子に接続された株を辿って得られる株の系列である最右株列上の株であって、右子にも左子にも株が接続されていない末端の株である場合は、当該接続対象の株の右子若しくは左子に新たな株を接続して拡張し、
接続対象の株が、前記株の木構造のうち、前記株の木構造の最右株列上の株であって、末端の株以外である場合は、当該接続対象の株の右子にのみ新たな株を接続して拡張し、
接続対象の株が、前記株の木構造のうち、前記親株から左子に接続された株、若しくは左子に株が接続されていない場合において右子に接続された株を辿って得られる株の系列である最左株列上の末端の株である場合は、当該接続対象の株の右子若しくは左子に新たな株を接続して拡張し、
接続対象の株が、前記株の木構造のうち、前記株の木構造の最左株列上の株であって、末端の株以外である場合は、当該接続対象の株の左子にのみ新たな株を接続して拡張する、
ことを特徴とする探索方法。
(付記9)付記8に記載の探索方法であって、
前記特定の二分木パターンは、前記新たな株が前記登録済二分木パターンに接続された位置が前記最右株列上の末端の株の右子若しくは左子である場合、前記最右株列上の末端の株の右子若しくは左子が前記登録済二分木パターンで出現するノードの位置で探索される探索方法。
(付記10)付記9に記載の探索方法であって、
前記特定の二分木パターンは、前記新たな株が前記登録済二分木パターンに接続された位置が前記最右株列上の株であって末端の株以外である場合、前記最右株列上で前記末端よりも上の階層に接続された株の右子が前記登録済二分木パターンで出現するノードの位置で探索される探索方法。
(付記11)付記10に記載の探索方法であって、
前記特定の二分木パターンは、前記ノードが有する右子及び左子と、前記新たな株の右子及び左子との間でラベルが一致するか否かを照合することにより探索される探索方法。
(付記12)付記8に記載の探索方法であって、
前記特定の二分木パターンは、前記新たな株が前記登録済二分木パターンに接続された位置が前記最左株列上の末端の株の右子若しくは左子である場合、前記最左株列上の末端の株の右子若しくは左子が前記登録済二分木パターンで出現するノードの位置で探索される探索方法。
(付記13)付記12に記載の探索方法であって、
前記特定の二分木パターンは、前記新たな株が前記登録済二分木パターンに接続された位置が前記最左株列上の株であって末端の株以外である場合、前記最左株列上で前記末端よりも上の階層に接続された株の左子が前記登録済二分木パターンで出現するノードの位置で探索される探索方法。
(付記14)付記13に記載の探索方法であって、
前記特定の二分木パターンは、前記ノードが有する右子及び左子と、前記新たな株の右子及び左子との間でラベルが一致するか否かを照合することにより探索される探索方法。
(付記15)対象の二分木データ木における、特定の二分木パターンの探索装置であって、
前記特定の二分木パターンを、所定の手順により複数の二分木ユニットの組み合わせに分解する分解部と、
前記複数の二分木ユニットの中に、先頭からの二分木ユニットの組み合わせであって、前記対象の二分木データ木における位置が対応づけられた登録済二分木パターンが存在する場合、前記登録済二分木パターンの位置を利用して、前記特定の二分木パターンの探索を行う探索部と、
を有する探索装置であり、
前記所定の手順では、
最小の二分木であり、根と左子及び右子の2つの子とを有する株から、前記根が他の株に接続されていない親株の前記左子及び右子の2つの子のうち少なくともいずれかに、所定の拡張手法により他の株の前記根を接続する形で拡張した、株の木構造を生成し、
前記株の木構造を構成する株それぞれを二分木に展開することにより、前記株の木構造から二分木を生成し、
前記所定の拡張手法は、
接続対象の株が、前記株の木構造のうち、前記親株から右子に接続された株、若しくは右子に株が接続されていない場合において左子に接続された株を辿って得られる株の系列である最右株列上の株であって、右子にも左子にも株が接続されていない末端の株である場合は、当該接続対象の株の右子若しくは左子に新たな株を接続して拡張し、
接続対象の株が、前記株の木構造のうち、前記株の木構造の最右株列上の株であって、末端の株以外である場合は、当該接続対象の株の右子にのみ新たな株を接続して拡張し、
接続対象の株が、前記株の木構造のうち、前記親株から左子に接続された株、若しくは左子に株が接続されていない場合において右子に接続された株を辿って得られる株の系列である最左株列上の末端の株である場合は、当該接続対象の株の右子若しくは左子に新たな株を接続して拡張し、
接続対象の株が、前記株の木構造のうち、前記株の木構造の最左株列上の株であって、末端の株以外である場合は、当該接続対象の株の左子にのみ新たな株を接続して拡張する、
ことを特徴とする探索装置。
(付記16)付記15に記載の探索装置であって、
前記特定の二分木パターンは、前記新たな株が前記登録済二分木パターンに接続された位置が前記最右株列上の末端の株の右子若しくは左子である場合、前記最右株列上の末端の株の右子若しくは左子が前記登録済二分木パターンで出現するノードの位置で探索される探索装置。
(付記17)付記16に記載の探索装置であって、
前記特定の二分木パターンは、前記新たな株が前記登録済二分木パターンに接続された位置が前記最右株列上の株であって末端の株以外である場合、前記最右株列上で前記末端よりも上の階層に接続された株の右子が前記登録済二分木パターンで出現するノードの位置で探索される探索装置。
(付記18)付記17に記載の探索装置であって、
前記特定の二分木パターンは、前記ノードが有する右子及び左子と、前記新たな株の右子及び左子との間でラベルが一致するか否かを照合することにより探索される探索装置。
(付記19)付記15に記載の探索装置であって、
前記特定の二分木パターンは、前記新たな株が前記登録済二分木パターンに接続された位置が前記最左株列上の末端の株の右子若しくは左子である場合、前記最左株列上の末端の株の右子若しくは左子が前記登録済二分木パターンで出現するノードの位置で探索される探索装置。
(付記20)付記19に記載の探索装置であって、
前記特定の二分木パターンは、前記新たな株が前記登録済二分木パターンに接続された位置が前記最左株列上の株であって末端の株以外である場合、前記最左株列上で前記末端よりも上の階層に接続された株の左子が前記登録済二分木パターンで出現するノードの位置で探索される探索装置。
(付記21)付記20に記載の探索装置であって、
前記特定の二分木パターンは、前記ノードが有する右子及び左子と、前記新たな株の右子及び左子との間でラベルが一致するか否かを照合することにより探索される探索装置。
10 探索装置
11 インタフェース部
13 記憶部
13a 二分木データ木
15 制御部
15a 受付部
15b 生成部
15c 探索部
15d 出力部

Claims (7)

  1. 対象の二分木データ木における、特定の二分木パターンの探索プログラムであって、
    コンピュータに、
    前記特定の二分木パターンを、所定の手順により複数の二分木ユニットの組み合わせに分解し、
    前記複数の二分木ユニットの中に、先頭からの二分木ユニットの組み合わせであって、前記対象の二分木データ木における位置が対応づけられた登録済二分木パターンが存在する場合、前記登録済二分木パターンの位置を利用して、前記特定の二分木パターンの探索を行う、
    処理を実行させる探索プログラムであり、
    前記所定の手順では、
    最小の二分木であり、根と左子及び右子の2つの子とを有する株から、前記根が他の株に接続されていない親株の前記左子及び右子の2つの子のうち少なくともいずれかに、所定の拡張手法により他の株の前記根を接続する形で拡張した、株の木構造を生成し、
    前記株の木構造を構成する株それぞれを二分木に展開することにより、前記株の木構造から二分木を生成し、
    前記所定の拡張手法は、
    接続対象の株が、前記株の木構造のうち、前記親株から右子に接続された株、若しくは右子に株が接続されていない場合において左子に接続された株を辿って得られる株の系列である最右株列上の株であって、右子にも左子にも株が接続されていない末端の株である場合は、当該接続対象の株の右子若しくは左子に新たな株を接続して拡張し、
    接続対象の株が、前記株の木構造のうち、前記株の木構造の最右株列上の株であって、末端の株以外である場合は、当該接続対象の株の右子にのみ新たな株を接続して拡張し、
    接続対象の株が、前記株の木構造のうち、前記親株から左子に接続された株、若しくは左子に株が接続されていない場合において右子に接続された株を辿って得られる株の系列である最左株列上の末端の株である場合は、当該接続対象の株の右子若しくは左子に新たな株を接続して拡張し、
    接続対象の株が、前記株の木構造のうち、前記株の木構造の最左株列上の株であって、末端の株以外である場合は、当該接続対象の株の左子にのみ新たな株を接続して拡張する、
    ことを特徴とする探索プログラム。
  2. 請求項1に記載の探索プログラムであって、
    前記特定の二分木パターンは、前記新たな株が前記登録済二分木パターンに接続された位置が前記最右株列上の末端の株の右子若しくは左子である場合、前記最右株列上の末端の株の右子若しくは左子が前記登録済二分木パターンで出現するノードの位置で探索される探索プログラム。
  3. 請求項2に記載の探索プログラムであって、
    前記特定の二分木パターンは、前記新たな株が前記登録済二分木パターンに接続された位置が前記最右株列上の株であって末端の株以外である場合、前記最右株列上で前記末端よりも上の階層に接続された株の右子が前記登録済二分木パターンで出現するノードの位置で探索される探索プログラム。
  4. 請求項3に記載の探索プログラムであって、
    前記特定の二分木パターンは、前記ノードが有する右子及び左子と、前記新たな株の右子及び左子との間でラベルが一致するか否かを照合することにより探索される探索プログラム。
  5. 請求項1に記載の探索プログラムであって、
    前記特定の二分木パターンは、前記新たな株が前記登録済二分木パターンに接続された位置が前記最左株列上の末端の株の右子若しくは左子である場合、前記最左株列上の末端の株の右子若しくは左子が前記登録済二分木パターンで出現するノードの位置で探索される探索プログラム。
  6. 対象の二分木データ木における、特定の二分木パターンの探索方法であって、
    コンピュータが、
    前記特定の二分木パターンを、所定の手順により複数の二分木ユニットの組み合わせに分解し、
    前記複数の二分木ユニットの中に、先頭からの二分木ユニットの組み合わせであって、前記対象の二分木データ木における位置が対応づけられた登録済二分木パターンが存在する場合、前記登録済二分木パターンの位置を利用して、前記特定の二分木パターンの探索を行う、
    処理を実行する探索方法であり、
    前記所定の手順では、
    最小の二分木であり、根と左子及び右子の2つの子とを有する株から、前記根が他の株に接続されていない親株の前記左子及び右子の2つの子のうち少なくともいずれかに、所定の拡張手法により他の株の前記根を接続する形で拡張した、株の木構造を生成し、
    前記株の木構造を構成する株それぞれを二分木に展開することにより、前記株の木構造から二分木を生成し、
    前記所定の拡張手法は、
    接続対象の株が、前記株の木構造のうち、前記親株から右子に接続された株、若しくは右子に株が接続されていない場合において左子に接続された株を辿って得られる株の系列である最右株列上の株であって、右子にも左子にも株が接続されていない末端の株である場合は、当該接続対象の株の右子若しくは左子に新たな株を接続して拡張し、
    接続対象の株が、前記株の木構造のうち、前記株の木構造の最右株列上の株であって、末端の株以外である場合は、当該接続対象の株の右子にのみ新たな株を接続して拡張し、
    接続対象の株が、前記株の木構造のうち、前記親株から左子に接続された株、若しくは左子に株が接続されていない場合において右子に接続された株を辿って得られる株の系列である最左株列上の末端の株である場合は、当該接続対象の株の右子若しくは左子に新たな株を接続して拡張し、
    接続対象の株が、前記株の木構造のうち、前記株の木構造の最左株列上の株であって、末端の株以外である場合は、当該接続対象の株の左子にのみ新たな株を接続して拡張する、
    ことを特徴とする探索方法。
  7. 対象の二分木データ木における、特定の二分木パターンの探索装置であって、
    前記特定の二分木パターンを、所定の手順により複数の二分木ユニットの組み合わせに分解する分解部と、
    前記複数の二分木ユニットの中に、先頭からの二分木ユニットの組み合わせであって、前記対象の二分木データ木における位置が対応づけられた登録済二分木パターンが存在する場合、前記登録済二分木パターンの位置を利用して、前記特定の二分木パターンの探索を行う探索部と、
    を有する探索装置であり、
    前記所定の手順では、
    最小の二分木であり、根と左子及び右子の2つの子とを有する株から、前記根が他の株に接続されていない親株の前記左子及び右子の2つの子のうち少なくともいずれかに、所定の拡張手法により他の株の前記根を接続する形で拡張した、株の木構造を生成し、
    前記株の木構造を構成する株それぞれを二分木に展開することにより、前記株の木構造から二分木を生成し、
    前記所定の拡張手法は、
    接続対象の株が、前記株の木構造のうち、前記親株から右子に接続された株、若しくは右子に株が接続されていない場合において左子に接続された株を辿って得られる株の系列である最右株列上の株であって、右子にも左子にも株が接続されていない末端の株である場合は、当該接続対象の株の右子若しくは左子に新たな株を接続して拡張し、
    接続対象の株が、前記株の木構造のうち、前記株の木構造の最右株列上の株であって、末端の株以外である場合は、当該接続対象の株の右子にのみ新たな株を接続して拡張し、
    接続対象の株が、前記株の木構造のうち、前記親株から左子に接続された株、若しくは左子に株が接続されていない場合において右子に接続された株を辿って得られる株の系列である最左株列上の末端の株である場合は、当該接続対象の株の右子若しくは左子に新たな株を接続して拡張し、
    接続対象の株が、前記株の木構造のうち、前記株の木構造の最左株列上の株であって、末端の株以外である場合は、当該接続対象の株の左子にのみ新たな株を接続して拡張する、
    ことを特徴とする探索装置。
JP2018210532A 2018-11-08 2018-11-08 探索プログラム、探索方法及び探索装置 Active JP7087931B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018210532A JP7087931B2 (ja) 2018-11-08 2018-11-08 探索プログラム、探索方法及び探索装置
US16/670,405 US11526529B2 (en) 2018-11-08 2019-10-31 Efficient discovery of a binary tree pattern from a large amount of binary tree data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018210532A JP7087931B2 (ja) 2018-11-08 2018-11-08 探索プログラム、探索方法及び探索装置

Publications (2)

Publication Number Publication Date
JP2020077236A JP2020077236A (ja) 2020-05-21
JP7087931B2 true JP7087931B2 (ja) 2022-06-21

Family

ID=70552315

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018210532A Active JP7087931B2 (ja) 2018-11-08 2018-11-08 探索プログラム、探索方法及び探索装置

Country Status (2)

Country Link
US (1) US11526529B2 (ja)
JP (1) JP7087931B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111625694B (zh) * 2020-06-05 2023-04-07 中国银行股份有限公司 多级标签处理方法、装置及计算机设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001117929A (ja) 1999-10-15 2001-04-27 Toshiba Corp データ検索方法、データ整列方法およびデータ検索装置

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH038083A (ja) * 1989-06-06 1991-01-16 Fujitsu Ltd 識別子付情報の木構造管理方式
US7133856B2 (en) * 2002-05-17 2006-11-07 The Board Of Trustees Of The Leland Stanford Junior University Binary tree for complex supervised learning
US7451144B1 (en) * 2003-02-25 2008-11-11 At&T Corp. Method of pattern searching
US8037102B2 (en) * 2004-02-09 2011-10-11 Robert T. and Virginia T. Jenkins Manipulating sets of hierarchical data
US7627591B2 (en) * 2004-10-29 2009-12-01 Skyler Technology, Inc. Method and/or system for manipulating tree expressions
US7636727B2 (en) * 2004-12-06 2009-12-22 Skyler Technology, Inc. Enumeration of trees from finite number of nodes
JP2009163564A (ja) 2008-01-08 2009-07-23 Nec Corp 情報処理装置、情報処理方法およびプログラム
US8880507B2 (en) * 2010-07-22 2014-11-04 Brocade Communications Systems, Inc. Longest prefix match using binary search tree
US8688685B2 (en) * 2012-06-15 2014-04-01 Sap Ag Accelerated searching of substrings
EP2849099B1 (en) * 2013-09-11 2021-07-28 Dassault Systèmes A computer-implemented method for designing an industrial product modeled with a binary tree.
RU2632133C2 (ru) * 2015-09-29 2017-10-02 Общество С Ограниченной Ответственностью "Яндекс" Способ (варианты) и система (варианты) создания модели прогнозирования и определения точности модели прогнозирования
JP6820584B6 (ja) 2016-07-28 2021-02-24 エイテックス株式会社 伝熱体および帯状ledライト
JP6973137B2 (ja) 2018-02-05 2021-11-24 富士通株式会社 生成プログラム、生成方法及び生成装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001117929A (ja) 1999-10-15 2001-04-27 Toshiba Corp データ検索方法、データ整列方法およびデータ検索装置

Also Published As

Publication number Publication date
JP2020077236A (ja) 2020-05-21
US20200151190A1 (en) 2020-05-14
US11526529B2 (en) 2022-12-13

Similar Documents

Publication Publication Date Title
JP4940973B2 (ja) 論理構造認識処理プログラム、論理構造認識処理方法および論理構造認識処理装置
US9552335B2 (en) Expedited techniques for generating string manipulation programs
JP2005025763A (ja) 構造化文書の分割プログラム、分割装置、及び分割方法
JP6816421B2 (ja) 学習プログラム、学習方法及び学習装置
Kopelowitz On-line indexing for general alphabets via predecessor queries on subsets of an ordered list
CN107545071B (zh) 一种字符串匹配的方法和装置
JP6663873B2 (ja) プログラム自動生成システム及びプログラム自動生成方法
US7046847B2 (en) Document processing method, system and medium
JP2008198132A (ja) 固有表現抽出プログラム、固有表現抽出方法および固有表現抽出装置
CN113836038A (zh) 测试数据构造方法、装置、设备及存储介质
US10037264B2 (en) Test suite minimization
JP7355123B2 (ja) プログラム生成装置、プログラム生成方法及びプログラム
JP7087931B2 (ja) 探索プログラム、探索方法及び探索装置
JPWO2016056236A1 (ja) 情報処理装置、情報処理方法、及び、プログラム
JP6846666B2 (ja) 翻訳文生成方法、翻訳文生成装置及び翻訳文生成プログラム
JP2009205523A (ja) プロパティ自動生成装置
CN115952201A (zh) 数据查询方法、装置、系统及存储介质
JP5894273B2 (ja) 文書関連付け方法および文書検索方法、文書関連付け装置および文書検索装置、並びにそのためのプログラム
JP2010218140A (ja) 検索装置、検索方法および記憶媒体
Hossain et al. Analysis of Bangla-2-Braille machine translator
JP6842436B2 (ja) 情報処理装置、情報処理方法、及びプログラム
US20180011833A1 (en) Syntax analyzing device, learning device, machine translation device and storage medium
JP2022052481A (ja) 説明文出力装置、説明文出力プログラム及び説明文出力方法
Inayat et al. Analysis of comparison-based sorting algorithms
JPWO2009147794A1 (ja) 有限オートマトン生成システム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210810

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20220428

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: 20220510

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220523

R150 Certificate of patent or registration of utility model

Ref document number: 7087931

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150