@yuichirominato 2018.11.10更新 64views

光連続量量子テレポーテーションプログラミング

CV フォトニクス 光量子コンピュータ 連続量 量子ゲート 量子コンピュータ

はじめに

光量子コンピュータは連続量を取り扱うことができ、超電導量子ビットとは異なるタイプのプログラミングを行います。ここでは、光量子コンピュータの基本である量子テレポーテーションのプログラミンを取り上げてみたいと思います。

量子テレポーテーションとは?

量子テレポーテーションとは、古典的な情報伝達手段と量子もつれの効果を利用して離れた場所に量子状態を転送することである。テレポーテーションという名前であるものの、粒子が空間の別の場所に瞬間移動するわけではない。量子もつれの関係にある2つの粒子のうち一方の状態を観測すると瞬時にもう一方の状態が確定的に判明することからこのような名前がついた。また、この際に粒子間で情報の伝達や物理的作用は起こっていない。これは、観測により任意の量子状態を実現することは不可能であることからもわかる。したがって、量子テレポーテーションを用いれば超光速通信が実現できるなどということはない。

引用:https://ja.wikipedia.org/wiki/%E9%87%8F%E5%AD%90%E3%83%86%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%86%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3

ということで、古典的な私たちが今使っている情報伝達手段と量子もつれ状態にある回路を利用して状態を再現するのが量子テレポーテーションになります。

プログラミングで実現するには?

今回実現するのはある量子状態のものを量子もつれと、ベル測定というものを利用して、別の量子ビットに状態を再現します。
今回利用したのはblackbird/stawberry fieldsと呼ばれるxanadu社のツールです。早速みてみたいと思います。

上記はxanaduのstarwberryfieldsの画面です。右上のAlgorithmsをクリックし、そのあとに、左側のPresetsをクリックすることで、Teleportationという回路が出てきます。回路は左から、S,S,BS,BS,X,P,X,Zと書いてあります。あと、よく見ると左上の一番上のQumodeがαとなっています。これは一番上のQumodeは任意の量子状態からスタートしていることを示しています。

また、上記の回路はこのままでは実は概要がわかりません。各ゲートにはそれぞれパラメータが割り振られています。これを見るために、pythonコードで確認したいと思います。回路をpythonコードで確認するには、Add outputsからblackbird codesを選びます。そうすることで取り出すことができます。

#!/usr/bin/env python3
import numpy as np
import strawberryfields as sf
from strawberryfields.ops import *
from strawberryfields.utils import scale

# initialise backend, engine and register
eng, q = sf.Engine(3, hbar=0.5)

with eng:
    Coherent(1+0.5j) | q[0]
    Sgate(2, 0) | q[2]
    Sgate(-2, 0) | q[1]
    BSgate(0.7854, 0) | (q[1], q[2])
    BSgate(0.7854, 0) | (q[0], q[1])
    MeasureP | q[1]
    MeasureX | q[0]
    Xgate(scale(q[0], 1.41421356237000)) | q[2]
    Zgate(scale(q[1], 1.41421356237000)) | q[2]

state = eng.run('fock', cutoff_dim=5)

こうなりました。
初期状態は1+0.5jのコヒーレント状態からスタート。Sゲートはスクイージングを実現しますが、それぞれ値が異なっています。BSゲートもパラメータが割り振られています。位相のパラメータでしょうか。そして、P測定、X測定。そしてその測定結果を使って、Xゲートで変位、Zゲートで変位となっています。

一番上の量子ビットの初期状態の量子状態を決めて、二番目三番目の量子ビットにスクイージングをかけます。その後、ビームスプリッターで量子もつれを実現し、ベル測定でベル基底へ射影し量子状態を測定。その後、測定結果を持って、再現をします。

ベル測定とは、ベル基底への射影測定を指す。2準位系のベル基底は次の4つとなる。
引用:https://ja.wikipedia.org/wiki/%E9%87%8F%E5%AD%90%E3%83%86%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%86%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3

一番目と二番目の量子モードをベル測定することによって、三番目の量子モードの状態が量子もつれによって決まり、最終的に測定結果からパウリ演算子をかけることによって状態を再現することができます。

まとめ

量子ビットをやっていた人からすると最初は理解しづらいところもありましたが、結果として少しずつ概要をつかむことで理解することはできそうです。プログラミングもこれらの手順をゲートとして実装できれば、量子テレポーテーションをプログラミングできることとなり、将来的に汎用型光量子コンピュータの実現が近づいてきた際にスムーズに実用化ができるのではないでしょうか。光に興味がある方はこれらのプログラミングの概要を理解しておいて損はないと思いました。

あわせて読みたい

SERVICE

汎用量子コンピュータ向けアプリケーション開発SDK

詳しく見る Githubで入手する(無料)

汎用量子コンピュータ向け高速シミュレータ

詳しく見る

量子コンピュータ向けクラウドサービス(準備中)

詳しく見る

イジングマシン向けアプリケーション開発SDK

詳しく見る Githubで入手する(無料)

COMMUNITY

量子コンピュータのことを学びたい、仕事としたいなどの情報交換の場を設け、コミュニティの形成を進めています。オフラインの勉強会と、オンラインのチャットコミュニティの2種類あります。オフラインのConnpassは1400名、オンラインのSlackは880名を超える参加があります。どちらも無料ですのでお気軽にご参加ください。

CONNPASS SLACK

CONTACT

弊社あての連絡はinfo@mdrft.comより用件を明記の上、メールで連絡を頂けますと幸いです。

ブログトップに戻る

Recent Posts