共役
共役は量子計算で一般的に使用されます。 数学的な用語では、U と V の 2 つのユニタリ変換である U†VU という形式パターンになります。量子メモリの特徴上、このパターンは重要です。量子の固有の資産を活用するために、計算では量子相関関係、つまり、"もつれ" が構築されます。 ただし、サブルーチンでその量子ビットが不要になったときに、それらの状態を観察するとシステムの残りの部分に影響を与えるため、それらの量子ビットを容易にリセットして解放することはできないことを意味します。 このため、通常、量子メモリを解放して再利用する前に、以前の計算の効果を元に戻す必要があります。
Q# そのため、このようなクリーンアップを必要とする計算を表現するための専用のコンストラクトがあります。 式は、2 つのコード ブロックで構成されます。1 つは U の実装を含み、もう 1 つは V の実装を含みます。 計算の解除 (つまり、 U† の適用) は、式の一部として自動的に実行されます。
式は フォームを受け取ります
within {
<statements>
}
apply {
<statements>
}
ここで、<statements>
は、それぞれ U と V の実装を定義する任意の数のステートメントに置き換えられます。
どちらのブロックにも、within
ブロックに適用される随伴バージョンを自動的に生成するための通常の制限を除き、任意の古典的計算を含めることができます。
within
ブロックの一部として使用される可変的にバインドされた変数は、apply
ブロックの一部として再割り当てできません。