TECH PLAY

量子コンピュータの頭の中ーー計算しながら理解する量子アルゴリズムの世界

3,520円 (税込)

楽天

量子コンピュータの頭の中ーー計算しながら理解する量子アルゴリズムの世界

書籍情報

発売日:

著者/編集:束野 仁政

出版社:技術評論社

発行形態:単行本

書籍説明

内容紹介

「重ね合わせ」を数式で表すと?高校数学からコツコツと、量子コンピュータの世界をのぞいてみよう。

目次

# 第1章 量子コンピュータへのいざない ## 1.1 量子コンピュータへの期待 ## 1.2 量子コンピュータの歴史 ## 1.3 古典コンピュータと量子コンピュータの違い ### 1.3.1 なぜ量子コンピュータは速いのか ### 1.3.2 古典ビットと量子ビット ### 1.3.3 量子コンピュータの速さとユニタリ行列 ## 1.4 量子コンピュータによくある誤解 #### 誤解1.量子コンピュータは、あらゆる計算が速くなる #### 誤解2.量子コンピュータが実現すれば、スーパーコンピュータは不要 #### 誤解3.量子コンピュータは既に実用化している ## コラム:量子力学が分からなくても量子コンピュータを理解するには # 第2章 量子コンピュータ入門以前 ## 2.1 量子コンピュータは「行列」の世界 ## 2.2 行列の基本をおさらい ### 2.2.1 行列とベクトルの定義 ### 2.2.2 行列の和・差・積 #### 行列の和・差 #### 行列とベクトルの積 #### 行列と行列の積 #### 行列の分配法則 ### 2.2.3 単位行列と逆行列 ## 2.3 集合 ### 2.3.1 外延的記法と内包的記法 ### 2.3.2 要素 ### 2.3.3 よく使う集合の記号 ### 2.3.4 積集合 ## 2.4 複素数 ### 2.4.1 虚数単位と複素数の演算 ### 2.4.2 絶対値 ### 2.4.3 複素共役 ## 2.5 ゲートの正体である行列(ユニタリ行列) ### 2.5.1 転置行列と随伴行列 ### 2.5.2 ユニタリ行列 ### 2.5.3 ブラケット記法 ### 2.5.4 行列に関連する記号についての補足 ## 2.6 内積 ### 2.6.1 内積の定義 ### 2.6.2 ブラケットと内積の関係 ### 2.6.3 内積の性質 ### 2.6.4 内積の応用 ## 2.7 複数ビットを支える行列(テンソル積) ## 2.8 論理式を実現する古典回路 # 第3章 量子コンピュータの基本ルール ## 3.1 この章で学ぶこと ## 3.2 量子コンピュータの基礎「量子ビット」 ### 3.2.1 「重ね合わせ状態」とは? ## 3.3 計算結果を得る「測定」 ## 3.4 ビットの状態を変化させる「量子ゲート」 ### 3.4.1 量子状態をユニタリ発展させたものは、量子状態になる ### 3.4.2 任意のユニタリ発展は、ハードウェアとして実装可能 ### 3.4.3 ユニタリ発展の可逆性 ## 3.5 量子状態の区別がつくとき、つかないとき ### 3.5.1 区別できる例 ### 3.5.2 区別できない例 ### 3.5.3 区別できない理由 ## コラム:どうして量子コンピュータの演算はユニタリ行列なのか # 第4章 行列で読み解く量子回路の基本 ## 4.1 この章で学ぶこと ## 4.2 量子ゲートと量子回路 ## 4.3 重ね合わせ状態を作る「アダマールゲート」 ## 4.4 NOTの役割を果たす「Xゲート」 ## 4.5 位相反転させる「Zゲート」 #### パウリ行列とアダマール行列の関係 ## 4.6 "ゲートがない"状態を作る ## 4.7 量子ゲートの性質 ## 4.8 量子ビットを測定する ## 4.9 1量子ビットの量子回路を数学的に表す #### 簡潔な計算方法 # 第5章 2量子ビットに拡張する ## 5.1 この章で学ぶこと ## 5.2 2量子ビットは「テンソル積」で表す ## 5.3 2量子ビットでの測定とユニタリ発展 ### 5.3.1 計算例 ### 5.3.2 2×2のユニタリ行列から4×4のユニタリ行列を作る ## 5.4 積状態と量子もつれ状態 ## 5.5 量子複製不可能定理 # 第6章 2量子ビットの量子回路 ## 6.1 この章で学ぶこと ## 6.2 ややこしい計算をやさしくする工夫 ### 6.2.1 1量子ビットのテンソル積で表す ### 6.2.2 記法の工夫 #### 量子ビットの順番に関する注意 ## 6.3 標的ビットを制御する「CNOTゲート」 ### 6.3.1 CNOTゲートと量子複製不可能定理の関係 ## 6.4 量子ビットを入れ替える「SWAPゲート」 ## 6.5 量子ビットを測定する ## 6.6 2量子ビットの量子回路を数学的に表す #### 簡潔な計算方法 ## コラム:量子コンピュータの実行結果を検証する技術―量子状態トモグラフィ # 第7章 量子プログラミング入門編 ## 7.1 この章で学ぶこと ## 7.2 量子プログラミング言語・ライブラリ ## 7.3 Qiskitを利用する ### 7.3.1 Qiskitの概要 ### 7.3.2 Qiskitの実行方法 ### 7.3.3 IBM Quantumのアカウント作成 ## 7.4 量子回路に関する用語 ## 7.5 基本的な量子プログラミング ### 7.5.1 IBM Quantum Labの起動 ### 7.5.2 基本的なプログラミング方法 #### 量子回路の初期化 #### 量子回路の組み立て #### 測定 #### 実行と結果取得 #### 測定値は確率的 ### 7.5.3 特定の量子レジスタのみを測定する方法 #### 量子回路の初期化 #### 量子回路の組み立て #### 測定 ### 7.5.4 レジスタを直接利用した実装 #### 量子回路の初期化 #### 量子回路の組み立て #### 測定 ## 7.6 実行結果と量子回路の可視化 ### 7.6.1 実行結果の可視化 ### 7.6.2 量子回路の可視化 ### 7.6.3 量子回路の可視化をサポートする機能 ## 7.7 ゲートと関数の対応 ## 7.8 自分のPCで実行する方法 ## 7.9 発展:人間が書いたプログラムを量子コンピュータ向けに変換する技術―量子コンパイラ ### 7.9.1 量子コンパイラの機能 ### 7.9.2 ハードウェアのトポロジーを考慮した量子回路に変換 ### 7.9.3 ハードウェアで実行できるゲートを考慮した量子回路に変換 ### 7.9.4 短い量子回路に変換 ### 7.9.5 その他の機能 # 第8章 n量子ビットの世界 ## 8.1 この章で学ぶこと ## 8.2 量子ビットを一般化する ## 8.3 測定(確率の世界) ## 8.4 ユニタリ発展(行列の世界) ## 8.5 一部の量子ビットの測定 ### 8.5.1 一部の量子ビットの測定(具体例1) ### 8.5.2 一部の量子ビットの測定(一般的なルール) ### 8.5.3 一部の量子ビットの測定(具体例2) ## 8.6 1量子ビットのテンソル積を用いた計算 ### 8.6.1 1量子ビットのテンソル積で表す ### 8.6.2 記法の工夫 ## 8.7 代表的なn量子ビットの量子ゲート ### 8.7.1 トフォリゲート ### 8.7.2 フレドキンゲート ## 8.8 重ね合わせ状態を利用した計算 ## 8.9 排他的論理和とオラクル ## 8.10 発展:量子コンピュータを使って任意の2^n次正方行列のかけ算を計算する ### 8.10.1 パウリ行列で2次正方行列を表す ### 8.10.2 テンソル積の和と量子状態の積 ### 8.10.3 パウリ行列で4次正方行列を表す ### 8.10.4 パウリ行列で2^n次正方行列を表す # 第9章 量子テレポーテーション ## 9.1 この章で学ぶこと ## 9.2 量子テレポーテーションとは? ## 9.3 量子テレポーテーションの方法 ### 9.3.1 ステップ1:量子もつれ状態を共有する ### 9.3.2 ステップ2:移動する量子ビットを準備する ### 9.3.3 ステップ3:アリスが手元の量子ビットにCNOTとHを適用する ### 9.3.4 ステップ4:アリスが手元の量子ビットを測定し、得た値を古典ビットとしてボブに通信する ### 9.3.5 ステップ5:得た古典ビットにより、ボブが手元の量子状態を操作する #### 古典ビット00を受け取った場合 #### 古典ビット01を受け取った場合 #### 古典ビット10を受け取った場合 #### 古典ビット11を受け取った場合 #### 添え字2の量子ビットに対する処理をまとめる ### 9.3.6 ステップ1~ステップ5をまとめる ## 9.4 量子テレポーテーションのプログラミング #### 結果表示用の文字列 #### 量子回路の初期化 #### ステップ1:量子もつれ状態を共有する #### ステップ2:移動する量子ビットを準備する #### ステップ3:アリスが手元の量子ビットにCNOTとHを適用する #### ステップ4:アリスが手元の量子ビットを測定し、得た値を古典ビットとしてボブに通信する #### ステップ5:得た古典ビットにより、ボブが手元の量子状態を変化させる #### 実行と結果取得 ## 9.5 発展:量子インターネット # 第10章 量子誤り訂正入門 ## 10.1 この章で学ぶこと ## 10.2 量子誤り訂正の必要性と制約 #### import文 #### ノイズモデルの設定 #### 量子回路の初期化 #### エラー発生 #### 測定 #### 実行と結果取得 #### ①量子状態を複製できない #### ②アナログなエラーが発生する #### ③測定すると量子状態が変化してしまう ## 10.3 ビット反転エラーの誤り訂正 ### 10.3.1 量子状態の反復 #### 量子回路の初期化 #### 量子状態を反復 #### エラー発生 #### 測定 ### 10.3.2 ビット反転エラーの誤り検出 #### 量子回路の初期化 #### 誤り検出 #### 測定 ### 10.3.3 ビット反転エラーの誤り訂正 #### 誤り訂正 ### 10.3.4 ビット反転エラーの誤り訂正(補助ビットなし) #### 量子回路の初期化 #### 誤り検出・誤り訂正 #### 測定 ## 10.4 位相反転エラーの誤り訂正 #### ノイズモデルの設定 #### 量子回路の初期化 #### 測定 #### 量子状態の反復とアダマール行列の適用 #### 誤り検出・誤り訂正 ## 10.5 ショア符号 #### 量子状態を反復 #### 誤り検出・誤り訂正 #### ノイズモデルの設定 #### 量子回路の初期化 #### 量子状態の反復とアダマール行列の適用 #### 誤り検出・誤り訂正 #### ①量子状態を複製できない #### ②アナログなエラーが発生する #### ③測定すると量子状態が変化してしまう ## 10.6 発展:量子誤り訂正の重要性 # 第11章 ドイッチュのアルゴリズム ## 11.1 この章で学ぶこと ## 11.2 定数関数とバランス関数 ## 11.3 ドイッチュのアルゴリズムが解く問題 ## 11.4 古典コンピュータで解く場合 ## 11.5 補助量子ビットによる拡張 ## 11.6 ドイッチュのアルゴリズムの方法 ### 11.6.1 ステップ1:重ね合わせ状態を作成する ### 11.6.2 ステップ2:重ね合わせ状態に対してU_fを実行する ### 11.6.3 ステップ3:関数U_fの性質を使って計算する #### 関数U_fが定数関数の場合 #### 関数U_fがバランス関数の場合 ### 11.6.4 ステップ4:測定を行い、定数関数かバランス関数か判定する ### 11.6.5 ステップ1~ステップ4をまとめる ## 11.7 ドイッチュのアルゴリズムのプログラミング ## 11.8 発展:ドイッチュ-ジョザのアルゴリズム # 第12章 グローバーのアルゴリズム ## 12.1 この章で学ぶこと ## 12.2 グローバーのアルゴリズムとは? ## 12.3 グローバーのアルゴリズムの方法 ### 12.3.1 ステップ1:重ね合わせ状態を作成 ### 12.3.2 ステップ2:選択的回転 ### 12.3.3 ステップ3:拡散変換 ### 12.3.4 ステップ4:繰り返し実行 ## 12.4 グローバーのアルゴリズムのプログラミング ## 12.5 発展:グローバーのアルゴリズムの応用 ### 12.5.1 解が複数ある場合 ### 12.5.2 グローバーのアルゴリズムを応用した計算 ### 12.5.3 グローバーのアルゴリズムの量子優位性 # 付録 量子プログラミング実機編 ## A.1 この章で学ぶこと ## A.2 実機を使う準備 ## A.3 実機でプログラムを実行 ### A.3.1 量子回路の実装と実行 ### A.3.2 実行待ちの様子 ### A.3.3 実行完了の様子 ### A.3.4 実行結果の考察 ## A.4 APIから実機の情報を確認する方法 ### A.4.1 backendの確認方法 ### A.4.2 ジョブの確認方法 ## A.5 IBM Quantum以外の場所から実機を実行する方法 ## A.6 発展:量子エラー抑制 ### A.6.1 ノイズのない実行結果を推定する量子エラー抑制 ### A.6.2 測定エラー抑制 ### A.6.3 ステップ1:測定時のノイズに関する統計的な情報を取得する ### A.6.4 ステップ2:目的の量子回路を実行する ### A.6.5 ステップ3:ノイズのない値を推定する

著者情報

束野 仁政

大阪大学量子情報・量子生命研究センター特任研究員。修士(理学)。実用的な量子コンピュータを実現するため、ソフトウェアを開発している。国産量子コンピュータ初号機による量子計算クラウドサービスの研究開発に従事。量子コンピュータの面白さを多くの人に広めたいと思い、入門書・入門記事の執筆等の活動を行っている。Twitter ID:@snuffkin1998年 埼玉大学理学部数学科卒業2000年 大阪大学大学院理学研究科数学専攻博士前期課程修了2000年 アクロクエストテクノロジー株式会社 プログラマ、システム・エンジニア2019年 東京大学先端科学技術研究センター 学術専門職員など2022年 大阪大学大学院基礎工学研究科 特任研究員同上 大阪大学量子情報・量子生命研究センター 特任研究員

束野, 仁政