8
8

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 5 years have passed since last update.

量子コンピュータ学習時の手計算を代わりにやってくれるコード組んだ

Last updated at Posted at 2018-01-18

#量子コンピュータの勉強、いくら紙あっても足りんわ。
……ということで、ゲート演算をいい感じにやってくれるライブラリ作ってみました。
https://github.com/gyu-don/gate_operation

#特徴

  • 量子コンピュータの参考書などに出てくる小さい量子回路を再現するのが目的
  • メソッドチェーンっぽい書き方ができる
  • IPythonやJupyter Notebookなどのインタラクティブな環境での使いやすさを重視
  • 回路を作り終えてからシミュレートするのではなく、ゲートを適用するたびに計算が走る
  • バックエンドにNumPy版とSymPy版の両方を用意している(ただし SymPyはNumPyより遅い)
  • Qubitと、ユニタリ行列と、後で再利用できるよう操作を覚えておくためのクラスの3種類を用意している
  • 現時点ではコロコロ仕様変えるかも。バグったコードをmasterにpushしたりとかもよくある。

##まだだけど、そのうちやりたいこと(上の方が、優先したいお気持ちが強い)

  • 高速化
  • いろんな量子回路を組んで、examplesとしてgithubに載せる
  • ユニタリ行列のフィデリティを計算する機能を追加
  • 観測を何度も行うとか、量子トモグラフィ的なやつとか、そういう機能の充実
  • Jupyter Notebook用の表示をもっとかっこよくする(Displayとか使う)
  • UnitTest作る
  • ドキュメント書く
  • OpenQLプロジェクトとの統合
  • PyPIに登録
  • OpenQASMや、qiskitのQuantumProgram、pyquilのProgramへの変換

#使い方
##量子テレポーテーションやってみよう

量子テレポーテーション

import np_gate # NumPy backendを使用

# aliceに何か1Qubitもたせる。
alice = np_gate.Qubit(1).h(0).t(0)

# シミュレータなので、クローンできる。
# |circuit> = |alice>
circuit = alice.clone()

# |0>を2個付け加える
# |circuit> = |alice>|00>
circuit.append_qubit(2)

# 付け加えた2つをベル状態にする
# |circuit> = (|alice>|00> + |alice>|11>) / sqrt(2)
circuit.h(1).cx(1, 2)

# 以下の量子ゲートを適用
# --*--H-----*--
# --|-----*--|--
# --X-----X--Z--
circuit.cx(0, 1).h(0).cx(1, 2).cz(0, 2)

# 1番目、0番目のQubitを捨てる(観測される)
circuit.drop_qubit(1).drop_qubit(0)

# 残ってるやつとaliceのQubitとのフィデリティを取ると、だいたい1になる(テレポーテーション成功)
print(alice.fidelity(circuit)) # => Almost 1

##2ビットのGroverでもっと詳細な使い方
ここに置いてます。
https://github.com/gyu-don/gate_operation/blob/master/examples/Grover%20algorithm%202qubit.ipynb

##Shorの誤り訂正符号(1Qubit送るのに9Qubit使ったら、そのうちの1つがごちゃごちゃになっても復元できるやつ)
ここに置いてます。ちなみに、SymPyでやると9Qubitは非常に計算が重かったので、NumPyでやってます。
https://github.com/gyu-don/gate_operation/blob/master/examples/Shor%20error%20correcting%20code.ipynb

#まとめ

量子コンピュータはいいぞ

8
8
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
8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?