量子計算Python與Q#編程實戰 Learn Quantum Computing with Python and Q#: A Hands-On Approach

Sarah Kaiser,Cassandra Granade

  • 量子計算Python與Q#編程實戰-preview-1
  • 量子計算Python與Q#編程實戰-preview-2
量子計算Python與Q#編程實戰-preview-1

買這商品的人也買了...

相關主題

商品描述

本書指導讀者使用Python和Q#語言學習量子計算,揭開量子計算的神秘面紗。本書盡量避免復雜的數學概念,試圖直接通過量子編程來幫助讀者建立對量子電腦的理解。讀者可以通過使用Python創建自己的量子模擬器來學習量子計算的基礎知識,然後使用QDK和Q#來編寫和運行與經典計算不同的算法。

通過閱讀本書,讀者將能夠把量子編程技術應用於量子密鑰分發等應用程序中,並處理真實的示例,如進行化學模擬和搜索未排序的數據庫等。

作者簡介

萨拉·凯泽在滑铁卢大学的量子计算研究所取得了物理学(量子信息)博士学位。萨拉职业生涯的大部分时间都在实验室开发新的量子硬件,从建造卫星到研究量子密码学硬件。沟通量子的奇妙领域是她的激情所在,她喜欢建立新的演示和工具来帮助量子社区的发展。在不编写代码的时候,萨拉喜欢划皮划艇和为所有年龄的人编写关于科学的书。

 

卡桑德拉·格拉内德在滑铁卢大学量子计算研究所取得了物理学(量子信息)博士学位,现在在微软的量子系统组开发?Q#的标准库。作为根据经典数据对量子设备进行统计表征的专家,卡桑德拉还帮助斯科特·阿伦森把其报告整理成书Quantum Computing Since Democritus(剑桥大学出版社,2013年)。

目錄大綱

第 一部分 量子入門

 

第 1章 量子計算簡介 3

1.1 為什麽量子計算很重要? 4

1.2 什麽是量子電腦? 5

1.3 如何使用量子電腦? 7

1.3.1 量子電腦能做什麽? 9

1.3.2 量子電腦不能做什麽? 10

1.4 什麽是程序? 11

什麽是量子程序? 12

小結 14

 

第 2章 量子位:構建塊 15

2.1 為什麽需要隨機數? 16

2.2 什麽是經典位? 19

2.2.1 我們能用經典位做什麽? 21

2.2.2 抽象是我們的朋友 23

2.3 量子位:狀態和操作 25

2.3.1 量子位的狀態 25

2.3.2 操作的游戲 27

2.3.3 測量量子位 31

2.3.4 一般化測量:基獨立 35

2.3.5 用代碼模擬量子位 37

2.4 編程一個工作的QRNG 42

小結 47

 

第3章 用量子密鑰分發來分享秘密 48

3.1 在愛情和加密中一切都很公平 48

3.1.1 量子NOT操作 51

3.1.2 借助量子位共享經典位 55

3.2 雙組基的故事 56

3.3 量子密鑰分發:BB84 59

3.4 使用密鑰發送秘密消息 64

小結 67

 

第4章 非本地游戲:使用多量子位 68

4.1 非本地游戲 68

4.1.1 什麽是非本地游戲? 69

4.1.2 測試量子物理學:CHSH游戲 69

4.1.3 經典策略 72

4.2 處理多量子位狀態 73

4.2.1 寄存器 74

4.2.2 為什麽很難模擬量子電腦? 76

4.2.3 用於狀態制備的張量積 77

4.2.4 張量積對寄存器的量子位操作 78

小結 81

 

第5章 非本地游戲:實現多量子位模擬器 82

5.1 QuTiP中的量子對象 82

5.1.1 升級模擬器 87

5.1.2 測量起來:如何測量多量子位? 91

5.2 CHSH:量子策略 94

小結 98

 

第6章 隱形傳態和糾纏:量子數據的移動 99

6.1 移動量子數據 99

6.1.1 換出模擬器 102

6.1.2 還有哪些雙量子位門? 106

6.2 所有的單(量子位)旋轉 108

6.3 隱形傳態 116

小結 119

 

第 一部分:結語 119

 

第二部分 在Q# 中對量子算法進行編程

 

第7章 改變勝率:關於Q#的介紹123

7.1 量子開發工具包介紹 124

7.2 Q#中的函數和操作 127

7.3 將操作作為參數傳遞 133

7.4 在Q#中玩莫甘娜的游戲 138

小結 140

 

第8章 什麽是量子算法 141

8.1 經典算法和量子算法 141

8.2 多伊奇-約薩算法:對搜索的適度改進 144

8.3 oracle:在量子算法中表示經典函數 149

8.3.1 梅林的變換 150

8.3.2 推廣我們的結果 153

8.4 在Q#中模擬多伊奇-約薩算法 157

8.5 對量子算法技術的思考 161

8.5.1 鞋子和襪子:應用和撤銷量子操作 161

8.5.2 用阿達馬指令來翻轉控制和目標 164

8.6 相位反沖:我們成功的關鍵 166

小結 170

 

第9章 量子傳感:不僅僅是相位 172

9.1 相位估計:利用量子位的有用屬性進行測量 172

9.2 用戶定義的類型 177

9.3 從Python中運行Q# 184

9.4 特徵態和局部相位 189

9.5 受控應用:將全局相位變成局部相位 193

9.6 實現蘭斯洛特的相位估計游戲的最佳策略 199

小結 201

 

第二部分:結語 201

 

第三部分 應用量子計算

 

第 10章 用量子電腦解決化學問題 205

10.1 量子計算的實際化學應用 205

10.2 通往量子力學的多條路徑 207

10.3 用哈密頓算符描述量子系統如何隨時間演化 210

10.4 用泡利操作圍繞任意軸旋轉 214

10.5 在系統中做出想要的變化 221

10.6 經歷(非常小的)變化 222

10.7 整合在一起 225

小結 230

 

第 11章 用量子電腦搜索 232

11.1 搜索非結構化數據 232

11.2 關於狀態的反射 238

11.2.1 關於全一狀態的反射 239

11.2.2 關於任意狀態的反射 240

11.3 實現格羅弗算法 246

11.4 資源估算 252

小結 257

 

第 12章 用量子電腦進行算術運算 258

12.1 將量子計算納入安全因素 258

12.2 將模算術與因數分解聯系起來 262

12.3 經典代數和因數分解 267

12.4 量子算術 270

12.4.1 用量子位相加 271

12.4.2 處於疊加態的量子位相乘 272

12.4.3 舒爾算法中的取模乘法 275

12.5 整合在一起 278

小結 282

 

臨別贈言 283

 

附錄A 安裝所需軟件 285

A.1 在線運行示例 285

A.1.1 使用Binder 285

A.1.2 使用GitHub Codespaces 286

A.2 使用Anaconda進行本地安裝 286

A.2.1 安裝Anaconda 286

A.2.2 用Anaconda安裝軟件包 286

A.3 安裝QDK 288

A.3.1 安裝.NET Core SDK 289

A.3.2 安裝項目模板 289

A.3.3 安裝Visual Studio Code擴展程序 290

A.3.4 為Jupyter Notebook安裝IQ# 290

 

附錄B 術語和快速參考 291

B.1 術語 291

B.2 狄拉克符號 293

B.3 量子操作 294

B.4 Q#語言 296

B.4.1 類型 296

B.4.2 Q#的聲明和語句 297

B.4.3 Q#表達式和操作符 300

B.4.4 Q#標準庫 301

B.4.5 IQ#魔法命令 303

 

附錄C 線性代數 304

C.1 走近向量 304

C.2 親自體驗矩陣 306

 

附錄D 通過實例探索多伊奇-約薩算法 316

D.1 使用我們的技能,嘗試做點什麽 316

D.2 步驟1:為多伊奇-約薩制備輸入狀態 317

D.3 步驟2:應用oracle 318

D.3.1 例1:“id”oracle 320

D.3.2 例2:“not”oracle 321

D.3.3 例3:“zero”oracle 322

D.4 步驟3和4:撤銷對目標量子位的制備,並測量 323