quantum computing

一些前情提要

因為講師不會硬體

所以本學期的課程將會著重在軟體

量子電腦有優美的數學表示

但本學期將盡量不要太數學

量子電腦有很多應用

我大部分都不熟悉

想要和強大的人學習、討論

就去SQCS吧

 

  • 建中205林子鈞(建中有三個林子鈞)
  • aka linki,ranger,kumokunn,冷氣,AC
  • 建中資訊社學術長
  • SQCS總召
  • 想學量子演算法所以來當量子講師
  • 不會C++、python、ML

講師介紹:

量子電腦是什麼?

基於量子力學來實現的電腦

優點:

基於原理不同,在一些古典電腦

做不好的地方可能有奇效

 

缺點:

技術尚未成熟,需在極低溫下執行

也無法供給大眾使用

一些實現的量子電腦

專注在量子退火的量子計算機

 

一些應用

小小補充:

時間複雜度

描述演算法的運行速度

會用在判斷演算法執行時間或是可行度

通常使用2048位元的數

古典電腦在花費地球年齡的時間(46億年)都跑不完

但量子電腦電腦可以快速算出來\(O({log(N)}^3)\)

由於分子在微觀上不可以用古典物理描述

需要用到量子力學才能描述

利用量子電腦來模擬分子

計算出最低能量

量子骰

利用量子力學來達到真正的隨機

Grover's Algorithm

利用量子中的疊加態來達到快速地搜索
\(O(N)\)->\(O(\sqrt{N})\)

量子隨機行走

用量子電腦模擬random walk

 

一些比較不常見的量子演算法

(能做的比古典電腦好)

有興趣可以晃晃

模擬退火

從初始狀態經由類似降溫的

過程達到最佳解

量子模擬退火

做一樣的事情但是因為
量子穿隧效應
可以有很好的效果

先從量子力學開始吧

量子疊加

有看過這隻可憐貓貓嗎?

他在被觀測前,沒有人知道他是死是活

可以說他是既死又生

這種既死又生的狀況,我們稱為疊加態

那隻貓貓在被打開箱子看的時候

才知道他是活或死

糾纏態
 

幾個粒子在彼此交互作用後,由於各個粒子所擁有的特性已綜合成為整體性質,無法單獨描述各個粒子的性質....

簡單來說,就是兩個粒子有特殊關係

0 1
0 False True
1 True Flase
0 1
0 True Flase
1 Flase True

梵力B

梵力A

栗子1:

有A和B兩個粒子

他們有兩種狀態

分別是順時針轉和逆時針轉

如果他們發生量子糾纏

他們同時順時針或同時逆時針

不會轉不同邊

栗子2:

有A和B兩個粒子

他們有兩種狀態

分別是順時針轉和逆時針轉

如果他們發生量子糾纏

他們一個逆時針一個順時針

不會同時轉同一邊

什麼是 \(Qubit\)(量子位元)?

先從bit(古典位元)說起

bit(古典位元):

電腦儲存資訊的最小單位

會有0和1兩種狀態

通常以沒通電代表0

有通電代表1

 

 \(Qubit\)可以同時是0跟1

bit只有0或1

還記得之前講的薛丁格的貓嗎

 

\(Qubit\)也跟貓貓一樣

有量子疊加態的特性

疊加態要在被觀測之後,才會變成0或是1

\( |\psi\rangle = \alpha |0\rangle + \beta |1\rangle ,   \alpha ,\beta \in \mathbb{C},   \left | \alpha \right |^{2} + \left | \beta \right |^{2} = 1 \)

在此定義中,\( \left | \alpha \right |^{2} \)代表著

此\(Qubit\)被觀察到後,為0的機率

相對的,\( \left | \beta \right |^{2} \)就是代表著

\(Qubit\)被觀察到後,為1的機率

若將Qubit以\(|\psi\rangle\)表示
會滿足以下的式子

一個 \(Qubit\)的狀態,可以被描繪在布洛赫球面\(Bloch Sphere\)上

球頂,就表示狀態為 |0 \rangle0 的 \(Qubit\)

球底,就表示狀態為 |1 \rangle1 的 \(Qubit\)Qubiㄌ量子

由來解釋(補充)

為什麼會將 Qubit

表示在單位圓上呢?

原因是來自於定義的 \(\left | \alpha \right |^{2} + \left | \beta \right |^{2} = 1\)

對於這個的第一印象,

就是與\(cos^{2}(\theta)+sin^{2}(\theta)=1\) 相似,

所以就引進了

\(\left | \alpha \right |=cos(\theta),\ \left | \beta \right |=sin(\theta)\)

的表示法。

此部分為大電神蕭登鴻引述大電神林尚廷學長做出的完備解釋

傳統電腦邏輯閘

AND

OR

NOT

電腦計算=bit(位元)+邏輯閥

藉由讓bit通過邏輯閥,我們可以達成想讓電腦做到的事

AND

介紹其中一個邏輯閥

量子電腦跟傳統電腦一樣都是由位元和邏輯閘構成的

由量子位元(\(Qubit\))

和量子閘

組成的電腦

量子電腦也有量子的邏輯閘喔

Pauli-X gate

Hadamard gate

Ry gate

接下來要介紹他們

H Gate(Hadamard gate

這個量子操作一個 \(Qubit\),
作用是讓這個 \(Qubit\) 進入疊加態

也可視為是在布洛赫球面上

沿著與X軸、Z軸成45度、

和Y軸成90度的軸轉\(180^{\circ}\)

\((|0\rangle \rightarrow |+\rangle, |1\rangle \rightarrow |-\rangle)\)

更準確地說,是 50% 為 \(|0\rangle\), 50% 為 \(|1\rangle\) 的疊加態。

備註:

\(|+\rangle\)= \(\frac{|0\rangle + |1\rangle}{\sqrt{2}}\)

\(|-\rangle\)= \(\frac{|0\rangle - |1\rangle}{\sqrt{2}}\)

H Gate(Hadamard gate

這個量子操作一個 \(Qubit\),
作用是讓這個 \(Qubit\) 進入疊加態

也可視為是在布洛赫球面上

轉\(x\)軸\(180^{\circ}\)跟\(y\)軸\(180^{\circ}\)

\((|0\rangle \rightarrow |+\rangle, |1\rangle \rightarrow |-\rangle)\)

更準確地說,是 50% 為 \(|0\rangle\), 50% 為 \(|1\rangle\) 的疊加態。

備註:

\(|+\rangle\)= \(\frac{|0\rangle + |1\rangle}{\sqrt{2}}\)

\(|-\rangle\)= \(\frac{|0\rangle - |1\rangle}{\sqrt{2}}\)

Ry Gate (Rotation Y Gate)

這個量子操作一個 \(Qubit\),
作用是在 \(Bloch  Sphere\) 上旋轉 \(Y\)軸 \(\psi\) 度來改變量子態。

Z Gate

這個量子操作一個 \(Qubit\),
作用是把這個\(Qubit\)的

\(|1\rangle \)正負號改變

多量子系統

cX Gate (Controlled X Gate)

這個量子操作 \(2\) 個 \(Qubit\)

作用是 :

如果第一個 \(Qubit\) 為 \(|1\rangle\),

那麼就對第二個 \(Qubit\) 操作 \(X  Gate\)。

\(\leftarrow\) 第一個 \(Qubit\) (決定者)

\(\uparrow\) 第二個 \(Qubit\) (被操控者)

糾纏的量子態,無法以\(Bloch  Sphere\) 表示,只能表示在 \(Qsphere\) 上。

\(\rightarrow\)

\(\bigcirc\)

cH Gate (Controlled Hadamard Gate)

這個 \(Gate\) 的功能跟

剛剛的 \(cX  Gate\)只差在改成

對 \(Qubit\) 施加一個 \(H  Gate\) 。

Swap gate

用於交換兩個\(Qubit\)的量子態

飯粒鯷木:

00\(=>\)10+00

ans:h(0)

00\(=>\)11+00
ans:h(0)、cx(0,1)

題目形式:加減號分開不同狀態,目標是從左方的狀態經過量子電路後成為右方的狀態
答案形式:各個量子位元從0開始編號,
單量子的邏輯閘直接用括號和量子位元編號

control的邏輯閘為看第一個位元、對第二個位元做事

會用到的gate:c、h、z、cx、cz、ch

1.            01+00=>00
2.            00+11=>01-11
3.                 101=>011-111

4.                 101=>110-111+101+100
5.                 010=>000+111
6.        001+110=>010+100

7.             01+10=>01+10-11
8.010+011+101=>010+011+100-101

9.                  011=>000+101

10.                111=>-101-111

一題五分

11.                0=>1
12.        01+10=>00+11
13.               00=>01+00

14.               00=>01+00+11+10
15.               11=>-11
16.        01+11=>00-10

17.                 0=>0-1
18.               00=>00-10

19.               10=>10+11

20.        00+01=>01+10+11

實作

只要把量子閘拖到線上就可以實作了

linear algebra

為甚麼要學這個怪咚咚

  1. 帶來對量子另一個觀點
  2. 在一些場合必須要有他才能好好解釋
  3. 未來學測會考現在學了不虧
  4. 其他地方也很常見學了不虧

本篇內容:
三角函數、向量

矩陣、線性變換

\(sin(\theta)=\frac{a}{h}\)

\(cos(\theta)=\frac{b}{h}\)

\(tan(\theta)=\frac{a}{b}\)

定義

常見操作

把h投影到a

把h投影到b

三角形面積

\(absin(c)\)(投影

向量(vector)

  • 具有大小、方向的物件
  • 有自己的運算法則

表示法: \(\vec a\)

  • 高中常用二維和三維
  • 量子則是使用高維度複數空間(希伯特空間)

表示法

\(\vec a\)=(7,1,2,2)

括號中的數字分別代表
(第一個維度,第二個維度,第三個維度...)

以此類推

向量加法

頭接尾

各個維度相加

\(\overrightarrow{a}=(7,1)\)

\(\overrightarrow{b}=(2,2)\)

\(\overrightarrow{a}+\overrightarrow{b}=(9,3)\)

向量減法

把負的向量轉向

或是把各個維度都加上負號

再做向量加法

向量內積

(Inner product)

\(\vec{a} =\{a_1,a_2...a_n\}\)

\(\vec{b} =\{b_1,b_2...b_n\}\)

\(\vec{a}\cdot\vec{b}=\Sigma ^{n}_{k=1}a_k*b_k\)

  • 結果為純量
  • \(\vec{a}\cdot\vec{b}=|\vec{a}||\vec{b}|cos(\theta)(\theta為交角\)

*\(|\vec{a}|\)為取\(\vec{a}\)長度

向量外積

(Cross product)

\(\vec{a}\times\vec{b}=| \vec{a}||\vec{b}|sin(\theta)\vec{n}\)

\(\vec{n}\)為與\(\vec{a}\)和\(\vec{b}\)垂直的單位向量

  • 結果為向量
  • \(|\vec{a}\times\vec{b}|=|\vec{a}||\vec{b}|sin(\theta)(\theta為交角\)

*單位向量為長度為1的向量

正交性

兩向量為正交的條件為inner product=0

複數

(complex number)

\(i=\sqrt{-1}\)

\(z=x+yi\)

實部

虛部

共軛

(Conjugate)

虛部改正負號

\(z=x+yi\)

\(\rightarrow \overline{z}=x-yi\)

矩陣(matirx)

一個矩形中放了很多數字

有線性變換等用途

\(A_{n\times m}\)

矩陣加法

一定要n,m相同才能加

矩陣乘法

一定要\(m_A和n_b\)相同才能乘

轉置 (Transpose)

 

\(A=\begin{bmatrix}1 & 2\\ 3 & 4\\ 5 & 6\end{bmatrix}\)

\(A^T=\begin{bmatrix}1 & 3 & 5\\ 2 & 4 & 6\end{bmatrix}\)

線性變換

在兩個向量空間之間的一種保持

向量加法和純量乘法的特殊映射

粒子

  • 旋轉
  • 鏡射
  • 放大、縮小
  • 投影

作法

把座標乘上線性變換矩陣

旋轉\(\theta\)

放大

x軸鏡射

y軸投影

Bra - Ket Notation

Ket

Bra

內積表示法

\(\langle \phi | \varphi\rangle\)

  • Dot product between \(|\phi\rangle\) and \(|\varphi\rangle\)

(共軛轉置矩陣)

\(A=\begin{bmatrix}1 & 1-2i\\ 1+i & 1\end{bmatrix}\)

\(A^\dagger =\begin{bmatrix}1 & 1-i\\ 1+2i & 1\end{bmatrix}\)

矩陣的埃爾米特伴隨 (Hermitian adjoint)

量子骰

先談談古典電腦的亂數(擲骰子)

你所不知道的祕密

古典亂數產生其實不亂

是由一個人類無法預計下一項

的函數來產生亂數

擲骰子也不是隨機的

只要知道背後的函數就可以破解

栗子:產生方式

\(a_n=(a_{n-1}*8+5)\%49\)

\(\{0,5,45,22,34,32,16,35,40,31,8,20,18,2\\,21,26,17,43,6,4,37,7,12,3,29,41,39,23,\\42,47,38,15,27,25,9,28,33,24,1,13,11,\\44,14,19,10,36,48,46,30\}\)

量子骰

藉由量子位元的隨機

來達到理論上的真正隨機

學這個的好處

  • 真的隨機

  • 訓練思考

  • 練習量子電路

  • \\random walk//
  • 好酷(?

壞處

  • 現實中還是有誤差 ; _ ;

  • 太多\(Qubit\)可能不能丟真的機器

  • 講師太弱不會更好優化的量子骰

  • 好累(?

naive 想法

\(Qubit\)觀測後只有\(\{0,1\}\)

\(\longrightarrow\)二進位

\( (13)_{10}\) =\((1101)_2\)

因為要二進位

需要\(\lceil log(n) \rceil\)個\(Qubit\)

各放一個\(H\) gate

會有\(2^{\lceil log(n) \rceil }\)個狀態
\( (2^{\lceil log(n) \rceil }\ge n )\)

機率平均但會骰到一些不合法的值

所以要可能要重骰 ; _ ;

如果不要重骰?

讓狀態剛好\(n\)個

HOW?

使用Ry gate微調:


\(|0\rangle \rightarrow \sqrt{1-\beta}|0\rangle + \sqrt{\beta}|1\rangle\)

使\(|1\rangle\)機率變成\(\beta\)

\(Ry(2sin^{-1}( \sqrt{\beta}))|1\rangle\)

將\(n\)拆成二進位

對每個bit分別做事

從最高的bit開始

\(N=a_1 2^n+a_2 2^{n-1}+a_3 2^{n-2}.....\)

ex:
\(7=4+2+1\)

我們讓量子骰有\(0\)~\(N-1\)的狀態

出來的結果再全體+1

\(7=4+2+1\)

對於\(4\)來說

他存在的狀態有\(3\)種

不存在的狀態有\(4\)種

因此我們希望它有\(\frac{3}{7}\)的機率是\(|1\rangle\)

\(7=4+2+1\)

對於\(2\)來說

\(4\)為不存在時他不會造成不合法的狀態

\(4\)為存在時

\(2\)存在有\(1\)種

\(2\)不存在有\(2\)種

因此在\(4\)存在時使2有\(\frac{1}{3}\)的機率是\(|1\rangle\)

以此類推到最後一位

通式:

如果剩\(N\)個狀態,現在在\(2^k\)

\(N>2^k\rightarrow  Ry(2sin^{-1}( \sqrt{ \frac{N-2^k}{N}}))跟H\)

\(N=2^k\rightarrow  不做Ry只做H\)

\(N<2^k\rightarrow  到下一個k\)

\(N\geq 2^k\)則\(N=N-2^k\)

一直做到\(N=0\)

飯粒:七面骰

\(7-2^2>0\rightarrow Ry+H\) 

\(3-2^1>0\rightarrow Ry+H\)
\(1-2^0=0\rightarrow Ry+H\)

23面骰的例子

以上為簡單量子骰

實作會有大量誤差和過多的電路

還需要更多的優化

quantum-algorithm

時間複雜度

描述演算法的運行速度

會用在判斷演算法執行時間

或是可行度

*之前應該已經看過他了

第一個比傳統演算法快的量子演算法

傳統\(O(n^2)\)

量子\(O(n)\)

題目描述

 

有一種函數\(f(x):\{1,0\}^n\rightarrow\{1,0\}\)

問她是常數函數還是平衡函數

 

常數函數:全部的結果都一樣

平衡函數:有一半是1一半是0

傳統算法

把一半的狀態試過

才能確定是不是常數函數

量子算法

搜尋問題

從資料庫中找到你要的特定咚咚

像是從一個數列裡面找有沒有\(0\)

處理搜尋問題

二分搜

在排序過的序列中以\(O(log(n))\)找特定值

暴力找

以\(O(n)\)時間把每個都找一次

能在\(O(\sqrt{n} )\)在無結構資料庫中搜尋

和一般搜尋比有很好的優化

酷酷影片(順便練習英文

量子的離散傅立葉轉換

傅立葉轉換(?

你有一個函數\(f(x)\)

經過傅立葉轉換你可以讓

\(f(x)=\Sigma^n_{k=1}f_k(x)\)

經過轉換能讓原本不好分析的東西

變得可以分析

*這是離散傅立葉轉換

連續的需要積分

好像很沒用(?

實際應用:濾波

拿到一段音訊時,你無法直接擋掉你不要的部分

經過傅立葉轉換後你可以分成若干個頻率的波

把不要的部分擋掉再逆傅立葉轉換回去

能夠快速地找到

\(f(x)=a^xmod N\)的週期

 

好像很沒用(?

可以從周期得到因數

RSA問題中的質因數分解

已知最快的整數分解法

普通數域篩選法(GNFS)能在

\(O(e^{1.9(log N)^{\frac{1}{3}}(log(log N))^{\frac{2}{3}}})\)中質因數分解

shor's algorithm

會使用到量子傅立葉轉換

可以在\(O(log(n)^3)\)中解決

簡而言之快很多(可以帶數字看看

酷酷影片

模擬退火

以類似冶煉金屬降溫的過程

一開始高溫並再降溫過程中移到近似最佳解

類似機器學習,可以解決一些最優化問題

會有一函數lost(x)

目標是找到最小的lost(x)

示意圖

古典作法

先random一個點

再向四周踩踩看能不能有更小的lost(x)

遇到區域最小值可能會出事QQ

踩法可能是越踩越小步

(t為時間則步幅\(\frac{99}{(99+t)}\)之類的

量子做法

利用量子疊加態的特性來讓每個可能狀態存在

在模擬退火的過程中逐漸把不是最佳解的淘汰掉

而遇到區域最小值可以發生量子穿隧

來達到最佳解

可能有用ㄅ

Made with Slides.com