トップ «前の日記(2008-08-18) 最新 次の日記(2008-08-22)» 月表示 編集

日々の流転


2008-08-19 [長年日記]

λ. QMLで量子テレポーテーション

先日の圏論勉強会での量子テレポーテーションの話について、みんな色々書いているようだ。

参考:

私もご多分にもれず悩んでいて、それで、ふと「プログラミング言語で書いてみたら分かり易くなるんじゃ」と思ってQML(c.f. 20080630#p01)で書こうとしたら、コンパイラのサンプルとして既に用意されていた。teleport.qml

記法

記法は論文「A functional quantum programming language」のときには

Qnot : qb -o qb
Qnot x = ifo x then qfalse else qtrue

だったのが、

Qnot (b,qb) |- ifo b then qfalse else qtrue :: qb;

という形式に変更になっている。 判定(judgement)そのものに名前をつけた感じか。 ただ、文脈部分では (変数, 型) よりも (変数 :: 型) と書けるといいのにと思った。

ここで、ifo は観測を伴わないを伴わない分岐で、then式とelse式がstrictな項*1でかつ直交している必要がある。ifoを使うと、制御NotやEPRペアの生成は以下のように定義できる。

-- A quantum CNOT operation
CNot (s,qb) (t,qb) |- ifo s then (qtrue,Qnot (t)) 
                            else (qfalse,t) :: qb*qb;

-- The constant EPR pair
Epr |- hF * (qtrue,qtrue) + hF * (qfalse,qfalse) :: qb*qb;

また、普通の if もあって、こちらは条件が不要で、代わりに decoherence を引き起こすようになっている。これを使うとqubitに対する観測は以下のように定義できる。

-- The measurement operator, using "if"
Meas (x,qb) |- if x then qtrue else qfalse :: qb;

ifやcaseが観測に対応するというのは、遅延評価を行う関数型言語を使ったことがある人にとっては馴染み深いのではないかと思う。それらの言語でも、遅延評価されたサンクはある意味では値が確定していない状態であって、それに対してifやcaseによる分岐を適用することで評価が駆動されて値が確定するので。もちろん普通の関数型言語のサンクは干渉したりはしないけど。

teleport.qml

で、このteleport.qmlを読むと、量子テレポーテーションはまさに、たけをさんの日記に貼ってあった以下の図そのものなのね。

[量子テレポーテーションの図]

図の |00〉 + |11〉 の部分に相当するのが上で定義した Epr 。 そして、図の MBell に相当する以下の Bmeas では (Had ⊗ id)∘CNot を適用した結果に観測を行って 2bit の古典情報を得ている。QMLには古典情報用のデータ型といったものは特に用意されていないので、データ型としては qb*qb のままだけど。

-- The Bell-measurement operation
Bmeas (x,qb) (y,qb) |- let (xa,ya) = CNot (x,y)
                       in  (Meas (Had (xa)),Meas (ya)) :: qb*qb;

Bnmeas (x,qb) (y,qb) |- let (xa,ya) = CNot (x,y)
                        in  (Had (xa),ya) :: qb*qb;

そして、量子テレポーテーションの過程全体を表したのが、以下の Tele で、U では 2bit の古典情報をもとに4つのユニタリー変換のどれかを適用して、もとの状態を復元している。

Tele (a,qb) |- let (b,c) = Epr () 
               in  let f = Bnmeas (a,b)
                   in U (c,f) :: qb;

Bmeas ではなく、観測を伴わない Bnmeas の方を用いているのは何故か結構悩んでしまったのだけど、たけをさんと話したら「U内部のifでdecoherenceは起こるのでプログラム的には変わらないから」ということのよう*2

Tags: quantum

*1 FIXME: 後で説明を

*2 量子テレポーテーションの問題意識的には大きな違いだけど