(57)【要約】【課題】アルゴリズムの実装方法、動作環境及び入力サイズに基づく計算量を評価できる計算量評価装置、計算量評価方法及び計算量評価プログラムを提供すること。【解決手段】計算量評価装置１は、計算アルゴリズムに対して、入力サイズの関数である計算量の主要項を受け付ける入力部１１と、主要項に所定のオーバヘッドを加味し、係数を付加した計算時間の推定関数を設定する設定部１２と、計算アルゴリズムの実装環境において、入力サイズの異なる計算を複数回実行し、実計算時間を入力サイズと対応付けて記録する記録部１３と、推定関数による計算時間の推定値と実計算時間との誤差を最小にするための係数を算出する算出部１４と、算出部により算出された係数を設定した推定関数を出力する出力部１５とを備える。【選択図】図１
2020064455.tif 000002
【特許請求の範囲】
【請求項１】
計算アルゴリズムに対して、入力サイズの関数である計算量の主要項を受け付ける入力部と、
前記主要項に所定のオーバヘッドを加味し、係数を付加した計算時間の推定関数を設定する設定部と、
前記計算アルゴリズムの実装環境において、前記入力サイズの異なる計算を複数回実行し、実計算時間を前記入力サイズと対応付けて記録する記録部と、
前記推定関数による計算時間の推定値と前記実計算時間との誤差を最小にするための前記係数を算出する算出部と、
前記算出部により算出された前記係数を設定した前記推定関数を出力する出力部と、を備える計算量評価装置。
【請求項２】
前記入力部は、前記記録部による計算の実行回数の指定を受け付ける請求項１に記載の計算量評価装置。
【請求項３】
前記オーバヘッドは、前記入力サイズの線型項及び定数項である請求項１又は請求項２に記載の計算量評価装置。
【請求項４】
前記設定部は、前記主要項が前記入力サイズに等しい場合、前記推定関数を、前記線型項及び前記定数項のみとする請求項３に記載の計算量評価装置。
【請求項５】
前記入力サイズの指定に対して、複数の計算アルゴリズムのうち、対応する前記推定関数による計算時間の推定値が最小の計算アルゴリズムを選択する選択部を備える請求項１から請求項４のいずれかに記載の計算量評価装置。
【請求項６】
計算アルゴリズムに対して、入力サイズの関数である計算量の主要項を受け付ける入力ステップと、
前記主要項に所定のオーバヘッドを加味し、係数を付加した計算時間の推定関数を設定する設定ステップと、
前記計算アルゴリズムの実装環境において、前記入力サイズの異なる計算を複数回実行し、実計算時間を前記入力サイズと対応付けて記録する記録ステップと、
前記推定関数による計算時間の推定値と前記実計算時間との誤差を最小にするための前記係数を算出する算出ステップと、
前記算出ステップにおいて算出された前記係数を設定した前記推定関数を出力する出力ステップと、をコンピュータが実行する計算量評価方法。
【請求項７】
計算アルゴリズムに対して、入力サイズの関数である計算量の主要項を受け付ける入力ステップと、
前記主要項に所定のオーバヘッドを加味し、係数を付加した計算時間の推定関数を設定する設定ステップと、
前記計算アルゴリズムの実装環境において、前記入力サイズの異なる計算を複数回実行し、実計算時間を前記入力サイズと対応付けて記録する記録ステップと、
前記推定関数による計算時間の推定値と前記実計算時間との誤差を最小にするための前記係数を算出する算出ステップと、
前記算出ステップにおいて算出された前記係数を設定した前記推定関数を出力する出力ステップと、をコンピュータに実行させるための計算量評価プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、最適な計算アルゴリズムを選択するための装置、方法及びプログラムに関する。
【背景技術】
【０００２】
近年、格子暗号等の高速軽量な次世代公開鍵暗号のＩｏＴへの実装が進んでいる。次世代公開鍵暗号方式の多くは、整数又は有限体上の乗算が処理の大部分を占めているため、処理の高速化のためには乗算の高速化が必要である。
従来の高速な乗算アルゴリズムとして、例えば、Ｋａｒａｔｓｕｂａ法（非特許文献１参照）、及び高速フーリエ変換乗算法（非特許文献２参照）が提案されている。
【先行技術文献】
【非特許文献】
【０００３】
【非特許文献１】Ａ．  Ｋａｒａｔｓｕｂａ，  Ｙ．Ｏ．：  Ｍｕｌｔｉｐｌｉｃａｔｉｏｎ  ｏｆ  Ｍａｎｙ−Ｄｉｇｉｔａｌ  Ｎｕｍｂｅｒｓ  ｂｙ  Ａｕｔｏｍａｔｉｃ  Ｃｏｍｐｕｔｅｒｓ．  Ｄｏｋｌ．  Ａｋａｄ．  Ｎａｕｋ  ＳＳＳＲ  １４５，  ２９３−２９４  （１９６２）．
【非特許文献２】Ｆｕｒｅｒ，  Ｍ．：  Ｆａｓｔｅｒ  Ｉｎｔｅｇｅｒ  Ｍｕｌｔｉｐｌｉｃａｔｉｏｎ．  Ｉｎ：  Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ｔｈｅ  ｔｈｉｒｔｙ−ｎｉｎｔｈ  ａｎｎｕａｌ  ＡＣＭ  ｓｙｍｐｏｓｉｕｍ  ｏｎ  Ｔｈｅｏｒｙ  ｏｆ  ｃｏｍｐｕｔｉｎｇ  −  ＳＴＯＣ  ０７．  ＡＣＭ  Ｐｒｅｓｓ  （２００７）．
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、従来は、漸近計算量又は最悪計算量等の指標により、実装されたプログラムの実計算量又は処理時間を見積もることが一般的だった。
例えば、前述のＫａｒａｔｓｕｂａ法及び高速フーリエ変換乗算法の漸近計算量は、それぞれＯ（ｎｌｏｇ（２）３）及びＯ（ｎ・ｌｏｇ  ｎ）であり、理論上は高速フーリエ変換乗算法が高速である。しかしながら、実装方法（プログラム）、ＣＰＵ等の動作環境及び入力サイズ（桁数）によっては、高速フーリエ変換乗算法よりもＫａｒａｔｓｕｂａ法が高速になる場合もあった。
【０００５】
また、例えば、データの並べ替えを行うためのアルゴリズムの一つであるクイックソートの最悪計算量はＯ（ｎ２）であり、ヒープソート及びマージソートの最悪計算量Ｏ（ｎ・ｌｏｇ  ｎ）を上回る。しかしながら、多くの実装方法及び動作環境において、クイックソートの性能は他の方式の性能を上回ることが知られている。
【０００６】
このように、実装方法、動作環境及び入力サイズに応じて、最適なアルゴリズムを選択することは難しかった。
【０００７】
本発明は、アルゴリズムの実装方法、動作環境及び入力サイズに基づく計算量を評価できる計算量評価装置、計算量評価方法及び計算量評価プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係る計算量評価装置は、計算アルゴリズムに対して、入力サイズの関数である計算量の主要項を受け付ける入力部と、前記主要項に所定のオーバヘッドを加味し、係数を付加した計算時間の推定関数を設定する設定部と、前記計算アルゴリズムの実装環境において、前記入力サイズの異なる計算を複数回実行し、実計算時間を前記入力サイズと対応付けて記録する記録部と、前記推定関数による計算時間の推定値と前記実計算時間との誤差を最小にするための前記係数を算出する算出部と、前記算出部により算出された前記係数を設定した前記推定関数を出力する出力部と、を備える。
【０００９】
前記入力部は、前記記録部による計算の実行回数の指定を受け付けてもよい。
【００１０】
前記オーバヘッドは、前記入力サイズの線型項及び定数項であってもよい。
【００１１】
前記設定部は、前記主要項が前記入力サイズに等しい場合、前記推定関数を、前記線型項及び前記定数項のみとしてもよい。
【００１２】
前記計算量評価装置は、前記入力サイズの指定に対して、複数の計算アルゴリズムのうち、対応する前記推定関数による計算時間の推定値が最小の計算アルゴリズムを選択する選択部を備えてもよい。
【００１３】
本発明に係る計算量評価方法は、計算アルゴリズムに対して、入力サイズの関数である計算量の主要項を受け付ける入力ステップと、前記主要項に所定のオーバヘッドを加味し、係数を付加した計算時間の推定関数を設定する設定ステップと、前記計算アルゴリズムの実装環境において、前記入力サイズの異なる計算を複数回実行し、実計算時間を前記入力サイズと対応付けて記録する記録ステップと、前記推定関数による計算時間の推定値と前記実計算時間との誤差を最小にするための前記係数を算出する算出ステップと、前記算出ステップにおいて算出された前記係数を設定した前記推定関数を出力する出力ステップと、をコンピュータが実行する。
【００１４】
本発明に係る計算量評価プログラムは、計算アルゴリズムに対して、入力サイズの関数である計算量の主要項を受け付ける入力ステップと、前記主要項に所定のオーバヘッドを加味し、係数を付加した計算時間の推定関数を設定する設定ステップと、前記計算アルゴリズムの実装環境において、前記入力サイズの異なる計算を複数回実行し、実計算時間を前記入力サイズと対応付けて記録する記録ステップと、前記推定関数による計算時間の推定値と前記実計算時間との誤差を最小にするための前記係数を算出する算出ステップと、前記算出ステップにおいて算出された前記係数を設定した前記推定関数を出力する出力ステップと、をコンピュータに実行させるためのものである。
【発明の効果】
【００１５】
本発明によれば、アルゴリズムの実装方法、動作環境及び入力サイズに基づく計算量を評価できる。
【図面の簡単な説明】
【００１６】
【図１】実施形態に係る計算量評価装置の機能構成を示すブロック図である。
【図２】実施形態に係る計算量評価方法の処理手順を示す図である。
【図３】実施形態に係る選択部による計算アルゴリズムの選択方法を例示する図である。
【発明を実施するための形態】
【００１７】
以下、本発明の実施形態の一例について説明する。
図１は、本実施形態に係る計算量評価装置１の機能構成を示すブロック図である。
計算量評価装置１は、サーバ装置又はパーソナルコンピュータ等の情報処理装置（コンピュータ）であり、制御部１０及び記憶部２０の他、各種データの入出力デバイス及び通信デバイス等を備える。
【００１８】
制御部１０は、計算量評価装置１の全体を制御する部分であり、記憶部２０に記憶された各種プログラムを適宜読み出して実行することにより、本実施形態における各機能を実現する。制御部１０は、ＣＰＵであってよい。
【００１９】
記憶部２０は、ハードウェア群を計算量評価装置１として機能させるための各種プログラム、及び各種データ等の記憶領域であり、ＲＯＭ、ＲＡＭ、フラッシュメモリ又はハードディスク（ＨＤＤ）等であってよい。具体的には、記憶部２０は、本実施形態の各機能を制御部１０に実行させるためのプログラム（計算量評価プログラム）、このプログラムで用いられるパラメータ、生成されるサンプルデータ及び評価式等を記憶する。
【００２０】
制御部１０は、入力部１１と、設定部１２と、記録部１３と、算出部１４と、出力部１５と、選択部１６とを備える。
【００２１】
入力部１１は、評価対象の計算アルゴリズムに対して、この計算への入力サイズｎの関数である計算量の主要項を受け付ける。なお、主要項は、例えばｎ２、ｎ・ｌｏｇ  ｎ等、計算アルゴリズム毎に事前に求められているものとする。
このとき、入力部１１は、用意する計算時間のサンプルデータの数、すなわち記録部１３による事前計算の実行回数の指定を受け付けてもよい。
【００２２】
設定部１２は、入力された主要項に所定のオーバヘッドを加味し、係数を付加した計算時間の推定関数を設定する。オーバヘッドは、データの入力時間等を考慮した入力サイズに比例する線型項と、プログラムの起動時間等を考慮した定数項である。
ここで、設定部１２は、主要項が入力サイズに等しい場合、すなわち、計算アルゴリズムから求められる計算量がＯ（ｎ）の場合、推定関数を、線型項及び定数項のみとする。
【００２３】
記録部１３は、計算アルゴリズムの実装環境において、入力サイズの異なる計算を複数回実行し、実計算時間を入力サイズと対応付けてサンプルデータとして記録する。実行回数は、予め決められた所定回数、あるいは、入力部１１が受け付けた指定回数であってよい。
なお、記録部１３は、入力サイズを所定の範囲でランダムに選択してもよいし、実行回数に応じて等間隔等に分散して選択してもよい。
【００２４】
算出部１４は、推定関数による計算時間の推定値と実計算時間との誤差を最小にするための係数を、後述の処理により算出する。誤差は、例えば２乗誤差が用いられる。
出力部１５は、算出部１４により算出された係数を設定した推定関数を出力する。
選択部１６は、入力サイズの指定に対して、同一の処理を行う複数の計算アルゴリズムのうち、対応する推定関数による計算時間の推定値が最小の計算アルゴリズムを選択する。
【００２５】
計算量評価装置１は、これらの機能部により計算アルゴリズムが実装された環境における計算時間の推定関数を出力する。また、計算量評価装置１は、入力サイズの指定に応じて、複数の計算アルゴリズムの中から計算時間が最短のアルゴリズムを選択する。
なお、計算量評価装置１は、任意の計算アルゴリズムを対象とする。
【００２６】
次に、算出部１４による推定関数における係数の算出処理を詳述する。
評価対象の計算アルゴリズムによる計算時間ｆ（ｎ）は、入力サイズｎにのみ依存し、アルゴリズムの計算量の主要項がＣ（ｎ）（＞Ｏ（１））であるものとする。また、計算時間は、入力サイズに比例するオーバヘッドと、常に一定のオーバヘッドとを加味し、ｆ（ｎ）＝ａＣ（ｎ）＋ｂｎ＋ｃ（ただし、ａ，ｂ，ｃは定数）と表されるものとする。
【００２７】
このとき、サンプルデータとして記録された実計算時間ｔｉと、入力サイズｎｉから推定関数により推定される計算時間との２乗誤差は、
【数１】
2020064455.tif 000003
と表される。
【００２８】
ここで、Ｓ（ａ，ｂ，ｃ）が最小になるａ，ｂ，ｃを求めるためには、ａ，ｂ，ｃに対する偏導関数に関する連立方程式、
【数２】
2020064455.tif 000004
を解けばよい。
【００２９】
連立方程式は、それぞれ、
【数３】
2020064455.tif 000005
と展開できる。式を整理すると、連立方程式は、
【数４】
2020064455.tif 000006
と行列を用いて表すことができる。
【００３０】
逆行列を用いると、ａ，ｂ，ｃは、
【数５】
2020064455.tif 000007
と求めることができる。
【００３１】
ただし、Ｃ（ｎ）＝ｎの場合は、行列の１行目と２行目とが同一となり、逆行列は存在しない。この場合、ａ＝０とし、ｆ（ｎ）＝ｂｎ＋ｃとする。すると、２乗誤差は、
【数６】
2020064455.tif 000008
となる。
【００３２】
上記のＳ（ａ，ｂ，ｃ）と同様に、Ｓ（ｂ，ｃ）が最小になるｂ，ｃは、
【数７】
2020064455.tif 000009
という連立方程式、すなわち、
【数８】
2020064455.tif 000010
を解けばよい。
【００３３】
逆行列を用いると、ｂ，ｃは、
【数９】
2020064455.tif 000011
と求めることができる。
【００３４】
図２は、本実施形態に係る計算量評価方法の処理手順を示す図である。
計算量評価装置１は、実装されたプログラムＰ、計算量の主要項Ｃ（ｎ）、繰り返し回数ｌを入力として、計算時間の推定関数ｆ（ｎ）を出力する。
なお、繰り返し回数ｌの値を大きくすると、処理時間は長くなるものの、推定関数の精度が向上する。
【００３５】
ステップ１において、制御部１０（記録部１３）は、インデックスｉを０からｌ−１までインクリメントしつつ、後続のステップ２〜４を繰り返す。
ステップ２において、制御部１０（記録部１３）は、入力サイズｎｉを任意に、あるいは所定間隔等のルールに従って選択する。
ステップ３において、制御部１０（記録部１３）は、サイズｎｉの入力ｘｉを任意に選択する。
ステップ４において、制御部１０（記録部１３）は、評価対象の計算アルゴリズムの実装環境において、入力ｘｉを与えてプログラムＰを実行し、実計算時間ｔｉを記録する。
【００３６】
ステップ５において、制御部１０（算出部１４）は、計算量の主要項Ｃ（ｎ）がｎであるか否かを判定する。制御部１０（算出部１４）は、主要項Ｃ（ｎ）がｎの場合、ステップ６及び７を実行し、その他の場合、ステップ８を実行する。
ステップ６及び７において、制御部１０（算出部１４）は、係数ａ＝０とし、推定関数ｆ（ｎ）＝ｂｎ＋ｃの係数ｂ，ｃを前述の行列式により算出する。
ステップ８において、制御部１０（算出部１４）は、推定関数ｆ（ｎ）＝ａＣ（ｎ）＋ｂｎ＋ｃの係数ａ，ｂ，ｃを前述の行列式により算出する。
【００３７】
ステップ９において、制御部１０（出力部１５）は、算出された係数により推定関数ｆ（ｎ）を確定し、記憶部２０に記憶する。
ステップ１０において、制御部１０（出力部１５）は、推定関数ｆ（ｎ）を出力する。
【００３８】
計算量評価装置１は、このような計算量評価方法により出力された推定関数により、計算アルゴリズム毎に、入力サイズを指定して計算時間を推定できる。
【００３９】
図３は、本実施形態に係る選択部１６による計算アルゴリズムの選択方法を例示する図である。
計算アルゴリズムＡの実装プログラムと計算アルゴリズムＢの実装プログラムとは、入力サイズに応じてそれぞれ計算時間が異なる。計算アルゴリズムＡの計算時間を推定する推定関数ｆＡと、計算アルゴリズムＢの計算時間を推定する推定関数ｆＢとは、例えば図のように表される。
【００４０】
この場合、選択部１６は、入力サイズがｎ２より小さいｎ１に対しては、計算アルゴリズムＢを選択し、入力サイズがｎ２より大きいｎ３に対しては、計算アルゴリズムＡを選択することで、より計算時間の短いアルゴリズムを提示する。
【００４１】
本実施形態によれば、計算量評価装置１は、計算アルゴリズムに対して、計算量の主要項に所定のオーバヘッドを加味し、係数を付加した計算時間の推定関数を設定する。そして、計算量評価装置１は、この計算アルゴリズムの実装環境において入力サイズの異なる計算を複数回実行した実計算時間と、推定関数による計算時間の推定値との２乗誤差を最小にするための係数を算出し、算出された係数を設定した前記推定関数を出力する。
したがって、計算量評価装置１は、計算アルゴルズムの実装方法、動作環境及び入力サイズに基づき計算時間により計算量を評価できる。この結果、計算量評価装置１は、推定した計算時間により、同一の処理を行う複数の計算アルゴリズムの中から最適な計算アルゴリズムを選択することができる。
【００４２】
計算量評価装置１は、実計算時間を測定するための事前計算の実行回数の指定を受け付けることで、処理時間と推定精度とのトレードオフを適切に調整し、状況に応じて適切な推定関数を出力できる。
【００４３】
計算量評価装置１は、計算時間の推定関数に入力サイズの線型項及び定数項を含めるので、データの入力時間等の入力サイズに比例した時間と、プログラムの起動時間等の入力サイズによらない一定の時間とを含んだ、高精度の推定関数を出力できる。
【００４４】
計算量評価装置１は、主要項が入力サイズｎに等しい場合、推定関数から主要項を省き、線型項及び定数項のみに簡略化する。これにより、計算量評価装置１は、主要項に応じて適切な推定関数を効率的に出力できる。
【００４５】
計算量評価装置１は、同一の処理を行う複数の計算アルゴリズムに対して、計算時間の推定関数をそれぞれ算出しておくことで、入力サイズの指定に応じて、計算時間の推定値が最小の計算アルゴリズムを選択する。これにより、ユーザは、入力サイズに応じて、実装環境における計算時間が最も短い最適な計算アルゴリズムを選択し利用することができる。
【００４６】
以上、本発明の実施形態について説明したが、本発明は前述した実施形態に限るものではない。また、前述した実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、実施形態に記載されたものに限定されるものではない。
【００４７】
計算量評価装置１による計算量評価方法は、ソフトウェアにより実現される。ソフトウェアによって実現される場合には、このソフトウェアを構成するプログラムが、情報処理装置（コンピュータ）にインストールされる。また、これらのプログラムは、ＣＤ−ＲＯＭのようなリムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。さらに、これらのプログラムは、ダウンロードされることなくネットワークを介したＷｅｂサービスとしてユーザのコンピュータに提供されてもよい。
【符号の説明】
【００４８】
１  計算量評価装置
１０  制御部
１１  入力部
１２  設定部
１３  記録部
１４  算出部
１５  出力部
１６  選択部
２０  記憶部
【図１】
2020064455.tif 000012
【図２】
2020064455.tif 000013
【図３】
2020064455.tif 000014