高斯玻色采样(Gaussian Boson Sampling)

高斯玻色采样(Gaussian Boson Sampling)#

数学背景#

高斯玻色采样(GBS)可以作为玻色采样的一种变体,不同之处在于输入的量子态是高斯压缩态而不是离散的Fock态。 压缩态是高斯态的一种,高斯态指的是这个量子态对应的Wigner函数是高斯分布,比如相干态。 单模压缩态的Wigner函数对应的高斯分布在 \(X\)\(P\) 两个正交分量上会压缩或者拉伸,单模压缩态可以将压缩门作用到真空态上得到,也可以用下面的Fock态基矢展开[2],需要注意的是这里的Fock态光子数从0到无穷大取偶数,因此输出的量子态的空间是无限大且只包含偶数光子数的Fock态空间。

\[ \left|\mathrm{sq}_R\right\rangle=\frac{1}{\sqrt{\cosh r}} \sum_{m=0}^{\infty}(-\tanh r)^m \frac{\sqrt{(2 m)!}}{2^m m!}|2 m\rangle \]

GBS采样概率的理论计算和玻色采样类似,不同之处在于对粒子数分辨探测器和阈值探测器两种情况,分别需要用hafnian函数和torotonian函数来计算。

  1. 粒子数分辨探测器

在探测端口使用粒子数分辨探测器时对应数学上需要计算hafnian函数, 对于 \(2m\times 2m\) 对称矩阵 \(A\) 的hafnian定义如下[3],

\[ \operatorname{haf}(\boldsymbol{A})=\sum_{M \in \operatorname{PMP}(n)} \prod_{(i, j) \in M} A_{i, j} \]

这里PMP表示所有完美匹配排列的集合,当 \(n=4\) 时,\(PMP(4) = {(0,1)(2,3),(0,2)(1,3),(0,3)(1,2)}\),对应的矩阵 \(B\) 对应的hafnian如下

\[ haf(B) = B_{0,1}B_{2,3}+B_{0,2}B_{1,3} + B_{0,3}B_{1,2} \]

在图论中,hafnian计算了图 \(G\) 对应的邻接矩阵A描述的图的完美匹配数(这里图 \(G\) 是无权重,无环的无向图),比如邻接矩阵 \(A =\begin{pmatrix} 0&1&1&1\\ 1&0&1&1\\ 1&1&0&1\\ 1&1&1&0 \end{pmatrix}\),haf(A)=3,对应的完美匹配图如下。

当计算的图是二分图时,得到的hafnian计算结果就是permanent。

\[\begin{split} \textrm{haf}\left(\left[\begin{array}{cc} 0 & \mathbf{W}\\ \mathbf{W}^{T} & 0 \end{array}\right]\right)=\textrm{per}\left(\mathbf{W}\right) \end{split}\]

因此任何计算hafnian的算法也可以用来计算permanent,同样的计算hafnian也是 \(\#P\) 难问题。

对于粒子数探测器,输出的Fock态 \(S = (s_1, s_2,..,s_m)\) 时,对应的 \(s_i=0,1,2...\), 输出态的概率理论计算如下

\[ \operatorname{Pr}(S)=\frac{1}{\sqrt{\operatorname{det}(\boldsymbol{Q})}} \frac{\operatorname{Haf}\left(\boldsymbol{\mathcal { A }}_S\right)}{s_{1}!s_{2}!\cdots s_{m}!}, \]

这里 \(Q,A,X\) 的定义如下,

\[\begin{split} \begin{aligned} & \boldsymbol{Q}:=\boldsymbol{\Sigma}+\mathbb{I} / 2, \\ & \mathcal{A}:=\boldsymbol{X}\left(\mathbb{I}-\boldsymbol{Q}^{-1}\right), \\ & \boldsymbol{X}:=\left[\begin{array}{ll} 0 & \mathbb{I} \\ \mathbb{I} & 0 \end{array}\right] . \end{aligned} \end{split}\]

\(Q,A\) 由输出量子态的协方差矩阵 \(\Sigma\) 决定 ( \(\Sigma\) 描述的是 \(a,a^+\) 的协方差矩阵),子矩阵 \(A_s\) 由输出的Fock态决定,具体来说取矩阵 \(A\)\(i, i+m\) 行和列并且重复 \(s_i\) 次来构造 \(A_s\) 。 如果 \(s_i=0\),那么就不取对应的行和列,如果所有的 \(s_i=1\), 那么对应的子矩阵 \(A_s = A\)

考虑高斯态是纯态的时候, 矩阵\(A\)可以写成直和的形式,\(A = B \oplus B^*\), \(B\)\(m\times m\) 的对称矩阵。这种情况下输出Fock态的概率如下

\[ \operatorname{Pr}(S)=\frac{1}{\sqrt{\operatorname{det}(\boldsymbol{Q})}} \frac{\left|\operatorname{Haf}\left(\boldsymbol{A}_S\right)\right|^2}{s_{1}!s_{2}!\cdots s_{m}!}, \]

这里的子矩阵 \(B_s\) 通过取 \(i\) 行和 \(i\) 列并且重复 \(s_i\) 次来构造,同时这里hafnian函数计算的矩阵维度减半,可以实现概率计算的加速。

当所有模式输出的光子数 \(s_i = 0,1\) 时,对应的 \(A_s\) 是A的子矩阵,也对应到邻接矩阵A对应的图 \(G\) 的子图,利用这个性质可以解决很多子图相关的问题,比如稠密子图,最大团问题等。

  1. 阈值探测器

使用阈值探测器时对应的输出Fock态概率 \(S = (s_1, s_2,..,s_m),s_i\in \{0,1\}\),此时理论概率的计算需要用到Torontonian函数[4]

\[ p(S)=\frac{\operatorname{Tor}\left[\boldsymbol{O}_{(S)}\right]}{\sqrt{\operatorname{det}(\boldsymbol{\Sigma})}} \]
\[ \operatorname{Tor}\left[\boldsymbol{O}_{(S)}\right]=\operatorname{Haf}\left[\boldsymbol{X} \boldsymbol{O}_{(S)}\right]+\sum_{S^{\prime} \in \mathcal{C}_S} \frac{\operatorname{Haf}\left[\boldsymbol{X} \boldsymbol{O}_{\left(S^{\prime}\right)}\right]}{s_1^{\prime}!\cdots s_{\ell}^{\prime}!} \]

这里 \(O_s = I-(\Sigma^{-1})_s\),直观上来看对于阈值探测器对应的特定的Fock态输出只需要将粒子数分辨探测器对应的多个Fock态概率求和即可。

代码演示#

下面简单演示6个模式的高斯玻色采样任务

import numpy as np
import deepquantum as dq

squeezing = [1] * 6
unitary = np.eye(6)
gbs = dq.photonic.GaussianBosonSampling(nmode=6, squeezing=squeezing, unitary=unitary)
gbs()
gbs.draw()  # 画出采样线路
../../_images/6f240d682e8ec59128e2f475986f2359cbf623a69903c415ddb9239edd5521a7.svg

设置粒子数分辨探测器开始采样并输出Fock态结果

gbs.detector = "pnrd"
result = gbs.measure(shots=1024)
print(result)
Using chain-rule method to sample the final states!
{|020002>: 21, |000000>: 210, |020000>: 81, |000020>: 57, |000200>: 73, |002002>: 19, |200020>: 18, |220002>: 10, |202000>: 17, |002000>: 71, |002020>: 21, |000220>: 22, |000002>: 60, |200200>: 15, |200002>: 16, |220000>: 18, |200000>: 74, |222000>: 5, |000222>: 6, |000022>: 14, |200220>: 6, |000202>: 14, |022220>: 2, |222020>: 3, |022202>: 3, |222200>: 1, |002220>: 11, |220020>: 11, |020200>: 13, |022002>: 11, |020020>: 15, |002222>: 4, |202002>: 7, |022000>: 14, |202020>: 4, |002200>: 14, |200022>: 6, |020220>: 3, |022020>: 4, |200202>: 5, |002202>: 2, |220200>: 5, |220220>: 2, |002022>: 7, |202200>: 4, |222222>: 1, |020202>: 6, |022200>: 1, |202202>: 4, |022022>: 3, |220022>: 2, |222002>: 2, |020022>: 2, |020222>: 2, |220222>: 1, |202022>: 1}

设置阈值探测器开始采样并输出Fock态结果

gbs.detector = "threshold"
result = gbs.measure(shots=1024)
print(result)
Using chain-rule method to sample the final states!
{|220022>: 7, |112012>: 1, |022222>: 37, |022012>: 5, |022122>: 6, |220202>: 10, |011201>: 1, |102220>: 1, |002020>: 3, |220222>: 26, |222220>: 13, |212210>: 3, |222222>: 63, |202210>: 1, |001120>: 1, |221222>: 11, |212122>: 5, |202202>: 13, |022221>: 5, |202022>: 5, |002202>: 5, |012011>: 1, |020021>: 3, |022202>: 10, |210222>: 7, |002022>: 10, |222020>: 8, |222022>: 21, |212222>: 13, |002222>: 13, |202222>: 29, |212000>: 3, |020202>: 4, |202002>: 5, |200212>: 1, |102222>: 7, |211021>: 1, |122211>: 1, |222202>: 19, |221221>: 4, |020222>: 15, |222012>: 5, |212212>: 3, |210220>: 2, |221012>: 1, |222002>: 7, |212202>: 4, |202201>: 1, |222200>: 9, |020212>: 2, |110220>: 1, |020201>: 2, |122222>: 16, |220001>: 2, |201202>: 2, |221022>: 3, |211221>: 2, |222221>: 15, |221201>: 3, |100212>: 2, |002220>: 4, |220021>: 3, |020122>: 2, |222112>: 1, |212220>: 2, |022022>: 17, |001002>: 2, |202220>: 14, |120212>: 2, |112222>: 5, |222102>: 5, |120222>: 6, |200120>: 2, |020022>: 8, |020200>: 3, |202020>: 4, |102120>: 1, |120102>: 1, |202102>: 5, |202212>: 1, |000112>: 1, |021220>: 6, |212211>: 3, |020221>: 3, |122212>: 3, |122202>: 3, |200222>: 8, |001222>: 4, |222211>: 4, |102000>: 3, |122200>: 1, |221020>: 1, |220221>: 3, |222212>: 13, |122022>: 4, |022220>: 8, |002110>: 1, |221220>: 6, |010002>: 3, |112200>: 2, |012020>: 2, |002000>: 1, |012121>: 3, |201020>: 2, |100110>: 1, |210221>: 1, |200200>: 2, |000222>: 5, |021212>: 1, |202221>: 2, |000022>: 3, |012022>: 6, |022201>: 2, |010220>: 2, |222120>: 3, |220020>: 2, |012021>: 1, |122120>: 1, |212010>: 1, |010222>: 1, |210202>: 2, |220122>: 12, |122221>: 3, |212201>: 1, |201222>: 7, |221212>: 3, |020000>: 1, |122002>: 1, |220000>: 1, |120110>: 1, |212012>: 1, |022020>: 3, |122220>: 3, |200002>: 1, |202122>: 5, |012222>: 3, |212022>: 5, |211012>: 1, |211222>: 2, |020120>: 2, |022200>: 3, |021000>: 2, |221202>: 4, |222001>: 1, |110011>: 1, |220212>: 3, |002122>: 2, |210112>: 1, |112000>: 2, |212121>: 1, |010121>: 1, |112020>: 1, |021022>: 2, |200220>: 4, |202200>: 5, |202011>: 1, |111022>: 1, |021222>: 6, |221000>: 1, |122102>: 2, |210120>: 1, |220120>: 3, |222201>: 3, |200102>: 1, |002212>: 3, |220010>: 1, |022010>: 1, |101122>: 1, |022021>: 2, |220200>: 4, |021200>: 1, |200202>: 3, |211122>: 1, |000220>: 1, |201120>: 1, |121102>: 1, |222110>: 4, |000200>: 2, |112002>: 1, |200122>: 5, |100222>: 2, |110212>: 1, |012201>: 1, |200022>: 2, |112202>: 2, |111220>: 1, |222122>: 7, |200020>: 2, |222000>: 2, |001000>: 1, |220012>: 3, |121002>: 1, |200112>: 2, |220002>: 1, |120122>: 2, |001022>: 2, |112021>: 1, |000212>: 3, |202000>: 1, |210122>: 1, |012000>: 1, |202211>: 1, |110211>: 1, |222121>: 4, |022101>: 1, |210022>: 1, |120221>: 2, |000202>: 2, |012220>: 1, |121202>: 1, |011222>: 2, |222011>: 1, |220102>: 2, |120220>: 4, |021202>: 1, |102122>: 1, |200201>: 1, |201220>: 2, |201200>: 1, |001001>: 1, |112210>: 1, |002021>: 1, |120020>: 2, |002221>: 2, |100202>: 1, |001020>: 1, |020002>: 1, |102020>: 2, |221102>: 1, |222100>: 1, |220201>: 2, |012211>: 1, |110022>: 2, |220220>: 9, |021122>: 1, |201212>: 3, |120202>: 1, |212001>: 1, |102022>: 3, |202112>: 1, |201012>: 1, |210102>: 1, |001012>: 1, |011212>: 1, |022111>: 1, |102202>: 1, |012122>: 3, |021020>: 2, |022210>: 2, |221200>: 1, |020112>: 1, |020100>: 1, |002001>: 1, |202010>: 1, |121221>: 1, |022001>: 1, |211000>: 1, |020220>: 2, |010021>: 1, |000221>: 1, |100111>: 1, |102012>: 1, |212020>: 2, |022002>: 1, |200012>: 1, |122010>: 1, |022121>: 1, |202021>: 1, |200000>: 1, |020010>: 1, |022102>: 1, |001220>: 2, |011012>: 1, |212200>: 1, |202012>: 2, |022110>: 1, |211110>: 1, |101202>: 1, |022212>: 4, |221002>: 1, |111222>: 1, |022000>: 1, |021210>: 1, |020020>: 1, |101020>: 1, |121122>: 1, |011220>: 1, |200221>: 2, |111221>: 1, |021021>: 1, |012202>: 1, |002211>: 1, |120200>: 1, |210020>: 1, |212002>: 1, |010211>: 2, |212221>: 1, |202110>: 1, |000201>: 1, |021221>: 2, |122121>: 1, |100021>: 1, |222210>: 1, |002002>: 1, |000000>: 1, |010200>: 1, |201221>: 1, |012002>: 2, |001221>: 1, |110202>: 1, |100122>: 1, |222021>: 1}

附录#

[1] Lvovsky, Alexander I. “Squeezed light.” Photonics: Scientific Foundations, Technology and Applications 1 (2015): 121-163.

[2]Bromley, Thomas R., et al. “Applications of near-term photonic quantum computers: software and algorithms.” Quantum Science and Technology 5.3 (2020): 034010.

[3]Quesada, Nicolás, Juan Miguel Arrazola, and Nathan Killoran. “Gaussian boson sampling using threshold detectors.” Physical Review A 98.6 (2018): 062322.

[4]J. M. Arrazola and T. R. Bromley, Physical Review Letters 121, 030503 (2018)