-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
220 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,220 @@ | ||
{ | ||
"cells": [ | ||
{ | ||
"cell_type": "markdown", | ||
"id": "fb789dfb", | ||
"metadata": { | ||
"slideshow": { | ||
"slide_type": "slide" | ||
} | ||
}, | ||
"source": [ | ||
"# Template to Exercise 3\n", | ||
"\n", | ||
"Author: Tobias Stollenwerk, Institute for Quantum Computing Analytics (PGI-12), FZ Jülich\n", | ||
"\n", | ||
"**Please use this template for exercise 3**\n" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 1, | ||
"id": "b0602cae", | ||
"metadata": { | ||
"slideshow": { | ||
"slide_type": "skip" | ||
} | ||
}, | ||
"outputs": [], | ||
"source": [ | ||
"import qiskit\n", | ||
"# numerics\n", | ||
"import numpy as np\n", | ||
"# functional programmin tools\n", | ||
"import itertools\n", | ||
"import functools\n", | ||
"import operator\n", | ||
"# plotting\n", | ||
"import matplotlib.pyplot as plt\n", | ||
"import seaborn\n", | ||
"# data analysis\n", | ||
"import pandas as pd\n", | ||
"# qiskit \n", | ||
"from qiskit import QuantumCircuit, transpile\n", | ||
"from qiskit_aer import QasmSimulator, AerSimulator\n", | ||
"from qiskit.quantum_info import Pauli\n", | ||
"from qiskit.visualization import array_to_latex, plot_histogram\n", | ||
"from qiskit.quantum_info import Kraus, SuperOp, SparsePauliOp, Operator, DensityMatrix, Statevector\n", | ||
"from qiskit_aer.noise import NoiseModel, QuantumError, ReadoutError, depolarizing_error\n", | ||
"from qiskit.circuit import ParameterVector\n" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 2, | ||
"id": "a65a8836", | ||
"metadata": {}, | ||
"outputs": [ | ||
{ | ||
"data": { | ||
"image/png": "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", | ||
"text/plain": [ | ||
"<Figure size 454.517x284.278 with 1 Axes>" | ||
] | ||
}, | ||
"metadata": {}, | ||
"output_type": "display_data" | ||
} | ||
], | ||
"source": [ | ||
"circuit = QuantumCircuit(2, 2)\n", | ||
"circuit.h(0)\n", | ||
"circuit.cx(0, 1)\n", | ||
"circuit.measure(0, 0)\n", | ||
"circuit.measure(1, 1);\n", | ||
"# display the circuit\n", | ||
"display(circuit.draw('mpl'))\n" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 3, | ||
"id": "6947dacd-c4ef-4640-a005-ccacace9ade0", | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"p = 0.1\n", | ||
"\n", | ||
"error_1 = depolarizing_error(p, 1)\n", | ||
"error_2 = error_1.tensor(error_1)" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 4, | ||
"id": "959f011f-9c47-4b36-929c-82430417ee0e", | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"# ... build noise model " | ||
] | ||
}, | ||
{ | ||
"cell_type": "markdown", | ||
"metadata": {}, | ||
"source": [ | ||
"## Hints for exercise 3.2 - quantum optimization\n", | ||
"\n", | ||
"Consider the MaxCut case\n", | ||
"\n", | ||
"$$\n", | ||
"H_f = \\sum_{u, v \\in E} Z_u Z_v\n", | ||
"$$\n", | ||
"\n", | ||
"for the edge set $E = \\{(1, 2), (2, 3), (2, 4), (3, 4)\\}$" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 5, | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [ | ||
"E = [(1, 2), (2, 3), (2, 4), (3, 4)]\n", | ||
"V = [1, 2, 3, 4]\n", | ||
"\n", | ||
"pauli_strings = []\n", | ||
"for u, v in E:\n", | ||
" pauli_strings.append(\"\".join([\"I\" if i not in (u, v) else \"Z\" for i in V ]))\n", | ||
"H = SparsePauliOp(pauli_strings)\n" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 6, | ||
"metadata": {}, | ||
"outputs": [ | ||
{ | ||
"name": "stdout", | ||
"output_type": "stream", | ||
"text": [ | ||
"dict_keys([(0, 0, 0, 0), (0, 0, 0, 1), (0, 0, 1, 0), (0, 0, 1, 1), (0, 1, 0, 0), (0, 1, 0, 1), (0, 1, 1, 0), (0, 1, 1, 1), (1, 0, 0, 0), (1, 0, 0, 1), (1, 0, 1, 0), (1, 0, 1, 1), (1, 1, 0, 0), (1, 1, 0, 1), (1, 1, 1, 0), (1, 1, 1, 1)])\n" | ||
] | ||
} | ||
], | ||
"source": [ | ||
"basis_states = {}\n", | ||
"ket = {0: Statevector([1, 0]), 1: Statevector([0, 1])}\n", | ||
"for i, bitstring in enumerate(itertools.product([0, 1], repeat=4)):\n", | ||
" state = ket[bitstring[0]]\n", | ||
" for k in range(len(bitstring) - 1):\n", | ||
" state = state.tensor(ket[bitstring[k + 1]])\n", | ||
" basis_states[bitstring] = state\n", | ||
"print(basis_states.keys())" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": 7, | ||
"metadata": {}, | ||
"outputs": [ | ||
{ | ||
"name": "stdout", | ||
"output_type": "stream", | ||
"text": [ | ||
"<(0, 0, 0, 0)|H|(0, 0, 0, 0)> = (4+0j)\n", | ||
"<(0, 0, 0, 1)|H|(0, 0, 0, 1)> = 0j\n", | ||
"<(0, 0, 1, 0)|H|(0, 0, 1, 0)> = 0j\n", | ||
"<(0, 0, 1, 1)|H|(0, 0, 1, 1)> = 0j\n", | ||
"<(0, 1, 0, 0)|H|(0, 1, 0, 0)> = (-2+0j)\n", | ||
"<(0, 1, 0, 1)|H|(0, 1, 0, 1)> = (-2+0j)\n", | ||
"<(0, 1, 1, 0)|H|(0, 1, 1, 0)> = (-2+0j)\n", | ||
"<(0, 1, 1, 1)|H|(0, 1, 1, 1)> = (2+0j)\n", | ||
"<(1, 0, 0, 0)|H|(1, 0, 0, 0)> = (2+0j)\n", | ||
"<(1, 0, 0, 1)|H|(1, 0, 0, 1)> = (-2+0j)\n", | ||
"<(1, 0, 1, 0)|H|(1, 0, 1, 0)> = (-2+0j)\n", | ||
"<(1, 0, 1, 1)|H|(1, 0, 1, 1)> = (-2+0j)\n", | ||
"<(1, 1, 0, 0)|H|(1, 1, 0, 0)> = 0j\n", | ||
"<(1, 1, 0, 1)|H|(1, 1, 0, 1)> = 0j\n", | ||
"<(1, 1, 1, 0)|H|(1, 1, 1, 0)> = 0j\n", | ||
"<(1, 1, 1, 1)|H|(1, 1, 1, 1)> = (4+0j)\n" | ||
] | ||
} | ||
], | ||
"source": [ | ||
"for bitstring, state in basis_states.items():\n", | ||
" f = state.expectation_value(H)\n", | ||
" print(\"<{}|H|{}> = {}\".format(bitstring, bitstring, f))" | ||
] | ||
}, | ||
{ | ||
"cell_type": "code", | ||
"execution_count": null, | ||
"metadata": {}, | ||
"outputs": [], | ||
"source": [] | ||
} | ||
], | ||
"metadata": { | ||
"celltoolbar": "Slideshow", | ||
"kernelspec": { | ||
"display_name": "Python 3 (ipykernel)", | ||
"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.12.2" | ||
} | ||
}, | ||
"nbformat": 4, | ||
"nbformat_minor": 5 | ||
} |