1

最初の Q# コード例は、次のように記述されたメソッド "Set" を提供します(リンク) :

operation Set (desired: Result, q1: Qubit) : ()
{
    body
    {
        let current = M(q1);
        if (desired != current)
        {
            X(q1);
        }
    }
}

このメソッドは、量子ビットを目的の値に設定します。そうするために、キュービット値が測定され、値が予想と異なる場合、キュービット状態は「スワップ」されます。

しかし、量子物理学では、粒子を破壊せずに測定することはできません。これは、本「量子計算と量子情報」の引用です。

... 測定は、量子ビットの状態を変更し、|0> と |1> の重ね合わせから、測定結果と一致する特定の状態に折りたたみます。たとえば、|+> の測定値が 0 の場合、キュービットの測定後の状態は |0> になります。

ただし、Q# を使用すると、量子ビットを測定して、引き続き使用できます。

現実には不可能な操作を Q# 言語で実現できるのはなぜですか?

回答ありがとうございます。

4

1 に答える 1