"
- ]
- },
- "metadata": {
- "needs_background": "light"
- },
- "output_type": "display_data"
- }
- ],
+ "outputs": [],
"source": [
"\"\"\"Simulate a circuit using 1000 repetitions.\"\"\"\n",
"# Get a circuit with terminal measurements to simulate.\n",
@@ -1155,7 +899,7 @@
"print(result.histogram(key=\"a,b\"))\n",
"\n",
"# Plot a state histogram of the result.\n",
- "cirq.plot_state_histogram(result)"
+ "cirq.plot_state_histogram(result, plt.subplot())"
]
},
{
@@ -1172,19 +916,11 @@
},
{
"cell_type": "code",
- "execution_count": 21,
+ "execution_count": null,
"metadata": {
"id": "rPqVUsD9snYf"
},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Counter({'disagree': 504, 'agree': 496})\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"print(result.histogram(key=\"a,b\", fold_func=lambda bits: \"agree\" if bits[0] == bits[1] else \"disagree\"))"
]
@@ -1199,9 +935,13 @@
"\n",
"The very first indication that quantum computers could be more powerful than classical computers was provided by David Deutsch in his 1985 paper\n",
"\n",
- "> David Deutsch, \"[Quantum Theory, the Church-Turing Principle and the Universal Quantum Computer](https://people.eecs.berkeley.edu/~christos/classics/Deutsch_quantum_theory.pdf)\" *Proc. R. Soc. Lond.* A **400** 97–117. http://doi.org/10.1098/rspa.1985.0070\n",
+ "> David Deutsch, \"[Quantum Theory, the Church-Turing Principle and the Universal Quantum Computer](https://people.eecs.berkeley.edu/~christos/classics/Deutsch_quantum_theory.pdf){:external}\" *Proc. R. Soc. Lond. A* **400** 97–117 (1985). http://doi.org/10.1098/rspa.1985.0070\n",
+ "\n",
+ "This algorithm was extended by Deutsch and Richard Jozsa to a more convincing algorithmic seperation and what is now called the Deutsch-Jozsa algorithm. A futher improvement was made by Cleve et al.\n",
"\n",
- "This algorithm was extended by Deutsch and Richard Jozsa to a more convincing algorithmic seperation and what is now called the Deutsch-Jozsa algorithm. In this section we will show how to write circuits for the Deutsch algorithm and then as an exercise in using Cirq for algorithms for a small version of the Deutsch-Jozsa algorithm.\n",
+ "> R. Cleve, A. Ekert, C. Macchiavello, M. Mosca, \"[Quantum algorithms revisited](https://arxiv.org/abs/quant-ph/9708016){:external}\" *Proc. R. Soc. Lond. A* **454** 339–354 (1997). http://doi.org/10.1098/rspa.1998.0164\n",
+ "\n",
+ "In this section we will show how to write circuits for the Deutsch algorithm and then as an exercise in using Cirq for algorithms for a small version of the Deutsch-Jozsa algorithm.\n",
"\n",
"Let's begin with the Deutsch algorithm. In Deutsch's algorithm you are given access to a box which computes a one bit boolean function. That is it is a box which takes in a bit and outputs a bit. If we want to be a mathematician or theoretical computer scientist we write the function $f$ as $f: \\{0, 1\\} \\rightarrow \\{0, 1\\}$. There are exactly four such boolean functions which we can write out in a table\n",
"\n",
@@ -1286,7 +1026,7 @@
},
{
"cell_type": "code",
- "execution_count": 22,
+ "execution_count": null,
"metadata": {
"id": "YtWiBHonly69"
},
@@ -1348,38 +1088,11 @@
},
{
"cell_type": "code",
- "execution_count": 23,
+ "execution_count": null,
"metadata": {
"id": "aMHzLxztj-gq"
},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Circuit for f_0:\n",
- "0: ───H───H───M───\n",
- "\n",
- "1: ───X───H───────\n",
- "\n",
- "Circuit for f_1:\n",
- "0: ───H───H───M───\n",
- "\n",
- "1: ───X───H───X───\n",
- "\n",
- "Circuit for f_x:\n",
- "0: ───H───────@───H───M───\n",
- " │\n",
- "1: ───X───H───X───────────\n",
- "\n",
- "Circuit for f_notx:\n",
- "0: ───H───────@───H───M───\n",
- " │\n",
- "1: ───X───H───X───X───────\n",
- "\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"\"\"\"Creating the circuit used in Deutsch's algorithm.\"\"\"\n",
"def deutsch_algorithm(oracle):\n",
@@ -1408,22 +1121,11 @@
},
{
"cell_type": "code",
- "execution_count": 24,
+ "execution_count": null,
"metadata": {
"id": "ImffrBgJvLme"
},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "oracle: f_0 results: 0=0000000000\n",
- "oracle: f_1 results: 0=0000000000\n",
- "oracle: f_x results: 0=1111111111\n",
- "oracle: f_notx results: 0=1111111111\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"\"\"\"Simulate each of the circuits.\"\"\"\n",
"simulator = cirq.Simulator()\n",
@@ -1465,7 +1167,7 @@
},
{
"cell_type": "code",
- "execution_count": 25,
+ "execution_count": null,
"metadata": {
"id": "V5ZCXGCrxl4k"
},
@@ -1505,7 +1207,7 @@
},
{
"cell_type": "code",
- "execution_count": 26,
+ "execution_count": null,
"metadata": {
"cellView": "form",
"id": "qJP_e68e1JBs"
@@ -1534,30 +1236,11 @@
},
{
"cell_type": "code",
- "execution_count": 27,
+ "execution_count": null,
"metadata": {
"id": "81da6ec6fc5a"
},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n",
- "Your result on constant functions:\n",
- "2=0000000000\n",
- "2=1111111111\n",
- "\n",
- "Your result on balanced functions:\n",
- "2=0000000000\n",
- "2=0000000000\n",
- "2=0000000000\n",
- "2=1111111111\n",
- "2=1111111111\n",
- "2=1111111111\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"\"\"\"Check your answer by running this cell.\"\"\"\n",
"simulator = cirq.Simulator()\n",
@@ -1575,7 +1258,7 @@
},
{
"cell_type": "code",
- "execution_count": 28,
+ "execution_count": null,
"metadata": {
"cellView": "form",
"id": "mUvm9rmRFb4p"
@@ -1612,29 +1295,11 @@
},
{
"cell_type": "code",
- "execution_count": 29,
+ "execution_count": null,
"metadata": {
"id": "c1b1e989dab2"
},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "Result on constant functions:\n",
- "2=0000000000\n",
- "2=0000000000\n",
- "\n",
- "Result on balanced functions:\n",
- "2=1111111111\n",
- "2=1111111111\n",
- "2=1111111111\n",
- "2=1111111111\n",
- "2=1111111111\n",
- "2=1111111111\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"\"\"\"Simulate the Deutsch-Jozsa circuit and check the results.\"\"\"\n",
"print(\"Result on constant functions:\")\n",
@@ -1677,23 +1342,11 @@
},
{
"cell_type": "code",
- "execution_count": 30,
+ "execution_count": null,
"metadata": {
"id": "iIpoDaqK4yjV"
},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "0: ───X───@───H───────@───×───@───@───iSwap──────Rx(0.5π)───X^0.5───\n",
- " │ │ │ │ │ │\n",
- "1: ───Y───@───@───T───@───×───×───@───iSwap──────Ry(0.5π)───────────\n",
- " │ │ │ │\n",
- "2: ───Z───────X───S───@───────×───X───Rz(0.5π)──────────────────────\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"\"\"\"Examples of common gates defined in Cirq.\"\"\"\n",
"# Get some qubits.\n",
@@ -1735,22 +1388,11 @@
},
{
"cell_type": "code",
- "execution_count": 31,
+ "execution_count": null,
"metadata": {
"id": "7SUAT5F17afR"
},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "[[1.+0.j 0.+0.j 0.+0.j 0.+0.j]\n",
- " [0.+0.j 1.+0.j 0.+0.j 0.+0.j]\n",
- " [0.+0.j 0.+0.j 0.+0.j 1.+0.j]\n",
- " [0.+0.j 0.+0.j 1.+0.j 0.+0.j]]\n"
- ]
- }
- ],
+ "outputs": [],
"source": [
"\"\"\"Get the unitary of CNOT.\"\"\"\n",
"print(cirq.unitary(cirq.CNOT))"
@@ -1776,27 +1418,16 @@
"\n",
"In addition to `cirq.unitary` another important method (behind the scenes, anyways) is `cirq.apply_unitary`. This allows you to apply a unitary gate onto a state. Of course we could have applied the unitary directly to the state, using `cirq.unitary`. We'll see below in understanding how these methods are implemented that the `cirq.apply_unitary` can be used to apply the gate more directly onto the state and can save allocations of memory to store the unitary. \n",
"\n",
- "If we apply `cirq.Rx` to a state we can see how it rotates the state. To do this let us introduce a new simulate method `simulate_moment_steps`. This allows us to simulate the circuit `Moment` by `Moment`. At each point we can access the state. For example here we can use this to create a circuit that is a series of small `cirq.Rx` rotations and plot the probability of measuring the state in the $|0\\rangle$ state:"
+ "If we apply `cirq.Rx` to a state we can see how it rotates the state. To do this let us introduce a new simulate method, `simulate_moment_steps`. This allows us to simulate the circuit `Moment` by `Moment`. At each point we can access the state. For example here we can use this to create a circuit that is a series of small `cirq.Rx` rotations and plot the probability of measuring the state in the $|0\\rangle$ state:"
]
},
{
"cell_type": "code",
- "execution_count": 32,
+ "execution_count": null,
"metadata": {
"id": "UgoNBN1H8B6h"
},
- "outputs": [
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "
"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
+ "outputs": [],
"source": [
"\"\"\"Plot the probability of measuring a qubit in the ground state.\"\"\"\n",
"# Get a qubit.\n",
@@ -1832,22 +1463,11 @@
},
{
"cell_type": "code",
- "execution_count": 33,
+ "execution_count": null,
"metadata": {
"id": "iynhJEvoCIro"
},
- "outputs": [
- {
- "data": {
- "image/png": "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\n",
- "text/plain": [
- "