(57)【要約】【課題】データテーブルの探索効率の向上。【解決手段】ｍ行のデータ行と、ｎ列のデータ列とデータ行が探索され参照された探索回数を記録するｐ列の探索回数記憶列と、を含み、探索対象となるｍ×ｎ個のデータを格納するデータテーブル５１と、総探索回数をカウントする総探索回数算出部２２と、総探索回数がｋ回未満か否かを判定する総探索回数判定部２３と、総探索回数がｋ回未満と判定された場合にデータテーブルに対して二分探索を行う二分探索部２４と、総探索回数がｋ回以上と判定された場合にｍ個のデータ行を探索回数記憶列で降順にソートして線形探索を行う線形探索部２５と、ｉ行目のデータ行が探索され参照された場合に、探索の用途に応じたｉ行ｊ列の探索回数記憶列の値に加算する探索回数記録部２６と、を含むデータ探索装置。【選択図】図１
2009104280.tif 000002
【特許請求の範囲】
【請求項１】
ｍ行（ｍは任意の自然数）のデータ行と、ｎ列（ｎは任意の自然数）のデータ列と前記データ行が探索され参照された探索回数を記録するｐ列（ｐは任意の自然数）の探索回数記憶列と、を含み、探索対象となるｍ×ｎ個のデータを格納するデータテーブルと、
探索回数の合計である総探索回数をカウントする総探索回数算出部と、
前記総探索回数がｋ回（ｋは任意の自然数）未満か否かを判定する総探索回数判定部と、
前記総探索回数がｋ回未満と判定された場合に前記データテーブルに対して二分探索を行う二分探索部と、
前記総探索回数がｋ回以上と判定された場合に前記ｍ個のデータ行を前記探索回数記憶列で降順にソートして線形探索を行う線形探索部と、
ｉ行目（１≦ｉ≦ｍ）の前記データ行が探索され参照された場合に、探索の用途に応じたｉ行ｊ列（１≦ｊ≦ｐ）の前記探索回数記憶列の値に加算する探索回数記録部と、
を含む、
ことを特徴とするデータ探索装置。
【請求項２】
ｍ行（ｍは任意の自然数）のデータ行と、ｎ列（ｎは任意の自然数）のデータ列と前記データ行が探索され参照された探索回数を記録するｐ列（ｐは任意の自然数）の探索回数記憶列と、を含み、探索対象となるｍ×ｎ個のデータを格納するデータテーブルに対し、
探索回数の合計である総探索回数をカウントする総探索回数算出工程と、
前記総探索回数がｋ回（ｋは任意の自然数）未満か否かを判定する総探索回数判定工程と、
前記総探索回数がｋ回未満と判定された場合に前記データテーブルに対して二分探索を行う二分探索工程と、
前記総探索回数がｋ回以上と判定された場合に前記ｍ個のデータ行を前記探索回数記憶列で降順にソートして線形探索を行う線形探索工程と、
ｉ行目（１≦ｉ≦ｍ）の前記データ行が探索され参照された場合に、探索の用途に応じたｉ行ｊ列（１≦ｊ≦ｐ）の前記探索回数記憶列の値に加算する探索回数記録工程と、
を含む、
ことを特徴とするデータ探索方法。
【請求項３】
ｍ行（ｍは任意の自然数）のデータ行と、ｎ列（ｎは任意の自然数）のデータ列と前記データ行が探索され参照された探索回数を記録するｐ列（ｐは任意の自然数）の探索回数記憶列と、を含み、探索対象となるｍ×ｎ個のデータを格納するデータテーブルに対し、
探索回数の合計である総探索回数をカウントする総探索回数算出ステップと、
前記総探索回数がｋ回（ｋは任意の自然数）未満か否かを判定する総探索回数判定ステップと、
前記総探索回数がｋ回未満と判定された場合に前記データテーブルに対して二分探索を行う二分探索ステップと、
前記総探索回数がｋ回以上と判定された場合に前記ｍ個のデータ行を前記探索回数記憶列で降順にソートして線形探索を行う線形探索ステップと、
ｉ行目（１≦ｉ≦ｍ）の前記データ行が探索され参照された場合に、探索の用途に応じたｉ行ｊ列（１≦ｊ≦ｐ）の前記探索回数記憶列の値に加算する探索回数記録ステップと、
を含む、
ことを特徴とするデータ探索プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ探索装置、データ探索方法、データ探索プログラムに関する。
【背景技術】
【０００２】
従来一般に、コンピュータにおいてソートされない変数データを探索する場合、探索指令入力のあるごとに変数データテーブルの先頭から順に変数データを探索し、該当する変数データを参照するようにしていた。
【０００３】
ところが、このような従来の変数データの探索方式では、ソートされない不連続な変数データ群から探索を行うと、変数データテーブルの先頭からの探索なので、探索頻度の多い変数データであってもほとんど探索されることのない変数データの探索と同じだけ時間がかかり、統計的に見て探索効率が悪いという問題点があった。
【０００４】
この問題を解決するために、例えば特許文献１には、ソートされない不連続な変数データが格納されている変数データテーブルの各々変数データについて、その探索ヒット回数を検出し、この探索ヒット回数の多い順にポインタを並べ変える学習機能を持たせ、この学習機能によって並べ変えられた順に探索ヒット回数を記憶する探索ヒット回数データテーブルを持ち、この探索ヒット回数に対応する変数データの順序で変数データのポインタ（位置）をポインタデータテーブルに記憶し、このポインタによって探索ヒット回数の多い変数データから順に探索する方法が記載されている。
【０００５】
【特許文献１】特開平５−１５８９９４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来の方法では、探索回数が少ない期間は学習効果が得られず、探索速度を速くできないという課題がある。
【課題を解決するための手段】
【０００７】
本発明は、上述の課題の少なくとも一部を解決するためになされたものであり、以下の形態または適用例として実現することが可能である。
【０００８】
［適用例１］
ｍ行（ｍは任意の自然数）のデータ行と、ｎ列（ｎは任意の自然数）のデータ列と前記データ行が探索され参照された探索回数を記録するｐ列（ｐは任意の自然数）の探索回数記憶列と、を含み、探索対象となるｍ×ｎ個のデータを格納するデータテーブルと、探索回数の合計である総探索回数をカウントする総探索回数算出部と、前記総探索回数がｋ回（ｋは任意の自然数）未満か否かを判定する総探索回数判定部と、前記総探索回数がｋ回未満と判定された場合に前記データテーブルに対して二分探索を行う二分探索部と、前記総探索回数がｋ回以上と判定された場合に前記ｍ個のデータ行を前記探索回数記憶列で降順にソートして線形探索を行う線形探索部と、ｉ行目（１≦ｉ≦ｍ）の前記データ行が探索され参照された場合に、探索の用途に応じたｉ行ｊ列（１≦ｊ≦ｐ）の前記探索回数記憶列の値に加算する探索回数記録部と、を含む、ことを特徴とするデータ探索装置。
【０００９】
この構成によれば、総探索回数が少ない期間は二分探索を行い、総探索回数が多くなり探索されやすいデータ行の傾向が現れたら以降は探索回数記憶列で降順にソート後、線形探索を行えるので、よく使われる項目を含んだデータ行をすばやく探索することができる。
【００１０】
［適用例２］
ｍ行（ｍは任意の自然数）のデータ行と、ｎ列（ｎは任意の自然数）のデータ列と前記データ行が探索され参照された探索回数を記録するｐ列（ｐは任意の自然数）の探索回数記憶列と、を含み、探索対象となるｍ×ｎ個のデータを格納するデータテーブルに対し、探索回数の合計である総探索回数をカウントする総探索回数算出工程と、前記総探索回数がｋ回（ｋは任意の自然数）未満か否かを判定する総探索回数判定工程と、前記総探索回数がｋ回未満と判定された場合に前記データテーブルに対して二分探索を行う二分探索工程と、前記総探索回数がｋ回以上と判定された場合に前記ｍ個のデータ行を前記探索回数記憶列で降順にソートして線形探索を行う線形探索工程と、ｉ行目（１≦ｉ≦ｍ）の前記データ行が探索され参照された場合に、探索の用途に応じたｉ行ｊ列（１≦ｊ≦ｐ）の前記探索回数記憶列の値に加算する探索回数記録工程と、を含む、ことを特徴とするデータ探索方法。
【００１１】
この構成によれば、総探索回数が少ない期間は二分探索を行い、総探索回数が多くなり探索されやすいデータ行の傾向が現れたら以降は探索回数記憶列で降順にソート後、線形探索を行えるので、よく使われる項目を含んだデータ行をすばやく探索することができる。
【００１２】
［適用例３］
ｍ行（ｍは任意の自然数）のデータ行と、ｎ列（ｎは任意の自然数）のデータ列と前記データ行が探索され参照された探索回数を記録するｐ列（ｐは任意の自然数）の探索回数記憶列と、を含み、探索対象となるｍ×ｎ個のデータを格納するデータテーブルに対し、探索回数の合計である総探索回数をカウントする総探索回数算出ステップと、前記総探索回数がｋ回（ｋは任意の自然数）未満か否かを判定する総探索回数判定ステップと、前記総探索回数がｋ回未満と判定された場合に前記データテーブルに対して二分探索を行う二分探索ステップと、前記総探索回数がｋ回以上と判定された場合に前記ｍ個のデータ行を前記探索回数記憶列で降順にソートして線形探索を行う線形探索ステップと、ｉ行目（１≦ｉ≦ｍ）の前記データ行が探索され参照された場合に、探索の用途に応じたｉ行ｊ列（１≦ｊ≦ｐ）の前記探索回数記憶列の値に加算する探索回数記録ステップと、を含む、ことを特徴とするデータ探索プログラム。
【００１３】
この構成によれば、総探索回数が少ない期間は二分探索を行い、総探索回数が多くなり探索されやすいデータ行の傾向が現れたら以降は探索回数記憶列で降順にソート後、線形探索を行えるので、よく使われる項目を含んだデータ行をすばやく探索することができる。
【発明を実施するための最良の形態】
【００１４】
以下、データ探索装置の実施形態について図面に従って説明する。
【００１５】
（第１実施形態）
＜データ探索装置の構成＞
先ず、第１実施形態に係るデータ探索装置の構成について、図１を参照して説明する。図１は、第１実施形態に係るデータ探索装置の構成を示すブロック図である。図１は、データ探索装置を含むプリンタ１００を一例として説明する。プリンタ１００は、スキャナとメモリ書込機能などを備えた複合機とし、印刷機能に加え、コピー機能やスキャナで取り込んだ画像をメモリカードなどに書き込む機能などを有するものとする。
【００１６】
図１に示すように、プリンタ１００は、内部バス１０を介して、ＣＰＵ２０と、ＲＯＭ３０と、ＲＡＭ４０と、ＥＥＰＲＯＭ（Electronically Erasable and Programmable Read Only Memory）５０と、印刷エンジン６０と、入力部７０と、表示部８０と、スキャナ部９０と、メモリ書込部９５と、を含んで構成されている。
【００１７】
プリンタ１００は、外部から操作を行う入力部７０により搭載されている各種機能を選択したり、印刷する用紙の選択や画質の選択などを行う。また、スキャナ部９０から取り込んだ画像データを印刷エンジン６０により用紙に印刷するか、メモリ書込部９５によりメモリカードに保存するか、などを選択できる。
【００１８】
ＲＯＭ３０は、プリンタ１００のデータ探索機能２１を構成する総探索回数算出部２２と、総探索回数判定部２３と、二分探索部２４と、線形探索部２５と、探索回数記録部２６と、を含み、ＣＰＵ２０により実行される。ＥＥＰＲＯＭ５０には、データテーブル５１が記憶されている。データテーブル５１には、プリンタ１００で使われる印刷設定パラメータなどが記憶され、入力部７０からの操作に従い、必要な印刷設定パラメータが選択される。印刷設定パラメータには、用紙サイズや画質などの情報が記憶されている。
【００１９】
＜データテーブルの構成＞
次に、データテーブルの構成について、図２を参照して説明する。図２は、データテーブルの構成を示すテーブル図である。本実施形態では、説明を簡略化するためにデータテーブル５１としてｍ＝８行のデータ行、ｎ＝３列のデータ列、ｐ＝２列の探索回数記憶列の場合について説明する。また、総探索回数判定部２３は、総探索回数がｋ＝１００未満か否かで判定するものとする。
【００２０】
図２（Ａ）に示すように、データテーブル５１は、８行のデータ行Ｒ１〜Ｒ８と、３列のデータ列Ｃ１〜Ｃ３と、２列の探索回数記憶列Ｓ１，Ｓ２と、から構成されている。例えば、データ列Ｃ１には用紙サイズに対応するパラメータが記憶され、データ列Ｃ２には色数に対応するパラメータが記憶され、データ列Ｃ３には画像サイズに対応するパラメータが記憶されているものとする。また、探索回数記憶列Ｓ１には、コピー機能を使った時にデータ行Ｒ１〜Ｒ８が探索され参照された探索回数が探索回数記録部２６により記録され、探索回数記憶列Ｓ２には、メモリ書込機能を使った時にデータ行Ｒ１〜Ｒ８が探索され参照された探索回数が探索回数記録部２６により記録されるものとする。
【００２１】
図２（Ｂ）は、総探索回数が１回の状態で、図２（Ａ）のデータテーブル５１をデータ列Ｃ１で昇順にソートした結果である。図２（Ｃ）は、総探索回数が１００回の状態で、探索回数記憶列Ｓ１，Ｓ２に探索回数が記録された状態である。図２（Ｄ）は、総探索回数が１００回の状態で、図２（Ｃ）のデータテーブル５１を探索回数記憶列Ｓ１で降順にソートした結果である。
【００２２】
＜データ探索機能の動作＞
次に、データ探索機能の動作について、図３を参照して説明する。図３は、データ探索機能の動作を説明するフローチャートである。なお、プリンタ１００の初期設定では、総探索回数Ｎは０回に設定され、探索回数記憶列Ｓ１，Ｓ２の各値も０に設定されているものとする。また、総探索回数Ｎは、ＥＥＰＲＯＭ５０に記憶され、プリンタ１００の電源が切られてもその値を記憶しているものとする。
【００２３】
先ず、ステップＳ１００では、入力部７０により印刷設定パラメータの選択が行われ、データテーブル５１の探索が実行されると、総探索回数算出部２２により総探索回数Ｎに１が加算される。
【００２４】
次に、ステップＳ１０２では、総探索回数判定部２３により総探索回数Ｎがｋ＝１００回未満か否かが判定され、１００回未満の場合は、ステップＳ１０４に移行し、１００回以上の場合は、ステップＳ１０８に移行する。
【００２５】
次に、ステップＳ１０４では、二分探索部２４により二分探索を行うために探索対象のデータ列（Ｃ１〜Ｃ３のいずれか）でデータテーブル５１を昇順にソートし、ステップＳ１０６では、二分探索が行われ、ステップＳ１１２に移行する。
【００２６】
一方、ステップＳ１０８では、線形探索部２５により現在選択中の機能に対応する探索回数記憶列（Ｓ１かＳ２のいずれか）でデータテーブル５１を降順にソートし、ステップＳ１１０では、線形探索が行われ、ステップＳ１１２に移行する。
【００２７】
次に、ステップＳ１１２では、探索回数記録部２６により探索され参照されたデータ列の現在選択中の機能に対応する探索回数記憶列（Ｓ１かＳ２のいずれか）の値に１が加算され、処理を終了する。
【００２８】
ここで、図２を参照して実際の動作例を説明する。
【００２９】
プリンタ１００のデータテーブル５１は、工場出荷時に図２（Ａ）に示すように設定されているものとする。入力部７０からデータ列Ｃ１の８行目の値７を探索するように操作した場合、従来の方法では線形探索を行うので、データ列Ｃ１の８行目の値７に辿り着くのに８回の探索動作が必要になる。
【００３０】
一方、本実施形態では、図２（Ｂ）に示すように、二分探索部２４によりデータ列Ｃ１でデータテーブル５１を昇順にソートし、二分探索を行う。ここで、二分探索とは、ソート済みのリストや配列に入ったデータ（同一の値はないものとする）に対する探索を行うにあたって、中央の値を見て、探索したい値との大小関係を用いて、探索したい値が中央の値の右にあるか、左にあるかを判断して、片側には存在しないことを確かめながら探索していく探索方法である。二分探索を行うことにより、３回の探索動作でデータ列Ｃ１データ行Ｒ８の値７に辿り着くことができる。
【００３１】
図２（Ｃ）は、総探索回数Ｎが１００回に達したデータテーブル５１の状態である。図２（Ｃ）に示すように、探索回数記録部２６により探索回数記憶列Ｓ１，Ｓ２の各々の値が設定されている。例えば、データ行Ｒ１はコピー機能により３０回の参照（探索回数記憶列Ｓ１の１行目）が行われ、データ行Ｒ２はコピー機能により５回の参照（探索回数記憶列Ｓ１の２行目）が行われ、データ行Ｒ３はコピー機能により４０回の参照（探索回数記憶列Ｓ１の３行目）が行われている。また、データ行Ｒ５はメモリ書込機能により２回の参照（探索回数記憶列Ｓ２の５行目）が行われている。
【００３２】
ここで、入力部７０からデータ列Ｃ１の３行目の値８をコピー機能で探索するように操作した場合、従来の方法では線形探索を行うので、データ列Ｃ１の３行目の値８に辿り着くのに３回の探索動作が必要になる。
【００３３】
一方、本実施形態では、図２（Ｄ）に示すように、線形探索部２５により探索回数記憶列Ｓ１でデータテーブル５１を降順にソートし、線形探索を行うので、１回の探索動作でデータ列Ｃ１のデータ行Ｒ３の値８に辿り着くことができる。
【００３４】
以上に述べた本実施形態によれば、以下の効果が得られる。
【００３５】
本実施形態では、総探索回数が少ない期間は二分探索を行い、総探索回数が多くなり探索されやすいデータ行の傾向が現れたら以降は探索回数記憶列で降順にソート後、線形探索を行えるので、よく使われる項目を含んだデータ行をすばやく探索することができる。
【００３６】
以上、データ探索装置の実施形態を説明したが、こうした実施の形態に何ら限定されるものではなく、趣旨を逸脱しない範囲内において様々な形態で実施し得ることができる。以下、変形例を挙げて説明する。
【００３７】
（変形例１）データ探索装置の変形例１について説明する。前記第１実施形態では、データテーブル５１がＥＥＰＲＯＭ５０に記憶されている場合を説明したが、ＲＯＭ３０に記憶されていてもよい。その場合は、ＥＥＰＲＯＭ５０に総探索回数Ｎと、探索回数記憶列Ｓ１，Ｓ２のみを記録すればよい。また、ＥＥＰＲＯＭ５０の記憶容量が限られている場合は、総探索回数Ｎはｋ＝１００以上になったら加算せず、探索回数記憶列Ｓ１，Ｓ２の上位からＭ位（Ｍは所定の自然数）までを記録するようにしてもよい。
【図面の簡単な説明】
【００３８】
【図１】第１実施形態に係るデータ探索装置の構成を示すブロック図。
【図２】データテーブルの構成を示すテーブル図。
【図３】データ探索機能の動作を説明するフローチャート。
【符号の説明】
【００３９】
１０…内部バス、２０…ＣＰＵ、２１…データ探索機能、２２…総探索回数算出部、２３…総探索回数判定部、２４…二分探索部、２５…線形探索部、２６…探索回数記録部、３０…ＲＯＭ、４０…ＲＡＭ、５０…ＥＥＰＲＯＭ、５１…データテーブル、６０…印刷エンジン、７０…入力部、８０…表示部、９０…スキャナ部、９５…メモリ書込部、１００…プリンタ。
【図１】
2009104280.tif 000003
【図２】
2009104280.tif 000004
【図３】
2009104280.tif 000005