| 【発明の名称】 |
カオス・タイムシリーズの生成方法 |
| 【発明者】 |
【氏名】庄野 克房
【氏名】今野 肇
|
| 【要約】 |
【課題】
【解決手段】 |
【特許請求の範囲】
【請求項1】複数の初期値から出発したカオスの軌道を相互作用させることにより、特異点に収束しないようにしたことを特長とするカオス・タイムシリーズの生成方法。
|
【発明の詳細な説明】【0001】 【産業上の利用分野】産業を支える技術としてのカオスに第1位に必要とされるものは、質の高い擬似乱数の生成である。非線形関数がロジスティックマップxt+1=4xt(1−xt)、xt=xt+1のとき、タイムシリーズxt、(tは離散時間、t=0,1,2,…)、の同相変換量子化値Yt,n=[2/π・arcsin(xt)1/2・2n]、(nは量子化分解能、n=1が擬似乱数、[]は小数点以下を切り捨てる)、は質の高い擬似乱数の例である。ただし、倍精度計算を行った場合である。 【0002】産業において実用的であるためには、単精度で工業用汎用CPUにインストールして実現できなければならない。通信を含むエレクトロニクス産業において実用されている工業用汎用CPUは単精度に限られている。 【0003】 【従来の技術】カオスの内部状態xtは実数を意味している。本来、無限の整数列で表現されねばならぬが、ディジタルコンピュータ上で計算されるときには、できるだけ高い計算精度という意味で倍精度(浮動小数点または固定小数点)演算を行い、結果として線形となるように量子区分を設けて量子化を行って観測をしている。2進小数52ビットで内部状態xtを計算したとき、観測の量子化分解能nは26までである。 【0004】単精度の場合、特異点に容易に収束してしまうことが知られている。非線形関数がロジスティックマップの場合、特異点はxt=0.00…(原点)と0.7500…(不動点)である。同相変換量子化n=1のときYt,1=000…あるいは111…への収束となる。111…への収束より、000…への収束の方が起こりやすい。 【0005】 【発明が解決しようとする課題】非線形関数がロジスティックマップの場合、000…への収束を避けるために、xt>0.99999(単精度)となったとき、そのときのtの値を用いて補正を行う方法がある。この方法は擬似乱数生成のデータフローを妨げる。また、ハードウェアに大きな負担を要求する。 【0006】この補正方法の優れた点は、0の連なりと1の連なりの分布が確率分布のまま、補正が行える点にある。TSP(巡回セールスマン問題)やNAP−Zak(買い物の組み合わせ)問題においては、乱数の確率分布に関する性質は重要な要素となる。一方、通信においては擬似乱数はPN(擬似雑音)信号として使われる。このときには、確率分布に関する保証は強くは要求されない。情報が抜けてしまわないために、00…への収束が生じないことが重要になる。 【0007】単精度、浮動小数点演算においては、仮数部は23ビットである。組み合わせの総数は223=840万程度にすぎない。したがって、単精度で長い擬似乱数を生成させると、長い周期に入っている。その長さは約40万ぐらいである。実際に使用されるPN信号の長さからすると、周期に入っていることの心配は必要ではない。 【0008】 【課題を解決するための手段】単精度において質の高い擬似乱数を生成し、かつ工業用汎用CPUにインストールできるためには、(1)組み合わせの数を原理的に増すこと、(2)補正をデータフロー形に実行できるようにすること、である。 【0009】カオスは初期値敏感性をもつ。初期値を複数個用意し、複数本のカオスの軌道を相互作用させることにより、組み合わせの数を増やす。複数個の初期値は、原理的には、2個、x0(0)とx0(1)の場合を考察するとよい。 【0010】ディジタルコンピュータを用いるとき、初期値の与え方には注意が必要である。初期値x0は実数を意味するため、10進数の小数で与えることが常識的であるが、単精度の場合32ビットコードで与える方が、安定した初期値を再現性よく与えられる。 【0011】初期値x0(0)を1個写像する。x1(0)=4x0(0)(1−x0(0))が得られる。同様に初期値x0(1)を1回写像する。x1(1)=4x0(1)(1−x0(1))が得られる。差△x1=|x1(0)-x1(1)|を求める。差を求めるという相互作用をさせた場合である。 【0012】 【作用】x1(0)とx1(1)の大小を比較する。大きい方をとり、改めてx1(0)とする。次の世代の写像へはx1(0)と、改めてx1(1)=△x1としたx1(1)について行う。この計算を繰り返し実行する。 【0013】この写像の計算は固定小数点で行っても、浮動小数点で行ってもよい。xt(0)、xt(1)の両方、または片方を並べてPN信号としてよい。また、同相変換量子化値Yt,n=[2/π・arcsin(xt)1/2・2n]により整数化したものをディジタルコードとみなし、PN信号としてもよい。 【0014】xt(0)=xt(1)となったとき、△xt=0となり、0に収束してしまう。そのときには、xt(0)かxt(1)の一方を、他の値例えばxt(0)/2にかえる。必ずしも2で割る必要はない、2は1例である。ディジタルコードのままであれば、32ビットの1ビットあるいは数ビットを取り出して反転するだけでもよい。このような補正はデータフローのまま実施できる。 【0015】 【実施例】相互作用を2本の軌道の差の値にとるのは1つの例である。ゲートアレイやFPGAのようなCPUデバイスにインストールするときに、ゲート数を増加させずにすむ演算を取り入れるとよい。また、写像の結果である2つの値xt(0)かxt(1)のいずれを改めてxt(0)として残すかも、大きい方だけに制限されない。小さい方を残すのも選択の1つである。 【0016】汎用デバイスにインストールするにあたって、量子化値の演算Yt,n=[2/π・arcsin(xt)1/2・2n]は多数のゲートを消費するであろう。あらかじめ計算してテーブル化しておくとよい。ディジタルコンピュータにおいては、関数の数値演算処理よりはルックアップテーブルの検索といった論理操作を得意とするからである。 【0017】写像の演算をできるだけ高精度に維持して実行する方が望ましい。そのためには、浮動小数点演算よりは固定小数点演算の方が望ましい。 【0018】2つの初期値x0(0)とx0(1)から出発し、差△xを求める相互作用を見本例としてその作用を示してきたが、初期値を3つにして組み合わせの組み合わせとすると、32ビットの制限されたコードであってもより複雑な組み合わせを提供できることは言うまでもない。相互作用も、和、積、商といった算術演算だけでなく、ビットの反転、天地などの論理操作も利用することができる。 【0019】本案はあくまでもカオスを生成する非線形関数の写像を単精度で忠実に実行し、その上で複数のカオスの軌道を相互作用させ、限定された組み合わせを実質的に増大させ、しかも補正をストリームに実行できることを基本思想としている。 【0020】 【発明の効果】通信に用いられる暗号化用擬似乱数の生成は高速でなければならない。そのために専用チップ(ゲートアレイ、FPGA等)へのインストールが必要である。本案のアルゴリズムは、そのことを念頭において、必要最小限のアナログ計算を単精度で実行し、論理的処理操作を加味することにより、データフロー形に実現したものである。 【0021】本案は通信において有用なだけではない。例えば、PCのメモリの中を暗号コード化して保護をするようなとき、本案の擬似乱数は管理すべき文書の長さだけのPN信号を単精度32ビットまたは仮数23ビットの初期値で管理するシステムを提供する。暗号鍵としての初期値を2ヶ採用しても、64ビットあるいは46ビットの管理でよい。ゲートアレイ、FPGA等にインストールした擬似乱数発生部はPCカード化でき、PC本体とは切り離して持ち運び可能になる。
|
| 【出願人】 |
【識別番号】501136994 【氏名又は名称】有限会社カオス産業技術研究所 【識別番号】501120731 【氏名又は名称】株式会社ジー・エム・ツー
|
| 【出願日】 |
平成13年4月18日(2001.4.18) |
| 【代理人】 |
【識別番号】100102336 【弁理士】 【氏名又は名称】久保田 直樹
|
| 【公開番号】 |
特開2002−312161(P2002−312161A) |
| 【公開日】 |
平成14年10月25日(2002.10.25) |
| 【出願番号】 |
特願2001−119010(P2001−119010) |
|