
98
5
章 量子算術演算と量子論理演算
10
章では、レジスタの位相で計算する機能をさまざまな場面で活用します。
5.7
可逆性とスクラッチキュビット
この章では、
QPU
演算が可逆である必要があることを繰り返し指摘してきました。では、実行した
い算術演算が可逆的であることを確認するにはどうすればよいでしょうか?算術演算を可逆な形に変
換 す る( し た が っ て 、
QPU
で動作する可能性が高くなる)絶対的な方法のようなものはありませんが、
1
つの役に立つテクニックとしては、スクラッチキュビットを利用する方法が挙げられます。
スクラッチキュビットは、入力あるいは出力をエンコーディングするために必要なものではありませ
ん。両者をつなぐ量子論理演算を実行する途中で一時的に用いられるものです。
では、スクラッチキュビットを使うことで可逆にできる不可逆演算の具体例を以下に示します。
abs(a)
が
QPU
でどのように実装されるかを見ていくことにしましょう。図 5-15 に示すように、関数
abs()
は符号付き整数の絶対値を計算します。
図 5-15
図5-9で
QPU
レジスタの整数を簡単に否定する(
NOT
演算を施す)方法を示したので、
abs(a)
の
実装は簡単だと思うかもしれません。これは符号のビットに関係する
QPU
レジスタを無効にすればよ
いからです。しかし、このような試みを可逆的に行うことはできません(予想されるように、数学的な
abs(a)
関数自体が入力の符号に関する情報を ...