Bosonic هي مكتبة تم تطويرها لمحاكاة الأنظمة الضوئية التي تكون مدخلاتها عبارة عن بوزونات لا يمكن تمييزها (الفوتونات في حالة اهتمام المؤلفين). على وجه الخصوص، فإنه يركز على الحساب السريع لوظائف نقل الجسيمات المتعددة لهذه الأنظمة ويدعم حساب تدرج دالة التكلفة فيما يتعلق بمعلمات النظام. تم تطويره في الأصل لتطوير شبكاتنا العصبية الضوئية الكمومية [1] ويحتوي على وظائف متخصصة لمحاكاتها وتحسينها.
كانت التركيزات الرئيسية لهذه المكتبة ذات شقين:
كان الدافع الأساسي لهذه الحزمة هو الحساب السريع للتحويل الوحدوي متعدد الجسيمات كدالة للجسيم المفرد الوحدوي وعدد المدخلات البوسونية. بمعنى، إذا كان لدينا U أحادي رباعي الأبعاد، ونعلم أن هناك 3 فوتونات عند المدخل، فإننا نريد معرفة التحويل على طول
ويدعم ذلك الدالة bosonic.aa_phi
، والتي سميت على اسم آرونسون وأرخيبوف، اللذين حددا شكل هذه الدالة التي نستخدمها كدالة Φ(U) الخاصة بهما في [2]. على سبيل المثال، يمكننا إظهار تأثير 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 ]]
هنا، نقوم ببناء الوحدة الوحدوية المقابلة لمقسم الأشعة 50/50 في U. كما هو موضح في السطر بعد طباعة phiU، الأساس هنا هو [2، 0]، [1، 1]، و [0، 2]. لذا فإن الحالة المقابلة لحادث فوتون واحد عند كل من المدخلات هي [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، ستحتاج إلى gcc من homebrew و 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] ستاينبريشر، جي آر، أولسون، جي بي، إنجلوند، دي، وكارولان، جيه. (2018). الشبكات العصبية الضوئية الكمومية. arXiv الطباعة المسبقة arXiv:1808.10047. https://arxiv.org/abs/1808.10047
[2] آرونسون، سكوت، وأليكس أرخيبوف. "التعقيد الحسابي للبصريات الخطية." وقائع الندوة السنوية الثالثة والأربعين ACM حول نظرية الحوسبة. إيه سي إم، 2011. https://arxiv.org/pdf/1011.3245.pdf