やること
日本量子コンピューティング協会が主催する「量子ゲート講座(入門編)」、とても分かりやすくておすすめです。※正式名称は「量子エンジニア(ゲート式)講座」
入門編で学ぶ量子ゲートとそれを使って実現できる論理回路(ロジックゲート)をまとめてチートシートにしておこうと思います。
回路を作る場合は、マウスクリックでお手軽にできる回路シミュレーター「Qplat」が便利です。
使う量子ゲート
入門編では5つのパーツを学びました。これらは初学者向けの説明なので不正確なものがあることにご注意を。
Hゲート(アダマールゲート)
0と1の重ね合わせ状態を作る。
Xゲート
0を1に、1を0にひっくり返す。
CXゲート(制御NOTゲート)
制御ビットが1であればターゲットビットをひっくり返す。
CCXゲート(Toffoliゲート)
2つの制御ビットが両方とも1であればターゲットビットをひっくり返す。
Mゲート
量子の状態を観測する。
基本的な論理回路(ロジックゲート)
たいだいこれらの論理回路を準備しておけばいろいろな問題が解けそうです。
=ゲート
いきなりですが名前が分かりません。入力と同じものを出力するロジックゲートです。
※どの線もデフォルトの入力は0。何もしなければ0が観測される。
※入力直後にHゲートを置いているのは0と1のすべての組み合わせを同時に入力するため。
CXゲートを使うことで入力0のときに出力0、入力1のときに出力1にできます。量子ビットをコピペしたいときに使えそうです。
NOT(論理否定)
入力と逆を出力するロジックゲートです。
さっきの=ゲートの出力をひっくり返してあげればOKです。
AND(論理積)
2つの入力が両方とも1のときだけ出力が1になります。
CCXゲートがそのまま対応しています。
XOR(排他的論理和)
2つの入力のうち片方が1のときだけ出力が1になります。
考え方としては「Aが1ならひっくり返す、Bが1ならひっくり返す、2回ひっくり返ったら元に戻るよね」です。
OR(論理和)
2つの入力のうち少なくとも一方が1なら出力が1になります。
意外と使うパーツが多いです(もっとシンプルな方法があったら教えて)。考え方としては「入力をひっくり返してからANDすれば00のときだけ1にできるよね。それをNOTすれば00のときだけ0になるよね」です。ひっくり返した入力の2つを観測前に元に戻してやることを忘れないでください。
おわりに
他にもNANDとかNORとかあるようですが、NAND=AND+NOTみたいなノリでいけると思います。
以上、チートシートでした。これらを利用して足し算と引き算をやったのがこちらの記事です。ぜひ読んでみてください。
余談ですが、「回路じゃないのになぜ量子回路?」と有識者に聞いてみました。「電子回路の分野の用語を引き継いでいる。実際は回路ではない」とのことでした。用語を変えるなら「量子譜」はどうかという提案が出ました。個人的には賛成です!