• 検索結果がありません。

既存研究とその課題

ドキュメント内 JAIST Repository https://dspace.jaist.ac.jp/ (ページ 39-43)

A.3.1 Double-Base Number System

DBNS(Double-Base Number System)は,正の整数kの表現形式の1つであり,整数kを下式のように 2及び3のべき乗の和で表すものである.

m

si2bi3tisi∈ {−1,1}bi, ti =0 (17)

DBNSは,1つの正の整数が多くの別表現をもつ表現形式である.例えば,10は5個のDBNS表現を,ま た,100は402個,1,000は1,295,579個のDBNS表現をもつ.一般には正の整数kの表現形式の個数nに 関して,最大で以下の個数になることがDimitrovらによって示されている[2].

O

( logk log logk

)

(18) DBNS表現を使用すると,バイナリ表現に比べ,加算の数が減らせ,これによってスカラー倍算における加 算の数が減少するメリットがある.ランダムに選択された160ビットの整数に対するスカラー倍算の加算数 の平均値は,バイナリ表現の場合で80,NAFで53,DBNSで22である.具体な例をとると,例えばスカ ラーkが127の時,バイナリ表現の場合,

127 = 64 + 32 + 16 + 8 + 4 + 2 + 1

= 26+ 25+ 24+ 23+ 22+ 21+ 20(加算6回)

また,DBNS表現の場合,

127 = 96 + 27 + 4

= 2531+ 2033+ 2230(加算2回)

となり,実際にDBNS表現の方が加算の数が少ないことが確認できる.

一方で,バイナリ表現と異なり,2及び3のべき乗が降べき順とは限らず,降べき順でない場合,スカラー 倍算における2倍算及び3倍算が増えるという課題がある.例えば,先の整数127の場合,バイナリ表現では,

127 = 64 + 32 + 16 + 8 + 4 + 2 + 1

= 21(21(21(21(21(21+ 20) + 20) + 20) + 20) + 20) + 20) で,2倍算が6回(加算は6回)となるが,DBNS表現では,

127 = 96 + 27 + 4 = 2531+ 2033+ 2230

= 2230(2331+ 2030) + 2032

であり,2倍算,3倍算がそれぞれ5回,3回(加算は2回)となり,2倍算,3倍算だけで2533= 864À127 となり,明らかに不要な計算をすることになり,非効率である.

A.3.2 DBNSに関わる既存研究

前節で述べたスカラー倍算に置いてDBNSを使用する際の課題を解決する手法がDimitrovらによって提 案されたDBchainsである[3].

DBChiansはDBNS表現の1種で,下記のようにDBNS表現を2及び3の降べき順のものに限定したも のである.

k=

n

i=0

si2bi3ti

si∈ {−1,1}b0≥b1≥ · · · ≥bn 0, t0≥t1≥ · · · ≥tn 0

DBChainsでは,下式のようにbitiの値が小さいときの計算結果を,bitiの値が大きい時の計算に利用 出来るため,スカラー倍算の2倍算及び3倍算が増える問題を回避可能である.

k =

n

i=0

si2bi3ti

= 2b03t0(2b1b03t1t0(2b2b13t2t1+ 1)・・・・・+ 1) 例えば,k=127の場合,前節のようなDBchainsでないDBNS表現の場合,

127 = 96 + 27 + 4 = 2531+ 2033+ 2230

= 2230(2331+ 1) + 2032

となり,2倍算,3倍算がそれぞれ5回と3回であったが,DBchainsとなるDBNS表現を使用すると,

127 = 108 + 18 + 1 = 2233+ 2132+ 2030

= 2030(2132(2131+ 1) + 1)

となり,2倍算,3倍算はそれぞれ2回と3回に減ることが確認できる.また,2233= 108<127であり,

不要な2倍算,3倍算は行われていない.

一方,DBChainsでは,2及び3のべき乗の値が降順になるようなDBNS表現に限定するため,選択可能 なDBNS表現の数が大幅に削減される.このため,必ずしも加算の数を最小化するようなDBNS表現の選 択が出来るとは限らない.この制約を緩和する手法としてYao’s algorithmを利用した手法をMeloniらが提 案している[6].Meloniらの手法は,DBNS表現を3のべき乗が同一の項をまとめ,以下のように変形する.

k=d(0) + 3d(1) + 32d(2) +・・・+ 3max(ti)d(max(ti))

= (3(・・・3(3d(max(ti)) +d(max(ti)1)) +・・・+d(1)) +d(0) 但し,d(j) =∑

ti=j

2i

ここで,20,21,22,・・・・・,2max(bi) を事前に計算しておくことで,スカラー倍算の計算コストは,2 倍算

max(bi), 3倍算がmax(ti)となり,DBchainsと同一の計算コストとなる.一方,加算の計算コストは

DBNSの項数1となりDBchainsと同一に見えるが,DBchainsに比べ,選択可能なDBNS表現の数が増 えるため,DBNSの項数もより小さいものを選択可能であり,DBchainsよりも加算の計算コストが下がる 可能性が高い手法である.

しかしながら,多くの2のべき乗の事前計算が必要になるため,メモリ容量が小さいデバイスでは利用が

表12: DBNSの既存研究

Dimitrovら(2005年) [3] Meloniら(2009年) [6]

DBNS表現 2及び3の降べき順 2と3のべき乗の最大値 (b0≥b1≥ · · · ≥bm0, の積がスカラーK以内 t0≥t1≥ · · · ≥tm0) (k2max(bi)3max(ti)) DBNS表現 Greedy algorithm n/a

導出方法

スカラー倍算 Left to Right 3のべきが同一の項 の計算方法 をまとめてLeft to Right 計算コスト 2のべきの最大値 2のべきの最大値

(2倍算) (=初項の2のべきb0)

計算コスト 3のべきの最大値 3のべきの最大値 (3倍算) (=初項の3のべきt0)

計算コスト DBNS表現の項数-1 DBNS表現の項数-1 (加算) ※Meloniらの手法 ※Dimitrovらの手法

に比べ,DBNS表現の に比べ制限が緩やかで,

項数は増加傾向 DBNS表現の項数は 減少傾向

プレ計算 不要 2のべきの最大値までの 全ての2のべき乗のプレ計算 が必要.

(20P,21P,· · ·,2max(bi))

A.3.3 既存研究の課題

Dimitrovらの手法であるDBchainsでは,スカラーkからDBNS表現を導出するためにGreedy algorithm を用いている.Greedy algorithmは,スカラーkに対して,|k−2b3t|を最小にするようなb, tを求め,その ようなb, tに対して,|k−2b3t|→kと置いて,同様に|k−2b3t|を最小にするようなb, tを求める処理を,

kの値が0になるまで繰り返すというものである.

—————————————————————————

Algorithm 1. Greedy algorithm for DBchains

—————————————————————————

Inputk, a n-bit positive integer;bmax, tmax>0, the largest allowed binary and ternary exponents OutputThe sequence (si, bi, ti)i0 such thatk=∑m

i=1si2bi3ti, withb0≥ · · · ≥bm0 andt0≥ · · · ≥ tm0

1: s←0

2: whilek >0 do

3: definez= 2b3t, the best approximation ofkwith 0≤b≤bmaxand0≤t≤tmax

4: print (s, b, t) 5: bmax←b, tmax←t 6: ifk < z then 7: s← −s 8: k← |k−z|

—————————————————————————

ここでDBchainsの条件を満たすDBNS表現は,下式のように変形することができる.

k = 2b03t0+ 2b13t1 +· · ·+ 2bm−13tm−1 + 2bm3tm = 2bm3tm(2bm−1bm3tm−1tm(· · ·(2b0b13t0t1 + 1) + 1)· · ·+ 1)

上式から,DBchainsのスカラー倍算の計算量は,2倍算がb0回,3倍算がt0回,加算がm回であること が分かる.すなわち,2倍算,3倍算の回数は,それぞれDBchainsの初項の2のべき,3のべきとなる.

一方で,2倍算に比べ3倍算の計算コストは高く(表11参照)なるため,3倍算の回数は極力小さくするこ とが望ましい.しかしながら,Greedy algorithmでは,初項(2b03t0)をスカラーkに最も近い値になるとい う条件のみで設定するため,初項の3のべきは小さい値になるとは限らず,初項の算出方法に問題があると 考えられる.

ドキュメント内 JAIST Repository https://dspace.jaist.ac.jp/ (ページ 39-43)

関連したドキュメント