とね日記

理数系ネタ、パソコン、フランス語の話が中心。
量子テレポーテーションや超弦理論の理解を目指して勉強を続けています!

発売情報: Python量子プログラミング入門: 中山茂

2018年06月27日 23時08分09秒 | コンピュータ

「えっ、もうPythonなの?」、「日進月歩についていけない。。」というのが第一印象。量子コンピュータ、量子計算はもうここまできたのか?本書を見つけたとき目を疑った。

量子コンピュータの発展史(リンク集)
https://blog.goo.ne.jp/ktonegaw/e/91fa592173ea1b2a6e53ae0c84323751

書籍版は以下の画像から、Kindle版は「こちら」からお買い求めいただきたい。

 


差し当たり6月25日発売のほうだけ購入。Kindle版はストレスなく買える金額だ。

購入した本をざっと読んだところ、相変わらず5量子ビットを使う構成。五線譜のスコアで視覚的にプログラムしていたのが、そのままPythonのコマンドに置き換わっただけな気がする。量子アルゴリズムの勉強の新しいスタイルの本という位置付けなのかな?

C言語にたとえれば、if文やforループ、関数の呼び出しなどは既存の古典プログラミング、そしてビット演算のようなところが量子ビット演算になった感じという例え話で通じるだろうか? Pythonではあるけれども量子ビットを操作する箇所はアセンブリ言語っぽい。グラフィカルなスコアよりも高級言語のほうがソース管理がしやすいから、ありがたいには違いない。即断するのは早いか?まず本書をじっくり読んでみよう。

サンプルページはこのようなもの。五線譜のスコアとPythonプログラムを使ってアルゴリズムを解説しているのがわかるだろう。この例は「量子テレポーテーション実験のアルゴリズム」だ。著作権保護のため文字が読めない粗さで載せておこう。

 

量子テレポーテーションの実験だが、僕は昨年4月にこの無料サービスのスコアを使った古いサービスを使って成功している。(参照:「クラウド量子計算入門: 中山茂:(4) 全体の感想」)


Python量子プログラミング入門: 中山茂」(Kindle版

2018年6月25日刊行、146ページ

【目的】
無料のクラウド量子計算IBM QXで、最新のQISKit 0.5に対応して、Python言語を使ってクラウド量子計算を行う量子フ゜ロク゛ラミンク゛入門書です。 クラウド量子計算を行うPythonプログラムについて解説した動作確認済みの実践的で入門書です。 量子コンピュータがビジネスで使える時代になってきており、それに備えた斬新な解説入門書です。テキストでは、63例のPythonコードで分かりやすく丁寧に解説していますので、定番の量子ゲートから量子アルゴリズムを学習する教材になると期待しています。  

【概要】
IBM QXとPython開発環境から解説し、量子情報ソフト開発キットQISKit SDKのインストール方法とクラス構成、特徴を説明しています。そして、量子ゲートの基礎をPythonコート゛で実装し、コーディングについて説明しています。これらの量子ゲートを使い、量子アルゴリズムのPythonコート゛での実装、量子通信プロトコルのPythonコードでの実装、グローバー探索アルゴリズムのPythonコードでの実装、量子フーリエ変換のPythonコードでの実装、ショアの因数分解アルゴリズムのPythonコードでの実装、そして、最後に、関数傾斜推定アルゴリズムのPythonコードでの実装を行なっています。これらのPythonコードを約140頁で丁寧に解説した本格的な入門書です。このテキストで十分にPythonコードによる量子フ゜ロク゛ラミンク゛の基礎が習得できます。  

【QISKit 0.4とQISKit 0.5との量子プログラミング形式の違い】
QISKit 0.4とQISKit 0.5とで、量子プログラミング形式が大きく変わりました。しかし、基本的には、 QISKit 0.4で作成した量子コードは、QISKit 0.5上でも動作可能です。QISKit 0.4での 量子プログラミング形式は、主にQuantumProgramクラスでその中で定義さ れたメソッドでレジスタ設定や量子回路設定、実行を行なっています。しかし、QISKit 0.5では、QuantumRegisterクラスやClassicalRegisterクラ スでレジスタ設定を行い、QuantumCircuitクラスで量子回路設定、execute関数で実行を行 うことになりました。ここで、量子回路での量子ゲート関連の設定はQISKit 0.4でもQISKit 0.5でもほとんど 同じです。そのために、量子プログラミングの出だしと終了が多少変更 になったと考えます。本書での量子フ゜ロク゛ラミンク゛例は、全て最新のQISKit 0.5に対応したPythonコート゛で解説しています。   

【特徴】
現段階では量子計算ですべてができないので、Pythonによって古典的計算と量子計算とをハイブリッドで融合させることが得策です。つまり、Pythonプログラムで量子計算の得意な処理と古典的計算の得意な処理とを分けて、現在の組み合わせ最適化問題や有機化学のエネルギー計算などの現実問題を解決しようという試みである。Pythonプログラムで従来のIBM QXのクラウド量子計算ができて、なおかつ、古典的計算もそのクラウド量子計算に混ぜてプログラムできるので、クラウド量子計算の応用が膨大に広がったと考える。 たとえば、ガソリン車からゼロエミッションの電気自動車EVへの完全移行を考えた時、 EVが走行距離や充電サービスなどの問題で一気にシフトできない時には、ハイブリッド車で対応することが現実的な解決策である。そのように、Python方式も、クラウド量子計算で全ての問題が現段階では解決できない今、ハイブリッド車のようにクラウド量子計算の得意とするところと古典的計算の得意とするところとを組み合わせたハイブリッド方式 で、関数組み合わせ最適化問題や量子化学問題を解ければ、過渡的な段階では最良と考えられる。 たとえば、ショアの因数分解アルゴリズムで見られるように、難しい周期発見アルゴリズムはIBM QXの量子計算に任せ、最大公約数を求めるユークリッドの互除法は Pythonの古典的計算に任せるのが現実的な解法であると考えます。1+1を量子計算させる必要はない。
  
【著者】
中山 茂 (なかやま しげる)  京都生まれ。 京都大学大学院工学研究科博士課程修了後、上智大学、英国Reading大学、京都工芸繊維大学、兵庫教育大学、英国Oxford大学、鹿児島大学を経て、2014年に定年退職。


そして気になるのが、こちらの本。1万5千円以上する。

Python クラウド量子計算 QISKITバイブル: 中山茂」(Kindle版

2018年5月3日刊行、490ページ

【目的】
無料のクラウド量子計算IBM QXで、Python言語を使ってクラウド量子計算を行うQISKITバイブルです。 クラウド量子計算を行うPythonプログラムについて詳細に解説した動作確認済みの実践的で本格的な入門書です。 量子コンピュータがビジネスで使える時代になってきており、それに備えた斬新な解説書です。テキストでは、236例の豊富なPythonコードで徹底的に解説していますので、研究やビジネスに応用できる足がかりとなると期待しています。  

【概要】
ラビ振動から、基本量子ゲートから隠れ部分群問題、グローバー探索、量子フーリエ変換、ショアの因数分解、量子通信、シンドローム診断、量子誤り訂正、量子トンネル効果、イジングモデルの断熱量子計算、組み合わせ最適化問題など豊富なPythonコードを480頁で丁寧に解説した本格的なバイブルです。このテキストで十分にPythonコードによる量子プログラム開発の基礎・応用が習得できます。
  
【特徴】
現段階では量子計算ですべてができないので、Pythonによって古典的計算と量子計算とをハイブリッドで融合させることが得策です。つまり、Pythonプログラムで量子計算の得意な処理と古典的計算の得意な処理とを分けて、現在の組み合わせ最適化問題や有機化学のエネルギー計算などの現実問題を解決しようという試みである。Pythonプログラムで従来のIBM QXのクラウド量子計算ができて、なおかつ、古典的計算もそのクラウド量子計算に混ぜてプログラムできるので、クラウド量子計算の応用が膨大に広がったと考える。

書き下ろしPythonコード】
- ラビ振動実験 
- 重ね合わせの原理実験 
- サイモン問題の秘密キー表示 
- グローバー探索アルゴリズムの繰り返し回数変更の解発見確率のヒストグラム表示 
- 量子ゲートテレポーテーションの古典的変換器の実装 
- 位相推定問題のモジュラー累乗法の実装 
- エネルギー障壁による量子トンネル効果実験 
- イジングモデル 
- イジングハミルトニアン 
- 関数傾斜推定アルゴリズム実装 
- 論理演算の真理値表のイジングモデル
- NP完全問題例でNumber Partition問題のイジングモデル 
- NP困難問題例でMaxCut問題のイジングモデル 
- イジングハミルトニアンのエネルギー準位表示 
- ドイチ問題のイジングモデル 
- ショアの因数分解アルゴリズムでの周期表示とユークリッドの互除法計算 
- シュレディンガー方程式の実装 
- 組み合わせ最適化問題  実装 
?組み合わせ最適化問題  

【目次】
第1章 IBM QX とPython開発環境(42頁)
1-1 IBM Q体験(QX)でのQISKITとPython
1-2 Pythonのインストールと開発環境
1-3 Anacondaのダウンロードとインストール
1-4 Jupyter notebookでのPython開発環境
1-5 QISKIT SDKのインストール
1-6 QISKIT プロジェクト
1-7 QISKIT SDKによるPythonプログラミング
1-8 Python API Connector

第2章 量子情報ソフト開発キットQISKIT SDK(58頁)
2-1 QISKIT SDK
2-2 QuantumProgramクラス
2-3 ResultクラスとQuantumCircuitクラス
2-4 QISKIT SDKのその他のクラス
2-5 量子プロセストモグラフィ
2-6 パウリ基底分解による可視化
2-7 科学技術計算のPython基礎

第3章 量子ゲートのPythonコード(62頁)

第4章 量子アルゴリズムのPythonコード(22頁)
4-1 ドイチアルゴリズム
4-2 ドイチ・ジョサアルゴリズム
4-3 ベルンシュタインヴァジラニアルゴリズム
4-4 サイモンアルゴリズム

第5章 量子通信のPythonコード(34頁)

第6章 グローバーアルゴリズムのPythonコード(52頁)
6-1 グローバーの探索アルゴリズム
?6-2 データベースN=8でのグローバーアルゴリズム
6-3 複数の探索解でのグローバーアルゴリズム
6-4 4量子ビット以上でのグローバーアルゴリズム

第7章 量子フーリエ変換のPythonコード(52頁)

第8章 ショアの因数分解アルゴリズム(28頁)
8-1 古典的因数分解アルゴリズム?
8-2 量子関数の作り方
8-3 量子オラクルの作り方
8-4 ショアの因数分解アルゴリズムのため量子ゲート
8-5 関数傾斜推定アルゴリズム

第9章 量子エラーシンドローム診断(22頁)

第10章 量子誤り訂正(26頁)

第11章 量子トンネル効果の実験(10頁)
11-1 量子トンネル効果とは
11-2 ポテンシャル障壁のあるシュレディンガー方程式
11-3 量子トンネル効果の実験

第12章 イジングモデルでの断熱量子計算(32頁)
12-1 イジングモデルとは
12-2 イジングモデルの断熱量子計算
12-3 イジングモデルのハミルトニアンの量子ゲート実装
12-4 イジングモデルでの断熱量子計算の基本

第13章 組み合わせ最適化問題(33頁)
13-1 論理演算のイジングモデルでの断熱量子計算
13-2 Number Partition問題におけるイジングモデル
13-3 MaxCut問題におけるイジングモデル
13-4 ドイチ問題のイジングハミルトニアン
13-5 イジングハミルトニアンのエネルギー準位

【著者】
中山 茂 (なかやま しげる)  京都生まれ。 京都大学大学院工学研究科博士課程修了後、上智大学、英国Reading大学、京都工芸繊維大学、兵庫教育大学、英国Oxford大学、鹿児島大学を経て、2014年に定年退職。


実行環境、ガイド:

これらの本を頼りにして量子計算を試してみたい方は以下のページを開いていただきたい。無料で利用できる。

無料のクラウド量子計算IBM QX:
https://quantumexperience.ng.bluemix.net/qx/experience

IBM Q Experience, QISKit 入門:
http://quantum.classcat.com/2018/01/10/ibm-qx-uguide1/

QISKit 概要:
https://qiskit.org/documentation/ja/qiskit.html

------------------------------------
2018年10月に追記:続編が刊行された。

Python量子プログラミング入門2:中山茂」(Kindle版



関連記事:

発売情報: クラウド量子計算入門: 中山茂
https://blog.goo.ne.jp/ktonegaw/e/d360b69100fbe723c5b9410dbf3f5f4d

クラウド量子計算入門: 中山茂:(4) 全体の感想
https://blog.goo.ne.jp/ktonegaw/e/ad7dfbad69e1e196848be123e3f4ea3f

発売情報: クラウド量子計算 量子アセンブラ入門:中山茂
https://blog.goo.ne.jp/ktonegaw/e/5c9a7f62bf27a2ca214911448bbf9847

発売情報:量子プログラミングの基礎: イン・ミンシェン
https://blog.goo.ne.jp/ktonegaw/e/27e4d9a10982d4d69c0029fc4c801708

量子コンピュータ、量子アルゴリズムを学びたい高校生のために
https://blog.goo.ne.jp/ktonegaw/e/1b2940b648bda682aa27192eb8261972

量子コンピュータの発展史(リンク集)
https://blog.goo.ne.jp/ktonegaw/e/91fa592173ea1b2a6e53ae0c84323751


ブログ執筆のはげみになりますので、1つずつ応援クリックをお願いします。
にほんブログ村 科学ブログ 物理学へ

人気ブログランキングへ



 

 
コメント (3)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 低次元の幾何からポアンカレ... | トップ | 夜のウォーキング、その後11... »

3 コメント

コメント日が  古い順  |   新しい順
カシオ、グラフ電卓にもPython (やす (Krtyski))
2018-06-28 10:54:41
とねさん

この記事の主題からは逸脱しますが、フランス版fx-CG50 (Graph 90+E)には、この秋(2018年秋)にPythonアドインが登場するという情報があります。

e-Gadgetの記事:
http://egadget.blog.fc2.com/blog-entry-661.html

カシオ フランスの記事(元ネタ)
https://www.casio-education.fr/articles/cap-vers-la-programmation
(後段がPythonの記事)

海外のCasioプログラム電卓が集まるサイトでも、以前からPythonが取り上げられ、個人が作ったアドインが公開されたりしていました。そしてついにカシオ純正アドインとしてPythonが登場するといった流れです。

電卓以外でも、Python の話を聞くことが増えています。

何故Pythonなのか?
が気になっています。

以前PC版(Windows版)を試し時入れて、チョコットだけ触ってみたことがあります。CやC++に近い感じがしていて、(標準?)ライブラリ次第のところもC/C++と同じのように思います。

PCの世界では、大規模データ扱いの面で、java が改善されないなか、C#がメインになりつつ有ります。欧米メーカーのハードウェアを使うためのSDKは、確実にC#へ移行してきています。

そこで興味を持って、実際にC#でチョットしたツールを作ってみた感じでは、なるほどC#は使いやすく、バグの入る余地が減っていて、生産性を上げられそう...という印象を持ちました。

初めてC#で作った習作(中高年のためのデジタル時計)も、とても簡単に欲しい機能の実装ができたので、ご参考まで...
https://egadget2.web.fc2.com/archives/Src_files/MyClock.html
(習作なのでソース付き、パンツの中を見られる感じですが、初めてC#で作ったものなので、ユーザーに迷惑をかけないために潔く公開。でも実際に私や友人の使うPC達のデスクトップで、使い続けていて、問題なし)

今、何故Pythonなのかについて、私の勝手な推測としては、言語体系を比較的コンパクトに作れて、ライブラリ導入による拡張性の良さが、Pythonにあるのではないか?

とねさんの記事にお書きのように、量子プログラミング特有のライブラリさえ作れば、従来のC言語系の文法がそのまま使えるという利便性はポイントが高いと思います。

なら、なぜC/C++でなくPythonなのか?
とねさんは、どのようにお考えでしょうか?

返信する
Re: カシオ、グラフ電卓にもPython (とね)
2018-06-28 19:36:20
やすさんへ
フランスは進んでいますね~。fx-JP500にプログラム機能が追加されることは知りませんでした。

Casio Basicはすたれていくのでしょうかねぇ。寂しい気がします。なぜC/C++でなくPythonなのか?については次のように僕は考えています。

1) 今後、Pythonが使えるエンジニアが増えていくこと
2) AIなどではPythonが主流になっていくこと
3) Java、Rubyなどが世界中でユーザーが増えるとは思えないこと(特にJavaはプログラムで表示される単語長が長いから電卓の狭い画面には向かない)
4) C/C++はどうしても組み込み系の言語の印象があることで却下
5) C/C++は命令の終わりがセミコロンなので、電卓で毎回入力させるのはうっとうしいから
6) 消去法でPythonになったから

このように思いますが、いかがでしょうか?C#はほとんど学んでいませんが、電卓の狭い画面に向いている言語でしょうか?
返信する
その後のCasio Pythonについて (やす(Krtyski))
2021-03-31 15:42:06
とねさん

もう2年近い前の記事で、今更ですが fx-CG50 に搭載されたPythonモードに関するアップデートです。

最初に fx-CG50 のOSが3.40にアップデートされ、そこに Pythonモードが搭載されました。組み込み用 miccroPython をCasioでさらにサブセット版にして fx-CG50 に搭載したもの。

入出力関係が恐ろしくお粗末で input() と print() しかない状態。Casio Basic でできることが Casio Pythonでは全くできない、つまりこれまで書きためた Casio Basicソースを Casio Pythonに移植すらできないのです。興味が沸かず放置していました。

すると昨年 OS3.50 にアップデートされた際、CasioPythonもアップデートされ、Casio独自のグラフィックモジュールが追加され、その他一部の隠し関数(method)も公になり、やっとこさスクリプトを書いてみようと想わせるものになりました。

それでも、Casio Basicのソースから移植不可能なものが残っています。キー入力取得の方法が提供されていないのが、最大の問題で、入力にはシェル画面で input() を使うしかないというお粗末さは残っています。

それでも、なんとかサンプルスクリプトを作ってみています。フランスでは新たなモジュール開発の動きがあるので、いずれ国際版(日本版含む)に反映されると考え、Casio Pythonの連載を私のブログで始めています。
https://egadget.blog.fc2.com/blog-entry-726.html

その後、モノクロ液晶の fx-9860GIII (欧州向けモデル) や fx-9750GIII (北米向けモデル) にも Pythonモードが搭載されています。

なお、PCでも Pythonで使ってみています。友人の大学教授(物理の人)に言わせれば、今時電卓など不要で、PCのPythonで電卓代わりに15桁精度ででガルに計算できて、これで十分、とのことです。

これには納得するところがありますが、分野によって評価が分かれるように想います。

実際に、Casio Basic からの移植を行うと、Casio Python での処理速度がとても速いことが分かります。これだけでも意味があると想います。

何故今 Python か?という当時の私の問いに、今では自分で答えられるようになったかな、と想います。

詳しくなくても使いやすい、詳しい人やプロには様々なライブラリを使って、高品質なプログラムが書ける。これがユーザー人口を増やす原動力だろうと想います。また機械学習の分野では収主力言語になっているのもメジャー言語になる大きな要因だろうと想います。
返信する

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

コンピュータ」カテゴリの最新記事