https://codeforces.com/contest/1002/problem/B4
2桁の量子状態が与えられる。この状態が
のどれであるかを判定し、状態に対応する整数を返せ。
前問と似ています。与えられた状態にアダマール・ゲート$H_0$を作用させると \begin{align*} H_0\ket{S_0}&=\frac12 \left( +\ket{+0}-\ket{+1}-\ket{-0}-\ket{-1} \right)\\ &=\frac1{2\sqrt{2}} \left( +\ket{00}+\ket{10}-\ket{01}-\ket{11}-\ket{00}+\ket{10}-\ket{01}+\ket{11} \right)\\ &=\frac1{\sqrt{2}} \left( +\ket{10}-\ket{01} \right) \end{align*} \begin{align*} H_0\ket{S_1}&=\frac12 \left( -\ket{+0}+\ket{+1}-\ket{-0}-\ket{-1} \right)\\ &=\frac1{2\sqrt{2}} \left( -\ket{00}-\ket{10}+\ket{01}+\ket{11}-\ket{00}+\ket{10}-\ket{01}+\ket{11} \right)\\ &=\frac1{\sqrt{2}} \left( -\ket{00}+\ket{11} \right) \end{align*} \begin{align*} H_0\ket{S_2}&=\frac12 \left( -\ket{+0}-\ket{+1}+\ket{-0}-\ket{-1} \right)\\ &=\frac1{2\sqrt{2}} \left( -\ket{00}-\ket{10}-\ket{01}-\ket{11}+\ket{00}-\ket{10}-\ket{01}+\ket{11} \right)\\ &=\frac1{\sqrt{2}} \left( -\ket{10}-\ket{01} \right) \end{align*} \begin{align*} H_0\ket{S_3}&=\frac12 \left( -\ket{+0}-\ket{+1}-\ket{-0}+\ket{-1} \right)\\ &=\frac1{2\sqrt{2}} \left( -\ket{00}-\ket{10}-\ket{01}-\ket{11}-\ket{00}+\ket{10}+\ket{01}-\ket{11} \right)\\ &=\frac1{\sqrt{2}} \left( -\ket{00}-\ket{11} \right) \end{align*}
となり、これは4つのBell状態に対応しています。Bell状態は識別可能であるので、これを使えば与えられた状態を識別することができます。
これで、この問題が解けました。
namespace Solution {
open Microsoft.Quantum.Primitive;
open Microsoft.Quantum.Canon;
operation Solve (qs : Qubit[]) : Int
{
body
{
mutable ret=0;
H(qs[0]);
CNOT(qs[0],qs[1]);
if(Measure([PauliX],[qs[0]])==Zero){
set ret=ret+2;
}
if(M(qs[1])==Zero){
set ret=ret+1;
}
return ret;
}
}
}