制御された2キュービットゲートを構築する方法


0

以下のユニタリーの2キュービットゲートがあります。


    def _unitary_(self):
        st = np.sin(self.theta)
        ct = np.cos(self.theta)
        ei = np.exp(1j*self.phi)
        emi = np.exp(-1j*self.phi)

        return np.array([
            [1.,        0,          0,  0],
            [0,         ct,     ei*st,  0],
            [0,         emi*st,   -ct,  0],
            [0,         0,          0,  1.]
        ]
        )

3つの量子ビットゲートを作成します。1つの量子ビットが上記の2つの量子ビットゲートの制御量子ビットとして機能し、他の2つの量子ビットにゲートが適用されます。

そのようなゲートの例を次に示します。ゲートがq0、q1、およびq2に適用されているとします。ここで、q0は制御キュービットです。上記の4 * 4ユニタリは、q0が0の場合にのみ、q1とq2に適用する必要があります。

そのような3キュービットゲートの単一性はどのように見えますか?(私はCirqでこれを行っています)

1

MyTwoQubitGate().on(q1, q2).controlled_by(c)

or

MyTwoQubitGate().controlled().on(c, q1, q2)