2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

IBM Quantum ExperienceとBlueqatでCCXゲート(トフォリゲート)を体験してみる

Last updated at Posted at 2020-02-13

量子コンピュータ初心者です。前回に引き続きIBM Quantum ExperienceとBlueqatを使って、$CCX$ゲート(トフォリゲート)を試してみます。

#CCXゲート(トフォリゲート)image.png
$CCX$ゲートは3量子ビットの演算です。$CX$ゲートの拡張版?みたいな感じで、制御ビットが1つ増えて2個あります。トマソ・トフォリによって作られたのでトフォリゲートとも呼ばれます。
2つの制御ビットが共に1になったときに、ターゲットビットを反転します。

#CCXゲートの準備
Circuit Composerで'q' register qubitsを3にして3量子ビットにします。さらに$CCX$ゲートを配置します。慣例に沿って測定のアイコンも入れておきます。
image.png

Measurement Probabilityの結果を見ると000になっています。まだ何もしていないので当然ですね。
image.png

#CCXゲートを使ってみる
q[0]とq[1]に$X$ゲートを入れて動作を確認してみます。

##制御ビットの片方だけ1の場合
q[0]に$X$ゲートを適用して片方だけ1の状態にしてみます。当然のことながらターゲットビットは反転されずそのまま出力され、結果は001となります。Circuit Composerでは結果は後→前の順番で出てきますので、q[0]の結果が最後の1にあたります。
image.png

ターゲットビットに$X$ゲートを適用しても、そのまま出力されて結果は101になります。
image.png

##制御ビットが両方1の場合
q[0]とq[1]の両方に$X$ゲートを適用すると、ターゲットビットが反転されます。いまq[2]はもともと0ですので反転されて結果は111になりました。
image.png

q[2]にも$X$ゲートを適用しておくと、反転されて結果は011になりました。
image.png

##Blueqatのコード
同じような操作をBlueqatでやってみます。

from blueqat import Circuit
res = []
res.append(Circuit(3).ccx[0,1,2].m[:].run(shots=1))          #000
res.append(Circuit(3).x[2].ccx[0,1,2].m[:].run(shots=1))     #001
res.append(Circuit(3).x[1].ccx[0,1,2].m[:].run(shots=1))     #010
res.append(Circuit(3).x[1,2].ccx[0,1,2].m[:].run(shots=1))   #011
res.append(Circuit(3).x[0].ccx[0,1,2].m[:].run(shots=1))     #100
res.append(Circuit(3).x[0,2].ccx[0,1,2].m[:].run(shots=1))   #101
res.append(Circuit(3).x[0,1].ccx[0,1,2].m[:].run(shots=1))   #110
res.append(Circuit(3).x[:].ccx[0,1,2].m[:].run(shots=1))     #111

for i in res:
  print(i)

実行すると2つの制御ビットが共に1のとき(最後の110と111)だけターゲットビットが反転されていることがわかります。なおBlueqatでは量子ビットの順番(q[0],q[1],q[2])で結果が出てきます。Circuit Composerとは逆なので注意してください。

Counter({'000': 1})
Counter({'001': 1})
Counter({'010': 1})
Counter({'011': 1})
Counter({'100': 1})
Counter({'101': 1})
Counter({'111': 1})
Counter({'110': 1})

#参考資料
Blueqatチュートリアル トフォリゲート

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?