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

書籍情報

発売日 : 2023年06月19日

著者/編集 : 束野 仁政

出版社 : 技術評論社

発行形態 : 単行本

書籍説明

内容紹介

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

目次

# 第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年 大阪大学大学院基礎工学研究科 特任研究員同上 大阪大学量子情報・量子生命研究センター 特任研究員
束野, 仁政