最初の Q# コード例は、次のように記述されたメソッド "Set" を提供します(リンク) :
operation Set (desired: Result, q1: Qubit) : ()
{
body
{
let current = M(q1);
if (desired != current)
{
X(q1);
}
}
}
このメソッドは、量子ビットを目的の値に設定します。そうするために、キュービット値が測定され、値が予想と異なる場合、キュービット状態は「スワップ」されます。
しかし、量子物理学では、粒子を破壊せずに測定することはできません。これは、本「量子計算と量子情報」の引用です。
... 測定は、量子ビットの状態を変更し、|0> と |1> の重ね合わせから、測定結果と一致する特定の状態に折りたたみます。たとえば、|+> の測定値が 0 の場合、キュービットの測定後の状態は |0> になります。
ただし、Q# を使用すると、量子ビットを測定して、引き続き使用できます。
現実には不可能な操作を Q# 言語で実現できるのはなぜですか?
回答ありがとうございます。