$$ \def\bra#1{\mathinner{\left\langle{#1}\right|}} \def\ket#1{\mathinner{\left|{#1}\right\rangle}} \def\braket#1#2{\mathinner{\left\langle{#1}\middle|#2\right\rangle}} $$

◇◇Microsoft Q# Coding Contest – Summer 2020 A6 - Distinguish four Pauli gates◇◇


☆問題URL

https://codeforces.com/contest/1357/problem/A6

☆問題の概要

1 qubitに対する演算$unitary$が与えられ、ここで$unitary$は$I, X, Y, Z$のうちのどれかである。$unitary$を一度だけ呼び出して、それが$I$ならば0、 $X$ならば1、$Y$ならば2、$Z$ならば3を返せ。

☆解法

$I, X, Y, Z$はそれぞれ $$I = \ket{0}\bra{0} + \ket{1}\bra{1}$$ $$X = \ket{1}\bra{0} + \ket{0}\bra{1}$$ $$Y = i\ket{1}\bra{0} - i\ket{0}\bra{1}$$ $$Z = \ket{0}\bra{0} - \ket{1}\bra{1}$$ と表せる演算であり、これらの演算を使用することによってBell状態$\ket{B_0}$を別のBell状態に変換することができます。

具体的には、状態$\ket{B_0} = \frac1{\sqrt2}\left( \ket{00} + \ket{11} \right)$の0桁めにこれらの演算を作用させることで \begin{align*} I_0\ket{B_0} &= \frac1{\sqrt2}\left( \ket{00} + \ket{11} \right) \\ &= \ket{B_0} \end{align*} \begin{align*} X_0\ket{B_0} &= \frac1{\sqrt2}\left( \ket{10} + \ket{01} \right) \\ &= \ket{B_2} \end{align*} \begin{align*} Y_0\ket{B_0} &= \frac1{\sqrt2}\left( i\ket{10} - i\ket{01} \right) \\ &= -i\ket{B_3} \end{align*} \begin{align*} Z_0\ket{B_0} &= \frac1{\sqrt2}\left( \ket{00} - \ket{11} \right) \\ &= \ket{B_1} \end{align*} となり、別のBell状態に変化していることがわかります。

よって、この問題をBell状態の識別問題に帰着することができ、これは既出の問題です。

これで、この問題が解けました。

☆ソースコード

                
namespace Solution {
    open Microsoft.Quantum.Intrinsic;

    operation Solve (unitary : (Qubit => Unit is Adj+Ctl)) : Int
    {
        using (qs = Qubit[2])
        {
            //Bell状態|B_0>の0bitめに作用させる
            H(qs[0]);
            CNOT(qs[0], qs[1]);
            unitary(qs[0]);

            //Bell状態の識別をする
            CNOT(qs[0], qs[1]);
            let str = (Measure([PauliX], [qs[0]]) == Zero ? "+" | "-") + (M(qs[1]) == Zero ? "0" | "1");
            ResetAll(qs);
            for (idx in 0..3)
            {
                if (str == ["+0", "+1", "-1", "-0"][idx])
                {
                    return idx;
                }
            }
        }
        return -1;
    }
}
                
            

戻る