(57)【要約】【課題】  量子コンピュータのハードウェアを考慮することなく、量子コンピュータのプログラミングを行うことを可能にする。【解決手段】  クラスライブラリ記憶部１４０に、量子コンピュータの量子系に対応するクラスライブラリ識別情報と量子処理記述情報と量子ゲート情報とが関連付けられたクラスライブラリを記憶させておく。そして、解析部１６１において、量子プログラムから、クラスライブラリ識別情報を指定するためのクラスライブラリ指定情報と量子処理記述情報とを抽出する。次に、検索部１６２において、解析部１６１が抽出したクラスライブラリ指定情報と量子処理記述情報とに対応する量子ゲート情報をクラスライブラリから抽出する。その後、量子回路生成部１６３において、検索部１６２が抽出した量子ゲート情報を用いて量子回路を生成し、当該量子回路を示す量子回路情報を出力する。【選択図】        図１
2006331249.tif 000002
【特許請求の範囲】
【請求項１】
量子コンピュータによる処理内容が記述されたソースコードを具備する量子プログラムから量子回路を生成する量子プログラム変換装置であって、
量子コンピュータの量子系に対応するクラスライブラリ識別情報と、量子コンピュータによる処理内容を記述した量子処理記述情報と、当該クラスライブラリ識別情報に対応する量子コンピュータにおいて当該量子処理記述情報が示す処理内容を実現するために適した量子ゲートを示す量子ゲート情報と、が関連付けられたクラスライブラリを記憶したクラスライブラリ記憶部と、
量子プログラムが入力され、当該量子プログラムから、クラスライブラリ識別情報を指定するためのクラスライブラリ指定情報と量子処理記述情報とを抽出する解析部と、
上記解析部が抽出した上記クラスライブラリ指定情報と上記量子処理記述情報とに対応する上記量子ゲート情報を、上記クラスライブラリから抽出する検索部と、
上記検索部が抽出した上記量子ゲート情報を用いて量子回路を生成し、当該量子回路を示す量子回路情報を出力する量子回路生成部と、
を有することを特徴とする量子プログラム変換装置。
【請求項２】
請求項１に記載の量子プログラム変換装置であって、
前記クラスライブラリ記憶部が、
複数の量子系にそれぞれ対応する複数の前記クラスライブラリを具備する、
ことを特徴とする量子プログラム変換装置。
【請求項３】
量子コンピュータによる処理内容が記述されたソースコードを具備する量子プログラムから量子回路を生成する量子プログラム変換装置であって、
量子コンピュータの量子系に対応するクラスライブラリ識別情報と、量子コンピュータによる処理内容を記述した量子処理記述情報と、当該クラスライブラリ識別情報に対応する量子コンピュータにおいて当該量子処理記述情報が示す処理内容を実現するために適した量子ゲートを示す量子ゲート情報と、が関連付けられたクラスライブラリを記憶したクラスライブラリ記憶部と、
量子コンピュータの量子系に対応するエラー訂正ライブラリ識別情報と、量子ゲート情報と、当該量子ゲート情報をエラー訂正可能な回路構成に変換したエラー訂正量子ゲート情報と、が関連付けられたエラー訂正ライブラリを記憶したエラー訂正ライブラリ記憶部と、
量子プログラムが入力され、当該量子プログラムから、クラスライブラリ識別情報を指定するためのクラスライブラリ指定情報と、エラー訂正ライブラリ識別情報を指定するためのエラー訂正ライブラリ指定情報と、量子処理記述情報とを抽出する解析部と、
上記解析部が抽出した上記クラスライブラリ指定情報と上記量子処理記述情報とに対応する上記量子ゲート情報を、上記クラスライブラリから抽出する第１検索部と、
上記解析部が抽出した上記エラー訂正ライブラリ指定情報と上記第１検索部が抽出した上記量子ゲート情報とに対応する上記エラー訂正量子ゲート情報を、上記エラー訂正ライブラリから抽出する第２検索部と、
上記第２検索部が抽出した上記エラー訂正量子ゲート情報を用いて量子回路を生成し、当該量子回路を示す量子回路情報を出力する量子回路生成部と、
を有することを特徴とする量子プログラム変換装置。
【請求項４】
請求項３に記載の量子プログラム変換装置であって、
前記エラー訂正ライブラリ記憶部が、
複数の量子系にそれぞれ対応する複数の前記エラー訂正ライブラリを具備する、
ことを特徴とする量子プログラム変換装置。
【請求項５】
量子コンピュータによる処理内容が記述されたソースコードを具備する量子プログラムから量子回路を生成する量子プログラム変換方法であって、
量子コンピュータの量子系に対応するクラスライブラリ識別情報と、量子コンピュータによる処理内容を記述した量子処理記述情報と、当該クラスライブラリ識別情報に対応する量子コンピュータにおいて当該量子処理記述情報が示す処理内容を実現するために適した量子ゲートを示す量子ゲート情報と、が関連付けられたクラスライブラリがクラスライブラリ記憶部に記憶された状態において、
量子プログラムが解析部に入力され、当該解析部において、当該量子プログラムから、クラスライブラリ識別情報を指定するためのクラスライブラリ指定情報と量子処理記述情報とを抽出するステップと、
検索部において、上記解析部が抽出した上記クラスライブラリ指定情報と上記量子処理記述情報とに対応する上記量子ゲート情報を上記クラスライブラリから抽出するステップと、
量子回路生成部において、上記検索部が抽出した上記量子ゲート情報を用いて量子回路を生成し、当該量子回路を示す量子回路情報を出力するステップと、
を有することを特徴とする量子プログラム変換方法。
【請求項６】
量子コンピュータによる処理内容が記述されたソースコードを具備する量子プログラムから量子回路を生成する量子プログラム変換方法であって、
量子コンピュータの量子系に対応するクラスライブラリ識別情報と、量子コンピュータによる処理内容を記述した量子処理記述情報と、当該クラスライブラリ識別情報に対応する量子コンピュータにおいて当該量子処理記述情報が示す処理内容を実現するために適した量子ゲートを示す量子ゲート情報と、が関連付けられたクラスライブラリがクラスライブラリ記憶部に記憶され、
量子コンピュータの量子系に対応するエラー訂正ライブラリ識別情報と、量子ゲート情報と、当該量子ゲート情報をエラー訂正可能な回路構成に変換したエラー訂正量子ゲート情報と、が関連付けられたエラー訂正ライブラリがエラー訂正ライブラリ記憶部に記憶された状態において、
量子プログラムが解析部に入力され、当該解析部において、当該量子プログラムから、クラスライブラリ識別情報を指定するためのクラスライブラリ指定情報と、エラー訂正ライブラリ識別情報を指定するためのエラー訂正ライブラリ指定情報と、量子処理記述情報とを抽出するステップと、
第１検索部において、上記解析部が抽出した上記クラスライブラリ指定情報と上記量子処理記述情報とに対応する上記量子ゲート情報を、上記クラスライブラリから抽出するステップと、
第２検索部において、上記解析部が抽出した上記エラー訂正ライブラリ指定情報と上記第１検索部が抽出した上記量子ゲート情報とに対応する上記エラー訂正量子ゲート情報を、上記エラー訂正ライブラリから抽出するステップと、
量子回路生成部において、上記第２検索部が抽出した上記エラー訂正量子ゲート情報を用いて量子回路を生成し、当該量子回路を示す量子回路情報を出力するステップと、
を有することを特徴とする量子プログラム変換方法。
【請求項７】
請求項１から４の何れかに記載の量子プログラム変換装置としてコンピュータを機能させるためのプログラム。
【請求項８】
請求項７に記載のプログラムを格納したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、量子コンピュータによる処理内容が記述されたソースコードを量子回路に変換する量子プログラム変換装置、その方法、そのプログラム及び記録媒体に関する。
【背景技術】
【０００２】
［量子コンピュータ］
因数分解や検索などの特定の問題に関して、現在のコンピュータよりもはるかに高速に問題を解くことができる「量子コンピュータ」と呼ばれるコンピュータが提案されている。量子コンピュータとは、普通のコンピュータで用いられる計算単位のビットの代わりに、「キュービット」を計算単位として用いるコンピュータのことである。キュービットを用いると、ビット列の重ねあわせが表現できる。量子コンピュータの高速性は、重ねあわせを利用した量子並列計算によって得られる。
【０００３】
量子力学の理論では、ｎ個のキュービットが作る量子状態を２ｎ次元のヒルベルト空間のベクトルで表現し、量子操作を２ｎ×２ｎのユニタリ行列で表現し、量子状態の実験的な測定を射影作用素によって表現する。量子コンピュータでは、入力データをキュービット列の量子状態で表現し、それを量子的に操作して、最後に観測を行うことによって、計算を行う。この過程を量子力学の理論の言葉で表現すると、初期状態を表すヒルベルト空間中のベクトルを、量子操作を表現するユニタリ行列で変換し、得られたベクトルに射影作用素を作用させ、それによって得られた値を量子コンピュータの出力とすることに相当する。
【０００４】
［ユニバーサルゲート］
一般に、任意に与えられたユニタリ行列を物理的に実現することは困難である。そこで、組み合わせれば任意のユニタリ行列を近似できる基本操作の組を用意し、その基本操作を組み合わせることで所望のユニタリ行列を実現する。組み合わせれば任意のユニタリ行列を近似できる基本操作の組をユニバーサルゲートと呼ぶ。なお、これらの基本操作は論理ゲート風の記号で表現されることが多く、量子ゲートとも呼ばれる。また、量子ゲートを論理回路のように並べて作ったものを量子回路と呼ぶ。
【０００５】
最も有名なユニバーサルゲートは、１キュービット回転操作とＣＮＯＴの組である（例えば、非特許文献１参照）。また、１キュービット回転操作と制御回転ゲートの組み合わせもユニバーサルゲートである。これらのユニバーサルゲートを使うと、任意のユニタリ行列を量子ゲートで（近似的にではなく）正確に表現できる。しかし、これらのユニバーサルゲートを用いて任意のユニタリ行列を表現するためには無限個の量子ゲートを使用しなければならない。
その一方で、有限個の量子ゲートの組で構成されるユニバーサルゲートも存在する。よく知られた例は、アダマールゲート、フェーズゲート、ＣＮＯＴ、π／８ゲートの組である。これは１キュービット回転操作とＣＮＯＴで構成されるユニバーサルゲートの有限部分集合である。このユニバーサルゲートでは、ユニタリ行列を正確に表現することはできないが近似することはできる。そのため、これら４つの量子ゲートを使って量子計算を実行することができる。また、アダマールゲート、フェーズゲート、ＣＮＯＴゲート、トフォリゲートの組も、有限個でユニバーサルになる例である（例えば、非特許文献２参照）。
【０００６】
［ユニバーサルゲートに要求される物理的制約］
上述のようなユニバーサルゲートを量子コンピュータに実装する場合、その量子系ごとに所定の物理的制約が存在する。また、そのような物理的制約を前提に最適な量子回路を構成する研究も進められている。
例えば、ほとんどの量子系においてユニバーサルゲートに要求される可能性が高い物理的制約として、近接キュービット間相互作用がある。量子コンピュータの操作ではエンタングル状態をコントロールしなければならないため、ＣＮＯＴのような２キュービット以上の量子ゲートが必須である。そして、１キュービット回転操作とＣＮＯＴのユニバーサルゲートモデルでは、遠くは離れた２キュービット間のＣＮＯＴ操作を認めている。しかし、イオントラップを除くほとんどの量子系では、遠く離れたキュービット問での相互作用は困難である。これに対し、近接キュービット間の相互作用しか利用できない量子系において、効率的な量子回路を構成する方法が特許文献１に開示されている。
【０００７】
また、交換操作は、スピン系の振る舞いを記述するハイゼンベルグ・ハミル卜ニアンから自然に導かれるため、スピン系で量子コンピュータを作る場合、モデルにこのような制約を置くことは自然である。さらに、交換操作だけで量子計算を実行することは、外部からのノイズの影響を低減するために効果があることが知られており、スピン系で作られる量子コンビュータでは有力な一つのモデルである。非特許文献３では、このような近接キュービット間での交換操作しか認めないという制約を課した場合において効率的な量子回路を構成する方法が開示されている。
【０００８】
このように、各量子系に対する物理的制約から、ユニタリ行列を表現するための最適なユニバーサルゲートは量子系に応じて異なる場合が多い。例えば、量子系によってはＣＮＯＴよりも他の操作の方が物理的な構成が簡単に実現できる場合もある。そして、量子回路は、現在のコンピュータでいうアセンブラプログラムのようなものであるため、同じユニタリ変換を実現する場合でも、使用するユニバーサルゲートが異なれば、それを近似する量子回路はまったく異なる。
［量子プログラムと量子コンパイラ］
このように、量子系に応じてさまざまユニバーサルゲートが想定できるため、量子プログラム（量子コンピュータによる処理内容を記述したコード）を設計する技術者が量子回路を直接設計することは、非現実的である。そして、量子アルゴリズムの設計のために、より人間が扱いやすい量子言語とそれを量子回路に変換する量子コンパイラが望まれているのは自然の流れである。
【０００９】
最も単純な量子言語は、既存のプログラムにユニタリ行列と観測の記述を加えたものである。そして、既存のプログラム部分は既存の古典コンピュータが実行し、ユニタリ行列と観測部分は、ユニタリ行列をユニバーサルゲートに分解して量子コンピュータが実行する。与えられたユニタリ行列を、１キュービット回転操作とＣＮＯＴに分解する方法は、例えば、非特許文献４，５に開示されている。また、非特許文献６には、型理論に基づく量子プログラミング言語が提案されている。
【非特許文献１】A. Barenco, C. H. Bennett, R. Cleve, D. P. DiVincenzo, N. Margolus, P. Shor, P. Sleator, J. A. Smolin, H. Weinfurter, Elementary Gates for Quantum Computation, Physical Review A 52, 3457(1995)
【非特許文献２】M. A. Nielsen and I. L. Chuang, Quantum Computation and Quantum Information, Section 4.5, Cambridge University Press.
【非特許文献３】河野泰人，木村欣司，関川浩，「Decoherence-free subspaceにおける量子ゲートについて」，信学技法，COMP2004-23, 2004年6月
【非特許文献４】R. R. Tucci, A Rudimentary Quantum Compiler (2nd edition), [online], [平成１７年５月２０日検索]， インターネット＜http://arxiv.org/abs/quant-ph/9902062＞
【非特許文献５】R. R. Tucci, Qubiter Algorithm Modification, Expressing Unstructured Unitary Matrices with Fewer ＣＮＯＴs), [online], [平成１７年５月２０日検索]， インターネット＜http://arxiv.org/abs/quant-ph/0411027＞
【非特許文献６】Peter Selinger, Towards a quantum programming language, Mathematical Structures in Computer Science 14(4): 527-586, 2004.
【特許文献１】特開２００４−０９４８８５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかし、従来は、量子コンピュータのハードウェアに関する豊富な知識がなければ、量子コンピュータのプログラミングを行うことが困難であった。
すなわち、前述のように、最適なユニバーサルゲートは量子コンピュータの量子系に依存する。ところが、量子プログラムの設計者は、プログラミングに詳しくても量子コンピュータに詳しいとは限らない。そのため、量子コンピュータ普及のためには、使用できる量子ゲートを意識せずに、プログラミングができる環境が求められていた。
本発明はこのような点に鑑みてなされたものであり、人間が扱いやすい量子言語を、量子コンピュータの量子系に応じた最適な量子回路に自動的に変換することにより、量子コンピュータのハードウェアを考慮することなく、量子コンピュータのプログラミングを行うことを可能にする技術的思想を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明では上記課題を解決するために、クラスライブラリ記憶部に、量子コンピュータの量子系に対応するクラスライブラリ識別情報と、量子コンピュータによる処理内容を記述した量子処理記述情報と、当該クラスライブラリ識別情報に対応する量子コンピュータにおいて当該量子処理記述情報が示す処理内容を実現するために適した量子ゲートを示す量子ゲート情報と、が関連付けられたクラスライブラリを記憶させておく。量子プログラムが入力されると、解析部において、量子プログラムから、クラスライブラリ識別情報を指定するためのクラスライブラリ指定情報と量子処理記述情報とを抽出する。次に、検索部において、解析部が抽出したクラスライブラリ指定情報と量子処理記述情報とに対応する量子ゲート情報をクラスライブラリから抽出する。その後、量子回路生成部において、検索部が抽出した量子ゲート情報を用いて量子回路を生成し、当該量子回路を示す量子回路情報を出力する。
【００１２】
ここで、量子プログラムを実行させる量子コンピュータに対応するクラスライブラリ指定情報を量子プログラムに埋め込んでおけば、その量子コンピュータに適した量子回路が自動的に生成される。
また、好ましくは、クラスライブラリ記憶部に、量子コンピュータの量子系に対応するクラスライブラリ識別情報と、量子コンピュータによる処理内容を記述した量子処理記述情報と、当該クラスライブラリ識別情報に対応する量子コンピュータにおいて当該量子処理記述情報が示す処理内容を実現するために適した量子ゲートを示す量子ゲート情報と、が関連付けられたクラスライブラリを記憶させておき、さらにエラー訂正ライブラリ記憶部に、量子コンピュータの量子系に対応するエラー訂正ライブラリ識別情報と、量子ゲート情報と、当該量子ゲート情報をエラー訂正可能な回路構成に変換したエラー訂正量子ゲート情報と、が関連付けられたエラー訂正ライブラリを記憶させておく。量子プログラムが入力されると、解析部において、当該量子プログラムから、クラスライブラリ識別情報を指定するためのクラスライブラリ指定情報と、エラー訂正ライブラリ識別情報を指定するためのエラー訂正ライブラリ指定情報と、量子処理記述情報とを抽出する。次に、第１検索部において、解析部が抽出したクラスライブラリ指定情報と量子処理記述情報とに対応する量子ゲート情報を、クラスライブラリから抽出する。また、第２検索部において、解析部が抽出したエラー訂正ライブラリ指定情報と第１検索部が抽出した量子ゲート情報とに対応するエラー訂正量子ゲート情報を、エラー訂正ライブラリから抽出する。そして、量子回路生成部において、第２検索部が抽出したエラー訂正量子ゲート情報を用いて量子回路を生成し、当該量子回路を示す量子回路情報を出力する。
【００１３】
ここで、量子プログラムを実行させる量子コンピュータに対応するクラスライブラリ指定情報とエラー訂正ライブラリ指定情報とを量子プログラムに埋め込んでおけば、その量子コンピュータに適したエラー訂正可能な量子回路が自動的に生成される。
【発明の効果】
【００１４】
本発明では、量子プログラムから量子コンピュータに適した量子回路が自動的に生成されるため、量子コンピュータのハードウェアを考慮することなく、量子コンピュータのプログラミングを行うことが可能となる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施の形態を図面を参照して説明する。
〔第１の実施の形態〕
＜装置構成＞
図１は、第１の実施の形態における量子プログラム変換装置１００の構成を例示したブロック図である。
この図に例示するように、本形態の量子プログラム変換装置１００は、制御部１１０、入力部１２０、出力部１３０、クラスライブラリ記憶部１４０、一時メモリ１５０、解析部１６１、検索部１６２、量子回路生成部１６３、古典コード生成部１６５及びリンカ部１６６を有し、入力された量子プログラムを量子回路情報に変換して出力する。なお、解析部１６１は、字句解析部１６１ａ、構文解析部１６１ｂ及び意味解析部１６１ｃを具備し、一時メモリ１５０は、領域１５１〜１５８を具備している。また、解析部１６１及び古典コード生成部１６５が用いるライブラリの記載は省略してある。
【００１６】
ここで、この例の量子プログラム変換装置１００は、制御部、演算部及びレジスタ等を有するＣＰＵ（Central Processing Unit）、ＲＡＭ（Random Access Memory）やＲＯＭ（Read Only Memory）等の主記憶装置、ハードディスク装置等の補助記憶装置、入出力インタフェース等を有する公知のノイマン型のコンピュータに、所定のプログラムが読み込まれることにより構成されるものである。具体的には、例えば、制御部１１０、解析部１６１、検索部１６２、量子回路生成部１６３、古典コード生成部１６５及びリンカ部１６６は、ＣＰＵに所定のプログラムが読み込まれ、ＣＰＵがこれを実行することにより構成されるものである。また、入力部１２０及び出力部１３０は、ＵＳＢ（Universal Serial Bus）等の入出力インタフェースである。さらに、クラスライブラリ記憶部１４０及び一時メモリ１５０は、例えば、レジスタ、キャッシュメモリ、ＲＡＭ、ハードディスク装置等から構成される。
【００１７】
＜データ構成＞
図２（ａ）は、図１に例示したクラスライブラリ記憶部１４０に記憶されるクラスライブラリ２００−１〜２００−ｎの様子を例示した概念図である。
図２（ａ）に例示するように、クラスライブラリ記憶部１４０には、複数のクラスライブラリ２００−１〜２００−ｎが格納されている。これらの各クラスライブラリ２００−１〜２００−ｎは、量子プログラムから生成する量子回路が実装される量子コンピュータの量子系（核磁気共鳴（NMR）系、結晶格子量子系、イオントラップ系、線形光学素子系等に代表される量子力学特有の現象を動作原理とする物理素子から成るシステム）にそれぞれ対応して設けられる。
【００１８】
図２（ｂ）は、図２（ａ）におけるクラスライブラリ２００−１のデータ構成を例示した概念図である。
図２（ｂ）に例示するように、クラスライブラリ２００−１は、量子コンピュータの量子系に対応するクラスライブラリ識別情報２１０−１と、量子コンピュータによる処理内容を記述した量子処理記述情報２２０−１と、当該クラスライブラリ識別情報２１０−１に対応する量子コンピュータにおいて当該量子処理記述情報２２０−１が示す処理内容を実現するために適した量子ゲートを示す量子ゲート情報２３０−１と、が関連付けられている。
【００１９】
この例のクラスライブラリ識別情報２１０−１は、クラスライブラリ２００−１を識別するための情報であり、この例では「cstd1」が設定されている。また、この例の量子処理記述情報２２０−１は、ＣＮＯＴ（y.CNOT(x);）、否定ＣＮＯＴ（コントロールビットが０のときにターゲットビットを反転させる）（y.CNOT(!x);）、アダマール変換（x.hadamard();）、Ｓ変換（x.S();）、π／８ゲート（x.T();）、制御回転（y.CRk(x);）、Toffoli（z.toffoli(x,y);）等を示す記述であり、解析部１６１が量子プログラムを解析することにより抽出されるコードに対応するものである。さらに、量子ゲート情報２３０−１は、各量子処理記述情報２２０−１に対応する量子ゲートを示す情報である。なお、量子処理記述情報２２０−１は、基本量子ゲート（例えば、ＣＮＯＴ等）のみに対応するものであってもよいし、基本量子ゲートを組み合わせた量子ゲート（例えば、量子フーリエ変換や加算等）に対応するものを含んでもよい。
【００２０】
図３及び図４は、量子処理記述情報２２０−１が示す量子ゲートを例示した図である。ここで図３（ａ）〜（ｄ）は、それぞれ、ＣＮＯＴ（y.CNOT(x);）、否定ＣＮＯＴ（y.CNOT(!x);）、アダマール変換（x.hadamard();）、Ｓ変換（x.S();）に対応する量子ゲートを示し、図４（ａ）〜（ｃ）は、π／８ゲート（x.T();）、制御回転（y.CRk(x);）、Toffoli（z.toffoli(x,y);）に対応する量子ゲートを示す。なお、各量子ゲートのデータ表現方法はどのようなものでもよいが、例えば、「ゲート名．コントロールビット．ターゲットビット．回転角度」の組（要素が存在しない位置にはnull値を入れる）によって表現する。この例の場合、ＣＮＯＴ（y.CNOT(x);）に対応する量子ゲート情報１−１は、「ＮＯＴ．ｘに対応する量子ビット位置．ｙに対応する量子ビット位置．null値」となる。また、複数の基本量子ゲートの組によって量子処理記述情報２２０−１が構成される場合（例えば、量子フーリエ変換や加算等）には、複数の「ゲート名．コントロールビット．ターゲットビット．回転角度」の組を時系列に沿って配置し、量子処理記述情報２２０−１を構成してもよい。
【００２１】
図５（ａ）は、図２（ａ）におけるクラスライブラリ２００−２のデータ構成を例示した概念図である。
このクラスライブラリ２００−２も、クラスライブラリ識別情報２１０−２と量子処理記述情報２２０−２と量子ゲート情報２３０−２とが関連付けられて構成されている。しかし、クラスライブラリ２００−１の場合とは別の量子系の量子コンピュータに対応するものであるため、量子ゲート情報２３０−２の内容の少なくとも一部はクラスライブラリ２００−１と相違する。
【００２２】
図５（ｂ）は、クラスライブラリ２００−２の否定ＣＮＯＴ（y.CNOT(!x);）に対応する量子ゲート情報２−２の内容を例示したものである。ここで、前述した図３（ｂ）と比較するとわかるとおり、クラスライブラリ２００−１とクラスライブラリ２００−２とでは、同じ量子処理記述情報２２０−１，２（否定ＣＮＯＴ（y.CNOT(!x);））に対し、異なる量子ゲート情報２３０−１，２が対応付けられている。これは、それぞれに対応する量子コンピュータにおいて物理的に最適な量子ゲート情報が設定されるためである。
なお、その他のクラスライブラリもクラスライブラリ識別情報と量子処理記述情報と量子ゲート情報とが関連付けられて構成されるが、対応する各量子コンピュータに応じ、量子ゲート情報の内容が異なる。
【００２３】
＜量子プログラム＞
図６は、第１の実施の形態における量子プログラム３００を例示した図である。
この図に例示するように、量子プログラム３００は、古典コンピュータでの処理内容を記載したソースコードである古典処理記述情報ソースコード３０１、前述のクラスライブラリ識別情報を指定するためのクラスライブラリ指定情報ソースコード３０２及び量子コンピュータでの処理内容を記載したソースコードである量子処理記述情報ソースコード３０３を有している。なお、量子処理記述情報ソースコード３０３には、量子コンピュータでの処理内容のみが記載され、具体的な量子回路に関する情報は記載されていない。
【００２４】
＜処理＞
次に、第１の実施の形態における量子プログラム変換処理について説明する。
図７は、第１の実施の形態における量子プログラム変換処理を説明するためのフローチャートである。以下、この図に沿って、本形態の量子プログラム変換処理を説明する。
まず、入力部１２０において、量子プログラムが入力され、入力された量子プログラムは、一旦、一時メモリ１５０の領域１５１に格納される（ステップＳ１）。次に、解析部１６１において、一時メモリ１５０の領域１５１から量子プログラムを読み込み、当該量子プログラムから、クラスライブラリ識別情報を指定するためのクラスライブラリ指定情報と量子処理記述情報と古典処理記述情報とを抽出する（ステップＳ２）。具体的には、例えばまず、字句解析部１６１ａにおいて、一時メモリ１５０の領域１５１から量子プログラムを読み込み、その字句解析を行い、その字句解析結果を領域１５２に格納する。次に、構文解析部１６１ｂにおいて、一時メモリ１５０の領域１５２から字句解析結果を読み込み、その構文解析を行い、その構文解析結果を領域１５３に格納する。最後に、意味解析部１６１ｃにおいて、一時メモリ１５０の領域１５３から構文解析結果を読み込み、その意味解析を行い、その意味解析結果である「クラスライブラリ指定情報」「量子処理記述情報」「古典処理記述情報」を領域１５４に格納する。なお、「クラスライブラリ指定情報」「量子処理記述情報」及び「古典処理記述情報」は、前述の「クラスライブラリ指定情報ソースコード」「量子処理記述情報ソースコード」及び「古典処理記述情報ソースコード」（図６参照）からそれぞれ抽出されたものである。また、ここで抽出される「量子処理記述情報」は、クラスライブラリ２００−１〜ｎの量子処理記述情報の何れかに対応するものである。さらに、量子処理記述情報の抽出には、例えば、「R. R. Tucci, A Rudimentary Quantum Compiler (2nd edition), [online], [平成１７年５月２０日検索]， インターネット＜http://arxiv.org/abs/quant-ph/9902062＞」や「R. R. Tucci, Qubiter Algorithm Modification, Expressing Unstructured Unitary Matrices with Fewer ＣＮＯＴs), [online], [平成１７年５月２０日検索]， インターネット＜http://arxiv.org/abs/quant-ph/0411027＞」に開示された方法を用いる。
【００２５】
次に、検索部１６２において、一時メモリ１５０の領域１５４から、解析部１６１が抽出したクラスライブラリ指定情報と量子処理記述情報とを読み込み、これらに対応する量子ゲート情報を、クラスライブラリ記憶部１４０に記憶されたクラスライブラリから抽出する（ステップＳ３）。
この例の場合、検索部１６２は、まず、読み込んだクラスライブラリ指定情報が指定するクラスライブラリ識別情報に関連付けられているクラスライブラリをクラスライブラリ記憶部１４０から抽出する。例えば、図６に例示した量子プログラム３００の場合、検索部１６２は、クラスライブラリ指定情報ソースコード３０２から抽出されたクラスライブラリ指定情報「cstd1lib」が指定するクラスライブラリ識別情報「cstd1」２１０−１に関連付けられているクラスライブラリ２００−１（図２（ｂ））をクラスライブラリ記憶部１４０から抽出する。次に、検索部１６２は、抽出したクラスライブラリにおいて、読み込んだ量子処理記述情報と関連付けられている量子ゲート情報を抽出する。図６に例示した量子プログラム３００の場合、検索部１６２は、抽出したクラスライブラリ２００−１（図２（ｂ））において、読み込んだ量子処理記述情報と関連付けられている量子ゲート情報を抽出する。その後、検索部１６２は、抽出した量子ゲート情報を一時メモリ１５０の領域１５５に格納する。
【００２６】
次に、量子回路生成部１６３において、一時メモリ１５０の領域１５５から検索部１６２が抽出した量子ゲート情報を読み込み、必要であれば領域１５４から量子記述情報の少なくとも一部（例えば、量子ゲートが作用するキュービット位置に関する情報等）を読み込み、それらを用いて量子回路を生成し、当該量子回路を示す量子回路情報を出力する（ステップＳ４）。なお、ここでの量子回路の生成は、例えば、各量子ゲート情報を時系列に従って配置して行われる。この例の場合、出力された量子回路情報は一時メモリ１５０の領域１５６に格納される。図８は、以上のような処理によって、図６に例示した量子プログラム３００の量子処理記述情報ソースコード３０３から生成された量子回路３５０の例である。
【００２７】
次に、古典コード生成部１６５において、一時メモリ１５０の領域１５４から古典処理記述情報を読み込み、これらから公知の方法によって古典オブジェクトコード（アセンブラ、機械言語等）を生成し、領域１５７に格納する（ステップＳ５）。
次に、リンカ部１６６において、一時メモリ１５０の領域１５６から量子回路情報を、領域１５７から古典オブジェクトコードを、それぞれ読み込む。そして、リンカ部１６６は、量子回路情報及び古典オブジェクトコードの動的リンクを形成し、このリンク情報を領域１５８に格納する（ステップＳ６）。
【００２８】
最後に、出力部１３０において、一時メモリ１５０の領域１５５，１５７，１５８から、量子回路情報、古典オブジェクトコード及びリンク情報が読み込まれ、これらを出力する（ステップＳ７）。このように出力された量子回路情報、古典オブジェクトコード及びリンク情報は、量子コンピュータ（あるいは量子シミュレータ）及び古典コンピュータに入力され、それらにおいて各処理が実行される。
＜本形態の特徴＞
本形態では、量子コンピュータの各量子系に対して最適なクラスライブラリを設定しておき、量子プログラムを実装する量子コンピュータに応じて最適なクラスライブラリを用いて、量子プログラムから量子回路への変換を行うこととした。これにより、プログラマが量子コンピュータのハードウェアの違いを意識せずに量子プログラムを記述し、実行させることができる。例えば、本形態の量子プログラム変換装置１００では、
main{
qubit x[5],y[6];
y.qadd(x);
}
という入力ｘとｙからｘ＋ｙを計算し、ｙに入力する量子プログラムに対し、量子系の違いに応じた以下のような量子回路を自動的に生成できる。例えば、量子プログラム変換装置１００は、ＣＮＯＴゲートよりも制御回転ゲートを用いることが望ましい量子系に対しては、ＣＮＯＴゲートの代わりに制御回転ゲートを用いたクラスライブラリを用い、量子回路を生成する。その結果、図９（ａ）に例示するようなキュービット回転ゲートと制御回転ゲートからなるユニバーサルゲートを持つ量子回路が生成される。なお、ＱＦＴ（量子フーリエ変換）部分の量子回路は図１０に示すとおりである。一方、量子プログラム変換装置１００は、ＣＮＯＴゲートを用いることが望ましい量子系に対しては、ＣＮＯＴゲートを用いたクラスライブラリを用い、量子回路を生成する。その結果、図９（ａ）に例示するような１キュービット回転ゲートとＣＮＯＴゲートからなるユニバーサルゲートを持つ量子回路が生成される。しかし、いずれの場合も、プログラマから見た量子プログラムは同一である。
【００２９】
その他、実装する量子コンピュータの量子系が変更されたとしても、それまでの量子プログラムを継続して利用できるというメリットもある。さらに、量子コンピュータの端末装置に量子シミュレータをインストールし、量子プログラムのデバッグと量子コンピュータの実行を同じ端末装置で実行することもできる。量子コンピュータの計算環境維持が困難な状況下において、この方法は、量子プログラムの開発に大きな恩恵をもたらすことになる。
また、本形態で説明してきたように、この技術を利用することにより、量子プログラムに古典コンピュータの動作命令と、量子コンピュータの動作命令を混在して記述することができる。これにより、プログラマから見て、量子コンピュータと古典コンピュータの区別をすることなく、同じ感覚でプログラミングをすることが可能となる。
【００３０】
＜第２の実施の形態＞
本形態は、第１の実施の形態の変形例であり、量子プログラムをエラー訂正可能な量子回路に変形する点が第１の実施の形態と相違する。以下では、第１の実施の形態との相違点を中心に説明し、第１の実施の形態と共通する事項については説明を省略する。
＜装置構成＞
図１１は、第２の実施の形態における量子プログラム変換装置４００の構成を例示したブロック図である。なお、この図において第１の実施の形態と共通する部分については図１と同じ符号を付した。
【００３１】
この図に例示するように、本形態の量子プログラム変換装置４００は、制御部１１０、入力部１２０、出力部１３０、クラスライブラリ記憶部１４０、エラー訂正ライブラリ記憶部４４０、一時メモリ１５０、解析部１６１、検索部１６２，４６１、量子回路生成部１６３、古典コード生成部１６５、リンカ部１６６を有し、入力された量子プログラムを量子回路情報に変換して出力する。なお、解析部１６１は、字句解析部１６１ａ、構文解析部１６１ｂ及び意味解析部１６１ｃを具備し、一時メモリ１５０は、領域１５１〜１５８，４５１，４５４を具備している。また、解析部１６１及び古典コード生成部１６５が用いるライブラリの記載は省略してある。
【００３２】
＜データ構成＞
クラスライブラリ記憶部１４０に格納されるデータの構成は第１の実施の形態と同じである。以下では、エラー訂正ライブラリ記憶部４４０に格納されるデータの構成について説明する。
図１２は、図１１に例示したエラー訂正ライブラリ記憶部４４０に記憶されるエラー訂正ライブラリ５００−１〜５００−ｍの様子を例示した概念図である。
図１２に例示するように、エラー訂正ライブラリ記憶部４４０には、複数のエラー訂正ライブラリ５００−１〜５００−ｍが格納されている。これらのエラー訂正ライブラリ５００−１〜５００−ｍは、量子プログラムから生成する量子回路が実装される量子コンピュータの量子系にそれぞれ対応して設けられる。
【００３３】
図１３（ａ）（ｂ）は、図１２におけるエラー訂正ライブラリ５００−１，２のデータ構成をそれぞれ例示した概念図である。
これらの図に例示するように、エラー訂正ライブラリ５００−１，２は、それぞれ量子コンピュータの量子系に対応するエラー訂正ライブラリ識別情報（「7qubitcode1」「7qubitcode2」）５１０−１，２と、量子ゲート情報５２０−１，２と、当該量子ゲート情報５２０−１，２をエラー訂正可能な回路構成に変換したエラー訂正量子ゲート情報５３０−１，２と、が関連付けられたテーブルである。その他のエラー訂正ライブラリも同様な構成となっている。しかし、コンピュータの量子系の違いに応じ、エラー訂正量子ゲート情報が異なる場合もあるため、各エラー訂正ライブラリのデータ内容自体はエラー訂正ライブラリごとに相違する。なお、エラー訂正ライブラリにおける量子ゲート情報は、クラスライブラリにおける量子ゲート情報と同じであってもよいし、クラスライブラリにおける量子ゲート情報が示す量子ゲートをさらに分解した量子ゲートや、クラスライブラリにおける量子ゲート情報が示す量子ゲートを統合した量子ゲートの情報であってもよい。また、エラー訂正量子ゲートとしては、例えば、７qubitエラー訂正ゲートを例示できる。なお、７qubitエラー訂正やそれへの変換手法については、例えば、「Michael A.Nielsen, Isaac L.Chuang共著，木村達也訳，”量子コンピュータと量子通信”，オーム社」に詳しく説明されている。
【００３４】
＜量子プログラム＞
図１４は、第２の実施の形態における量子プログラム６００を例示した図である。
この図に例示するように、量子プログラム６００は、古典コンピュータでの処理内容を記載したソースコードである古典処理記述情報ソースコード６０１、前述のクラスライブラリ識別情報を指定するためのクラスライブラリ指定情報ソースコード６０２、前述のエラー訂正ライブラリ識別情報を指定するためのエラー訂正ライブラリ識別情報ソースコード６０３、及び量子コンピュータでの処理内容を記載したソースコードである量子処理記述情報ソースコード６０４を有している。なお、量子処理記述情報ソースコード６０４には、量子コンピュータでの処理内容のみが記載され、具体的な量子回路に関する情報は記載されていない。
【００３５】
＜処理＞
次に、第２の実施の形態における量子プログラム変換処理について説明する。
図１５は、第２の実施の形態における量子プログラム変換処理を説明するためのフローチャートである。以下、この図に沿って、本形態の量子プログラム変換処理を説明する。
まず、入力部１２０において、量子プログラムが入力され、入力された量子プログラムは、一旦、一時メモリ１５０の領域１５１に格納される（ステップＳ１１）。次に、第１の実施の形態と同様に、解析部１６１において、一時メモリ１５０の領域１５１から量子プログラムを読み込み、当該量子プログラムから、クラスライブラリ識別情報を指定するためのクラスライブラリ指定情報とエラー訂正ライブラリ指定情報と量子処理記述情報と古典処理記述情報とを抽出し、一時メモリ１５０の領域４５４に格納する（ステップＳ１２）。なお、「エラー訂正ライブラリ指定情報」は、前述の「エラー訂正ライブラリ識別情報ソースコード」（図１４参照）から抽出されたものである。
【００３６】
次に、第１の実施の形態と同様に、（第１）検索部１６２において、一時メモリ１５０の領域４５４から、解析部１６１が抽出したクラスライブラリ指定情報と量子処理記述情報とを読み込み、これらに対応する量子ゲート情報を、クラスライブラリ記憶部１４０に記憶されたクラスライブラリから抽出し、領域１５５に格納する（ステップＳ１３）。
次に、（第２）検索部４６１において、一時メモリ１５０の領域４５４から解析部１６１が抽出したエラー訂正ライブラリ指定情報（例えば「7qubitcode1lib」）を読み込み、領域１５５から検索部１６２が抽出した量子ゲート情報を読み込む。そして、検索部４６１は、これらに対応するエラー訂正量子ゲート情報を、エラー訂正ライブラリ記憶部４４０に記憶されたエラー訂正ライブラリ（上記の例では、エラー訂正ライブラリ識別情報（7qubitcode1）５１０−１に対応するエラー訂正ライブラリ５００−１を用いる。）から抽出する（ステップＳ１４）。
【００３７】
次に、量子回路生成部１６３において、一時メモリ１５０の領域１５５から検索部４６１が抽出したエラー訂正量子ゲート情報を読み込み、必要であれば領域４５４から量子記述情報の少なくとも一部（例えば、量子ゲートが作用するキュービット位置に関する情報等）を読み込み、これら用いて量子回路を生成し、当該量子回路を示す量子回路情報を出力する（ステップＳ１５）。なお、ここでの量子回路の生成は、例えば、各エラー訂正量子ゲート情報を時系列に従って配置して行われる。また、この例の場合、出力された量子回路情報は一時メモリ１５０の領域１５６に格納される。
【００３８】
図１６は、以上のような処理によって、図１４に例示した量子プログラム６００の量子処理記述情報ソースコード６０４から生成された量子回路７００の例である。また、図１７（ａ）は、図１６の７qubitエラー訂正Ｈ量子ゲート回路７１０（アダマール変換ゲートの７qubitエラー訂正ゲート）を例示した図であり、図１７（ｂ）は、図１６の７qubitエラー訂正コントロールＳ量子ゲート回路７２０（コントロールＳゲートの７qubitエラー訂正ゲート）を例示した図である。また、図１８は、図１７（ｂ）における7qubitシンドローム検出・リカバリー量子回路の構成を例示した図である。
【００３９】
次に、古典コード生成部１６５において、一時メモリ１５０の領域４５４から古典処理記述情報を読み込み、これらから公知の方法によって古典オブジェクトコードを生成し、領域１５７に格納する（ステップＳ１６）。
次に、リンカ部１６６において、一時メモリ１５０の領域１５６から量子回路情報を、領域１５７から古典オブジェクトコードを、それぞれ読み込む。そして、リンカ部１６６は、量子回路情報及び古典オブジェクトコードの動的リンクを形成し、このリンク情報を領域１５８に格納する（ステップＳ１７）。
【００４０】
最後に、出力部１３０において、一時メモリ１５０の領域１５５，１５７，１５８から、量子回路情報、古典オブジェクトコード及びリンク情報が読み込まれ、これらを出力する（ステップＳ１８）。
＜本形態の特徴＞
本形態では、第１の実施の形態に加え、量子プログラムの量子系ごとにエラー訂正ライブラリを設け、量子系に応じてエラー訂正ライブラリを使い分けつつ、量子ゲート情報からエラー訂正量子ゲートへの変換を行い、これらのエラー訂正量子ゲートから量子回路を構成することとした。これにより、プログラマが量子コンピュータのハードウェアの違いを意識せずに量子プログラムを記述し、エラー訂正可能な量子回路によって各処理を実行させることができる。
【００４１】
なお、本発明は上述の各実施の形態に限定されるものではない。例えば、量子コンピュータの処理内容のみを記述した量子プログラムに対して本発明を適用することとしてもよく、また、一部に量子回路についての記述を含む量子プログラムに対して本発明を適用することとしてもよい。また、上述の各種の処理は、記載に従って時系列に実行されるのみならず、処理を実行する装置の処理能力あるいは必要に応じて並列的にあるいは個別に実行されてもよい。その他、本発明の趣旨を逸脱しない範囲で適宜変更が可能であることはいうまでもない。
【００４２】
また、上述の各構成をコンピュータによって実現する場合、各装置が有すべき機能の処理内容はプログラムによって記述される。そして、このプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。
この処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、例えば、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリ等どのようなものでもよいが、具体的には、例えば、磁気記録装置として、ハードディスク装置、フレキシブルディスク、磁気テープ等を、光ディスクとして、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ（Random Access Memory）、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）等を、光磁気記録媒体として、ＭＯ（Magneto-Optical disc）等を、半導体メモリとしてＥＥＰ−ＲＯＭ（Electronically Erasable and Programmable-Read Only Memory）等を用いることができる。
【００４３】
また、このプログラムの流通は、例えば、そのプログラムを記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体を販売、譲渡、貸与等することによって行う。さらに、このプログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することにより、このプログラムを流通させる構成としてもよい。
このようなプログラムを実行するコンピュータは、例えば、まず、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、一旦、自己の記憶装置に格納する。そして、処理の実行時、このコンピュータは、自己の記録媒体に格納されたプログラムを読み取り、読み取ったプログラムに従った処理を実行する。また、このプログラムの別の実行形態として、コンピュータが可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することとしてもよく、さらに、このコンピュータにサーバコンピュータからプログラムが転送されるたびに、逐次、受け取ったプログラムに従った処理を実行することとしてもよい。また、サーバコンピュータから、このコンピュータへのプログラムの転送は行わず、その実行指示と結果取得のみによって処理機能を実現する、いわゆるＡＳＰ（Application Service Provider）型のサービスによって、上述の処理を実行する構成としてもよい。なお、本形態におけるプログラムには、電子計算機による処理の用に供する情報であってプログラムに準ずるもの（コンピュータに対する直接の指令ではないがコンピュータの処理を規定する性質を有するデータ等）を含むものとする。
【００４４】
また、この形態では、コンピュータ上で所定のプログラムを実行させることにより、本装置を構成することとしたが、これらの処理内容の少なくとも一部をハードウェア的に実現することとしてもよい。
【産業上の利用可能性】
【００４５】
本発明の利用分野としては、例えば、量子コンピュータや量子シミュレータにおけるコンパイラやインタプリタを例示できる。
【図面の簡単な説明】
【００４６】
【図１】図１は、第１の実施の形態における量子プログラム変換装置の構成を例示したブロック図である。
【図２】図２（ａ）は、図１に例示したクラスライブラリ記憶部に記憶されるクラスライブラリの様子を例示した概念図である。図２（ｂ）は、図２（ａ）におけるクラスライブラリのデータ構成を例示した概念図である。
【図３】図３は、量子処理記述情報が示す量子ゲートを例示した図である。
【図４】図４は、量子処理記述情報が示す量子ゲートを例示した図である。
【図５】図５（ａ）は、図２（ａ）におけるクラスライブラリのデータ構成を例示した概念図である。図５（ｂ）は、クラスライブラリの否定ＣＮＯＴ（y.CNOT(!x);）に対応する量子ゲート情報の内容を例示したものである。
【図６】図６は、第１の実施の形態における量子プログラムを例示した図である。
【図７】図７は、第１の実施の形態における量子プログラム変換処理を説明するためのフローチャートである。
【図８】図８は、図６に例示した量子プログラムの量子処理記述情報ソースコードから生成された量子回路の例である。
【図９】図９（ａ）（ｂ）は、本形態において生成される量子回路を例示した図である。
【図１０】図１０は、ＱＦＴ（量子フーリエ変換）部分の量子回路を例示した図である。
【図１１】図１１は、第２の実施の形態における量子プログラム変換装置の構成を例示したブロック図である。
【図１２】図１２は、図１１に例示したエラー訂正ライブラリ記憶部に記憶されるエラー訂正ライブラリの様子を例示した概念図である。
【図１３】図１３（ａ）（ｂ）は、図１２におけるエラー訂正ライブラリのデータ構成をそれぞれ例示した概念図である。
【図１４】図１４は、第２の実施の形態における量子プログラムを例示した図である。
【図１５】図１５は、第２の実施の形態における量子プログラム変換処理を説明するためのフローチャートである。
【図１６】図１６は、図１４に例示した量子プログラムの量子処理記述情報ソースコードから生成された量子回路の例である。
【図１７】図１７（ａ）は、図１６の７qubitエラー訂正Ｈ量子ゲート回路を例示した図であり、図１７（ｂ）は、図１６の７qubitエラー訂正コントロールＳ量子ゲート回路を例示した図である。
【図１８】図１８は、図１７（ｂ）における７qubitシンドローム検出・リカバリー量子回路の構成を例示した図である。
【符号の説明】
【００４７】
１００，４００  量子プログラム変換装置
１４０  クラスライブラリ記憶部
４４０  エラー訂正ライブラリ記憶部
【図１】
2006331249.tif 000003
【図２】
2006331249.tif 000004
【図３】
2006331249.tif 000005
【図４】
2006331249.tif 000006
【図５】
2006331249.tif 000007
【図６】
2006331249.tif 000008
【図７】
2006331249.tif 000009
【図８】
2006331249.tif 000010
【図９】
2006331249.tif 000011
【図１０】
2006331249.tif 000012
【図１１】
2006331249.tif 000013
【図１２】
2006331249.tif 000014
【図１３】
2006331249.tif 000015
【図１４】
2006331249.tif 000016
【図１５】
2006331249.tif 000017
【図１６】
2006331249.tif 000018
【図１７】
2006331249.tif 000019
【図１８】
2006331249.tif 000020