Bosonic は、入力が区別できないボソン (著者の関心の場合は光子) である光子システムのシミュレーションのために開発されたライブラリです。特に、これらのシステムの多粒子伝達関数の高速計算に焦点を当て、システム パラメーターに関するコスト関数の勾配の計算をサポートします。これは元々、量子光ニューラル ネットワーク [1] の開発のために開発されたもので、シミュレーションと最適化のための特殊な機能が含まれています。
このライブラリの主な焦点は次の 2 つでした。
このパッケージの主な動機は、単一粒子のユニタリとボソン入力の数の関数としての複数粒子のユニタリ変換の迅速な計算でした。つまり、4 次元のユニタリー U があり、入力に 3 つの光子があることがわかっている場合、次の変換を知りたいとなります。
これは、関数bosonic.aa_phi
によってサポートされています。この名前は、[2] で Φ(U) 関数として使用するこの関数の形式を指定した Aaronson と Arkhipov にちなんで名付けられました。たとえば、ビームスプリッターを使用して有名なホン-オウ-マンデル効果を実証できます。
>> > import bosonic as b
>> > import numpy as np
>> > U = np . array ([[ 1 , 1 ], [ 1 , - 1 ]], dtype = complex ) / np . sqrt ( 2 )
>> > phiU = b . aa_phi ( U , 2 )
>> > print ( phiU )
[[ 0.5 + 0.j 0.70710678 + 0.j 0.5 + 0.j ]
[ 0.70710678 + 0.j 0. + 0.j - 0.70710678 + 0.j ]
[ 0.5 + 0.j - 0.70710678 + 0.j 0.5 + 0.j ]]
>> > print ( b . fock . basis ( 2 , 2 ))
[[ 2 , 0 ], [ 1 , 1 ], [ 0 , 2 ]]
>> > input = np . array ([[ 0 ], [ 1 ], [ 0 ]], dtype = complex )
>> > phiU = b . aa_phi ( U , 2 )
>> > print ( phiU . dot ( input ))
[[ 0.70710678 + 0.j ]
[ 0. + 0.j ]
[ - 0.70710678 + 0.j ]]
>> > print ( np . abs ( phiU . dot ( input )) ** 2 )
[[ 0.5 ]
[ 0. ]
[ 0.5 ]]
ここでは、U の 50/50 ビームスプリッターに対応するユニタリを構築します。phiU を出力した後の行に示すように、ここでの基底は [2, 0]、[1, 1]、および [0, 2] です。したがって、各入力での 1 つの光子入射に対応する状態は [0, 1, 0] です。最後の 2 行では、出力が一方の出力の 2 つの光子ともう一方の出力の 2 つの光子の等しい重ね合わせであり、光子が異なるポートから出る可能性がないことがわかります。
[1] で説明されているように、私たちは単一サイトの非線形性を持つ任意のユニタリ変換をタイル状に並べることを含む、量子光ニューラル ネットワーク用の提案されたアーキテクチャを開発しました。詳細については論文を参照してください。アーキテクチャの視覚的な概要は次のとおりです。
現時点では、このリポジトリのクローンを作成することが、システム上でbosonic
入手する唯一の方法です。これを行う前に、 bosonic
適切に構築するには、Python パッケージCython
インストールする必要があります。このようなものは Linux でも動作するはずです (必要に応じてpip
の代わりに好みの Python パッケージ マネージャーを使用します)。
$ pip install Cython
$ git clone [email protected]:steinbrecher/bosonic.git
$ cd bosonic
$ pip install .
Mac では、homebrew と libopenmp の gcc も必要になります。
$ brew install gcc
$ brew install libomp
$ pip install Cython
$ git clone [email protected]:steinbrecher/bosonic.git
$ cd bosonic
$ CC=gcc-8 pip install .
その後、次のコマンドを実行して、 bosonic
が正しくインストールされていることをテストできるようになります。
$ python setup.py test
[1] Steinbrecher, GR、Olson, JP、Englund, D.、Carolan, J. (2018)。量子光ニューラルネットワーク。 arXiv プレプリント arXiv:1808.10047。 https://arxiv.org/abs/1808.10047
[2] アーロンソン、スコット、アレックス・アルヒポフ。 「線形光学の計算の複雑さ」コンピューティング理論に関する第 43 回 ACM 年次シンポジウムの議事録。 ACM、2011 年。https://arxiv.org/pdf/1011.3245.pdf