Bosonic 是一個為模擬光子系統而開發的函式庫,其輸入是無法區分的玻色子(在作者感興趣的情況下是光子)。特別是,它專注於這些系統的多粒子傳遞函數的快速計算,並支援成本函數相對於系統參數的梯度的計算。它最初是為了開發我們的量子光學神經網路 [1] 而開發的,並包含用於模擬和優化的專門功能。
該庫的重點有兩個:
這個軟體包的核心動機是快速計算多粒子酉變換作為單粒子酉變換和玻色子輸入數量的函數。也就是說,如果我們有一個四維酉 U,我們知道輸入處有 3 個光子,我們想知道
這由函數bosonic.aa_phi
提供支持,該函數以 Aaronson 和 Arkhipov 的名字命名,他們指定了我們在 [2] 中用作 Φ(U) 函數的該函數的形式。例如,我們可以用分束器來示範著名的紅歐曼德爾效應:
>> > 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 分束器的么正。 。因此,每個輸入處對應一個光子入射的狀態為 [0, 1, 0]。在最後一行(兩行)中,我們看到輸出是一個輸出處的兩個光子和另一個輸出處的兩個光子的相等疊加,光子不存在從不同連接埠離開的可能性。
如 [1] 所述,我們開發了一種量子光學神經網路的建議架構,其中涉及使用單點非線性平舖任意酉變換。有關更多詳細信息,請參閱論文,但以下是該架構的直觀摘要:
克隆此儲存庫是目前在系統上取得bosonic
的唯一方法。在此之前,您需要安裝 python 套件Cython
,才能正確建置bosonic
。像這樣的東西應該在 Linux 上工作(如果需要,請使用您喜歡的 python 套件管理器而不是pip
):
$ pip install Cython
$ git clone [email protected]:steinbrecher/bosonic.git
$ cd bosonic
$ pip install .
在 Mac 上,您還需要 homebrew 中的 gcc 和 libopenmp:
$ 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、Eglund, D. 與 Carolan, J. (2018)。量子光學神經網路。 arXiv 預印本 arXiv:1808.10047。 https://arxiv.org/abs/1808.10047
[2] 阿倫森、史考特和亞歷克斯·阿爾希波夫。 “線性光學的計算複雜度。”第四十三屆 ACM 計算理論年度研討會論文集。 ACM,2011。