mirror of
https://github.com/quantumjim/Quantum-Computation-course-Basel.git
synced 2025-11-08 22:14:25 +01:00
244 lines
24 KiB
Plaintext
244 lines
24 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"colab_type": "text",
|
|
"id": "pmm5uV8cQQN6"
|
|
},
|
|
"source": [
|
|
"# Exercise 6\n",
|
|
"\n",
|
|
"\n",
|
|
"## 1\n",
|
|
"\n",
|
|
"Show that the Hadamard gate can be written in the following two forms\n",
|
|
"\n",
|
|
"$$H = \\frac{X+Z}{\\sqrt{2}} \\sim \\exp\\left(i \\frac{\\pi}{2} \\, \\frac{X+Z}{\\sqrt{2}}\\right).$$\n",
|
|
"\n",
|
|
"Here $\\sim$ is used to denote that the equality is valid up to a global phase, and hence that the resulting gates are physically equivalent.\n",
|
|
"\n",
|
|
"Hint: it might even be easiest to prove that $e^{i\\frac{\\pi}{2} M} \\sim M$ for any matrix whose eigenvalues are all $\\pm 1$, and that such matrices uniquely satisfy $M^2=I$."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"colab_type": "text",
|
|
"id": "CJyxxSDUQQN9"
|
|
},
|
|
"source": [
|
|
"## 2\n",
|
|
"\n",
|
|
"The Hadamard can be constructed from `rx` and `rz` operations as\n",
|
|
"\n",
|
|
"$$ R_x(\\theta) = e^{i\\frac{\\theta}{2} X}, ~~~ R_z(\\theta) = e^{i\\frac{\\theta}{2} Z},\\\\ H \\equiv \\lim_{n\\rightarrow\\infty} \\left( ~R_x\\left(\\frac{\\theta}{n}\\right) ~~R_z \\left(\\frac{\\theta}{n}\\right) ~\\right)^n.$$\n",
|
|
"\n",
|
|
"For some suitably chosen $\\theta$. When implemented for finite $n$, the resulting gate will be an approximation to the Hadamard whose error decreases with $n$.\n",
|
|
"\n",
|
|
"The following shows an example of this implemented with Qiskit with an incorrectly chosen value of $\\theta$ (and with the global phase ignored).\n",
|
|
"\n",
|
|
"* Determine the correct value of $\\theta$.\n",
|
|
"\n",
|
|
"* Show that the error (when using the correct value of $\\theta$) decreases quadratically with $n$."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"from qiskit import *\n",
|
|
"from qiskit.tools.visualization import plot_histogram\n",
|
|
"import numpy as np"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {
|
|
"colab": {},
|
|
"colab_type": "code",
|
|
"id": "4yqeQMlZQQN_"
|
|
},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 504x360 with 1 Axes>"
|
|
]
|
|
},
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"q = QuantumRegister(1)\n",
|
|
"c = ClassicalRegister(1)\n",
|
|
"\n",
|
|
"error = {}\n",
|
|
"for n in range(1,11):\n",
|
|
"\n",
|
|
" # Create a blank circuit\n",
|
|
" qc = QuantumCircuit(q,c)\n",
|
|
" \n",
|
|
" # Implement an approximate Hadamard\n",
|
|
" theta = np.pi # here we incorrectly choose theta=pi\n",
|
|
" for j in range(n):\n",
|
|
" qc.rx(theta/n,q[0])\n",
|
|
" qc.rz(theta/n,q[0])\n",
|
|
" \n",
|
|
" # We need to measure how good the above approximation is. Here's a simple way to do this.\n",
|
|
" # Step 1: Use a real hadamard to cancel the above approximation.\n",
|
|
" # For a good approximatuon, the qubit will return to state 0. For a bad one, it will end up as some superposition.\n",
|
|
" qc.h(q[0])\n",
|
|
" \n",
|
|
" # Step 2: Run the circuit, and see how many times we get the outcome 1.\n",
|
|
" # Since it should return 0 with certainty, the fraction of 1s is a measure of the error.\n",
|
|
" qc.measure(q,c)\n",
|
|
" shots = 20000\n",
|
|
" job = execute(qc, Aer.get_backend('qasm_simulator'),shots=shots)\n",
|
|
" try:\n",
|
|
" error[n] = (job.result().get_counts()['1']/shots)\n",
|
|
" except:\n",
|
|
" pass\n",
|
|
" \n",
|
|
"plot_histogram(error)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"colab_type": "text",
|
|
"id": "Yr5vuU_eQQOU"
|
|
},
|
|
"source": [
|
|
"## 3\n",
|
|
"\n",
|
|
"An improved version of the approximation can be found from,\n",
|
|
"\n",
|
|
"$$H \\equiv \\lim_{n\\rightarrow\\infty} \\left( ~ R_z \\left(\\frac{\\theta}{2n}\\right)~~ R_x\\left(\\frac{\\theta}{n}\\right) ~~ R_z \\left(\\frac{\\theta}{2n}\\right) ~\\right)^n.$$\n",
|
|
"\n",
|
|
"Implement this, and investigate the scaling of the error."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"## 4\n",
|
|
"\n",
|
|
"Write a circuit to implement the following unitary with perfect precision, using only `rx`, `rz` and Clifford gates\n",
|
|
"\n",
|
|
"$$U = \\exp\\left[i \\frac{\\theta}{2} \\, \\left( X\\otimes X + Z\\otimes Z \\right) \\right].$$\n",
|
|
"\n",
|
|
"Apply this to the initial state $|10\\rangle$ and determine the final state for the following values of $\\theta$.\n",
|
|
"\n",
|
|
"* (a) $\\theta=\\pi/4 $\n",
|
|
"* (b) $\\theta=\\pi/2 $\n",
|
|
"* (c) $\\theta=\\pi $\n",
|
|
"\n",
|
|
"You can use the following as a starting point."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Statevector([0.+0.j, 0.+0.j, 1.+0.j, 0.+0.j],\n",
|
|
" dims=(2, 2))\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"theta = np.pi/2\n",
|
|
"\n",
|
|
"q = QuantumRegister(2)\n",
|
|
"\n",
|
|
"# Create a blank circuit\n",
|
|
"qc = QuantumCircuit(q)\n",
|
|
"\n",
|
|
"# prepare the |10> state\n",
|
|
"qc.x(1)\n",
|
|
"\n",
|
|
"# do things!\n",
|
|
"\n",
|
|
"# get the final statevector\n",
|
|
"job = Aer.get_backend('statevector_simulator').run(qc)\n",
|
|
"statevector = job.result().get_statevector()\n",
|
|
"print(statevector)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"colab": {},
|
|
"colab_type": "code",
|
|
"id": "TeQnxYGDQ2ro"
|
|
},
|
|
"source": [
|
|
"## 5. Effects of garbage in quantum circuits\n",
|
|
"\n",
|
|
"The CX gate performs the mapping \n",
|
|
"$(i,j) \\rightarrow (i,i+j \\mod 2)$ from an input on two bits to an output on two bits.\n",
|
|
"\n",
|
|
"It is interesting to note (though not relevant to the problem) that this mapping is not of the form $(z,0) \\rightarrow (z,f(z))$, as considered last week, since the function $f(i,j) = i+j \\mod 2$ does not require the whole input to be present for reversibility.\n",
|
|
"\n",
|
|
"Here are two circuits with a CX gate.\n",
|
|
"\n",
|
|
"\n",
|
|
"\n",
|
|
"* (a) The first circuit is composed of both a quantum part and an irreversible classical part. Determine the final output bit .\n",
|
|
"\n",
|
|
"* (b) Show that the second circuit effectively acts as a CX between the first and third qubits, but with the additional effect of producting a garbage qubit on the second.\n",
|
|
"\n",
|
|
"* (c) Replace the true CX in the first circuit with the garbage producing one from the second. Show that this changes the output bit.\n",
|
|
"\n",
|
|
"* (d) Show how the garbage producing CX can be corrected by uncomputation."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"metadata": {
|
|
"colab": {
|
|
"collapsed_sections": [],
|
|
"name": "Exercise_4.ipynb",
|
|
"provenance": [],
|
|
"version": "0.3.2"
|
|
},
|
|
"kernelspec": {
|
|
"display_name": "Python 3",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.9.1"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 1
|
|
}
|