サンプルコード

qisikit を用いた量子アルゴリズムのサンプルコードを何個か公開しています。

使用言語は Python です。

量子テレポーテーション

  • [コード] アリスからボブへ 1 bit の情報を送る場合

量子もつれあい状態を利用したシンプルな量子テレポーテーションのコードです。

量子鍵配送: BB84 (Bennett-Brassard 1984)

  • [コード] アリスからボブへの量子鍵配送(盗聴者エヴァがいない場合)。この場合、鍵配送は成功します。

  • [コード] アリスからボブへの量子鍵配送(盗聴者エヴァがいる場合)。この場合、鍵配送は不正になります。

https://github.com/Qiskit/qiskit-community-tutorials/blob/master/awards/teach_me_qiskit_2018/cryptography/Cryptography.ipynb を元にしたものです。

日本語のコメントや出力の追加、一部の修正を行ってあります。

量子誤り訂正: The (3-qubit) bit-flip code

  • [コード] 入力は 1 bit (0 or 1) 。その情報のエラー補正を 3 qubit 使って行う。

3つの qubit に1つの qubit の情報を埋め込み、1つの qubit にエラーが起きても元に戻せるようにする方法。

つまり、|0> を |000>、|1> を |111> とエンコードする。

量子複製禁止定理により量子状態はコピーできないが、より大きな状態に埋め込むことでエラー補正を可能としたもの。

量子アニーリング: 古典イジング模型の基底状態を求める場合

  • [コード] 横磁場イジング模型から 古典イジング模型への断熱変化過程

  • [コード] 経路最適化問題への応用

2つ目のコードは3つの場所を順に回る経路の最適化のサンプルコード。

「同じところを連続で廻らない」「同じ時間に複数の場所を廻らない」「重要度(満足度)の高い場所を優先して廻る」という条件は組み込み済みです。

一部間違いがあるので、適時修正してください。修正版はいずれアップロードします。

横磁場イジング模型の分配関数の構築: 実時間と虚時間発展による計算

  • [コード] 実時間(ユニタリー)と虚時間(非ユニタリー)発展を利用した Lee-Yang zeros 解析

量子コンピュータを利用してイジング模型の分配関数を構築し、複素外場空間や複素温度空間におけるそのゼロ点を調べるコードです。(未完成)

A. Krishnan, M. Schmitt, R. Moessner, M. Heyl, Phys. Rev. A 100 (2019) 022125 の内容を元にしています。