Bosonic은 구별할 수 없는 보존(저자의 경우 광자)을 입력으로 사용하는 광자 시스템의 시뮬레이션을 위해 개발된 라이브러리입니다. 특히, 이러한 시스템에 대한 다중 입자 전달 함수의 신속한 계산에 중점을 두고 시스템 매개변수에 대한 비용 함수의 기울기 계산을 지원합니다. 이는 원래 양자 광학 신경망[1] 개발을 위해 개발되었으며 시뮬레이션 및 최적화를 위한 특수 기능을 포함하고 있습니다.
이 라이브러리의 주요 초점은 두 가지였습니다.
이 패키지의 핵심 동기는 단일 입자 단위 및 보존 입력 수의 함수로서 다중 입자 단위 변환의 신속한 계산이었습니다. 즉, 4차원 단일 U가 있고 입력에 3개의 광자가 있다는 것을 안다면, 우리는 U에 대한 변환을 알고 싶습니다.
이는 [2]에서 Φ(U) 함수로 사용하는 이 함수의 형식을 지정한 Aaronson과 Arkhipov의 이름을 딴 bosonic.aa_phi
함수에 의해 지원됩니다. 예를 들어, 빔 스플리터를 사용하여 유명한 Hong-Ou-Mandel 효과를 시연할 수 있습니다.
>> > 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]입니다. 따라서 각 입력에 입사되는 하나의 광자에 해당하는 상태는 [0, 1, 0]입니다. 마지막 줄인 두 줄에서 출력은 한 출력의 두 광자, 다른 출력의 두 광자에 대해 동일한 중첩이며 광자가 다른 포트를 통해 떠날 확률이 없음을 알 수 있습니다.
[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] Aaronson, Scott 및 Alex Arkhipov. "선형 광학의 계산 복잡성." 컴퓨팅 이론에 관한 제43차 ACM 연례 심포지엄 간행물. ACM, 2011. https://arxiv.org/pdf/1011.3245.pdf