内容紹介
ブラウザで動くシミュレータで量子プログラミングを実際に試して理解できる!
量子コンピュータによって何が可能なのか、何によってより強力になるのか、解決できる問題を特定する方法についての理解を深めることを目的としています。概念的な記述が多い他の量子コンピュータの本とははっきり一線を画し、あくまでも実践に主軸を置き、著者たちが作ったシミュレータを利用してブラウザさえあれば試すことができという、実践的なアプローチが特徴的です。量子コンピュータのプログラミングに必要な知識とツールとスキルをコンパクトにまとめ、実践的な観点から説明します。
このような方におすすめ
研究者、学生、プログラマ、量子コンピュータに興味がある人
目次
詳細目次
まえがき
1章 はじめに
1.1 基礎知識
1.2 QPUとは何か?
1.3 実践的アプローチ
1.3.1 QCEngineことはじめ
1.4 QPU固有の命令
1.4.1 シミュレータの限界
1.4.2 ハードウェアの制限
1.5 QPU対GPU:共通する特徴
Ⅰ部 QPUプログラミング
2章 単一キュビット
2.1 物理キュビットの概要
2.2 円表示とは
2.2.1 円の面積
2.2.2 円の回転
2.3 基本のQPU演算
2.3.1 QPU命令:NOT
2.3.2 QPU命令:HAD
2.3.3 QPU命令:READ
2.3.4 QPU命令:WRITE
2.3.5 ハンズオン:完全なランダムビット
2.3.6 QPU命令:PHASE(θ)
2.3.7 QPU命令:ROTX(θ)およびROTY(θ)
2.4 COPY:失われた演算
2.5 QPU演算の組み合わせ
2.5.1 QPU命令:ROOT-of-NOT
2.6 ハンズオン:量子スパイハンター
2.7 結論
3章 多重キュビット
3.1 多重キュビットレジスタの円表示
3.2 多重キュビットレジスタを描く
3.3 多重キュビットレジスタでの単一キュビット演算
3.3.1 多重キュビットレジスタの中の単一キュビットの読み取り
3.4 たくさんのキュビットを可視化する
3.5 QPU命令:CNOT
3.6 ハンズオン:共有されるランダムさのためにベルペアを利用する
3.7 QPU命令:CPHASEとCZ
3.7.1 QPUトリック:位相キックバック
3.8 QPU命令:CCNOT(トフォリゲート)
3.9 QPU命令:SWAPとCSWAP
3.9.1 スワップテスト
3.10 条件付き演算を構築する
3.11 ハンズオン:ランダムさを遠隔制御する
3.12 結論
4章 量子テレポーテーション
4.1 ハンズオン:テレポートしてみよう
4.2 プログラムのチュートリアル
ステップ1:もつれたペアを作る
ステップ2:積荷キュビットを準備する
ステップ3.1:積荷キュビットをもつれたペアにリンクする
ステップ3.2:積荷キュビットを重ね合わせ状態にする
ステップ3.3:アリスのキュビットを両方とも読み出す
ステップ4:受け取って、変換する
ステップ5:結果を確かめる
4.3 結果を解釈する
4.4 テレポーテーションは実際にどのように用いられるか?
4.5 有名な「テレポーテーションデバイスの事故」で楽しむ
Ⅱ部 QPUプリミティブ
5章 量子算術演算と量子論理演算
5.1 奇妙な相違点
5.2 QPUでの算術演算
5.2.1 ハンズオン:インクリメント演算子とデクリメント演算子の構築
5.3 2つの量子整数の足し算
5.4 負の整数
5.5 ハンズオン:より複雑な数学
5.6 本物の量子性を獲得する
5.6.1 量子条件付き実行
5.6.2 位相エンコードされた結果
5.7 可逆性とスクラッチキュビット
5.8 アンコンピュートする
5.9 ブール論理演算をQPU演算にマッピングする
5.9.1 基本的な量子論理ゲート
5.10 結論
6章 振幅増幅
6.1 ハンズオン:位相と大きさの変換
6.2 振幅増幅の反復
6.3 さらに反復する?
6.4 複数成分が反転された場合
6.5 振幅増幅を使う
6.5.1 総和を見積もるための振幅増幅とQFT
6.5.2 振幅増幅で従来型アルゴリズムを高速化する
6.6 QPUの内部
6.6.1 感覚を養う
6.7 結論
7章 QFT:量子フーリエ変換
7.1 隠れたパターン
7.2 QFT、DFT、FFT
7.3 QPUレジスタの周波数
7.4 DFT
7.4.1 実数および複素数のDFT入力
7.4.2 何でもDFTしてみよう
7.5 QFTを使う
7.5.1 QFTは高速
7.6 QPUの内部
7.6.1 感覚を養う
7.6.2 演算ごとに調べる
7.7 結論
8章 量子位相推定
8.1 QPU演算について学ぶ
8.2 固有位相は有用な情報を提供する
8.3 位相推定は何を行うか?
8.4 位相推定の使い方
8.4.1 入力
8.4.2 出力
8.5 注意事項
8.5.1 出力レジスタのサイズを選択する
8.5.2 計算量
8.5.3 条件付き演算
8.6 実際の位相推定
8.7 QPUの内部
8.7.1 感覚を養う
8.7.2 演算ごとに調べる
8.8 結論
9章 データの量子表現
9.1 非整数データ
9.2 QRAM
9.3 ベクトルエンコーディング
9.3.1 振幅エンコーディングの制限
9.3.2 振幅エンコーディングと円表示
9.4 行列のエンコーディング
9.4.1 QPU演算は行列をどのように表現できるか?
9.4.2 量子シミュレーション
Ⅲ部 QPUアプリケーション
10章 量子探索
10.1 位相論理演算
10.1.1 基本的な位相論理演算を構築する
10.1.2 複雑な位相論理表現を構築する
10.2 論理パズルを解く
10.2.1 子猫とトラに関する問題
10.3 充足可能性問題を解くための一般的なレシピ
10.3.1 ハンズオン:充足可能な3-SAT問題
10.3.2 ハンズオン:充足不可能な3-SAT問題
10.4 従来型アルゴリズムの高速化
11章 量子スーパーサンプリング
11.1 QPUはコンピュータグラフィックスにおいてどのように役立つのか?
11.2 従来型のスーパーサンプリング
11.3 ハンズオン:位相エンコーディングされた画像を計算する
11.3.1 QPUピクセルシェーダ
11.3.2 描画にPHASEを用いる
11.3.3 曲線を描く
11.4 位相エンコーディングされた画像をサンプリングする
11.5 さらに興味深い画像
11.6 スーパーサンプリング
11.7 QSS対モンテカルロサンプリング
11.7.1 QSSはどのように動作するか
11.8 色を追加する
11.9 結論
12章 ショアの素因数分解アルゴリズム
12.1 ハンズオン:QPUでショアのアルゴリズムを使う
12.2 ショアのアルゴリズムが行うこと
12.2.1 本当にQPUは必要か?
12.2.2 量子的なアプローチ
12.3 整数15の素因数分解を1ステップずつ行う
ステップ1:QPUレジスタの初期化
ステップ2:量子重ね合わせへの拡張
ステップ3:条件付きの2の乗算
ステップ4:条件付きの4の乗算
ステップ5:量子フーリエ変換
ステップ6:結果を読み取る
ステップ7:デジタル論理演算
ステップ8:結果を確認する
12.4 注意事項
12.4.1 剰余を計算する
12.4.2 時間対空間
12.4.3 2以外の互いに素な整数
13章 量子機械学習
13.1 連立線形方程式を解く
13.1.1 連立線形方程式の記述と解法
13.1.2 QPUで連立線形方程式を解く
13.2 量子主成分分析
13.2.1 従来型の主成分分析
13.2.2 QPUを使ったPCA
13.3 量子サポートベクターマシン
13.3.1 従来型のサポートベクターマシン
13.3.2 QPUでSVMを行う
13.4 他の機械学習アプリケーション
Ⅳ部 将来の展望
14章 最先端を行く:文献案内
14.1 円表示から複素ベクトルへ
14.2 用語の細かな説明と注意事項
14.3 観測基底
14.4 ゲート分解とコンパイル
14.5 ゲートテレポーテーション
14.6 QPUの殿堂
14.7 競争:量子コンピュータ対従来型コンピュータ
14.8 オラクルベースのアルゴリズムに関する注意
14.8.1 Deutsch-Jozsaのアルゴリズム
14.8.2 Bernstein-Vaziraniアルゴリズム
14.8.3 Simonのアルゴリズム
14.9 量子プログラミング言語
14.10 量子シミュレーションに関する展望
14.11 量子誤り訂正とNISQデバイス
14.12 次はどこへ?
14.12.1 参考書
14.12.2 講義ノート
14.12.3 オンラインリソース
訳者あとがき
索引
続きを見る