#第一題:Trotterization
## 試驗材料和多體系統
在這一次的挑戰中參賽中會對一個問題給出量子答案,金屬該如導電?
從經典物理學的角度來看,金屬具有自由電子,使電流很容易流過原子結構,我們在物理的電磁學裡有馬克士威方程來描述這種情況,但是我們可以更深入。
從量子理論的角度來看,我們看到原子的電子是位於金屬內的離散位點之間,這些站點彼此靠近,並且每個站點都具有與其相鄰站點相同的能級,這使電子可以在它們之間輕鬆移動,但是在現實生活中事情變得有點複雜。
這些站點中的每一個我們稱之為“晶格站點”實際上都具有略微不同的能量層級,我們在整個晶格中觀察到的這些細微差異是隨機分佈的,如果位點之間的差異足夠大,電子將通過稱為安德森定位的過程與該位點結合,並且不會再自由移動。
挑戰賽的參與者將從在真正的量子計算機上模擬這些類型的系統的基礎開始,然後擴展到進行獨特的實驗以研究這些電子在不同情況下的反應,參與者將完成研究人員用來更好地理解材料的相同初始步驟。
## Tight-binding Model
![](https://i.imgur.com/9joynpM.png)
這張緊束縛模型的圖片是量子力學用來描述固體材料中的電子電導,在這個模型中,每個原子都被視為一個格子結構且每個粒子都需要能量 $\epsilon_i$去佔據這個位置。每個電子可以消耗 $J$ 穿隧到隔壁,以下哈密頓量可以描述這個模型。
$$\frac{H_{tb}}{ℏ}=\sum_{i}\epsilon_i Z_i+J\sum_{\langle i,j\rangle}(X_iX_j+Y_iY_j)$$
哈密頓量中的第一項描述了每個位點的能量,第二項則是描述了相鄰晶格位點之間的相互作用能量。
在存在周期性晶格位能的情況下,給定量子的波函數與相鄰的晶格位置重疊,從而產生擴展的布洛赫波函數,在均勻晶格中所有位點能量都相等($\epsilon_i=0$),電子傳播在時間上是線性的,並由連續時間量子隨機行走來描述,這與經典的擴散傳輸形成對比,後者的傳播在時間上呈二次方慢,系統哈密頓量使我們能夠確定量子態如何隨時間演變,這個時間演化由薛定諤方程控制:
$$iℏ\frac{∂}{∂t}\vert\psi(t)\rangle=H\vert\psi(t)\rangle$$
在時間獨立的哈密頓系統下(即哈密頓量不會隨著時間演變),薛丁格方程的解法是以下形式:
$$\vert\psi(t)\rangle=e^{\frac{-iHt}{ℏ}}\ \vert\psi(0)\rangle$$
這個挑戰是要我們研讀在緊束縛哈密頓量下的時間動態,我們為時間演化建立最小化的電路。
### Trotterization
為了執行這個 Unitary 時間演進電路在量子電腦上,我們勢必要分解 U~tb~(t) 成多個在量子電腦上原生運行的單、雙量子閘,實現此目的的一種方法是 Trotterization,也稱為 Trotter-Suzuki 分解。
### Building the individual Pauli unitaries
在這個部份我們要建立 ZZ(t), XX(t), and YY(t)
![](https://i.imgur.com/E7CNuRJ.png)
### Clifford gates
![](https://i.imgur.com/HwCu0MT.png)
### 依照題目給的提示完成挑戰
#### *1-a Build subcircuit for XX(t) from single- and two-qubit gates.*
```python=
XX_qr = QuantumRegister(2)
XX_qc = QuantumCircuit(XX_qr, name='XX')
###EDIT CODE BELOW (add Clifford operator)
XX_qc.h(0)
XX_qc.h(1)
###DO NOT EDIT BELOW
XX_qc.append(ZZ, [0,1])
###EDIT CODE BELOW (add Clifford operator)
XX_qc.h(0)
XX_qc.h(1)
#XX_qc.s(1)
#XX_qc.x(1)
#XX_qc.sdg(1)
###DO NOT EDIT BELOW
# Convert custom quantum circuit into a gate
XX = XX_qc.to_instruction()
XX_qc.draw()
```
![](https://i.imgur.com/kYSEH9s.png)
#### *1-b Build a subcircuit for YY(t) from single- and two-qubit gates*
```python=+
YY_qr = QuantumRegister(2)
YY_qc = QuantumCircuit(YY_qr, name='YY')
###EDIT CODE BELOW (add Clifford operator)
YY_qc.s(0)
YY_qc.s(1)
###DO NOT EDIT BELOW
YY_qc.append(XX, [0,1])
###EDIT CODE BELOW (add Clifford operator)
YY_qc.sdg(0)
YY_qc.sdg(1)
###DO NOT EDIT BELOW
# Convert custom quantum circuit into a gate
YY = YY_qc.to_instruction()
YY_qc.draw()
```
![](https://i.imgur.com/gZKeicJ.png)
#### Building the trotterizated circuit
![](https://i.imgur.com/CMhKNhW.png)
我們要依照上述提供的公式做出題目要的量子電路
![](https://i.imgur.com/QjWo3FI.png)
#### *1-c Create the trotterized circuit and output the unitary associated with the circuit*
```python=+
def U_trotterize(t_target, trotter_steps):
qr = QuantumRegister(3)
qc = QuantumCircuit(qr)
###EDIT CODE BELOW (Create the trotterized circuit with various number of trotter steps)
for i in range(trotter_steps):
for i in range(0, num_qubits - 1):
qc.append(YY, [qr[i], qr[i+1]])
qc.append(XX, [qr[i], qr[i+1]])
###DO NOT EDIT BELOW
qc = qc.bind_parameters({t: t_target/trotter_steps})
return qi.Operator(qc)
```
這題完成的關鍵是因為我們不知道我們的電路中要幾次的**trotterizated circuit,所以完成的關鍵為 trotter_steps (44~47行)**
![](https://i.imgur.com/PNB0ylA.png)