@yuichirominato 2019.02.10更新 99views

【焼き直し】1+1と1+0と0+1と0+0を同時に計算してみた


はじめに

ついこの前かと思いましたが、日々ツールは進歩していてより簡単な解法がどんどん見つかります。以前といた問題を焼き直してみます。

量子重ね合わせを使ってたし算の計算を1つの回路でできます。データの入力も回路の変更もなしに簡単に問題が解けて得した気がします。

足し算について

a+b = dcという計算をします。dは桁上がり用に準備しています。

Hゲートをaとbにかけることにより、aとbは0と1の両方の可能性を持ちます。さらに量子コンピュータのいいところはこの状態で計算ができてしまうことです。つまり、0+0,0+1,1+0,1+1を同時に表現できます。


a--H---*-------*---
b--H---*---*---|---
c------|---X---X---
d------X-----------

以前はコードが長かったですがかなり短くなりました。

Blueqatのコードで書くと、

from blueqat import Circuit 
Circuit(4).h[:2].ccx[0,1,3].cx[1,2].cx[0,2].m[:].run(shots=100)                                               

Counter({'0000': 25, '0110': 30, '1010': 19, '1101': 26})

これで終わりです。4つのたし算に割り振られることがこれでわかりました。

#0+0=0
0000

#0+1=1
0110

#1+0=1
1010

#1+1=10
1101

このようにとても短い回路で不思議な計算ができます。以上です。

Recommended


CONTACT

info@mdrft.com

ブログトップへ Wikiへ移動

量子コンピュータ一般

量子ゲートアルゴリズム

量子アニーリング一般

量子アニーリングアルゴリズム

BlueqatSDKの使い方