ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

量子コンピューターの動かし方(プログラムの作り方) ーIBM Qiskitを使って

2019-03-25 09:15:37 | Weblog
3月23日に
IBMのQiskit,python
量子コンピューターで学ぶ量子プログラミング入門
https://lab-kadokawa77.peatix.com/

行って、学んだことの一部を披露します。

■量子コンピュータのプログラムをつくるために必要な環境

 量子コンピューターはIBM Qを使う場合、Qiskit(くいずきっと/きすきっと)
というのを使うみたい。これはpythonからアクセスできる。

したがって、あなこんだ入れて、そこからQiskitをpipしたりして、とってくるかんじ。
ただ、動かすのにAPIキーがいる。このAPIキーを取得するためにIBMに登録する

登録サイト
Join the IBM Q Experience Community
https://quantumexperience.ng.bluemix.net/qx/community
(登録も利用もCommunity版は無料。sign inから入って、初めて登録(sign up)する。
 My Account→Advanced→RegenerateでAPI生成)




■量子プログラム

基本的には、量子プログラムは、以下のゲートの組み合わせで作る。
    X
    Y
    Z
    H(あだまーる)
    CNOT
    S
    T

プログラムの流れとしては、

・計算の準備
qiskitのインポート(IBMQから)
APIキーを入れる
 各種インポート

・回路図を作成する
 ・1(,2,3・・・必要なだけの)qubitの量子レジスターを生成する
 ・レジスターに作用する量子回路を生成する
 ・生成したqubitの[0][1]に上記ゲート(Hとか)をつけていく
   →cnotは ex.cx(q[0],q[1])みたいなかんじで2つ指定
 ・draw(output='mpl')で回路図表示

・観測する場合は、以下のかんじ
  1bitの古典レジスターを生成する
  計測を含む量子回路を生成する
    (QuantumCircuit()、最適化されないためのbarrier())
 計測結果を古典ビットにうつす
  meas.measure(q,c)
 Qiskit の回路オブジェクトは、'+' 演算子で回路の合成ができるので
 上記回路と観測部分を+する

 描画

・シミュレーターで動かす
  IBM Aerのqasm_simulatorを利用する(BasicAer.get_backend)
  作った回路を qsam_simulator上で走らせる(execute(qc, backend_sim, shots=繰り返し回数))
  jobから結果を取り出し(result_sim = job_sim.result)、
  結果を取得して(get_counts)、print
  ヒストグラムでも書き出せる
    from qiskit.tools.visualization import plot_histogram
    plot_histogram(counts)

・実機で動かす:うまくいきそうだったら、実機で確認
  IBM Qアカウントを読み込み
  IBM Qデバイスの確認(configuration)、一番使っていないのをたしかめる(least_busy)
  ジョブ送信(execute)
    →statusで状態確認できる。job_monitorすると同期になる(終わりまで待つ)
  resultで結果取得





今度気が向いたら環境設定やプログラミングについて書くつもり(どこかのエントリーで)

この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« デジタル手続法案が印鑑業界... | トップ | ディープラーニングの物体認... »
最新の画像もっと見る

Weblog」カテゴリの最新記事