cscscscs

記録用

Toffoli state を用いた Toffoli gateの実装

このエントリは、量子計算理論(森前智行著) P41の上から3つめの演習問題の回答になっています。

Toffoli gate とは

CCXゲートのことです。

真理値表は、

f:id:yukarinoki:20180902052624p:plain

Toffoli stateとは

$$\ket{Toffoli} = \frac{1}{2} (\ket{100} + \ket{010} + \ket{001} + \ket{111})$$

 のことです。

Toffoli gateのToffoli state を用いた実装

厳密には、

Toffoli stateとクリフォード演算子を用いて、Toffoli gateを実装することができる

です。 クリフォード演算子については、直前のエントリを見てください。

 

以下、実装です。

全体像

実装は二段階に分かれています。

一段階目は、

$$ \ket{00} \rightarrow \ket{000}$$

$$ \ket{01} \rightarrow \ket{010}$$

$$ \ket{10} \rightarrow \ket{100}$$

$$ \ket{11} \rightarrow \ket{111}$$

にする、操作を実装します。

 

二段階目は一段階目で得られた状態を元にToffoli gateを実装します。

しかし、二段階目は一段階目で新たに付け加えられたqubitをコントロールビットとして、CX gateを作用させればいいだけなので、明らかです。(CXはクリフォード群に含まれているアダマールとCZをかけたらわかる。)

 

なので、一段階目の詳細のみ述べます。

 

一段階目

Toffoliのコントロールqubitになる2つのqubitを$\ket{q_{1}q_{2}}$とします。

Toffoli stateをコントロールqubitにして$\ket{q_{1}q_{2}}$にCXを作用させます。

CXのかけかたは、

Toffoli stateの一番目のqubitをコントロールqubit、$\ket{q_1}$をターゲットqubitにして作用 と

Toffoli stateの二番目のqubitをコントロールqubit、$\ket{q_2}$ ターゲットqubitにして作用

です。

$\ket{q_{1}q_{2}}$に応じて書き下しますと以下のようになります。

 

$$\ket{00} \otimes \ket{Toffoli} = \frac{1}{2} \left( \ket{00000} + \ket{01010} + \ket{10100} + \ket{11111} \right)$$

$$\ket{01} \otimes \ket{Toffoli} = \frac{1}{2} (\ket{01000} + \ket{00010} + \ket{11100} + \ket{10111} )$$

$$\ket{10} \otimes \ket{Toffoli} = \frac{1}{2} (\ket{10000} + \ket{11010} + \ket{00100} + \ket{01111} )$$

$$\ket{11} \otimes \ket{Toffoli} = \frac{1}{2} (\ket{11000} + \ket{10010} + \ket{01100} + \ket{00111} )$$

 

ここで、初めの2つのqubitを測定します。

もし、$\ket{00}$が測定されたとすると、あとの3つのqubitは、

$$ \ket{00} \rightarrow \ket{000}$$

$$ \ket{01} \rightarrow \ket{010}$$

$$ \ket{10} \rightarrow \ket{100}$$

$$ \ket{11} \rightarrow \ket{111}$$

の対応通りになっています。

もし、$\ket{01}$が測定されたら、対応は

$$ \ket{00} \rightarrow \ket{010}$$

$$ \ket{01} \rightarrow \ket{000}$$

$$ \ket{10} \rightarrow \ket{111}$$

$$ \ket{11} \rightarrow \ket{100}$$

になっています。このときは、この初めのqubitをコントロール、3つめのqubitターゲットとして、CXを作用させれば、目的のqubitを得ることができます。

他の測定の場合も、同様に測定に対して適応的に演算子をかければ目的のqubitを得ることができます。

 

以上で実装ができました。