「
量子プログラミングの基礎: イン・ミンシェン」 -
出版社のページ
内容紹介:
本書は量子プログラミング分野について詳細かつ体系的な解説を与えることを意図している。特定の言語や技術に焦点を当てるよりも,基本的な概念,手法,数学的ツールに重点を置く。量子力学と量子計算の基本的知識から始めて,さまざまな量子プログラムの構成要素や一連の量子プログラミングモデルを詳しく紹介し,さらに量子プログラムの意味論や論理,検証解析技術を体系的に論じる。プログラミング言語に通じた人が理解しやすいよう,詳細を具体的に提示して可能な限り自己完結するように努めた。
2017年4月7日刊行、456ページ。
著者について:
イン・ミンシェン(Mingsheng Ying)HP:
http://quantum-lab.org/mingsheng/
Mingsheng Ying (h-index: 34) is currently a Distinguished Professor at the University of Technology Sydney (UTS) and Research Director of the Center for Quantum Computation and Intelligent Systems, at UTS. He was the Cheung Kong Chair Professor, in the Department of Computer Science and the Scientific Director of the National Key Laboratory of Intelligent Technology and Systems at Tsinghua University. His research interests are quantum computation and quantum information, programming language theory and artificial intelligence. In 2008 he received The National Science and Technology Award for contributions in computer science from China.
He is an Associate Editor of Artificial Intelligence (Elsevier) and he has published more than 100 papers in top international journals and conferences such as ACM Transactions on Programming Languages and Systems, Artificial Intelligence, IEEE Transactions on Information Theory, IEEE Transactions on Software Engineering, Information and Computation, Journal of Computer and System Sciences, Physical Review Letters, POPL, CONCUR, IJCAI. He is also the author of the book Topology in Process Calculus - Approximate Correctness and Infinite Evolution of Concurrent Programs (Springer 2001).
「
クラウド量子計算入門: 中山茂」で量子アルゴリズムを学んでいるところなのだが、気になる本が発売されるそうなので発売情報としてお知らせすることにした。
プログラミング言語の設計や開発をするための本は、易しいものから専門家向けのものまでいくつも出版されているが、それらはすべて現在のコンピュータ用のものだ。でも本書は違う。なんと量子コンピュータ用のプログラミング言語の設計方法やプログラミングを解説した本である。本の紹介ツイートを見たとき「ええっ!何それ??」と目を疑った。ツイートはてっきりエイプリルフールのネタかと。。。
早すぎる。だって今はやっと量子論理ゲートを組み合わせてひとつずつアルゴリズムを組み立てている段階でしょ?それを現在のコンピュータにたとえるならば学研の「
電子ブロックFX-SYSTEM FX-マイコンR-165」や「
4ビットマイコン GMC-4」の段階にもなっていないわけだから。これらのマイコンは16進数の機械語でプログラミングしてから実行するコンピュータだ。
FX-SYSTEM FX-マイコンR-165と4ビットマイコン GMC-4(クリックで拡大)
いま学んでいる五線譜のような「
IBMの量子コンピュータ」のスコアにドラッグ&ドロップして並べた量子アルゴリズムを眺めていると、やはりこれは古典的4ビットマイコン以前のやり方だと思った。
僕が量子論理ゲートを配置していく操作は「
結線論理(ワイヤードロジック)」あるいは「
ランダム論理」と同じようなものだ。なぜなら色のついた四角形であらわされるひとつひとつの量子論理ゲートが古典コンピュータのAND回路、OR回路のような論理ゲートに対応しているわけだから。
ランダム論理というのはICがまだ普及していなかった1960年代、卓上電卓がようやく登場したころに使われていた方法のこと。大多数のメーカーが電卓の回路として採用していたのは「
ランダム論理」というもので計算手順をすべてトランジスターやコンデンサ、抵抗やダイオードを使って組み上げたAND、OR、NOT、NORなどの論理ゲートを組み合わせて配線するものだった。電卓は何かキーが押されるたびに内部の状態が推移していくのだが、その状態推移や計算そのものをすべて電子素子の回路として実現していたわけである。電子回路のトポロジーと部品そのものが加減乗除のアルゴリズムを実行していたのだ。そしてアルゴリズムごとに回路も違ってくる。いま学んでいる量子アルゴリズムで章ごとに回路を組みなおしているのと同じことだ。(参考記事:「
電卓を作りたいという妄想」)
ほとんどの電卓メーカーがこのランダム論理を採用していたが、なかにはビジコン社のように現在のコンピュータのような「プログラム論理(Program Logic)」を採用した電卓を開発、販売しているメーカーもあった。ビジコン社の電卓はキー操作による状態推移や計算自体をマクロ化したプログラム論理を採用していた。つまりコンピュータ化しやすい設計方針だったのである。この手法が後にCPUやマイコンの誕生をもたらしたのだ。このことは「
マイクロコンピュータの誕生―わが青春の4004:嶋正利」という記事で紹介したことがある。
もうひとつ気付いたことがある。「
ファインマン計算機科学:ファインマン, A.ヘイ, R.アレン」の第5章の「可逆計算と計算の熱力学」に書かれていることだ。ファインマン先生はコンピュータの消費電力を最小限に抑えるために可逆な論理回路に基づく計算機の必要性を説いている。CPUから発生する熱は電流が流れることによるジュール熱の他、不可逆な計算処理に伴う熱エネルギーなのである。代表的な論理回路であるAND回路やOR回路は次の図に示すとおり2つのAとBという入力について計算を行なって1つの出力Xを得る。
これは情報から熱という形でエネルギーを取り出せることを意味している。
情報をエネルギーに変換することに成功!(2010年11月)
https://www.s.u-tokyo.ac.jp/ja/press/2010/42.html
このことの本質は「あらゆる不可逆な物理現象は熱の発生を伴う。」という「
熱力学第2法則」だ。両手をこすったときの摩擦によって熱が出るのもその一例である。
「計算する」という現象も不可逆過程だ。「3+2=5」のような2項演算はすべて不可逆計算だということである。つまり3と2という2つの入力に対して5という1つの出力を得るわけだが、出力の5から入力が3と2だということが再現できない。もしかすると入力が4と1の可能性もあるわけだから。計算することで情報が失われているのである。そして失われた情報は熱として放出されるのだ。(人間が暗算で3+2=5を計算するときも同様で熱が放出されている。)
しかし、量子コンピュータの回路を見ると各ゲートの入力と出力の数は等しい。量子論理ゲートを五線譜上に配置しているだけだから。つまりこのコンピュータはファインマン科学の本で説明されている意味での「可逆コンピュータ」なのである。
ともあれ現在の量子コンピュータはこのように機械語以前の原始的な段階だということはおわかりだろう。もちろんアルゴリズムごとに量子ゲートを配置するのでは面倒極まりない。一度に実行できる量子ビット数が増え、アルゴリズムが複雑化すればお手上げになるのは目に見えていいる。
だから現在のコンピュータのC言語、Java言語のように人が理解できるプログラミング言語が量子コンピュータにも必要になるわけだ。そしてそのプログラミング言語はどのようなものであるべきなのか。
量子アルゴリズムは古典アルゴリズムと全く違う。量子プログラミング言語も現在のプログラミング言語とはずいぶん違うものになるのだろう。
将来を見据えて量子コンピュータ用のプログラミング言語のもとになる概念や理論、言語設計、プログラミングモデルを解説しているのが本書なのである。2003年に「
Structured Quantum Programming」というPDF文書が書かれていたようだが、翻訳のもとになった原書も含めて、この分野の専門書が市販本として刊行されるのは初めてのことだと思う。章立ては以下のとおり。
-------------------------------------
I 量子プログラミングの概要と準備
-------------------------------------
1 はじめに
2 予備知識
--------------------------------------
II 古典的制御をもつ量子プログラム
--------------------------------------
3 量子プログラムの構文と意味論
4 量子プログラムの論理
5 量子プログラムの解析
---------------------------------------
III 量子的制御をもつ量子プログラム
---------------------------------------
6 量子的場合分け文
7 量子的再帰
------------------
IV 今後の展望
------------------
8 今後の展望
記事のいちばん下に載せた詳細目次を見ると「
ヒルベルト空間」や「
フォック空間」などの数学用語が目に入る。どちらも関数解析という分野の数学的な空間で、それぞれ量子力学、量子場(多粒子系の量子力学)を数学的に定式化するものだ。どちらも数理物理という分野である。なぜフォック空間のようなものが必要になるのかなと思ったが、目次を見ると「量子的再帰プログラム」に使われるようだ。
ヒルベルト空間に関する教科書では次の記事を書いたことがある。
ヒルベルト空間と量子力学:新井朝雄
http://blog.goo.ne.jp/ktonegaw/e/fa4d9da634afbdb8a9dfc1ac162f7afe
発売情報: ヒルベルト空間と量子力学 改訂増補版:新井朝雄
http://blog.goo.ne.jp/ktonegaw/e/84313bfed4331fe0c1343a55a531809a
量子力学の数学的構造 I:新井朝雄、江沢洋
http://blog.goo.ne.jp/ktonegaw/e/196b59dc50fca361ba523036e7eeb908
量子力学の数学的構造 II:新井朝雄、江沢洋
http://blog.goo.ne.jp/ktonegaw/e/a4ef01e94a8c0384cec353ebe4d542e4
フォック空間は1粒子ヒルベルト空間のテンソル積の直和で作られるヒルベルト空間として定義されるものだ。まだ読んでいないが、次の本で学ぶことができる。
フォック空間と量子場(上):新井朝雄
https://www.nippyo.co.jp/shop/book/1356.html
https://www.nippyo.co.jp/shop/book/6224.html
フォック空間と量子場(上):新井朝雄
https://www.nippyo.co.jp/shop/book/1357.html
https://www.nippyo.co.jp/shop/book/7190.html
このようなわけで、本書を読み解くためには量子コンピュータだけでなく量子力学やそれを定式化するヒルベルト空間、フォック空間などの数学、プログラミング言語設計と開発など多方面の知識が必要だ。なかなか手ごわそうである。
翻訳のもとになった英語版は昨年3月に刊行されたばかり。
米国アマゾンで見てもまだ読者レビューが書かれていないどころか、星マークもつけられていない。買うのには少し勇気がいる。
「
Foundations of Quantum Programming (2016): Mingsheng Ying」(
Kindle版)
このように未来の技術を先取りした本を、いち早く紹介するために日本語版の翻訳をしてくださった
川辺治之氏(
@p314159265)に感謝したい。ネットで調べるとわかるが、たくさんの本をこれまでに翻訳されている方だ。
川辺治之氏の訳書:
Amazonで検索
未来のプログラミングの世界を垣間見たい方は、ぜひお買い求めいただきたい。(レベルが高い本のようだから、書店で立ち読みしてからにしたほうがよいかもしれないが。)
発売前なので、今日の記事の前半は本書の内容の周辺の話になってしまった。本の内容は以下の詳細目次から想像していただきたい。
関連記事:
発売情報: クラウド量子計算入門: 中山茂
http://blog.goo.ne.jp/ktonegaw/e/d360b69100fbe723c5b9410dbf3f5f4d
量子コンピュータ、量子アルゴリズムを学びたい高校生のために
http://blog.goo.ne.jp/ktonegaw/e/1b2940b648bda682aa27192eb8261972
ファインマン計算機科学:ファインマン, A.ヘイ, R.アレン
http://blog.goo.ne.jp/ktonegaw/e/4f7f453019fd463ed2bfdeaa7b288d79
マイクロコンピュータの誕生―わが青春の4004:嶋正利
http://blog.goo.ne.jp/ktonegaw/e/fe74cdf21a2be8999cb101cc62018f8b
安田寿明先生の「マイ・コンピュータ」3部作(ブルーバックス)
http://blog.goo.ne.jp/ktonegaw/e/e54e4eb38380ff2ff2f51747ca7b4f75
ブログ執筆のはげみになりますので、1つずつ応援クリックをお願いします。
「
量子プログラミングの基礎: イン・ミンシェン」 -
出版社のページ
-------------------------------------
I 量子プログラミングの概要と準備
-------------------------------------
1 はじめに
1.1 量子プログラミング研究のおおまかな歴史
1.1.1 量子プログラミング言語の設計
1.1.2 量子プログラミング言語の意味論
1.1.3 量子プログラムの検証と解析
1.2 量子プログラミングへのアプローチ
1.2.1 データの重ね合わせ―古典的制御をもつ量子プログラム
1.2.2 プログラムの重ね合わせ―量子的制御をもつ量子プログラム
1.3 本書の構成
2 予備知識
2.1 量子力学
2.1.1 ヒルベルト空間
2.1.2 線形作用素
2.1.3 ユニタリ変換
2.1.4 量子測定
2.1.5 ヒルベルト空間のテンソル積
2.1.6 密度作用素
2.1.7 量子操作
2.2 量子回路
2.2.1 基本的定義
2.2.2 1量子ビットゲート
2.2.3 制御ゲート
2.2.4 量子マルチプレクサ
2.2.5 量子ゲートの万能性
2.2.6 回路中での測定
2.3 量子アルゴリズム
2.3.1 量子並行性と量子干渉
2.3.2 ドイチュ-ジョザのアルゴリズム
2.3.3 グローバーの探索アルゴリズム
2.3.4 量子ウォーク
2.3.5 量子ウォーク探索アルゴリズム
2.3.6 量子フーリエ変換
2.3.7 位相推定
2.4 文献等についての補足
--------------------------------------
II 古典的制御をもつ量子プログラム
--------------------------------------
3 量子プログラムの構文と意味論
3.1 構文
3.2 操作的意味
3.3 表示的意味
3.3.1 意味関数の基本性質
3.3.2 量子プログラムの意味領域
3.3.3 ループの意味関数
3.3.4 量子変数の変更とアクセス
3.3.5 停止確率と発散確率
3.3.6 量子操作としての意味関数
3.4 量子プログラミングにおける古典的再帰
3.4.1 構文
3.4.2 操作的意味
3.4.3 表示的意味
3.4.4 不動点による特徴づけ
3.5 例を用いた説明:グローバーの量子探索
3.6 補題の証明
3.7 文献等についての補足
4 量子プログラムの論理
4.1 量子述語
4.1.1 量子最弱事前条件
4.2 量子プログラムのフロイド-ホーア論理
4.2.1 正当性論理式
4.2.2 量子プログラムの最弱事前条件
4.2.3 部分正当性の証明系
4.2.4 全正当性の証明系
4.2.5 例による説明:グローバーのアルゴリズムの正当性
4.3 量子的最弱事前条件の可換性
4.4 文献等についての補足
5 量子プログラムの解析
5.1 量子的whileループの停止性の解析
5.1.1 ユニタリ変換を本体とする量子的whileループ
5.1.2 一般の量子的whileループ
5.1.3 平均実行時間の計算例
5.2 量子グラフ理論
5.2.1 基本的定義
5.2.2 底強連結成分
5.2.3 状態ヒルベルト空間の分解
5.3 量子マルコフ連鎖の到達可能性解析
5.3.1 到達可能性確率
5.3.2 反復到達可能性確率
5.3.3 永続性確率
5.4 補題の証明
5.5 文献等についての補足
---------------------------------------
III 量子的制御をもつ量子プログラム
---------------------------------------
6 量子的場合分け文
6.1 古典的場合分け文から量子的場合分け文へ
6.2 量子的場合分け文をもつ言語QuGCL
6.3 量子操作のガード付き合成
6.3.1 ユニタリ作用素のガード付き合成
6.3.2 作用素値関数
6.3.3 作用素値関数のガード付き合成
6.3.4 量子操作のガード付き合成
6.4 QuGCLプログラムの意味論
6.4.1 古典的状態
6.4.2 QuGCLの準古典的意味論
6.4.3 純粋量子的意味論
6.4.4 最弱事前条件の意味論
6.4.5 例
6.5 量子選択
6.5.1 古典的選択から確率的選択を経て量子選択へ
6.5.2 確率的選択の量子的実装
6.6 代数的規則
6.7 例による説明
6.7.1 量子ウォーク
6.7.2 量子位相推定
6.8 考察
6.8.1 量子操作のガード付き合成の係数
6.8.2 部分空間をガードとする量子的場合分け文
6.9 補題,命題,定理の証明
6.10 文献等についての補足
7 量子的再帰
7.1 量子的再帰プログラムの構文
7.2 再帰的量子ウォーク
7.2.1 再帰的量子ウォークの仕様
7.2.2 いかにして量子的再帰式を解くか
7.3 第二量化子
7.3.1 多粒子状態
7.3.2 フォック空間
7.3.3 フォック空間の観測量
7.3.4 フォック空間の時間発展
7.3.5 粒子の生成と消滅
7.4 自由フォック空間における再帰式の解
7.4.1 自由フォック空間の作用素の意味領域
7.4.2 プログラム図式の意味汎関数
7.4.3 不動点を用いた意味論
7.4.4 構文的近似
7.5 対称性および反対称性の回復
7.5.1 対称化汎関数
7.5.2 量子的再帰プログラムの意味関数の対称化
7.6 量子的再帰の主量子系の意味論
7.7 例による説明:再帰的量子ウォーク
7.8 (量子的制御をもつ)量子的whileループ
7.9 文献等についての補足
------------------
IV 今後の展望
------------------
8 今後の展望
8.1 量子プログラムと量子機械
8.2 量子プログラミング言語の実装
8.3 関数型量子プログラミング
8.4 量子プログラムの圏論的意味論
8.5 並列量子プログラムから量子的並列性へ
8.6 量子プログラミングにおける量子もつれ
8.7 量子系のモデル検査
8.8 物理学への量子プログラミングの適用
参考文献
索引