SQCS:
discord:https://discord.gg/KjWMRewQB2
FB:學生量子電腦交流會 SQCS (facebook.com)
量子電腦是什麼?
專注在量子退火的量子計算機
描述演算法的運行速度
會用在判斷演算法執行時間或是可行度
通常使用2048位元的數
古典電腦在花費地球年齡的時間(46億年)都跑不完
但量子電腦電腦可以快速算出來\(O({log(N)}^3)\)
由於分子在微觀上不可以用古典物理描述
需要用到量子力學才能描述
利用量子電腦來模擬分子
計算出最低能量
利用量子力學來達到真正的隨機
利用量子中的疊加態來達到快速地搜索
\(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\)可以同時是0跟1
bit只有0或1
還記得之前講的薛丁格的貓嗎
\(Qubit\)也跟貓貓一樣
有量子疊加態的特性
疊加態要在被觀測之後,才會變成0或是1
在此定義中,\( \left | \alpha \right |^{2} \)代表著
此\(Qubit\)被觀察到後,為0的機率
相對的,\( \left | \beta \right |^{2} \)就是代表著
此\(Qubit\)被觀察到後,為1的機率
球頂,就表示狀態為 |0 \rangle∣0⟩ 的 \(Qubit\)
球底,就表示狀態為 |1 \rangle∣1⟩ 的 \(Qubit\)Qubiㄌ量子
AND
OR
NOT
藉由讓bit通過邏輯閥,我們可以達成想讓電腦做到的事
AND
量子電腦也有量子的邏輯閘喔
Pauli-X gate
Hadamard gate
Ry gate
接下來要介紹他們
\((|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}}\)
\((|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}}\)
這個量子閘操作一個 \(Qubit\),
作用是在 \(Bloch Sphere\) 上旋轉 \(Y\)軸 \(\psi\) 度來改變量子態。
這個量子閘操作 \(2\) 個 \(Qubit\)
作用是 :
如果第一個 \(Qubit\) 為 \(|1\rangle\),
那麼就對第二個 \(Qubit\) 操作 \(X Gate\)。
\(\leftarrow\) 第一個 \(Qubit\) (決定者)
\(\uparrow\) 第二個 \(Qubit\) (被操控者)
用於交換兩個\(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
只要把量子閘拖到線上就可以實作了
把h投影到a
把h投影到b
表示法: \(\vec a\)
\(\vec a\)=(7,1,2,2)
括號中的數字分別代表
(第一個維度,第二個維度,第三個維度...)
以此類推
頭接尾
各個維度相加
\(\overrightarrow{a}=(7,1)\)
\(\overrightarrow{b}=(2,2)\)
\(\overrightarrow{a}+\overrightarrow{b}=(9,3)\)
把負的向量轉向
或是把各個維度都加上負號
再做向量加法
\(\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}|\)為取\(\vec{a}\)長度
\(\vec{a}\times\vec{b}=| \vec{a}||\vec{b}|sin(\theta)\vec{n}\)
\(\vec{n}\)為與\(\vec{a}\)和\(\vec{b}\)垂直的單位向量
*單位向量為長度為1的向量
兩向量為正交的條件為inner product=0
\(i=\sqrt{-1}\)
\(z=x+yi\)
實部
虛部
虛部改正負號
\(z=x+yi\)
\(\rightarrow \overline{z}=x-yi\)
一個矩形中放了很多數字
有線性變換等用途
\(A_{n\times m}\)
一定要n,m相同才能加
一定要\(m_A和n_b\)相同才能乘
在兩個向量空間之間的一種保持
向量加法和純量乘法的特殊映射
\(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\}\)
各放一個\(H\) gate
會有\(2^{\lceil log(n) \rceil }\)個狀態
\( (2^{\lceil log(n) \rceil }\ge n )\)
機率平均但會骰到一些不合法的值
所以要可能要重骰 ; _ ;
HOW?
我們讓量子骰有\(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\)
描述演算法的運行速度
會用在判斷演算法執行時間
或是可行度
*之前應該已經看過他了
第一個比傳統演算法快的量子演算法
傳統\(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\)的週期
可以從周期得到因數
已知最快的整數分解法
普通數域篩選法(GNFS)能在
\(O(e^{1.9(log N)^{\frac{1}{3}}(log(log N))^{\frac{2}{3}}})\)中質因數分解
以類似冶煉金屬降溫的過程
一開始高溫並再降溫過程中移到近似最佳解
類似機器學習,可以解決一些最優化問題
會有一函數lost(x)
目標是找到最小的lost(x)
示意圖
先random一個點
再向四周踩踩看能不能有更小的lost(x)
遇到區域最小值可能會出事QQ
踩法可能是越踩越小步
(t為時間則步幅\(\frac{99}{(99+t)}\)之類的
利用量子疊加態的特性來讓每個可能狀態存在
在模擬退火的過程中逐漸把不是最佳解的淘汰掉
而遇到區域最小值可以發生量子穿隧
來達到最佳解
可能有用ㄅ