JP7003025B2 - 計算量評価装置、計算量評価方法及び計算量評価プログラム - Google Patents

計算量評価装置、計算量評価方法及び計算量評価プログラム Download PDF

Info

Publication number
JP7003025B2
JP7003025B2 JP2018195928A JP2018195928A JP7003025B2 JP 7003025 B2 JP7003025 B2 JP 7003025B2 JP 2018195928 A JP2018195928 A JP 2018195928A JP 2018195928 A JP2018195928 A JP 2018195928A JP 7003025 B2 JP7003025 B2 JP 7003025B2
Authority
JP
Japan
Prior art keywords
calculation
input
estimation function
unit
calculation time
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
JP2018195928A
Other languages
English (en)
Other versions
JP2020064455A (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.)
KDDI Corp
Original Assignee
KDDI Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by KDDI Corp filed Critical KDDI Corp
Priority to JP2018195928A priority Critical patent/JP7003025B2/ja
Publication of JP2020064455A publication Critical patent/JP2020064455A/ja
Application granted granted Critical
Publication of JP7003025B2 publication Critical patent/JP7003025B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Complex Calculations (AREA)

Description

本発明は、最適な計算アルゴリズムを選択するための装置、方法及びプログラムに関する。
近年、格子暗号等の高速軽量な次世代公開鍵暗号のIoTへの実装が進んでいる。次世代公開鍵暗号方式の多くは、整数又は有限体上の乗算が処理の大部分を占めているため、処理の高速化のためには乗算の高速化が必要である。
従来の高速な乗算アルゴリズムとして、例えば、Karatsuba法(非特許文献1参照)、及び高速フーリエ変換乗算法(非特許文献2参照)が提案されている。
A. Karatsuba, Y.O.: Multiplication of Many-Digital Numbers by Automatic Computers. Dokl. Akad. Nauk SSSR 145, 293-294 (1962). Furer, M.: Faster Integer Multiplication. In: Proceedings of the thirty-ninth annual ACM symposium on Theory of computing - STOC 07. ACM Press (2007).
ところで、従来は、漸近計算量又は最悪計算量等の指標により、実装されたプログラムの実計算量又は処理時間を見積もることが一般的だった。
例えば、前述のKaratsuba法及び高速フーリエ変換乗算法の漸近計算量は、それぞれO(nlog(2)3)及びO(n・log n)であり、理論上は高速フーリエ変換乗算法が高速である。しかしながら、実装方法(プログラム)、CPU等の動作環境及び入力サイズ(桁数)によっては、高速フーリエ変換乗算法よりもKaratsuba法が高速になる場合もあった。
また、例えば、データの並べ替えを行うためのアルゴリズムの一つであるクイックソートの最悪計算量はO(n)であり、ヒープソート及びマージソートの最悪計算量O(n・log n)を上回る。しかしながら、多くの実装方法及び動作環境において、クイックソートの性能は他の方式の性能を上回ることが知られている。
このように、実装方法、動作環境及び入力サイズに応じて、最適なアルゴリズムを選択することは難しかった。
本発明は、アルゴリズムの実装方法、動作環境及び入力サイズに基づく計算量を評価できる計算量評価装置、計算量評価方法及び計算量評価プログラムを提供することを目的とする。
本発明に係る計算量評価装置は、計算アルゴリズムに対して、入力サイズの関数である計算量の主要項を受け付ける入力部と、前記主要項に所定のオーバヘッドを加味し、係数を付加した計算時間の推定関数を設定する設定部と、前記計算アルゴリズムの実装環境において、前記入力サイズの異なる計算を複数回実行し、実計算時間を前記入力サイズと対応付けて記録する記録部と、前記推定関数による計算時間の推定値と前記実計算時間との誤差を最小にするための前記係数を算出する算出部と、前記算出部により算出された前記係数を設定した前記推定関数を出力する出力部と、を備える。
前記入力部は、前記記録部による計算の実行回数の指定を受け付けてもよい。
前記オーバヘッドは、前記入力サイズの線型項及び定数項であってもよい。
前記設定部は、前記主要項が前記入力サイズに等しい場合、前記推定関数を、前記線型項及び前記定数項のみとしてもよい。
前記計算量評価装置は、前記入力サイズの指定に対して、複数の計算アルゴリズムのうち、対応する前記推定関数による計算時間の推定値が最小の計算アルゴリズムを選択する選択部を備えてもよい。
本発明に係る計算量評価方法は、計算アルゴリズムに対して、入力サイズの関数である計算量の主要項を受け付ける入力ステップと、前記主要項に所定のオーバヘッドを加味し、係数を付加した計算時間の推定関数を設定する設定ステップと、前記計算アルゴリズムの実装環境において、前記入力サイズの異なる計算を複数回実行し、実計算時間を前記入力サイズと対応付けて記録する記録ステップと、前記推定関数による計算時間の推定値と前記実計算時間との誤差を最小にするための前記係数を算出する算出ステップと、前記算出ステップにおいて算出された前記係数を設定した前記推定関数を出力する出力ステップと、をコンピュータが実行する。
本発明に係る計算量評価プログラムは、計算アルゴリズムに対して、入力サイズの関数である計算量の主要項を受け付ける入力ステップと、前記主要項に所定のオーバヘッドを加味し、係数を付加した計算時間の推定関数を設定する設定ステップと、前記計算アルゴリズムの実装環境において、前記入力サイズの異なる計算を複数回実行し、実計算時間を前記入力サイズと対応付けて記録する記録ステップと、前記推定関数による計算時間の推定値と前記実計算時間との誤差を最小にするための前記係数を算出する算出ステップと、前記算出ステップにおいて算出された前記係数を設定した前記推定関数を出力する出力ステップと、をコンピュータに実行させるためのものである。
本発明によれば、アルゴリズムの実装方法、動作環境及び入力サイズに基づく計算量を評価できる。
実施形態に係る計算量評価装置の機能構成を示すブロック図である。 実施形態に係る計算量評価方法の処理手順を示す図である。 実施形態に係る選択部による計算アルゴリズムの選択方法を例示する図である。
以下、本発明の実施形態の一例について説明する。
図1は、本実施形態に係る計算量評価装置1の機能構成を示すブロック図である。
計算量評価装置1は、サーバ装置又はパーソナルコンピュータ等の情報処理装置(コンピュータ)であり、制御部10及び記憶部20の他、各種データの入出力デバイス及び通信デバイス等を備える。
制御部10は、計算量評価装置1の全体を制御する部分であり、記憶部20に記憶された各種プログラムを適宜読み出して実行することにより、本実施形態における各機能を実現する。制御部10は、CPUであってよい。
記憶部20は、ハードウェア群を計算量評価装置1として機能させるための各種プログラム、及び各種データ等の記憶領域であり、ROM、RAM、フラッシュメモリ又はハードディスク(HDD)等であってよい。具体的には、記憶部20は、本実施形態の各機能を制御部10に実行させるためのプログラム(計算量評価プログラム)、このプログラムで用いられるパラメータ、生成されるサンプルデータ及び評価式等を記憶する。
制御部10は、入力部11と、設定部12と、記録部13と、算出部14と、出力部15と、選択部16とを備える。
入力部11は、評価対象の計算アルゴリズムに対して、この計算への入力サイズnの関数である計算量の主要項を受け付ける。なお、主要項は、例えばn、n・log n等、計算アルゴリズム毎に事前に求められているものとする。
このとき、入力部11は、用意する計算時間のサンプルデータの数、すなわち記録部13による事前計算の実行回数の指定を受け付けてもよい。
設定部12は、入力された主要項に所定のオーバヘッドを加味し、係数を付加した計算時間の推定関数を設定する。オーバヘッドは、データの入力時間等を考慮した入力サイズに比例する線型項と、プログラムの起動時間等を考慮した定数項である。
ここで、設定部12は、主要項が入力サイズに等しい場合、すなわち、計算アルゴリズムから求められる計算量がO(n)の場合、推定関数を、線型項及び定数項のみとする。
記録部13は、計算アルゴリズムの実装環境において、入力サイズの異なる計算を複数回実行し、実計算時間を入力サイズと対応付けてサンプルデータとして記録する。実行回数は、予め決められた所定回数、あるいは、入力部11が受け付けた指定回数であってよい。
なお、記録部13は、入力サイズを所定の範囲でランダムに選択してもよいし、実行回数に応じて等間隔等に分散して選択してもよい。
算出部14は、推定関数による計算時間の推定値と実計算時間との誤差を最小にするための係数を、後述の処理により算出する。誤差は、例えば2乗誤差が用いられる。
出力部15は、算出部14により算出された係数を設定した推定関数を出力する。
選択部16は、入力サイズの指定に対して、同一の処理を行う複数の計算アルゴリズムのうち、対応する推定関数による計算時間の推定値が最小の計算アルゴリズムを選択する。
計算量評価装置1は、これらの機能部により計算アルゴリズムが実装された環境における計算時間の推定関数を出力する。また、計算量評価装置1は、入力サイズの指定に応じて、複数の計算アルゴリズムの中から計算時間が最短のアルゴリズムを選択する。
なお、計算量評価装置1は、任意の計算アルゴリズムを対象とする。
次に、算出部14による推定関数における係数の算出処理を詳述する。
評価対象の計算アルゴリズムによる計算時間f(n)は、入力サイズnにのみ依存し、アルゴリズムの計算量の主要項がC(n)(>O(1))であるものとする。また、計算時間は、入力サイズに比例するオーバヘッドと、常に一定のオーバヘッドとを加味し、f(n)=aC(n)+bn+c(ただし、a,b,cは定数)と表されるものとする。
このとき、サンプルデータとして記録された実計算時間tと、入力サイズnから推定関数により推定される計算時間との2乗誤差は、
Figure 0007003025000001
と表される。
ここで、S(a,b,c)が最小になるa,b,cを求めるためには、a,b,cに対する偏導関数に関する連立方程式、
Figure 0007003025000002
を解けばよい。
連立方程式は、それぞれ、
Figure 0007003025000003
と展開できる。式を整理すると、連立方程式は、
Figure 0007003025000004
と行列を用いて表すことができる。
逆行列を用いると、a,b,cは、
Figure 0007003025000005
と求めることができる。
ただし、C(n)=nの場合は、行列の1行目と2行目とが同一となり、逆行列は存在しない。この場合、a=0とし、f(n)=bn+cとする。すると、2乗誤差は、
Figure 0007003025000006
となる。
上記のS(a,b,c)と同様に、S(b,c)が最小になるb,cは、
Figure 0007003025000007
という連立方程式、すなわち、
Figure 0007003025000008
を解けばよい。
逆行列を用いると、b,cは、
Figure 0007003025000009
と求めることができる。
図2は、本実施形態に係る計算量評価方法の処理手順を示す図である。
計算量評価装置1は、実装されたプログラムP、計算量の主要項C(n)、繰り返し回数lを入力として、計算時間の推定関数f(n)を出力する。
なお、繰り返し回数lの値を大きくすると、処理時間は長くなるものの、推定関数の精度が向上する。
ステップ1において、制御部10(記録部13)は、インデックスiを0からl-1までインクリメントしつつ、後続のステップ2~4を繰り返す。
ステップ2において、制御部10(記録部13)は、入力サイズnを任意に、あるいは所定間隔等のルールに従って選択する。
ステップ3において、制御部10(記録部13)は、サイズnの入力xを任意に選択する。
ステップ4において、制御部10(記録部13)は、評価対象の計算アルゴリズムの実装環境において、入力xを与えてプログラムPを実行し、実計算時間tを記録する。
ステップ5において、制御部10(算出部14)は、計算量の主要項C(n)がnであるか否かを判定する。制御部10(算出部14)は、主要項C(n)がnの場合、ステップ6及び7を実行し、その他の場合、ステップ8を実行する。
ステップ6及び7において、制御部10(算出部14)は、係数a=0とし、推定関数f(n)=bn+cの係数b,cを前述の行列式により算出する。
ステップ8において、制御部10(算出部14)は、推定関数f(n)=aC(n)+bn+cの係数a,b,cを前述の行列式により算出する。
ステップ9において、制御部10(出力部15)は、算出された係数により推定関数f(n)を確定し、記憶部20に記憶する。
ステップ10において、制御部10(出力部15)は、推定関数f(n)を出力する。
計算量評価装置1は、このような計算量評価方法により出力された推定関数により、計算アルゴリズム毎に、入力サイズを指定して計算時間を推定できる。
図3は、本実施形態に係る選択部16による計算アルゴリズムの選択方法を例示する図である。
計算アルゴリズムAの実装プログラムと計算アルゴリズムBの実装プログラムとは、入力サイズに応じてそれぞれ計算時間が異なる。計算アルゴリズムAの計算時間を推定する推定関数fと、計算アルゴリズムBの計算時間を推定する推定関数fとは、例えば図のように表される。
この場合、選択部16は、入力サイズがnより小さいnに対しては、計算アルゴリズムBを選択し、入力サイズがnより大きいnに対しては、計算アルゴリズムAを選択することで、より計算時間の短いアルゴリズムを提示する。
本実施形態によれば、計算量評価装置1は、計算アルゴリズムに対して、計算量の主要項に所定のオーバヘッドを加味し、係数を付加した計算時間の推定関数を設定する。そして、計算量評価装置1は、この計算アルゴリズムの実装環境において入力サイズの異なる計算を複数回実行した実計算時間と、推定関数による計算時間の推定値との2乗誤差を最小にするための係数を算出し、算出された係数を設定した前記推定関数を出力する。
したがって、計算量評価装置1は、計算アルゴルズムの実装方法、動作環境及び入力サイズに基づき計算時間により計算量を評価できる。この結果、計算量評価装置1は、推定した計算時間により、同一の処理を行う複数の計算アルゴリズムの中から最適な計算アルゴリズムを選択することができる。
計算量評価装置1は、実計算時間を測定するための事前計算の実行回数の指定を受け付けることで、処理時間と推定精度とのトレードオフを適切に調整し、状況に応じて適切な推定関数を出力できる。
計算量評価装置1は、計算時間の推定関数に入力サイズの線型項及び定数項を含めるので、データの入力時間等の入力サイズに比例した時間と、プログラムの起動時間等の入力サイズによらない一定の時間とを含んだ、高精度の推定関数を出力できる。
計算量評価装置1は、主要項が入力サイズnに等しい場合、推定関数から主要項を省き、線型項及び定数項のみに簡略化する。これにより、計算量評価装置1は、主要項に応じて適切な推定関数を効率的に出力できる。
計算量評価装置1は、同一の処理を行う複数の計算アルゴリズムに対して、計算時間の推定関数をそれぞれ算出しておくことで、入力サイズの指定に応じて、計算時間の推定値が最小の計算アルゴリズムを選択する。これにより、ユーザは、入力サイズに応じて、実装環境における計算時間が最も短い最適な計算アルゴリズムを選択し利用することができる。
以上、本発明の実施形態について説明したが、本発明は前述した実施形態に限るものではない。また、前述した実施形態に記載された効果は、本発明から生じる最も好適な効果を列挙したに過ぎず、本発明による効果は、実施形態に記載されたものに限定されるものではない。
計算量評価装置1による計算量評価方法は、ソフトウェアにより実現される。ソフトウェアによって実現される場合には、このソフトウェアを構成するプログラムが、情報処理装置(コンピュータ)にインストールされる。また、これらのプログラムは、CD-ROMのようなリムーバブルメディアに記録されてユーザに配布されてもよいし、ネットワークを介してユーザのコンピュータにダウンロードされることにより配布されてもよい。さらに、これらのプログラムは、ダウンロードされることなくネットワークを介したWebサービスとしてユーザのコンピュータに提供されてもよい。
1 計算量評価装置
10 制御部
11 入力部
12 設定部
13 記録部
14 算出部
15 出力部
16 選択部
20 記憶部

Claims (7)

  1. 計算アルゴリズムに対して、入力サイズの関数である計算量の主要項を受け付ける入力部と、
    前記主要項に所定のオーバヘッドを加味し、係数を付加した計算時間の推定関数を設定する設定部と、
    前記計算アルゴリズムの実装環境において、前記入力サイズの異なる計算を複数回実行し、実計算時間を前記入力サイズと対応付けて記録する記録部と、
    前記推定関数による計算時間の推定値と前記実計算時間との誤差を最小にするための前記係数を算出する算出部と、
    前記算出部により算出された前記係数を設定した前記推定関数を出力する出力部と、を備える計算量評価装置。
  2. 前記入力部は、前記記録部による計算の実行回数の指定を受け付ける請求項1に記載の計算量評価装置。
  3. 前記オーバヘッドは、前記入力サイズの線型項及び定数項である請求項1又は請求項2に記載の計算量評価装置。
  4. 前記設定部は、前記主要項が前記入力サイズに等しい場合、前記推定関数を、前記線型項及び前記定数項のみとする請求項3に記載の計算量評価装置。
  5. 前記入力サイズの指定に対して、複数の計算アルゴリズムのうち、対応する前記推定関数による計算時間の推定値が最小の計算アルゴリズムを選択する選択部を備える請求項1から請求項4のいずれかに記載の計算量評価装置。
  6. 計算アルゴリズムに対して、入力サイズの関数である計算量の主要項を受け付ける入力ステップと、
    前記主要項に所定のオーバヘッドを加味し、係数を付加した計算時間の推定関数を設定する設定ステップと、
    前記計算アルゴリズムの実装環境において、前記入力サイズの異なる計算を複数回実行し、実計算時間を前記入力サイズと対応付けて記録する記録ステップと、
    前記推定関数による計算時間の推定値と前記実計算時間との誤差を最小にするための前記係数を算出する算出ステップと、
    前記算出ステップにおいて算出された前記係数を設定した前記推定関数を出力する出力ステップと、をコンピュータが実行する計算量評価方法。
  7. 計算アルゴリズムに対して、入力サイズの関数である計算量の主要項を受け付ける入力ステップと、
    前記主要項に所定のオーバヘッドを加味し、係数を付加した計算時間の推定関数を設定する設定ステップと、
    前記計算アルゴリズムの実装環境において、前記入力サイズの異なる計算を複数回実行し、実計算時間を前記入力サイズと対応付けて記録する記録ステップと、
    前記推定関数による計算時間の推定値と前記実計算時間との誤差を最小にするための前記係数を算出する算出ステップと、
    前記算出ステップにおいて算出された前記係数を設定した前記推定関数を出力する出力ステップと、をコンピュータに実行させるための計算量評価プログラム。
JP2018195928A 2018-10-17 2018-10-17 計算量評価装置、計算量評価方法及び計算量評価プログラム Active JP7003025B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2018195928A JP7003025B2 (ja) 2018-10-17 2018-10-17 計算量評価装置、計算量評価方法及び計算量評価プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018195928A JP7003025B2 (ja) 2018-10-17 2018-10-17 計算量評価装置、計算量評価方法及び計算量評価プログラム

Publications (2)

Publication Number Publication Date
JP2020064455A JP2020064455A (ja) 2020-04-23
JP7003025B2 true JP7003025B2 (ja) 2022-01-20

Family

ID=70388310

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018195928A Active JP7003025B2 (ja) 2018-10-17 2018-10-17 計算量評価装置、計算量評価方法及び計算量評価プログラム

Country Status (1)

Country Link
JP (1) JP7003025B2 (ja)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010113527A (ja) 2008-11-06 2010-05-20 Hitachi Systems & Services Ltd バグ摘出予測システム
JP2013153257A (ja) 2012-01-24 2013-08-08 Axell Corp 画像処理装置及び画像処理方法
JP2013175065A (ja) 2012-02-24 2013-09-05 Fujitsu Ltd 性能評価方法、情報処理装置およびプログラム
WO2018150588A1 (ja) 2017-02-20 2018-08-23 三菱電機株式会社 情報処理装置、情報処理方法及び情報処理プログラム
US20180247223A1 (en) 2017-02-28 2018-08-30 GM Global Technology Operations LLC System and method of selecting a computational platform

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010113527A (ja) 2008-11-06 2010-05-20 Hitachi Systems & Services Ltd バグ摘出予測システム
JP2013153257A (ja) 2012-01-24 2013-08-08 Axell Corp 画像処理装置及び画像処理方法
JP2013175065A (ja) 2012-02-24 2013-09-05 Fujitsu Ltd 性能評価方法、情報処理装置およびプログラム
WO2018150588A1 (ja) 2017-02-20 2018-08-23 三菱電機株式会社 情報処理装置、情報処理方法及び情報処理プログラム
US20180247223A1 (en) 2017-02-28 2018-08-30 GM Global Technology Operations LLC System and method of selecting a computational platform

Also Published As

Publication number Publication date
JP2020064455A (ja) 2020-04-23

Similar Documents

Publication Publication Date Title
Boudot et al. Comparing the difficulty of factorization and discrete logarithm: a 240-digit experiment
CN114175568B (zh) 安全的多方到达率和频率估算
JP5378579B2 (ja) フォールディングを用いるモジュール削減
Bernstein et al. On the correct use of the negation map in the Pollard rho method
Reparaz et al. Fast leakage assessment
Xie et al. Pandas: robust locality-aware scheduling with stochastic delay optimality
JP2022523182A (ja) モジュラー整数を使用したセキュアなマルチパーティ計算のための算術
CN110062922A (zh) 流处理系统和方法
JP2023525953A (ja) Nisq(ノイズ有り中規模量子)コンピュータにおける振幅推定の方法
Lange et al. Kangaroos in side-channel attacks
JP7003025B2 (ja) 計算量評価装置、計算量評価方法及び計算量評価プログラム
JP6618875B2 (ja) 評価装置、評価方法及び評価プログラム
US20100115230A1 (en) Hash functions using recurrency and arithmetic
US9537740B2 (en) Monitoring device usage
KR101925614B1 (ko) 타원곡선 암호화 시스템에서의 스칼라 곱셈 처리 방법 및 타원곡선 암호화 시스템
Maitin-Shepard Optimal software-implemented Itoh–Tsujii inversion for F _ 2^ m F 2 m
US9998347B2 (en) Monitoring device usage
CN116132046A (zh) 格基加密算法解密错误率的估算方法、介质、设备及系统
JP6203313B2 (ja) 特徴選択装置、特徴選択方法およびプログラム
Valois et al. Performance of password guessing enumerators under cracking conditions
Orlov et al. Approach to estimation of performance measures for SIP server model with batch arrivals
US11121861B2 (en) Method and device to produce a secure hash value
JP7472998B2 (ja) パラメータ推定装置、秘密パラメータ推定システム、秘密計算装置、それらの方法、およびプログラム
US20220166618A1 (en) Decryption of Encrypted Data Missing a Private Key
JP7402191B2 (ja) 乗算装置、乗算方法及び乗算プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201201

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211125

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20211228

R150 Certificate of patent or registration of utility model

Ref document number: 7003025

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150