内容紹介
これから必ずくる量子コンピューティングの時代に備えるためのバイブル
本書は、IT分野のプログラマやエンジニアを主な読者対象として、その方々にとって特に重要な量子コンピューティングの基礎をわかりやすく解説した書籍です。
量子コンピュータについては、多くの人がクラウド越しで実物に触れられるようになった今でも、物理の専門書から学ぶか、チュートリアルやハンズオンのウェブ記事を読んで勉強するかしかありません。これから量子の力をフル活用できる人や、量子情報の考え方を利用してコンピュータサイエンスをよくしていく人材が必要になるというのに、入門書と専門書の間には大きな隔たりがあります。
本書はこれから必ずくる量子コンピュータの時代で活躍されるであろうIT分野のプログラマやエンジニアの皆様にとって、特に知っておくべき概念をできる限り網羅しています。量子コンピュータの背景、その原理や応用についても高校数学で学んだ内容を起点に数式も示しつつ、しっかりと解説しています。
このような方におすすめ
システムエンジニアリング、情報工学の若手技術者・研究者
情報工学系の大学院生
目次
主要目次
第1章 なぜ量子コンピュータ?
第2章 量子コンピュータの基本
第3章 量子計算の基本パッケージ
第4章 量子アルゴリズム
第5章 NISQ量子アルゴリズム
第6章 量子コンピュータのエラー訂正
第7章 量子コンピュータのプログラミング
第8章 量子コンピュータのアーキテクチャ
第9章 量子コンピューティングでひらく未来
詳細目次
第1章 なぜ量子コンピュータ?
1.1 とても難しい問題を高速に解く
1.2 ポストムーア時代
1.3 量子コンピュータの歴史
1.3.1 誕生前夜~量子チューリングマシン
1.3.2 ショアのアルゴリズム~量子の冬
1.3.3 NISQ時代~量子超越
1.4 今の量子コンピュータで何ができる?
第2章 量子コンピュータの基本
2.1 量子ビットとは?
2.1.1 ブロッホ球とブラケット記法
2.1.2 量子ビットの不思議な性質
2.2 量子ゲートで計算する
2.2.1 1量子ビットゲート
2.2.2 2量子ビットゲート
2.3 量子回路を書いてみよう
2.3.1 量子回路の書き方
2.3.2 量子コンピュータ版NANDゲート(Toffoliゲート)
2.3.3 量子コンピュータ版足し算回路
2.3.4 量子コンピュータ版算術論理演算
2.3.5 万能量子計算
2.4 コピーとテレポーテーション
2.4.1 量子もつれ(エンタングルメント)とは?
2.4.2 量子データはコピーできない?
2.4.3 量子データを転送する
2.4.4 量子ゲート操作を転送する
2.5 補助量子ビットと逆演算
2.6 量子コンピュータにデータを入力する
2.6.1 ディジタル入力(基底エンコーディング)
2.6.2 アナログ入力(振幅エンコーディング)
2.6.3 量子ゲートにデータを埋め込む
2.7 量子コンピュータのデータ前処理
2.7.1 量子ランダムアクセスメモリ(QRAM)とは?
2.7.2 QRAMを使った振幅エンコーディング
2.7.3 データ木構造を使った振幅エンコーディング
2.8 もっと一般の量子状態を扱うには
第3章 量子計算の基本パッケージ
3.1 量子計算の基本戦略
3.2 行列の固有値推定(アダマールテスト)
3.3 内積の計算(スワップテスト)
3.4 位相を上手に使う
3.4.1 離散フーリエ変換(量子フーリエ変換)
3.4.2 行列の固有値推定(量子位相推定)
3.5 振幅を上手に使う
3.6 量子力学をシミュレーションする
3.6.1 シュレディンガー方程式を解く
3.6.2 変分法で最適化問題に帰着して解く
3.7 データ行列を扱う
第4章 量子アルゴリズム
4.1 素因数分解(ショアのアルゴリズム)
4.1.1 位数発見問題として解く
4.1.2 量子位数発見サブルーチン
4.1.3 具体例:21の素因数分解
4.2 量子化学計算
4.2.1 行列の固有値問題として解く
4.2.2 近似精度を上げる
4.2.3 量子位相推定サブルーチンとFull-CI計算
4.2.4 量子化学計算の前処理
4.2.5 量子回路を構築する
4.2.6 具体例:水素分子
4.3 探索と最適化
4.3.1 概要
4.3.2 グローバーの検索アルゴリズム
4.3.3 具体例:充足可能性問題
4.4 量子コンピュータと機械学習
4.4.1 機械学習
4.4.2 量子コンピュータで逆行列を高速に求める
4.4.3 さまざまな量子機械学習アルゴリズム
4.4.4 量子線形回帰
4.4.5 量子サポートベクタマシン
4.4.6 量子主成分分析
4.5 計算複雑性理論と量子アルゴリズム
4.5.1 問題の難しさを考える
4.5.2 量子コンピュータ版の複雑性クラス
4.5.3 量子コンピュータのほうが速いことを証明するには?
第5章 NISQ量子アルゴリズム
5.1 エネルギー最小化問題として解く
5.1.1 VQE と量子化学計算
5.1.2 QAOA と組合せ最適化
5.1.3 組合せ最適化問題のハミルトニアン
5.2 時間発展シミュレーションをバイパスする
5.3 パラメータ付き量子回路による機械学習
5.3.1 量子回路学習とニューラルネット
5.3.2 いろいろなパラメータ付き量子回路モデル
5.3.3 量子コンピュータ向きの機械学習タスクは…?
5.3.4 勾配を計算する
第6章 量子コンピュータのエラー訂正
6.1 符号化と論理ビット
6.2 パリティチェックでエラーを見つける
6.3 ビット・位相反転の両方に対応する(ショアの符号)
6.4 量子誤り訂正符号の標準的な作り方
6.4.1 スタビライザ形式とは?
6.4.2 スタビライザ符号による量子誤り訂正
6.4.3 クリフォード群と万能量子計算
6.4.4 魔法状態とは?
6.5 トポロジカル符号は奇妙なアイディア?
6.5.1 トーラスを“ひらき”にする(表面符号)
6.5.2 5量子ビットの表面符号
6.5.3 誤り耐性を大きくするには?
6.5.4 しきい値定理と誤り耐性量子計算
6.6 論理ゲート操作を作ろう
6.6.1 論理1量子ビットゲート操作
6.6.2 論理2量子ビットゲート操作(Lattice surgery)
第7章 量子コンピュータのプログラミング
7.1 抽象化レイヤで整理する
7.2 古典に学ぶ量子プログラミング
7.2.1 高級言語とハードウェア記述言語(HDL)
7.2.2 ハードウェアとソフトウェアをつなぐ
7.2.3 量子コンピュータ=量子アクセラレータ?
7.3 量子プログラミング言語
7.3.1 高級言語の利点は何でしょう?
7.3.2 命令型量子プログラミング言語
7.3.3 関数型量子プログラミング言語
7.4 量子コンパイラ
7.4.1 量子コンパイラと古典コンパイラ
7.4.2 静的コンパイル
7.4.3 動的コンパイル
7.4.4 ゲート分解・量子回路最適化
7.4.5 量子プログラムをデバッグするには
7.5 量子ソフトウェア開発基盤
第8章 量子コンピュータのアーキテクチャ
8.1 量子コンピュータ実現技術が満たすべき基準
8.2 量子ビット・量子ゲートを実現する技術
8.3 マイクロアーキテクチャ
8.3.1 ヘテロなシステムの相互接続
8.3.2 “古典”をもって量子を制する!?
8.3.3 量子誤り訂正がマイクロアーキテクチャを決める
8.4 大規模システムの構築に向けて
8.4.1 2048ビットの数を素因数分解するには
8.4.2 システムアーキテクチャ
第9章 量子コンピューティングでひらく未来
9.1 今後の技術発展をウォッチする
9.1.1 量子超越の実験検証
9.1.2 量子コンピュータのベンチマーク
9.1.3 量子版ムーアの法則
9.2 量子コンピュータサイエンス!?
9.3 量子コンピュータ実現までのマイルストーン
9.4 量子インターネット
9.5 量子前提社会に向けて
続きを見る