JP2017004128A - 情報処理装置、システム、及びプログラム - Google Patents

情報処理装置、システム、及びプログラム Download PDF

Info

Publication number
JP2017004128A
JP2017004128A JP2015115286A JP2015115286A JP2017004128A JP 2017004128 A JP2017004128 A JP 2017004128A JP 2015115286 A JP2015115286 A JP 2015115286A JP 2015115286 A JP2015115286 A JP 2015115286A JP 2017004128 A JP2017004128 A JP 2017004128A
Authority
JP
Japan
Prior art keywords
data
value
provisional
boundary
maximum value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2015115286A
Other languages
English (en)
Inventor
司睦 田原
Tsuguchika Tabaru
司睦 田原
河場 基行
Motoyuki Kawaba
基行 河場
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 JP2015115286A priority Critical patent/JP2017004128A/ja
Priority to US15/168,348 priority patent/US20160357847A1/en
Publication of JP2017004128A publication Critical patent/JP2017004128A/ja
Pending legal-status Critical Current

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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • 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)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】一実施形態は、二分木を用いて複数のデータを分割する場合に比較回数を低減することが可能な技術を提供する。【解決手段】一実施形態に係るプログラムは、複数のデータのそれぞれを分類対象データとして、複数の境界値から作られる二分木の根ノードの境界値に基づいて分類対象データを分類する際に、暫定最大値と、暫定最小値とを特定する処理を情報処理装置に実行させる。暫定最大値は、分類対象データと分類済みのデータとのうちの最大値を表す。暫定最小値は、分類対象データと分類済みのデータとのうちの最小値を表す。プログラムは、暫定最大値及び暫定最小値を更新することで複数のデータの最大値と最小値を特定する処理を情報処理装置に実行させる。プログラムは、複数の境界値のうちで、複数のデータの最大値と最小値の間にある境界値に基づいて複数のデータを分割する処理を情報処理装置に実行させる。【選択図】図10

Description

本発明は、情報処理装置、システム、及びプログラムに関する。
コンピュータのソフトウェア技術に、例えば、複数のデータを、何らかの順序に従って順番通りに並べ替えるソート処理に関する技術がある。ソート処理は、例えば、数値を大きい順又は小さい順に並べ替える、文字列をアルファベット順や五十音順に並べ替える、及び日時を古い順又は新しい順に並べ替えることを含んでいてよい。
ソート処理を高速化する技術に、1つのソート処理を分割し、複数のプロセッサやプロセッサコアに並列して処理させる並列化がある。例えば、1つのソート処理を複数のプロセッサで並列処理する場合、並べ替えを行う対象の複数のデータを複数のデータ群に分割する。そして、複数のプロセッサのそれぞれにデータ群を割り当てて並べ替えを実行させて、得られた複数の並べ替えの結果を結合することで、高速なソートが可能である。
これに関し、ソート対象データの性質、量に対応させてソート方式を自動選択し、ソート速度を高速化するための技術が知られている。(例えば、特許文献1参照)また、ソートするデータをN個のグループに分割し、この分割により、データが少なくなったところで、ソート処理することにより、ソート処理時間を短縮するソート方法を提供するための技術が知られている。(例えば、特許文献2参照)不必要な交換処理をなるべく少なくし,かつ与えられた複数のレコード値を2つに区分するに当ってなるべく均等に区分されるようにするための技術が知られている。(例えば、特許文献3参照)分岐予測ミスの数を大幅に減少させることにより性能向上を図るための技術が知られている。(例えば、特許文献4参照)系列間に跨ったデータの順序を系列を意識しつつ視覚的に捉えやすい表示や印刷物等を得るための技術が知られている。(例えば、特許文献5参照)
特開2002−116907号公報 特開2012−185791号公報 特開平5−143286号公報 特開2014−102613号公報 特開2006−268688号公報
並列処理のために、ソートの対象となる複数のデータを分割する手法の一例に、二分木を用いて、複数のデータを複数の分割区間に分類する手法がある。この手法では、データを分割する境界となる複数の境界値(ピボット)が決められる。そして、複数の境界値から作成された二分木を、データを用いて探索することで、境界値を境とした複数の分割区間に複数のデータを分類する。例えば、境界値が−5,0,5であるとすると、複数のデータは−5未満、−5以上0未満、0以上5未満、5以上の4つの分割区間に分割されてよい。この場合、境界値で区切られた複数の分割区間の間での大小関係は決まっている。そのため、複数のプロセッサに、各分割区間に含まれるデータを割り当てて並べ替えを実行し、得られた複数の並べ替えの結果を分割区間の大小関係に従って結合することで、高速にソートを完了することができる。しかしながら、近年、取り扱われるデータ量は増加傾向にあり、ソート処理における演算負荷の更なる低減が望まれている。本発明の1つの側面に係る目的は、二分木を用いて複数のデータを分割する場合に比較回数を低減することが可能な技術を提供することである。
本発明の一つの態様のプログラムは、複数のデータのそれぞれを分類対象データとして、複数の境界値から作られる二分木の根ノードの境界値に基づいて分類対象データを分類する際に、暫定最大値と、暫定最小値とを特定する処理を情報処理装置に実行させる。暫定最大値は、分類対象データと分類済みのデータとのうちの最大値を表す。暫定最小値は、分類対象データと分類済みのデータとのうちの最小値を表す。プログラムは、暫定最大値及び暫定最小値を更新することで複数のデータの最大値と最小値を特定する処理を情報処理装置に実行させる。プログラムは、複数の境界値のうちで、複数のデータの最大値と最小値の間にある境界値に基づいて複数のデータを分割する処理を情報処理装置に実行させる。
1つの側面によれば、二分木を用いて複数のデータを分割する場合に比較回数を低減することが可能な技術を提供することができる。
二分木を用いたデータの分割とソート処理について例示する図である。 二分木を用いた複数の分割区間への複数のデータの分類を例示する図である。 データに偏りのあるデータベースを例示する図である。 データの偏りの範囲にある境界値を用いて作成した二分木を例示する図である。 最大値及び最小値を用いた二分木による分割処理の動作フローと処理の比較回数とを例示する図である。 実施形態に係る情報処理装置の機能ブロック構成を例示する図である。 暫定最大値、暫定最小値、及び根ノードの境界値の間の大小関係に従って作られる二分木を例示する図である。 状態の遷移を例示する図である。 状態1における根ノードの境界値に基づく分類処理の動作フローを例示する図である。 状態2における根ノードの境界値に基づく分類処理の動作フローを例示する図である。 状態3における根ノードの境界値に基づく分類処理の動作フローを例示する図である。 状態4における根ノードの境界値に基づく分類処理の動作フローを例示する図である。 終了確認処理の動作フローを例示する図である。 最大値及び最小値を用いる分割完了処理の動作フローを例示する図である。 第2の分割完了処理の動作フローを例示する図である。 一実施形態に係るシステムのハードウェア構成を例示する図である。
以下、図面を参照しながら、本発明のいくつかの実施形態を説明する。なお、複数の図面において対応する要素には同一の符号を付す。
図1は、二分木を用いたデータの分割と、ソート処理について例示する図である。図1に示す手法では、複数のプロセッサでデータを並列処理するために、ソートを行う対象の複数のデータは複数のデータ群(例えば、図1のデータ群1〜データ群X)に分割される。この分割は、例えば、分割後の複数のデータ群のそれぞれに含まれるデータの個数がおおよそ均等になるように実行されてよい。続いて、分割後の複数のデータ群は、複数のプロセッサのいずれかに割り当てられる。そして、各プロセッサは、割り当てられたデータ群に含まれるデータを用いて、例えば、予め設定されている複数の境界値から作られた二分木を探索する。それにより、各プロセッサは、割り当てられたデータ群に含まれるデータを、複数の境界値を境とする複数の分割区間(例えば、図1の分割区間1〜分割区間n)に分類し、データ群に含まれる複数のデータを分割する。なお、分割において用いられる複数の境界値は、様々な手法で決められていてよく、例えば、複数の境界値は、分割対象の複数のデータをサンプリングして得られた分布に基づいて決められ、設定されていてよい。
図2は、二分木を用いた複数の分割区間への複数のデータの分割を例示する図である。図2の例では、境界値として、128、256、384、512、640、768、及び896の7つの値が設定されており、これらの7つの境界値から作られる二分木が示されている。境界値は二分木においてノード(節)20として用いられる。また、以下の説明では、或るノード20の左側又は右側の枝25に配置されるノードを、そのノードの子ノードと呼ぶことがある。また、子ノードを有するノード20を、その子ノードに対する親ノードと呼ぶことがある。また、二分木は、例えば、左側の子ノード<親ノード≦右側の子ノード(又は左側の子ノード≦親ノード<右側の子ノード)という大小関係を満たす様に木構造が生成されてよい。二分木において親ノードを持たない最上位のノード20は根ノード21であり、例えば、図2では境界値:512は根ノード21である。また、二分木において子ノードを持たない末端のノード20は葉ノード22であり、例えば、図2では境界値:128,384,640,896は葉ノード22である。
続いて、二分木を用いた複数の分割区間への複数のデータの分割について説明する。上述のように、二分木を用いた分割では、複数のデータのそれぞれは、二分木に含まれる境界値を境とした複数の分割区間(例えば、図2の分割区間1〜分割区間8)のいずれかに分類され、それによって、複数のデータの分割が行われる。例えば、複数のデータとしてデータ値:230,32,50,340,590,550,850,932があるものとする。例えば、データ値:230を用いて図2の二分木を探索する場合、データ値:230は、まず根ノード21である境界値:512と比較される。データ値:230は境界値:512よりも小さいため、左側の枝25へと分類され、次にデータ値:230は境界値:256と比較される。データ値:230は境界値:256よりも小さいため、左側の枝25へと分類され、次にデータ値:230は境界値:128と比較される。データ値:230は境界値:128よりも大きいため、右側の枝25へと分類される。ここで、境界値:128は、葉ノード22であるので探索は終了し、データ値:230は、境界値:128と、境界値:256との間の分割区間2に分類される。複数のデータに含まれる残りのデータ値:32,50,340,590,550,850,932についても、同様に、根ノード21から葉ノード22へと順に二分木を探索することで、分割区間1〜分割区間8のいずれかの区間に分類することができる。その結果、図2に示す様に分割されたデータを得ることができる。
そして、例えば、以上のようにして二分木を探索することで、図1のデータ群1〜データ群Xのそれぞれから分割されたデータを取得し、分割区間毎にまとめると、複数のデータが分割区間1〜分割区間nのいずれかに分類された分割データを得ることができる。この場合、境界値で区切られた複数の分割区間の間での大小関係は決まっている。そのため、複数のプロセッサに、各分割区間に含まれるデータを割り当てて並べ替えを実行し、得られた複数の並べ替えの結果を分割区間の大小関係に従って結合することで、高速にソートを完了することができる。しかしながら、近年、取り扱われるデータ量は増加傾向にあり、ソート処理における演算負荷の更なる低減が望まれている。
ここで、二分木による分割の演算量を低減するために、例えば、分割する対象のデータ群内のデータの偏りを利用することが考えられる。データの偏りは、例えば、或るデータ群内のデータを並べた場合に、並びの或る区間においてデータの大きさが或る範囲に偏っていることであってよい。
図3は、データに偏りのあるデータベースを例示する図であり、商品の売上データベース300が示されている。図3の売上データベース300には、商品を識別するための識別子である商品番号と、商品番号で識別される商品が販売された販売日時と、その販売の個数とが対応づけられて、販売日時の順に並べられて登録されている。そして、例えば、販売する商品が季節ごとに入れ替えられる場合、冬場の販売日時では冬に販売される商品の商品番号が並び、夏場の販売日時では夏に販売される商品の商品番号が並ぶというように、商品番号の並びに偏りが生じることがある。そして、例えば、図3の売上データベース300の商品番号をデータとして、上段から順に所定の数ずつに分割し、複数のデータ群を得たとする。この場合、例えば、得られた複数のデータ群の或るデータ群には、冬場の商品の商品番号しか含まれておらず、一方、別のデータ群には、夏場の商品の商品番号しか含まれていないといったことが起こり得る。
ここで、例えば、或るデータ群に夏場の商品の商品番号しか含まれていないものとし、また、夏場の商品の商品番号には251〜600の間の数字が割り当てられているものとする。この場合、そのデータ群に含まれる商品番号は251〜600の間の値に偏っている。そして、このデータ群に含まれるデータを、例えば図2に示す境界値を境に分類するものとすると、商品番号の偏りの範囲:251〜600から、データの分類先は分割区間2〜5のいずれかであり、分割区間1、及び分割区間6〜8には分類されないことが分かる。そのため、例えば、データの偏りの範囲:251〜600にある境界値:256、384、512を用いて作成された二分木(例えば、図4)を用いて分割を行えば、データの分類先の分割区間を特定することが可能である。この様に、データ群に含まれるデータが或る範囲に偏っていることが分かれば、予め設定されている全ての境界値から作成された二分木により分割を行わなくてもよく、例えば、偏りの範囲内の境界値から作成された二分木を用いて分割を行うことができる。従って、分割にかかる比較回数を減らすことが可能である。なお、偏りのあるデータ群の例としては、他にも、既にソート済みのデータ群などが挙げられる。
データ群に含まれるデータの偏りの範囲は、例えば、データ群に含まれるデータの最大値と最小値とから特定できる。そこで、例えば、データ群に含まれるデータに二分木による分割を実行する前に、データ群に含まれるデータの最大値と最小値とを特定することが考えられる。
図5は、データ群に含まれるデータの最大値及び最小値を用いた二分木による分割処理の動作フローと、処理の比較回数とを例示する図である。情報処理装置は、例えば、分割の実行を指示する情報が入力されると、図5の動作フローを開始してよい。
ステップ501(以降、ステップを“S”と記載し、例えば、S501と表記する)において情報処理装置は、分割する対象のデータ群に含まれるデータの最大値を特定する。最大値の特定は、例えば、以下のように実行されてよい。まず、予め最大値に所定の初期値を設定しておく。そして、情報処理装置は、最大値と、データ群から読み出したデータとを比較し、最大値に設定されている値よりも読み出したデータの方が大きい場合、最大値を読み出したデータの値に更新する。この処理を、データ群に含まれる全てのデータに対して実行することで、情報処理装置は、データ群のデータの最大値を特定することができる。この場合、最大値の特定にかかる比較回数は、データ群に含まれるデータの個数である“m”回と見積もられてよく、最大値の特定にデータ当たり1回の比較が行われる。S502において情報処理装置は、分割する対象のデータ群に含まれるデータの最小値を特定する。最小値の特定にかかる比較回数も、例えば“m”回と見積もられてよく、データ当たりに1回の比較が行われる。
S503において情報処理装置は、予め設定されている複数の境界値で区切られる複数の分割区間のうちから、最大値が属する分割区間を特定する。情報処理装置は、例えば、設定されている複数の境界値から作成された二分木を、最大値として特定された値を用いて探索することで、最大値が属する分割区間を特定してよい。この場合、最大値が属する分割区間の特定にかかる比較回数は“logn”と見積もられてよく、nは予め設定されている複数の境界値で区切られる複数の分割区間の数以上の値で、2のべき乗となる値であってよい。S504において情報処理装置は、予め設定されている複数の境界値で区切られる複数の分割区間のうちから最小値が属する分割区間を特定する。最小値が属する分割区間の特定にかかる比較回数も、“logn”と見積もられてよい。S505において情報処理装置は、設定されている複数の境界値のうちで、最大値と最小値との間にある境界値を用いて二分木を作成する。そして、情報処理装置は、作成された二分木を用いてデータ群に含まれるデータを分割区間へと分割し、本動作フローは終了する。なお、S505の分割処理の比較回数は“m×logn’”と見積もられてよく、“n’”は最大値が属する分割区間から最小値が属する分割区間までの分割区間の数以上の値で、2のべき乗となる値であってよい。
例えば、以上の図5の動作フローを実行することで、データ群に含まれるデータの偏りを最大値と最小値とから特定し、二分木による分割を行うことができる。そして、例えば、データ群に含まれるデータに偏りがあれば、上述のように分割処理に用いる二分木のサイズを小さくすることができるため、比較回数を削減できる可能性がある。しかしながら、最大値と最小値とを求めた結果、例えば、データが複数の分割区間の全体に散っていた場合、二分木のサイズは小さくならず、比較回数は削減されない。また、この場合、最大値と最小値とを求めるために比較を行っているため、計算量が増加してしまう。例えば、データ群に含まれるデータを、境界値によって区切られる1024の分割区間へと分類する場合、log1024=10であるため、二分木を辿ってデータ当たりに10回の比較を行えば、データをいずれかの分割区間に分類することができる。しかしながら、図5の例では、データ当たりに最大値の特定に1回と最小値の特定に1回の計2回の比較を行っているため、データ群に含まれるデータに偏りが無い場合、処理が2割も増加してしまうことになる。そのため、或るデータ群に含まれるデータの最大値及び最小値の特定と、データ群に含まれるデータの二分木による分割とにかかる比較回数を削減することのできる技術が望まれている。
以下で述べる実施形態では、データ群に含まれるデータを二分木の根ノード21の境界値に基づいて分類する処理に、データ群に含まれるデータの最大値と最小値を特定するための処理が組み合わせられる。そのため、根ノード21の境界値を境としたデータ群に含まれるデータの分類と、データ群に含まれるデータの最大値及び最小値の特定とにかかる比較回数を削減することができる。なお、以下で述べる実施形態において、二分木は、例えば、左側の子ノード<親ノード≦右側の子ノードという大小関係を満たす様に木構造が生成されてよい。しかしながら、実施形態で用いられる二分木の構造は、これに限定されるものではなく、その他の二分木が用いられてもよい。例えば、別の実施形態においては、二分木は、左側の子ノード≦親ノード<右側の子ノード、左側の子ノード>親ノード≧右側の子ノード、又は左側の子ノード≧親ノード>右側の子ノードなどの大小関係を満たす様に木構造が生成されてもよい。また、以下では、この様な大小関係を満たす二分木を二分探索木と呼ぶことがある。
<実施形態>
図6は、実施形態に係る情報処理装置60の機能ブロック構成を例示する図である。情報処理装置60は、例えば、データベースシステムが動作可能なコンピュータであってよい。情報処理装置60は、例えば、制御部600及び記憶部610を含んでいる。制御部600は、記憶部610を含む情報処理装置60の各部を制御してよい。また、制御部600は、例えば、特定部601、分割部602などの機能部を含んでいる。情報処理装置60の制御部600は、例えば、記憶部610を利用してプログラムを読み出して実行することで特定部601、及び分割部602などの機能部として機能してよい。なお、これらの機能部の詳細については後述する。
上述のように、図5の例では、或るデータ群に含まれるデータの最大値と最小値とを特定する場合、データ群に含まれるデータ当たりに2回の比較を行っている。また、二分木の根ノード21の境界値を境としたデータ群に含まれるデータの分類は、例えば、データ群に含まれるそれぞれのデータを根ノード21の境界値と比較して、根ノード21の境界値以上の群と、未満の群とに分類することで実行することができる。この場合、二分木の根ノード21の境界値を境とした分類では、データ当たりに1回の比較が行われる。従って、例えば、データ群に含まれるデータの最大値及び最小値の特定と、根ノード21の境界値を境とした分類とを個別に実行すると、データ当たりに3回の比較を行うことになる。しかしながら、二分木の根ノード21の境界値を境としたデータ群に含まれるデータの分類に、データ群に含まれるデータの最大値と最小値を特定するための処理を組み合わせると、以下で述べるように比較回数を削減することが可能である。
例えば、或るデータ群に含まれるデータのそれぞれを分類対象のデータとして、根ノード21の境界値を境に分類する際、暫定最大値と、暫定最小値とを特定することを考える。ここで、暫定最大値は、例えば、分類対象のデータと既に分類済みのデータとのうちでの最大値を表す。また、暫定最小値は、例えば、分類対象のデータと既に分類済みのデータとのうちでの最小値を表す。この場合に、暫定最大値、暫定最小値、及び根ノード21の境界値の3つの値の大小関係が分かれば、3つの値の大小関係に従って作られる二分木(例えば、二分探索木)を用いて、分類対象のデータと3つの値のそれぞれとの大小関係を2回の比較で特定できる。以下に例を示す。
まず、暫定最大値、暫定最小値、及び根ノード21の境界値の間の大小関係は、例えば以下の4通りで示すことができる。
(状態1)データを一つも処理していない初期状態。暫定最大値、暫定最小値は未定義。根ノード21の境界値は定義されている。
(状態2)暫定最小値 ≦ 暫定最大値 < 根ノード21の境界値
(状態3)根ノード21の境界値 ≦ 暫定最小値 ≦ 暫定最大値
(状態4)暫定最小値 < 根ノード21の境界値 ≦ 暫定最大値
また、図7は、暫定最大値、暫定最小値、及び根ノード21の境界値の3つの値の大小関係に従って作られる二分木を例示する図である。図7(a)は状態2、図7(b)は状態3、及び図7(c)は状態4における暫定最大値、暫定最小値、及び根ノード21の境界値の二分木を表している。そして、制御部600は、状態が分かれば、状態に応じた大小関係に従って作られる二分木を探索することで、暫定最大値、暫定最小値、及び根ノード21の境界値のそれぞれと、分類の対象のデータとの大小関係を2回の比較で特定することができる。
また、以上の4通りの状態は、データ群から読み出した分類対象のデータを処理するたびに遷移する可能性があるが、その遷移は図8に示す仕方で遷移する。図8は、状態の遷移を例示する図である。以下、図7及び図8を参照して、状態の遷移と、根ノード21の境界値を境としたデータの分類並びに暫定最大値及び暫定最小値の特定の処理について例示する。
まず、分割対象のデータ群に含まれるデータを一つも処理していない初期状態では状態は状態1にある(図8)。この場合、最大値及び最小値は未定義の状態であり、二分木の根ノード21の境界値の値は定義されている。状態1において、制御部600は、データ群からデータを1つ読み出し、読み出したデータを根ノード21の境界値と比較する。データが、例えば根ノード21の境界値未満である場合、状態は状態1から状態2へと遷移する。一方、データが、例えば境界値以上である場合、状態は状態1から状態3へと遷移する。なお、状態2及び状態3のいずれに遷移する場合においても、制御部600は、データの値を暫定最大値と暫定最小値との両方に設定する。
状態が状態2にある場合、暫定最大値、暫定最小値、及び根ノード21の境界値の間の大小関係に従って作成される二分木は、例えば図7(a)の二分木となる。そのため、状態2において、制御部600は、データ群から次のデータを読み出し、読み出したデータを、まず、図7(a)の二分木の根ノードに当たる暫定最大値と比較する。ここで、データが、例えば暫定最大値未満である場合、データは根ノード21の境界値よりも小さいことになる。そのため、制御部600は、データを根ノード21の境界値と比較しなくても、データを根ノード21の境界値未満の群に分類することができる。続いて、制御部600は、データを、図7(a)の左側の枝のノードである暫定最小値と比較し、データが暫定最小値よりも小さければ、暫定最小値をデータの値に更新する。一方、分類対象のデータが暫定最小値以上であれば、暫定最小値は現在の値のまま維持される。
また、状態2において、データが、例えば暫定最大値以上である場合、制御部600は、暫定最大値をデータの値に更新する。また、データが暫定最大値よりも大きい場合、データは暫定最小値とはならないため、制御部600は、データと暫定最小値との比較を省くことができる。続いて、制御部600は、データを、図7(a)の右側の枝のノードである根ノード21の境界値と比較する。そして、制御部600は、データが境界値よりも小さければ、データを境界値未満の群に分類する。一方、制御部600は、データが根ノード21の境界値以上であれば、データを根ノード21の境界値以上の群に分類する。なお、状態2において、データが根ノード21の境界値以上の群に分類された場合、状態は図8に示す様に状態2から状態4に遷移する。また、状態2において、データが根ノード21の境界値未満の群に分類される場合、状態は図8に示す様に状態2のまま維持される。この場合、制御部600は、データ群から次のデータを読み出し、読み出されたデータを分類対象として以上の状態2における処理を繰り返してよい。
また、状態が状態3にある場合、暫定最大値、暫定最小値、及び根ノード21の境界値の間の大小関係に従って作成される二分木は、例えば図7(b)の二分木となる。そのため、状態3において、制御部600は、データ群から次のデータを読み出し、読み出されたデータを、まず、図7(b)の二分木の根ノードに当たる暫定最小値と比較する。ここで、データが、例えば暫定最小値以上である場合、データは根ノード21の境界値以上の値を有することになる。そのため、制御部600は、データを、根ノード21の境界値と比較しなくても、根ノード21の境界値以上の群に分類することができる。続いて、制御部600は、分類対象のデータを、図7(b)の右側の枝のノードである暫定最大値と比較し、データが暫定最大値よりも大きければ暫定最大値をデータの値に更新する。一方、制御部600は、データが、暫定最大値以下であれば暫定最大値を現在の値のまま維持する。
また、状態3において、データが、例えば暫定最小値未満である場合、制御部600は、暫定最小値をデータの値に更新する。また、データが暫定最小値未満である場合、データは暫定最大値とはならないため、制御部600は、データと暫定最大値との比較を省くことができる。続いて、制御部600は、データを、図7(b)の左側の枝のノードである根ノード21の境界値と比較する。そして、制御部600は、データが根ノード21の境界値以上であれば、データを根ノード21の境界値以上の群に分類する。一方、制御部600は、データが根ノード21の境界値未満であれば、データを境界値未満の群に分類する。なお、状態3において、データが根ノード21の境界値未満の群に分類された場合、状態は図8に示す様に状態3から状態4に遷移する。また、状態3において、データが根ノード21の境界値以上の群に分類される場合には、状態は図8に示す様に状態3のまま維持される。この場合、制御部600は、データ群から次のデータを読み出し、読み出されたデータを分類対象として以上の状態3における処理を繰り返してよい。
状態が状態4にある場合、暫定最大値、暫定最小値、及び根ノード21の境界値の間の大小関係に従って作成される二分木は、図7(c)の二分木となる。そのため、制御部600は、データ群から次のデータを読み出し、読み出されたデータを、図7(c)の二分木の根ノードに当たる根ノード21の境界値と比較する。そして、制御部600は、データが、例えば根ノード21の境界値以上である場合、データを根ノード21の境界値以上の群に分類する。また、状態4では、データが根ノード21の境界値以上である場合、データは暫定最小値とはならないため、制御部600は、データと暫定最小値との比較を省くことができる。続いて、制御部600は、データを、図7(c)の右側の枝のノードである暫定最大値と比較し、データが暫定最大値よりも大きければ、暫定最大値をデータの値に更新する。一方、制御部600は、データが、暫定最大値以下であれば暫定最大値を現在の値のまま維持する。
また、制御部600は、データが、例えば根ノード21の境界値未満である場合、データを根ノード21の境界値未満の群に分類する。また、状態4では、データが根ノード21の境界値未満である場合、データは暫定最大値とはならないため、制御部600は、データと暫定最大値との比較を省くことができる。続いて、制御部600は、データを、図7(c)の左側の枝のノードである暫定最小値と比較し、データが暫定最小値よりも小さければ暫定最小値をデータの値に更新する。一方、制御部600は、データが、暫定最小値以上であれば暫定最小値を現在の値のまま維持する。なお、状態は状態4に移行した以降は、図8に示す様に状態4のまま維持され、制御部600は、データ群から次のデータを読み出し、読み出されたデータを分類対象として以上の状態4における処理を繰り返してよい。
以上で述べたように、制御部600は、暫定最大値、暫定最小値、及び根ノード21の境界値の間の大小関係によって決まる二分木に基づいて、暫定最大値、暫定最小値、及び根ノード21の境界値の3つの値のうちの2つの値を分類対象のデータと比較する。それにより、制御部600は、暫定最大値、暫定最小値、及び根ノード21の境界値のそれぞれと、データとの大小関係を2回の比較で特定することができる。そして、上述の状態に応じた処理によりデータ群内の全てのデータの分類を行い、暫定最大値及び暫定最小値を更新した場合、暫定最大値はデータ群内のデータの最大値を表す値となり、また、暫定最小値はデータ群内のデータの最小値を表す値となる。従って、制御部600は、根ノード21の境界値を境にデータ群内のデータを分類するとともに、データ群内のデータの最大値と最小値とを特定することができる。従って、制御部600は、根ノード21の境界値を境としたデータ群に含まれるデータの分類と、データ群に含まれるデータの最大値及び最小値の特定とにかかる比較回数を削減することができる。
また、状態の遷移は、それぞれの状態において根ノード21の境界値とデータとの間で特定された大小関係から特定することができる。そのため、制御部600は、例えば、暫定最大値、暫定最小値、及び根ノード21の境界値の間の大小関係を別途の比較を行って特定しなくても、状態の遷移が起こるか否かを特定することができる。そして、例えば、状態の遷移が起こる場合に、実行する動作フローをジャンプ命令などにより変更することで、状態を示す情報を記憶部610などに保持しなくても、状態に合わせて実行する処理を変更することができる。
以下、図9から図12を参照して、以上で述べた状態1から状態4の各状態における実施形態に係る根ノード21の境界値に基づく分類処理の動作フローを説明する。図9は、状態1における根ノード21の境界値に基づく分類処理の動作フローを例示する図である。一実施形態においては、制御部600は、予め設定されている複数の境界値を境としたデータ群の分割を指示する情報が入力されると、図9の動作フローを開始してよい。
S901において、制御部600は、変数n_S及び変数n_Lの値を“0”に初期化する。なお、変数n_S及び変数n_Lについての詳細は後述する。S902において制御部600は、分割を行う対象のデータ群から1つデータを読み出し、そのデータを暫定最大値、暫定最小値、及び変数valに設定する。なお、変数valは、分類対象のデータを格納する変数として用いられる。S903において制御部600は、変数valを、分割処理に対して予め設定されている複数の境界値を用いて作成された二分木の根ノード21の境界値と比較する。なお、二分木の探索では、根ノード21から葉ノード22までの枝の長さが短いほど比較回数が減るため、例えば、根ノード21の境界値は分割に用いられる境界値を大きさ順に並べた場合に、並びにおいて真中に近い境界値であることが好ましい。
S903において変数valが根ノード21の境界値よりも小さい場合(S903がYes)、フローはS904へと進む。S904において制御部600は、変数n_Sの値を1加算し、配列変数S[n_S](例えば、ここでは変数n_S=1となるため、配列変数S[1])に変数valの値を設定し、フローは状態2の動作フローに進む。一方、S903において変数valが根ノード21の境界値以上である場合(S903がNo)、フローはS905へと進む。S905において制御部600は、変数n_Lの値を1加算し、配列変数L[n_L](例えば、ここでは変数n_L=1となるため、配列変数L[1])に変数valの値を設定し、フローは状態3の動作フローへと進む。
なお、以上の図9及び後述する図10〜図12の動作フローにおいて、変数n_Sは、分割対象のデータ群に含まれるデータのうちで、根ノード21の境界値よりも小さい値を有するデータの数をカウントするための変数である。また、配列変数Sは、分割対象のデータ群に含まれるデータのうちで、根ノード21の境界値よりも小さい値を有するデータが格納される配列変数である。例えば、配列変数S[n_S]は、n_S番目に根ノード21の境界値よりも小さい群に分類されたデータの値を格納するために用いられる。また同様に、変数n_Lは、分割対象のデータ群に含まれるデータのうちで、根ノード21の境界値以上の値を有するデータの数をカウントするための変数である。配列変数Lは、分割対象のデータ群に含まれるデータのうちで、根ノード21の境界値以上の値を有するデータが格納される変数である。例えば、配列変数L[n_L]は、n_L番目に根ノード21の境界値以上の群に分類されたデータの値を格納するために用いられる。
図10は、状態2における根ノード21の境界値に基づく分類処理の動作フローを例示する図である。一実施形態においては、制御部600は図9のS904の処理の実行が完了すると、図10の動作フローを開始してよい。
S1001において制御部600は、終了確認処理を実行する。終了確認処理の詳細については図13を参照して後述する。終了確認処理を実行した結果、処理が終了していない場合、フローはS1002へと進む。S1002において制御部600は、分割を行う対象のデータ群から、次のデータを読み出して変数valに設定する。S1003において制御部600は、変数valが暫定最大値に設定されている値以下であるか否かを判定する。変数valが暫定最大値に設定されている値以下である場合(S1003がYes)、フローはS1004へと進む。S1004において制御部600は、変数n_Sの値を1加算し、配列変数S[n_S]に変数valの値を設定する。S1005において制御部600は、変数valが暫定最小値に設定されている値よりも小さいか否かを判定する。変数valが暫定最小値に設定されている値以上である場合(S1005がNo)、フローはS1001へと戻る。一方、変数valが暫定最小値に設定されている値よりも小さい場合(S1005がYes)、フローはS1006へと進む。S1006において制御部600は、暫定最小値を変数valに設定されている値に更新し、フローはS1001へと戻る。
また、S1003において、変数valが暫定最大値に設定されている値よりも大きい場合(S1003がNo)、フローはS1007へと進む。S1007において制御部600は、暫定最大値を変数valに設定されている値に更新し、フローはS1008へと進む。S1008において制御部600は、変数valが根ノード21の境界値よりも小さいか否かを判定する。変数valが根ノード21の境界値よりも小さい場合(S1008がYes)、フローはS1009へと進む。S1009において制御部600は、変数n_Sの値を1加算し、配列変数S[n_S]に変数valの値を設定して、フローはS1001へと戻る。一方、S1008において変数valが根ノード21の境界値以上である場合(S1008がNo)、フローはS1010へと進む。S1010において制御部600は、変数n_Lの値を1加算し、配列変数L[n_L]に変数valの値を設定して、フローを状態4の動作フローへと進める。
図11は、状態3における根ノード21の境界値に基づく分類処理の動作フローを例示する図である。一実施形態においては、制御部600は図9のS905の処理の実行が完了すると、図11の動作フローを開始してよい。
S1101において制御部600は、終了確認処理を実行する。終了確認処理の詳細については図13を参照して後述する。続いて、S1102において制御部600は、分割を行う対象のデータ群から、次のデータを読み出して変数valに設定する。S1103において制御部600は、変数valが暫定最小値に設定されている値以上であるか否かを判定する。変数valが暫定最小値に設定されている値以上である場合(S1103がYes)、フローはS1104へと進む。S1104において制御部600は、変数n_Lの値を1加算し、配列変数L[n_L]に変数valの値を設定する。S1105において制御部600は、変数valが暫定最大値に設定されている値よりも大きいか否かを判定する。変数valが暫定最大値に設定されている値以下である場合(S1105がNo)、フローはS1101へと戻る。一方、変数valが暫定最大値に設定されている値よりも大きい場合(S1105がYes)、フローはS1106へと進む。S1106において制御部600は、暫定最大値を変数valに設定されている値に更新し、フローはS1101へと戻る。
また、S1103において、変数valが暫定最小値に設定されている値未満である場合(S1103がNo)、フローはS1107へと進む。S1107において制御部600は、暫定最小値を変数valに設定されている値に更新し、フローはS1108へと進む。S1108において制御部600は、変数valが根ノード21の境界値以上であるか否かを判定する。変数valが根ノード21の境界値以上である場合(S1108がYes)、フローはS1109へと進む。S1109において制御部600は、変数n_Lの値を1加算し、配列変数L[n_L]に変数valの値を設定して、フローはS1101へと戻る。一方、S1108において変数valが根ノード21の境界値未満である場合(S1108がNo)、フローはS1110へと進む。S1110において制御部600は、変数n_Sの値を1加算し、配列変数S[n_S]に変数valの値を設定して、フローを状態4の動作フローへと進める。
図12は、状態4における根ノード21の境界値に基づく分類処理の動作フローを例示する図である。一実施形態においては、制御部600は図10のS1010又は図11のS1110の処理を実行が完了すると、図12の動作フローを開始してよい。
S1201において制御部600は、終了確認処理を実行する。終了確認処理の詳細については図13を参照して後述する。終了確認処理を実行した結果、処理が終了しない場合、フローはS1202へと進む。S1202において制御部600は、分割を行う対象のデータ群から、次のデータを読み出して変数valに設定する。S1203において制御部600は、変数valが根ノード21の境界値未満であるか否かを判定する。変数valが根ノード21の境界値未満である場合(S1203がYes)、フローはS1204へと進む。S1204において制御部600は、変数n_Sの値を1加算し、配列変数S[n_S]に変数valの値を設定する。S1205において制御部600は、変数valが暫定最小値に設定されている値未満であるか否かを判定する。変数valが暫定最小値に設定されている値以上である場合(S1205がNo)、フローはS1201へと戻る。一方、変数valが暫定最小値に設定されている値未満である場合(S1205がYes)、フローはS1206へと進む。S1206において制御部600は、暫定最小値を変数valに設定されている値に更新し、フローはS1201へと戻る。
一方、S1203において、変数valが根ノード21の境界値以上である場合(S1203がNo)、フローはS1207へと進む。S1207において制御部600は、変数n_Lの値を1加算し、配列変数L[n_L]に変数valの値を設定する。S1208において制御部600は、変数valが暫定最大値よりも大きいか否かを判定する。変数valが暫定最大値以下である場合(S1208がNo)、フローはS1201へと戻る。一方、変数valが暫定最大値よりも大きい場合(S1208がYes)、フローはS1209へと進む。S1209において制御部600は、暫定最大値を変数valに設定されている値に更新し、フローはS1201へと戻る。
以上で述べたように、制御部600は、図9から図12の動作フローのいずれかを状態に応じて実行することで、例えば、分割する対象のデータ群から読み出したデータが、根ノード21の境界値以上である場合には、そのデータを配列変数Lに格納する。また、制御部600は、例えば、分割する対象のデータ群から読み出したデータが、根ノード21の境界値未満である場合には、そのデータを配列変数Sに格納する。それにより、制御部600は、分割する対象のデータ群に含まれるデータを、根ノード21の境界値以上の値を有する配列変数Lに格納されたデータ群と、根ノード21の境界値未満の値を有する配列変数Sに格納されたデータ群とに分類する。また更に、制御部600は、例えば、分割する対象のデータ群から読み出したデータが、暫定最大値よりも大きい場合には、暫定最大値を読み出したデータの値に更新する。制御部600は、例えば、分割する対象のデータ群から読み出したデータが、暫定最小値よりも小さい場合には、暫定最小値を読み出したデータの値に更新する。
図13は、制御部600が実行する終了確認処理を例示する動作フローである。一実施形態においては、制御部600はS1001、S1101、又はS1201に進むと、図13の動作フローを開始してよい。
S1301において制御部600は、分割を行う対象のデータ群から全てのデータを読み出し終えたか否かを判定する。S1301において分割を行う対象のデータ群から全てのデータを読み出し終えている場合(S1301がYes)、本動作フローは終了する(終了1)。なお、データ群内の全てのデータを読み出し終えている場合、暫定最大値はデータ群に含まれる全てのデータとの比較から特定されているため、暫定最大値はデータ群内のデータの最大値である。また同様に、暫定最小値も、データ群に含まれる全てのデータとの比較から特定されているため、データ群内のデータの最小値である。即ち、制御部600は、例えば、上述の図9から図12のいずれかの動作フローを実行し、暫定最大値及び暫定最小値を更新してゆくことで、データ群に含まれるデータの最大値及び最小値を特定することができる。この場合、制御部600は、後述する図14の動作フローを実行し、得られたデータ群のデータの最大値及び最小値を用いてデータ群に含まれるデータの分割区間への分割を完了させてよい。
一方、S1301において分割を行う対象のデータ群から全てのデータを読み出し終えていない場合(S1301がNo)、フローはS1302へと進む。S1302において制御部600は、データ群から読み出したデータの数が、所定の数で割り切れるか否かを判定する。読み出したデータの数が所定の数で割り切れない場合(S1302がNo)、フローは呼び出し元の動作フローへと戻る。上述のように、終了確認処理は、S1001、S1101、又はS1201において呼び出される。そのため、例えば、呼び出し元の動作フローがS1001である場合には、フローはS1002へと進んでよい。同様に、呼び出し元の動作フローがS1101である場合にはフローはS1102へ、また、呼び出し元の動作フローがS1201である場合にはフローはS1202へと進んでよい。一方、S1302において読み出したデータの数が所定の数で割り切れる場合(S1302がYes)、フローはS1303へと進む。S1302の処理によって、所定の数で割り切れたときだけ、つまり全データのうち一部のデータの処理のときだけ、S1303およびS1304が実行されることになる。S1302の代わりに乱数による判定など行ってもよい。
S1303において制御部600は、予め設定されている複数の境界値で区切られる複数の分割区間のどの分割区間に暫定最大値が属するかを特定する。例えば、制御部600は、暫定最大値に設定されている値を用いて、予め設定されている複数の境界値を用いて作成された二分木を探索することで、暫定最大値がどの分割区間に属するかを特定してよい。また、S1304において制御部600は、予め設定されている複数の境界値で区切られる複数の分割区間のどの分割区間に暫定最小値が属するかを特定する。例えば、制御部600は、暫定最小値に設定されている値を用いて、予め設定されている複数の境界値から作成された二分木を探索することで、暫定最小値がどの分割区間に属するかを特定してよい。
S1305において制御部600は、暫定最大値が属する分割区間から暫定最小値が属する分割区間までに含まれる分割区間の数を特定する。そして、制御部600は、その分割区間の数が、分割処理に対して予め設定されている複数の境界値で区切られる全分割区間の数に対して所定の割合以上であるか否かを判定する。なお、所定の割合は、例えば、1/4であってよい。また、別の実施形態においては、S1305の判定は、例えば、暫定最大値から暫定最小値までの間にある境界値の数が、全境界値の数に対して所定の割合以上であるか否かを判定することで実行されてもよい。S1305において暫定最大値が属する分割区間から暫定最小値が属する分割区間までに含まれる分割区間の数が、全分割区間の数に対して所定の割合未満である場合(S1305がNo)、フローは呼び出し元へと戻る。一方、S1305において暫定最大値が属する分割区間から暫定最小値が属する分割区間までの分割区間の数が、全分割区間の数に対して所定の割合以上である場合(S1305がYes)、本動作フローは終了する(終了2)。なお、この場合、制御部600は、後述する図15の動作フローを実行し、データ群に含まれるデータの分割区間への分割を完了させてよい。
図14は、最大値及び最小値を用いる分割完了処理を例示する図である。図14の動作フローは、例えば、図13のS1301においてYesと判定された場合(終了1)に、開始してよい。
S1401において制御部600は、分割を行う対象のデータ群に含まれるデータの最大値が、分割処理に対して予め設定されている複数の境界値で区切られる複数の分割区間のどの分割区間に属するかを特定する。なお、上述のように、S1301においてYesと判定される場合、暫定最大値はデータ群に含まれる全てのデータとの比較から特定されているため、暫定最大値の値はデータ群に含まれるデータの最大値である。そのため、S1401において制御部600は、暫定最大値に設定されている値をデータ群に含まれるデータの最大値として用いてよい。そして、制御部600は、例えば、データ群に含まれるデータの最大値を用いて、予め設定されている複数の境界値を用いて作成された二分木を探索することで、最大値がどの分割区間に属するかを特定してよい。また、S1402において制御部600は、分割を行う対象のデータ群に含まれるデータの最小値が、予め設定されている複数の境界値で区切られる複数の分割区間のどの分割区間に属するかを特定する。なお、S1301においてYesと判定される場合、暫定最小値はデータ群に含まれる全てのデータとの比較から特定されているため、暫定最小値の値はデータ群に含まれるデータの最小値である。そのため、S1402において制御部600は、暫定最小値に設定されている値をデータ群に含まれるデータの最小値として用いてよい。そして、例えば、制御部600は、データ群に含まれるデータの最小値を用いて、予め設定されている複数の境界値を用いて作成された二分木を探索することで、最小値がどの分割区間に属するかを特定してよい。
続いて、S1403において制御部600は、例えば、データ群に含まれるデータの最大値が属する分割区間と、データ群に含まれるデータの最小値が属する分割区間との間にある境界値に基づいて二分木を生成する。例えば、制御部600は、データ群に含まれるデータの最大値が属する分割区間と、データ群に含まれるデータの最小値が属する分割区間との間にある境界値を用いて二分木を生成してよい。S1404において制御部600は、生成した二分木を用いて分割を行う対象のデータ群に含まれるデータを分割区間へと分類することで分割を完了し、本動作フローは終了する。
なお、S1403及びS1404の処理において、例えば、データ群に含まれるデータの最小値と最大値との間に、予め設定されている複数の境界値から作成された二分木の根ノード21の境界値が含まれていることがある。この場合、根ノード21の境界値を境とした分類の結果は配列変数Sと配列変数Lとに格納されているため、その結果を用いて更に比較回数が削減されてもよい。
例えば、制御部600は、データ群に含まれるデータの最小値以上で、根ノード21の境界値よりも小さい境界値を用いて二分木を作成する。そして、制御部600は、得られた二分木を、配列変数Sに含まれるデータを用いて探索することで、配列変数Sに含まれるデータの分類先の分割区間を特定してよい。また、制御部600は、例えば、データ群に含まれるデータの最大値以下で、根ノード21の境界値よりも大きい境界値を用いて二分木を作成する。そして、制御部600は、得られた二分木を、配列変数Lに含まれるデータを用いて探索することで、配列変数Lに含まれるデータの分類先の分割区間を特定してよい。
図15は、第2の分割完了処理を例示する図である。図15の動作フローは、図13のS1305においてYesと判定された場合(終了2)に、開始してよい。
S1501において制御部600は、分割を行う対象のデータ群に含まれるデータのうちで、未だ配列変数Sにも配列変数Lにも分類されていない残りのデータのそれぞれを、根ノード21の境界値を境に分類する。例えば、分類対象のデータが根ノード21の境界値未満であれば、制御部600は、変数n_Sの値を1加算し、配列変数S[n_S]に分類対象のデータを設定する。一方、分類対象のデータが根ノード21の境界値以上であれば、制御部600は、例えば、変数n_Lの値を1加算し、配列変数L[n_L]に分類対象のデータを設定する。S1502において制御部600は、配列変数Sに格納されているデータのそれぞれを、分割処理に対して予め設定されている複数の境界値を用いて作成された二分木の根ノード21の左側の子ノードから探索することで、分割区間に分類してよい。また、S1503において制御部600は、配列変数Lに登録されているデータのそれぞれを、分割処理に対して予め設定されている複数の境界値を用いて作成された二分木の根ノード21の右側の子ノードから探索することで、分割区間に分類してよい。S1503の処理が完了すると、本動作フローは終了する。
以上で述べたように、上述の実施形態では、制御部600は、二分木の根ノード21の境界値に基づいた分類対象のデータの分類に、暫定最大値と暫定最小値を特定する処理を組み合わせている。それによって、制御部600は、例えば、データ群に含まれるデータの根ノード21の境界値に基づいた分類と、データ群に含まれるデータの最大値と最小値の特定とにかかる比較回数を削減することができる。
例えば、上述のように、或るデータが、データ群の中での最大値であるか否か、及び最小値であるか否かと、根ノード21の境界値を境とした分類とを個別に実行すると、データ当たりに3回の比較を行うことが見積もられる。しかし、上述の実施形態では、制御部600は、根ノード21の境界値、暫定最大値、及び暫定最小値の3つの値の大小関係に従って作られる二分木によって決まる3つの値のうちの2つの値と、分類対象のデータとの比較を行う。それによって、制御部600は、根ノード21の境界値を境とした分類と、暫定最大値及び暫定最小値の特定を実行している。従って、実施形態によれば、比較回数を2回に削減することが可能である。
また更に、例えば、暫定最大値、暫定最小値、及び根ノード21の境界値の大小関係が小さい方から大きい方に暫定最小値、暫定最大値、根ノード21の境界値の順であるとする。この場合、制御部600は、例えば、分類対象のデータを暫定最大値と比較して、分類対象のデータが暫定最大値よりも小さければ、分類対象のデータを根ノード21の境界値と比較しなくても、根ノード21の境界値よりも小さい群に分類することができる。一方、分類対象のデータが暫定最大値よりも大きければ、分類対象のデータは暫定最小値とはならないため、制御部600は、分類対象のデータと暫定最小値との比較を省くことができる。
また、例えば、暫定最大値、暫定最小値、及び根ノード21の境界値の大小関係が小さい方から大きい方に根ノード21の境界値、暫定最小値、暫定最大値の順であるとする。この場合、制御部600は、例えば、分類対象のデータを暫定最小値と比較して、分類対象のデータが暫定最小値よりも大きければ、分類対象のデータを、根ノード21の境界値と比較しなくても、根ノード21の境界値よりも大きい群に分類することができる。一方、分類対象のデータが暫定最小値よりも小さければ、分類対象のデータは暫定最大値とはならないため、制御部600は、分類対象のデータと暫定最大値との比較を省くことができる。
また、例えば、暫定最大値、暫定最小値、及び根ノード21の境界値の大小関係が小さい方から大きい方に暫定最小値、根ノード21の境界値、暫定最大値の順であるとする。この場合、例えば、分類対象のデータを根ノード21の境界値と比較し、分類対象のデータが根ノード21の境界値よりも小さければ、分類対象のデータは暫定最大値とはならないため、制御部600は、分類対象のデータと暫定最大値との比較を省くことができる。一方、分類対象のデータが根ノード21の境界値よりも大きければ、分類対象のデータは暫定最小値とはならないため、制御部600は、分類対象のデータと暫定最小値との比較を省くことができる。
また、上述の実施形態では、S1305において暫定最大値が属する分割区間から暫定最小値が属する分割区間までに含まれる分割区間の数が、全分割区間の数に対して所定の割合以上である場合、フローは図15の動作フローへと進む。それによって、制御部600は、暫定最大値及び暫定最小値の特定を停止している。例えば、分割の対象のデータ群からデータをある程度読み終えた時点で、読み終えたデータが、分割処理に対して予め設定されている複数の境界値で区切られる複数の分割区間の全体に散っている場合、最大値と最小値の間の範囲から外れる境界値の数が少なくなる。その結果、例えば図4を参照して述べた、二分木の作成に用いる境界値を減らすことで得られる計算量の低減の効果が低くなることがある。一方で、分割の対象のデータ群に含まれるデータの最大値と最小値を求める場合、最大値及び最小値を求めるために比較を行っている。そこで、上述の実施形態では、制御部600は、分割の対象のデータ群からデータをある程度読み終えた時点で、読み終えたデータの偏りを確認する。そして、読み終えたデータにおいて、予め設定されている複数の境界値によって区切られる複数の分割区間の広範囲にデータが散っている場合には、制御部600は、暫定最大値及び暫定最小値の特定を停止する。そのため、制御部600は、例えば、予め設定されている複数の境界値のうちから、二分木による分割で用いる境界値が十分に間引かれないことが推定される状況で、最大値及び最小値を求めるために比較を実行してしまうことを抑制することができる。そのため、制御部600は、比較回数を削減することができる。
従って、実施形態によれば、制御部600は、例えば、データ群に含まれるデータの偏りを検出して、データ群内のデータを二分木を用いて分割する場合に、比較回数を削減することができる。
なお、上記の例では、データの例として整数値を用いて説明が行われている。しかしながら、実施形態で利用可能なデータはこれに限定されるものではなく、整数値以外のデータに対して実施形態が適用されてよい。例えば、データは文字列及び日付などであってもよく、アルファベット順や、五十音順、及び日時の古い順又は新しい順などで大小関係が定義されたデータであってよい。例えば、以下の条件を満たすデータが実施形態に係る分割の対象のデータとして用いられてよい。
(a)集合中の任意の2つの要素Aと要素Bとを取り出したときに、要素Aと要素Bとの間に大小関係が定義されている。大小関係は、要素Aが要素Bより小さい(要素Bが要素Aより大きいことと同じ)か、要素Aと要素Bとが等しいか、要素Aが要素Bより大きい(要素Bが要素Aより小さいことと同じ)かのどれかである。
(b)集合中の任意の要素A、要素B、要素Cを取り出したとき、要素Aが要素Bより小さく、要素Bが要素Cより小さいならば、要素Aは要素Cより小さいと定義されている。
また、集合の中の要素Aが以下の条件を満たすとき、要素Aは集合の最大値とする。
(c)集合中の任意の要素Bに対し、要素Aは要素Bより大きいか、要素Aと要素Bは等しい。
同様に、集合の中の要素Aが以下の条件を満たすとき、要素Aは集合の最小値とする。
(d)集合中の任意の要素Bに対し、要素Aは要素Bより小さいか、要素Aと要素Bは等しい。
また、実施形態で利用可能なデータは、例えば、数字や文字列などの値であってもよいし、或いは図3の売上データベース300における商品番号のように、複数の要素が関連付けられて登録されるデータベース及び表などにおける、一部の要素の値であってもよい。
また、上記の実施形態では、分割対象のデータ群のデータを、暫定最大値、暫定最小値、及び根ノード21の境界値の大小関係に従って作られる二分木によって決まる2つの値と比較することで、比較回数が削減される。しかしながら、実施形態はこれに限定されるものではない。例えば、データと、根ノード21の境界値、暫定最大値、及び暫定最小値との比較の順番が決まっており、根ノード21の境界値、暫定最大値、暫定最小値の順序で比較を行うものとする。この場合に、例えば、状態が状態2であれば、データを根ノード21の境界値と比較した際に、データが根ノード21の境界値よりも大きければ、データを暫定最大値及び暫定最小値と比較しなくても、データが暫定最大値及び暫定最小値よりも大きいことが分かる。この様に、例えば、各状態における暫定最大値、暫定最小値、及び根ノード21の境界値の間の大小関係の情報を利用することで、比較回数を減らして処理が実行されてもよい。
以上において、実施形態を例示したが、実施形態はこれらに限定されるものではない。例えば、上述の動作フローは例示であり、実施形態はこれに限定されるものではない。例えば、可能な場合には、動作フローは、処理の順番を変更して実行されてもよく、別に更なる処理を含んでもよく、又は、一部の処理が省略されてもよい。例えば、別の実施形態においては、S901の処理とS902の処理とは順序を入れ替えて実行されてもよい。また、同様に、S1303の処理とS1304の処理、S1401の処理とS1402の処理、S1502の処理とS1503の処理は、それぞれ順序を入れ替えて実行されてもよい。
また、上記の例では、分類対象のデータが境界値と等しい場合、データを境界値よりも大きい側に分類する例を示したが、実施形態はこれに限定されるものではない。例えば、別の実施形態では、分類対象のデータが境界値と等しい場合、制御部600はデータを境界値よりも小さい側に分類してもよい。
また、上述の図9から図12の動作フローにおいて制御部600は、例えば、特定部601として動作してよい。また、図14の動作フローにおいて制御部600は、例えば、分割部602として動作してよい。
図16は、一実施形態に係るシステム1600のハードウェア構成を例示する図である。システム1600は、例えば、複数の情報処理装置60を含んでいてよい。情報処理装置60は、例えば、データベースシステムが動作可能なコンピュータであってよい。情報処理装置60は、例えば、プロセッサ1601、RAM1602、及びROM1603を備えている。RAMは、Random Access Memoryの略称である。ROMは、Read Only Memoryの略称である。また、プロセッサ1601は、少なくとも1つのコア1604、メモリコントローラ1605、周辺機器コントローラ1606、及びプロセッサ間インタフェース1607を備えていてよく、これらはバス1610を介して接続されていてよい。各プロセッサ1601同士は、例えば、プロセッサ間インタフェース1607によって互いに接続されていてよい。メモリコントローラ1605は、例えば、RAM1602と接続されており、RAM1602にアクセスしてよい。
そして、プロセッサ1601は、例えば、RAM1602を利用して上述の動作フローの手順を記述したプログラムを実行することで、上述の動作フローの処理を実行してよい。一実施形態においては、制御部600は、例えば、プロセッサ1601であってよい。また、記憶部610は、例えば、RAM1602であってよい。
周辺機器コントローラ1606は、例えば、ROM1603と接続されていてよい。また、周辺機器コントローラ1606は、例えば、記憶装置コントローラ1611と接続されていてよい。記憶装置コントローラ1611は、例えば、ハードディスクなどの外部記憶装置と接続されていてよく、プロセッサ1601の指示に従って外部記憶装置にデータを読み書きしてよい。更に、周辺機器コントローラ1606は、読取装置1612と接続されていてよい。読取装置1612は、例えば、プロセッサ1601の指示に従って可搬型記録媒体1613にアクセスする。可搬型記録媒体1613は、例えば、半導体デバイス(USBメモリ等)、磁気的作用により情報が入出力される媒体(磁気ディスク等)、光学的作用により情報が入出力される媒体(CD−ROM、DVD等)などにより実現されてよい。なお、USBは、Universal Serial Busの略称である。CDは、Compact Discの略称である。DVDは、Digital Versatile Diskの略称である。
また、周辺機器コントローラ1606は、例えば、通信インタフェース1614と接続されていてよい。通信インタフェース1614は、例えば、プロセッサ1601の指示に従ってネットワークを介してデータを送受信してよい。周辺機器コントローラ1606は、例えば、入出力インタフェース1615と接続されていてよく、入出力インタフェース1615は、例えば、入力装置及び出力装置との間のインタフェースであってよい。入力装置は、例えばユーザからの入力を受け付ける入力キー、及びタッチパネルなどのデバイスであってよい。出力装置は、例えばディスプレイ、及びタッチパネルなどの表示装置、並びにプリンタなどの印刷装置であってよい。
また、上述の動作フローをプロセッサ1601に実行させるための実施形態に係る各プログラム、及び例えば分割を行う対象となる複数のデータは、下記の形態で情報処理装置60に提供されてよい。
(1)記憶装置コントローラ1611に接続された外部記憶装置に記憶されている。
(2)サーバからネットワークを介して提供される。
(2)可搬型記録媒体1613により提供される。
なお、図16において、システム1600は、複数の情報処理装置60を含み、情報処理装置60に含まれるプロセッサ1601単位で上述の動作フローを実行してよい。そして、複数のプロセッサ1601のそれぞれに実施形態に係る動作フローを実行させることで、並列処理が実現されてよい。しかしながら、実施形態はこれに限定されるものではなく、例えば、並列処理はコア1604単位で実行されてもよい。この場合、コア1604が実施形態に係る情報処理装置60として機能してもよい。更に別の実施形態では、ネットワークに接続された複数のコンピュータのそれぞれに、実施形態に係る動作フローを実行させることで、並列処理が実現されてもよい。或いは、複数の仮想マシンに実施形態に係る動作フローを実行させることで、並列処理が実現されてもよい。この場合には、コンピュータ、又は仮想マシンが実施形態に係る情報処理装置60として機能してよい。
また、上述の実施形態を含むいくつかの実施形態は、上述の実施形態の各種変形形態及び代替形態を包含するものとして当業者には理解される。例えば、各種実施形態は、構成要素を変形して具体化されてよい。また、上述した実施形態に開示されている複数の構成要素を適宜組み合わせることにより、種々の実施形態が実施されてよい。更には、実施形態に示される全構成要素からいくつかの構成要素を削除して又は置換して、或いは実施形態に示される構成要素にいくつかの構成要素を追加して種々の実施形態が実施されてよい。
60 情報処理装置
600 制御部
601 特定部
602 分割部
610 記憶部
1600 システム
1601 プロセッサ
1602 RAM
1603 ROM
1604 コア
1605 メモリコントローラ
1606 周辺機器コントローラ
1607 プロセッサ間インタフェース
1610 バス
1611 記憶装置コントローラ
1612 読取装置
1613 可搬型記録媒体
1614 通信インタフェース
1615 入出力インタフェース

Claims (8)

  1. 複数のデータのそれぞれを分類対象データとして、複数の境界値から作られる二分木の根ノードの境界値に基づいて前記分類対象データを分類する際に、前記データから前記分類対象データを読み出し、前記分類対象データと分類済みのデータとのうちの最大値を表す暫定最大値と、前記分類対象データと前記分類済みのデータとのうちの最小値を表す暫定最小値とを特定し、前記暫定最大値及び前記暫定最小値を更新することで前記複数のデータの最大値と最小値を特定し、
    前記複数の境界値のうちで、前記複数のデータの最大値と最小値の間にある境界値に基づいて前記複数のデータを分割する、
    処理を情報処理装置に実行させるプログラム。
  2. 前記複数のデータの最大値と最小値を特定する処理は、前記根ノードの境界値、前記暫定最大値、及び前記暫定最小値の3つの値の大小関係に従って作られる二分木によって決まる、前記3つの値のうちの2つの値と、前記分類対象データとを比較することで、前記分類対象データを分類するとともに前記暫定最大値及び前記暫定最小値を特定する、ことを特徴とする請求項1に記載のプログラム。
  3. 前記複数のデータの最大値と最小値を特定する処理は、前記3つの値の大小関係が小さい方から大きい方に前記暫定最小値、前記暫定最大値、前記根ノードの境界値の順である場合、
    前記分類対象データが前記暫定最大値よりも小さければ、前記分類対象データを前記根ノードの境界値よりも小さい群に分類し、且つ、前記分類対象データを前記暫定最小値と比較して、前記暫定最小値よりも小さければ前記暫定最小値を前記分類対象データに更新し、
    前記分類対象データが前記暫定最大値よりも大きければ、前記暫定最大値を前記分類対象データに更新し、且つ、前記分類対象データを前記根ノードの境界値と比較して、前記根ノードの境界値よりも大きい群又は前記根ノードの境界値よりも小さい群に分類する、
    ことを特徴とする請求項2に記載のプログラム。
  4. 前記複数のデータの最大値と最小値を特定する処理は、前記3つの値の大小関係が小さい方から大きい方に前記根ノードの境界値、前記暫定最小値、前記暫定最大値の順である場合、
    前記分類対象データが前記暫定最小値よりも大きければ、前記分類対象データを前記根ノードの境界値よりも大きい群に分類し、且つ、前記分類対象データを前記暫定最大値と比較して、前記暫定最大値よりも大きければ前記暫定最大値を前記分類対象データに更新し、
    前記分類対象データが前記暫定最小値よりも小さければ、前記暫定最小値を前記分類対象データに更新し、且つ、前記分類対象データを前記根ノードの境界値と比較して、前記根ノードの境界値よりも大きい群又は前記根ノードの境界値よりも小さい群に分類する、
    ことを特徴とする請求項2又は3に記載のプログラム。
  5. 前記複数のデータの最大値と最小値を特定する処理は、前記3つの値の大小関係が小さい方から大きい方に前記暫定最小値、前記根ノードの境界値、前記暫定最大値の順である場合、
    前記分類対象データが前記根ノードの境界値よりも小さければ、前記分類対象データを前記根ノードの境界値よりも小さい群に分類し、且つ、前記分類対象データを前記暫定最小値と比較して前記暫定最小値よりも小さければ前記暫定最小値を前記分類対象データに更新し、
    前記分類対象データが前記根ノードの境界値よりも大きければ、前記分類対象データを前記根ノードの境界値よりも大きい群に分類し、且つ、前記分類対象データを前記暫定最大値と比較して前記暫定最大値よりも大きければ前記暫定最大値を前記分類対象データに更新する、
    ことを特徴とする請求項2から4のいずれか1項に記載のプログラム。
  6. 前記複数の境界値を境に区切られる複数の分割区間のうちで前記暫定最大値が属する分割区間から前記暫定最小値が属する分割区間までに含まれる分割区間の数が、前記複数の分割区間の数に対して所定の割合以上である場合、前記暫定最大値及び前記暫定最小値の特定を停止する、
    処理を、更に前記情報処理装置に実行させる請求項1から5のいずれか1項に記載のプログラム。
  7. 複数のデータのそれぞれを分類対象データとして、複数の境界値から作られる二分木の根ノードの境界値に基づいて前記分類対象データを分類する際に、前記データから前記分類対象データを読み出し、前記分類対象データと分類済みのデータとのうちの最大値を表す暫定最大値と、前記分類対象データと前記分類済みのデータとのうちの最小値を表す暫定最小値とを特定し、前記暫定最大値及び前記暫定最小値を更新することで前記複数のデータの最大値と最小値を特定する特定部と、
    前記複数の境界値のうちで、前記複数のデータの最大値と最小値の間にある境界値に基づいて前記複数のデータを分割する分割部と、
    を含む、情報処理装置。
  8. 複数の情報処理装置を有するシステムであって、
    前記複数の情報処理装置の各々が、
    複数のデータを分割することで得られた複数のデータ群のうちで処理対象として割り当てられている割当データ群に含まれるデータのそれぞれを分類対象データとして、複数の境界値から作られる二分木の根ノードの境界値に基づいて前記分類対象データを分類する際に、前記データから前記分類対象データを読み出し、前記分類対象データと分類済みのデータとのうちの最大値を表す暫定最大値と、前記分類対象データと前記分類済みのデータとのうちの最小値を表す暫定最小値とを特定し、前記暫定最大値及び前記暫定最小値を更新することで、前記割当データ群に含まれるデータの最大値と最小値を特定する特定部と、
    前記複数の境界値のうちで、前記割当データ群に含まれるデータの最大値と最小値の間にある境界値に基づいて前記割当データ群に含まれるデータを分割する分割部とを含む、
    システム。
JP2015115286A 2015-06-05 2015-06-05 情報処理装置、システム、及びプログラム Pending JP2017004128A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015115286A JP2017004128A (ja) 2015-06-05 2015-06-05 情報処理装置、システム、及びプログラム
US15/168,348 US20160357847A1 (en) 2015-06-05 2016-05-31 Computer readable medium, method, and information processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015115286A JP2017004128A (ja) 2015-06-05 2015-06-05 情報処理装置、システム、及びプログラム

Publications (1)

Publication Number Publication Date
JP2017004128A true JP2017004128A (ja) 2017-01-05

Family

ID=57451130

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015115286A Pending JP2017004128A (ja) 2015-06-05 2015-06-05 情報処理装置、システム、及びプログラム

Country Status (2)

Country Link
US (1) US20160357847A1 (ja)
JP (1) JP2017004128A (ja)

Also Published As

Publication number Publication date
US20160357847A1 (en) 2016-12-08

Similar Documents

Publication Publication Date Title
CN113015970B (zh) 划分知识图谱的方法、***和介质
JP5950285B2 (ja) 予め決められた複数のビット幅のデータに対して操作を行う命令を使用してツリーの検索を行うための方法、並びに、当該命令を使用してツリーの検索を行うためのコンピュータ及びそのコンピュータ・プログラム
CN107038206B (zh) Lsm树的建立方法、lsm树的数据读取方法和服务器
US20210182263A1 (en) Systems and methods for performing data processing operations using variable level parallelism
JP5460486B2 (ja) データをソートする装置及び方法
KR101696338B1 (ko) 컬럼-인덱스 데이터 포맷을 이용하여 빅데이터를 효율적으로 처리 및 분석하는 시스템 및 방법
JP2018515844A (ja) データ処理方法及びシステム
JP6434162B2 (ja) データ管理システム、データ管理方法およびプログラム
RU2556425C1 (ru) Способ автоматической итеративной кластеризации электронных документов по семантической близости, способ поиска в совокупности кластеризованных по семантической близости документов и машиночитаемые носители
CN109918658A (zh) 一种从文本中获取目标词汇的方法及***
Jiang et al. Parallel K-Medoids clustering algorithm based on Hadoop
CN112860685A (zh) 对数据集的分析的自动推荐
JPWO2014174599A1 (ja) 計算機、記録媒体及びデータ検索方法
CN107451204B (zh) 一种数据查询方法、装置及设备
JP7044118B2 (ja) 並列ユニオン制御装置、並列ユニオン制御方法、および並列ユニオン制御用プログラム
JP2017004128A (ja) 情報処理装置、システム、及びプログラム
JP7037048B2 (ja) 探索プログラムおよび探索方法
JP4844737B2 (ja) 代表情報選択方法、代表情報選択システム及びプログラム
JP2020038610A (ja) 検索処理プログラム、検索処理方法及び情報処理装置
JP7462191B2 (ja) 検索方法及び検索装置
JP2010191624A (ja) 情報検索方法とその装置、プログラム、記録媒体
Alp Comparison of baseline inverted index compression techniques by using a new document similarity removal method
KR101795564B1 (ko) 컬럼-인덱스 데이터 포맷을 이용하여 빅데이터를 효율적으로 처리 및 분석하는 시스템 및 방법
JP2023133738A (ja) コンテンツ分類システム、教師データの追加方法、及びプログラム
JP2024027038A (ja) 情報処理装置、情報処理方法、及び情報処理プログラム