2008-08-26 [長年日記]
λ. QMLからIsometryへの変換
量子テレポーテーションの行列計算 で、ヒープの初期化を扱うためには、射 f : A→B をユニタリ変換からisometryに一般化した圏を考える必要があるらしいということを書いた。
isometryとは
isometryって何かと思ったけど、QML: A functional quantum programming language の 5.4.1 FQC° as isometric operations (p.87) によれば、以下のようなものだそう。
An isometry is a completely positive, distance preserving isomorphism between metric spaces. In the case of strict quantum computations the mapping is between pure quantum states, represented in the usual way as complex-valued vectors. The distance function in quantum mechanics is given by the inner-product.
……単に距離を保存する写像くらいに思ったら、意外と条件が多いのね。
completely positive については Choi's theorem on completely positive maps に説明がある。エルミート行列でかつ固有値が非負なのが positive maps で、id⊗M が常に positive map になる M が completely positive maps 。
しかし、ヒープの生成・初期化というある意味非可逆な操作を実現するために導入したいものなのに、同型だとかエルミートだとかいうのは異様に強い条件で、明らかに変だ。
というか、どうもQMLの文脈では、単に距離を保存する線形写像という意味で使われているように思える。
コンパイル例
例によって、量子テレポーテーションのプログラム
-- The Teleport algorithm Tele (a,qb) |- let (b,c) = Epr () in let f = Bnmeas (a,b) in U (c,f) :: qb;
をコンパイルしてみると以下のようになる。
Prelude QML> runI "teleport.qml" "Tele" OK (2, Isom input = 1, Isom output = 3, ([True],[True,True,True],0.4999999999999999 :+ 0.0) ([True],[True,True,False],0.4999999999999999 :+ 0.0) ([True],[True,False,True],0.4999999999999999 :+ 0.0) ([True],[True,False,False],0.4999999999999999 :+ 0.0) ([False],[False,True,True],0.4999999999999999 :+ 0.0) ([False],[False,True,False],0.4999999999999999 :+ 0.0) ([False],[False,False,True],0.4999999999999999 :+ 0.0) ([False],[False,False,False],0.4999999999999999 :+ 0.0))
これを行列で書くと以下のようになる。
これは量子テレポーテーションの行列計算で得られたユニタリー変換Uに、ヒープの生成・初期化に相当するisometry -⊗|00〉 : Q2 → Q2⊗Q2 を結合したisometry になっている。
まとめ
Q2⊗Q2⊗Q2→Q2⊗Q2⊗Q2 から、 Q2→Q2⊗Q2⊗Q2 になって、id : Q2→Q2⊗Q2 にちょっと近づいた。後はsuperoperatorの圏に移れば、Q2→Q2にすることが出来て、idと等しくなるはず……