--- layout: page section: 算術演算 title: デクリメント回路 description: インクリメントの逆演算 prev: インクリメント回路 prev_url: ./increment_circuit.html next: 足し算回路 next_url: ./addition_circuit.html ---

数に +1 するインクリメント回路とは逆に、-1 するデクリメント回路を作ってみましょう。 今回はビット演算から考えるのではなく、「デクリメントはインクリメントの逆」という発想を使います。 つまり、前回に作ったインクリメント回路の逆演算回路を考えることで、デクリメント回路が作れるかどうか実験してみることにしましょう。

逆演算回路とは、元の回路と並べることで全体を打ち消す回路でした (もつれをほどくの逆ベル回路を参照)。 これを作るために、元のインクリメント回路を振り返りましょう。 次は 3 ビットまでの数をインクリメントする回路です。

まずは「インクリメント」部分の一番右の から消していくことを考えます。 の逆演算は 自身なので、次のように を置きます。

すると 2 個が打ち消しあい、次の回路になります。

同様に一番右の CNOT を消します。CNOT の逆演算も CNOT 自身なので、次のように CNOT を適用します。

すると次のように CNOT が消えました。

続くゲートもまったく同じパターンで消していくことができ、最終的にインクリメント回路をすべて消す逆演算回路は、次のようになります。

問題は、本当にこれがデクリメントになっているかどうかです。さっそく実験してみましょう。

{% include mixer_horizontal.svg class="h-4 w-4 text-gray-700" %}

たしかに、1 と 5 の重ね合わせをデクリメントに通すと 0 と 4 の重ね合わせが得られます (ほかの入力も試してみてください!)。

量子回路ではこのように、ある算術演算を行う回路の逆回路を作ることで、逆の算術演算を行う回路を作ることができます。 これは、量子ゲートの可逆性を利用したおもしろい性質です。

ただし逆演算回路を作るには、もとの回路が や といった可逆なゲートのみから構成されている必要があります。 ほとんどの量子ゲートは可逆ですが、 や 、は非可逆です。

インクリメント回路で説明したように、量子コンピュータの強力さの一因は、重ね合わせ上で演算できることです。 可逆なゲートは重ね合わせを入出力できるのでこれを満たしていますが、非可逆な は重ね合わせを出力できず、重ね合わせを強制的に重ね合わせのない {% ket 0 %} または {% ket 1 %} にリセットします。 このため、これらの非可逆なゲートは量子というよりも、従来型のコンピュータに近い命令と言えます。 よって、従来の算術演算を量子コンピュータ上で重ね合わせを含めて実現しようとする場合には、 を使うことはできません。