{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": { "cellView": "form", "execution": { "iopub.execute_input": "2023-05-02T09:33:21.000979Z", "iopub.status.busy": "2023-05-02T09:33:21.000342Z", "iopub.status.idle": "2023-05-02T09:33:21.004511Z", "shell.execute_reply": "2023-05-02T09:33:21.003853Z" }, "id": "906e07f6e562" }, "outputs": [], "source": [ "# @title Copyright 2020 The Cirq Developers\n", "# Licensed under the Apache License, Version 2.0 (the \"License\");\n", "# you may not use this file except in compliance with the License.\n", "# You may obtain a copy of the License at\n", "#\n", "# https://www.apache.org/licenses/LICENSE-2.0\n", "#\n", "# Unless required by applicable law or agreed to in writing, software\n", "# distributed under the License is distributed on an \"AS IS\" BASIS,\n", "# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n", "# See the License for the specific language governing permissions and\n", "# limitations under the License." ] }, { "cell_type": "markdown", "metadata": { "id": "291eb7f565e0" }, "source": [ "# Quantum approximate optimization algorithm for the Ising model" ] }, { "cell_type": "markdown", "metadata": { "id": "4dec45d973fc" }, "source": [ "
\n",
" ![]() | \n",
" \n",
" ![]() | \n",
" \n",
" ![]() | \n",
" \n",
" ![]() | \n",
"
(0, 0): ───H───\n", "\n", "(0, 1): ───H───\n", "\n", "(0, 2): ───H───\n", "\n", "(1, 0): ───H───\n", "\n", "(1, 1): ───H───\n", "\n", "(1, 2): ───H───\n", "\n", "(2, 0): ───H───\n", "\n", "(2, 1): ───H───\n", "\n", "(2, 2): ───H───" ], "text/plain": [ "(0, 0): ───H───\n", "\n", "(0, 1): ───H───\n", "\n", "(0, 2): ───H───\n", "\n", "(1, 0): ───H───\n", "\n", "(1, 1): ───H───\n", "\n", "(1, 2): ───H───\n", "\n", "(2, 0): ───H───\n", "\n", "(2, 1): ───H───\n", "\n", "(2, 2): ───H───" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\"\"\"Create the QAOA circuit.\"\"\"\n", "# Use sympy.Symbols for the 𝛾 and β parameters.\n", "gamma = sympy.Symbol(\"𝛄\")\n", "beta = sympy.Symbol(\"β\")\n", "\n", "# Start in the H|0> state.\n", "qaoa = cirq.Circuit(cirq.H.on_each(qubits))\n", "\n", "# Your code here!\n", "\n", "# Display the QAOA circuit.\n", "qaoa" ] }, { "cell_type": "markdown", "metadata": { "id": "VEAt5QZvtPu_" }, "source": [ "#### Solution" ] }, { "cell_type": "markdown", "metadata": { "id": "7zWHPT1ktlUk" }, "source": [ "We'll just illustrate the solution for a single $C$ layer and a single $B$ layer." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "execution": { "iopub.execute_input": "2023-05-02T09:33:45.565432Z", "iopub.status.busy": "2023-05-02T09:33:45.564842Z", "iopub.status.idle": "2023-05-02T09:33:45.594411Z", "shell.execute_reply": "2023-05-02T09:33:45.593731Z" }, "id": "lHjIRxL13nXP" }, "outputs": [ { "data": { "text/html": [ "
┌──────────────────┐ ┌──────────────────┐\n", "(0, 0): ───H───ZZ───────ZZ───────Z^(0.5*𝛄)──────────────────────────────────────────────────────────────────────────────────────────────X^(β)───\n", " │ │\n", "(0, 1): ───H───┼────────ZZ^(𝛄)───ZZ──────────ZZ────────Z^(0.5*𝛄)────────────────────────────────────────────────────────────────────────X^(β)───\n", " │ │ │\n", "(0, 2): ───H───┼─────────────────┼───────────ZZ^(𝛄)────ZZ────────────────────Z^(0.5*𝛄)──────────────────────────────────────────────────X^(β)───\n", " │ │ │\n", "(1, 0): ───H───ZZ^(𝛄)───ZZ───────┼───────────ZZ────────┼────────Z^(0.5*𝛄)───────────────────────────────────────────────────────────────X^(β)───\n", " │ │ │ │\n", "(1, 1): ───H────────────┼────────ZZ^(𝛄)──────ZZ^(𝛄)────┼────────ZZ───────────ZZ───────────Z^(0.5*𝛄)─────────────────────────────────────X^(β)───\n", " │ │ │ │\n", "(1, 2): ───H────────────┼──────────────────────────────ZZ^(𝛄)───┼────────────ZZ^(𝛄)───────ZZ────────────────────Z^(0.5*𝛄)───────────────X^(β)───\n", " │ │ │\n", "(2, 0): ───H────────────ZZ^(𝛄)──────────────────────────────────┼────────────ZZ───────────┼────────Z^(0.5*𝛄)────────────────────────────X^(β)───\n", " │ │ │\n", "(2, 1): ───H────────────────────────────────────────────────────ZZ^(𝛄)───────ZZ^(𝛄)───────┼─────────────────────ZZ──────────Z^(0.5*𝛄)───X^(β)───\n", " │ │\n", "(2, 2): ───H──────────────────────────────────────────────────────────────────────────────ZZ^(𝛄)────────────────ZZ^(𝛄)──────Z^(0.5*𝛄)───X^(β)───\n", " └──────────────────┘ └──────────────────┘" ], "text/plain": [ " ┌──────────────────┐ ┌──────────────────┐\n", "(0, 0): ───H───ZZ───────ZZ───────Z^(0.5*𝛄)──────────────────────────────────────────────────────────────────────────────────────────────X^(β)───\n", " │ │\n", "(0, 1): ───H───┼────────ZZ^(𝛄)───ZZ──────────ZZ────────Z^(0.5*𝛄)────────────────────────────────────────────────────────────────────────X^(β)───\n", " │ │ │\n", "(0, 2): ───H───┼─────────────────┼───────────ZZ^(𝛄)────ZZ────────────────────Z^(0.5*𝛄)──────────────────────────────────────────────────X^(β)───\n", " │ │ │\n", "(1, 0): ───H───ZZ^(𝛄)───ZZ───────┼───────────ZZ────────┼────────Z^(0.5*𝛄)───────────────────────────────────────────────────────────────X^(β)───\n", " │ │ │ │\n", "(1, 1): ───H────────────┼────────ZZ^(𝛄)──────ZZ^(𝛄)────┼────────ZZ───────────ZZ───────────Z^(0.5*𝛄)─────────────────────────────────────X^(β)───\n", " │ │ │ │\n", "(1, 2): ───H────────────┼──────────────────────────────ZZ^(𝛄)───┼────────────ZZ^(𝛄)───────ZZ────────────────────Z^(0.5*𝛄)───────────────X^(β)───\n", " │ │ │\n", "(2, 0): ───H────────────ZZ^(𝛄)──────────────────────────────────┼────────────ZZ───────────┼────────Z^(0.5*𝛄)────────────────────────────X^(β)───\n", " │ │ │\n", "(2, 1): ───H────────────────────────────────────────────────────ZZ^(𝛄)───────ZZ^(𝛄)───────┼─────────────────────ZZ──────────Z^(0.5*𝛄)───X^(β)───\n", " │ │\n", "(2, 2): ───H──────────────────────────────────────────────────────────────────────────────ZZ^(𝛄)────────────────ZZ^(𝛄)──────Z^(0.5*𝛄)───X^(β)───\n", " └──────────────────┘ └──────────────────┘" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\"\"\"Create the QAOA circuit.\"\"\"\n", "# Use sympy.Symbols for the 𝛾 and β parameters.\n", "gamma = sympy.Symbol(\"𝛄\")\n", "beta = sympy.Symbol(\"β\")\n", "\n", "# Start in the H|0> state.\n", "qaoa = cirq.Circuit(cirq.H.on_each(qubits))\n", "\n", "# Implement the U(gamma, C) operator.\n", "qaoa.append(gamma_layer(gamma, h))\n", "\n", "# Implement the U(beta, B) operator.\n", "qaoa.append(beta_layer(beta), strategy=cirq.InsertStrategy.NEW_THEN_INLINE)\n", "\n", "# Display the QAOA circuit.\n", "qaoa" ] }, { "cell_type": "markdown", "metadata": { "id": "9fc72a4fb3d3" }, "source": [ "### Computing the energy" ] }, { "cell_type": "markdown", "metadata": { "id": "3HtlMxa6QpVo" }, "source": [ "To train the QAOA circuit (that is, find the optimal values of the parameters) we're going to need to be able to compute the expectation value of the Ising model energy.\n", "\n", "If we were using real hardware, the only way to compute the expectation value of the energy would be to estimate it by sampling. Using a simulator we can alternatively compute the wavefunction and then calculate the expectation value from that. Not only does this save us from having to worry about statistical error, it also tends to be faster that simulating the sampling process.\n", "\n", "We divide the total energy by the number of qubits because we expect the energy to scale with the size of the system." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "execution": { "iopub.execute_input": "2023-05-02T09:33:45.598061Z", "iopub.status.busy": "2023-05-02T09:33:45.597460Z", "iopub.status.idle": "2023-05-02T09:33:45.603951Z", "shell.execute_reply": "2023-05-02T09:33:45.603273Z" }, "id": "-9etj1AeK6dG" }, "outputs": [], "source": [ "def energy_from_wavefunction(wf: np.ndarray, h: np.ndarray) -> float:\n", " \"\"\"Computes the energy-per-site of the Ising model directly from the\n", " a given wavefunction.\n", "\n", " Args:\n", " wf: Array of size 2**(n_rows * n_cols) specifying the wavefunction.\n", " h: Array of shape (n_rows, n_cols) giving the magnetic field values.\n", "\n", " Returns:\n", " energy: Float equal to the expectation value of the energy per site\n", " \"\"\"\n", " n_sites = n_rows * n_cols\n", "\n", " # Z is an array of shape (n_sites, 2**n_sites). Each row consists of the\n", " # 2**n_sites non-zero entries in the operator that is the Pauli-Z matrix on\n", " # one of the qubits times the identities on the other qubits. The\n", " # (i*n_cols + j)th row corresponds to qubit (i,j).\n", " Z = np.array(\n", " [(-1) ** (np.arange(2**n_sites) >> i) for i in range(n_sites - 1, -1, -1)]\n", " )\n", "\n", " # Create the operator corresponding to the interaction energy summed over all\n", " # nearest-neighbor pairs of qubits\n", " ZZ_filter = np.zeros_like(wf, dtype=float)\n", " for i in range(n_rows):\n", " for j in range(n_cols):\n", " if i < n_rows - 1:\n", " ZZ_filter += Z[i * n_cols + j] * Z[(i + 1) * n_cols + j]\n", " if j < n_cols - 1:\n", " ZZ_filter += Z[i * n_cols + j] * Z[i * n_cols + (j + 1)]\n", "\n", " energy_operator = -ZZ_filter - h.reshape(n_sites).dot(Z)\n", "\n", " # Expectation value of the energy divided by the number of sites\n", " return np.sum(np.abs(wf) ** 2 * energy_operator) / n_sites" ] }, { "cell_type": "markdown", "metadata": { "id": "fjFPEQuyvxjR" }, "source": [ "We'll also need a helper function that computes the expected value of the energy given some parameters of the QAOA." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "execution": { "iopub.execute_input": "2023-05-02T09:33:45.607226Z", "iopub.status.busy": "2023-05-02T09:33:45.606668Z", "iopub.status.idle": "2023-05-02T09:33:45.611047Z", "shell.execute_reply": "2023-05-02T09:33:45.610389Z" }, "id": "XOYLY_u5K7z0" }, "outputs": [], "source": [ "def energy_from_params(\n", " gamma_value: float, beta_value: float, qaoa: cirq.Circuit, h: np.ndarray\n", ") -> float:\n", " \"\"\"Returns the energy given values of the parameters.\"\"\"\n", " sim = cirq.Simulator()\n", " params = cirq.ParamResolver({\"𝛄\": gamma_value, \"β\": beta_value})\n", " wf = sim.simulate(qaoa, param_resolver=params).final_state_vector\n", " return energy_from_wavefunction(wf, h)" ] }, { "cell_type": "markdown", "metadata": { "id": "909ff1474e87" }, "source": [ "### Optimizing the parameters" ] }, { "cell_type": "markdown", "metadata": { "id": "r-CjbPwkRI_I" }, "source": [ "Now we need to figure out the best values of $\\gamma$ and $\\beta$ by minimizing the expectation value of the energy. We'll start by doing a brute-force search of the parameter space for illustrative purposes." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "execution": { "iopub.execute_input": "2023-05-02T09:33:45.614498Z", "iopub.status.busy": "2023-05-02T09:33:45.613921Z", "iopub.status.idle": "2023-05-02T09:34:05.748315Z", "shell.execute_reply": "2023-05-02T09:34:05.747441Z" }, "id": "hM2Zd_kTI578" }, "outputs": [], "source": [ "\"\"\"Do a grid search over values of 𝛄 and β.\"\"\"\n", "# Set the grid size and range of parameters.\n", "grid_size = 50\n", "gamma_max = 2\n", "beta_max = 2\n", "\n", "# Do the grid search.\n", "energies = np.zeros((grid_size, grid_size))\n", "for i in range(grid_size):\n", " for j in range(grid_size):\n", " energies[i, j] = energy_from_params(\n", " i * gamma_max / grid_size, j * beta_max / grid_size, qaoa, h\n", " )" ] }, { "cell_type": "markdown", "metadata": { "id": "b9b6bb9ad449" }, "source": [ "We can visualize the energy landscape as follows." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "execution": { "iopub.execute_input": "2023-05-02T09:34:05.752956Z", "iopub.status.busy": "2023-05-02T09:34:05.752226Z", "iopub.status.idle": "2023-05-02T09:34:06.189960Z", "shell.execute_reply": "2023-05-02T09:34:06.189206Z" }, "id": "AFP2Ofi0KTfq" }, "outputs": [ { "data": { "image/png": "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AkaPHo2HH37YWob65PHrr7/innvuwejRozFy5EgsW7YMo0ePxgcffIBp06bh8ccfx0MPPYRFixbhgQcewKlTp9C0aVMAQH5+Pm6//XbodDokJycjMDAQX375JSZOnIji4mJMmzYNXbp0wdy5czFz5kxMnjwZAwYMAAD069cPwLUGX0JCAnr37o1Zs2ZBr9dbG9r/+te/0LdvX5vyjhw5Eh07dsSrr74KIQQA4P7778dPP/2EJ598Em3btsX58+exbds2nDx5Em3btlW9LkS1EtQorV69WgCodTEajdZ0eXl5AoBo2bKluHTpknX9li1bBADx6aefWtcNGTJE9OjRQ1y9etW6zmKxiH79+omOHTvWeO/+/fuLqqoq6/ry8nLRsmVLcdttt4nKykrr+vT0dAFADBw40Lpu69atAoD48ssvbY4rMjLSJp2SsrIym9cVFRWie/fu4g9/+IN13RtvvCEAiAsXLqjmp5a/EELExcWJdu3aqe5bfX6+/fZbm/Vt2rQR48ePr5F+4MCBNse8c+dOAUB06dJFlJeXW9e/+eabAoD48ccfhRBCVFVViYiICNGmTRvx66+/2uRpsVis/586dapQ+qgDELNmzbK+TkxMFF5eXuL48ePWdWfPnhVNmzYVd955Z41jjI2NtXmvp59+WhgMBlFYWFjr+1WLiooSQUFBoqCgwLru+++/F3q9XowbN67Gufjoo4+k+f22TL179xYVFRXW9QsXLhQAxJYtW6zraru+jz32mPD19bWp/wMHDhQARFpaWo309c1j3bp11nVHjhwRAIRerxd79+61rq/+XKxevdq6buLEiSI0NFRcvHjR5r1Gjx4tAgICrOX49ttva+wrxLW60LFjRxEXF2dzrcrKykRERIS46667rOtmzZolAIgxY8bY5PHrr78KAGLRokU1jplIC96OaeRSU1Oxbds2m+XLL7+skW7UqFFo3ry59XX1L6X//Oc/AIBLly5hx44dePDBB3H58mVcvHgRFy9eREFBAeLi4nD06FGcOXPGJs9JkybZ9GJ89913KCgowKRJk2wedhw7dqzNewNAbGwswsLC8MEHH1jXHT58GD/88AMefvhh1eP28fGx/v/XX39FUVERBgwYgIMHD1rXVz9HsGXLFlgsFtU8lfKv7m0aOHAg/vOf/6CoqKheedkrKSkJXl5e1te/v2aHDh1C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QEBAo/vgAYC/vz/LfZ011rKz3NcXy3396fXOe/zR29vb7RoOjuTyRsjUqVOxbt06bNmyBU2bNrU+sxEQEAAfHx8AwLhx49C6dWvMnz8fAPDUU09h4MCBeP311zFs2DCsX78e3333HZYvXw4A0Ol0mDZtGl555RV07NgRERERmDFjBsLCwpCYmOiS4yQiIiJbLm+ELFu2DAAwaNAgm/WrV6/GhAkTAAAnT560acn269cP69atw8svv4yXXnoJHTt2xObNm20eZn3++edRWlqKyZMno7CwEP3790dGRgZbrERERA2EyxshdXlqOSsrq8a6kSNHYuTIkYr76HQ6zJ07F3PnzrWrXEajEbNmzar1Fk1DxnJff4217Cz39cVyX3+NuezuosENVkZERETuocENVkZERETugY0QIiIicgk2QoiIiMgl2AghIiIil3CrRkhqairatm0Lb29vREdHY//+/dL0H330ETp37gxvb2/06NEDX3xhOzSvEAIzZ85EaGgofHx8EBsbi6NHj7q03CtWrMCAAQPQvHlzNG/eHLGxsTXST5gwATqdzmaJj493abnT09NrlOn34dQN8XwPGjSoRrl1Oh2GDRtmTXM9zvfu3bsxfPhwhIWFQafTYfPmzar7ZGVl4dZbb4XRaESHDh2Qnp5eI019PzPOLvfHH3+Mu+66C4GBgfD390dMTAy2bt1qk2b27Nk1znfnzp1dWu6srKxa68nv57Jy9vm2p+y11V+dTodu3bpZ0zj7nM+fPx+33XYbmjZtiqCgICQmJiI3N1d1v4byHU7K3KYRsmHDBqSkpGDWrFk4ePAgevbsibi4OJw/f77W9N988w3GjBmDiRMn4tChQ0hMTERiYiIOHz5sTbNw4UK89dZbSEtLw759++Dn54e4uDhcvVr7pHfXo9xZWVkYM2YMdu7ciezsbISHh2Po0KE4c+aMTbr4+HicO3fOunz44YcOK7M95Qaujcj42zL98ssvNtsb4vn++OOPbcp8+PBhGAyGGuHjzj7fpaWl6NmzJ1JTU+uUPi8vD8OGDcPgwYORk5ODadOm4dFHH7X5g27PNXR2uXfv3o277roLX3zxBQ4cOIDBgwdj+PDhOHTokE26bt262ZxvR89HVd9yV8vNzbUpV1BQkHXb9Tjf9pT9zTfftCnzqVOn0KJFixp13JnnfNeuXZg6dSr27t2L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", "text/plain": [ "
┌──────────────────┐ ┌──────────────────┐\n", "(0, 0): ───H───ZZ───────ZZ───────Z^(0.5*𝛄)──────────────────────────────────────────────────────────────────────────────────────────────X^(β)───M('m')───\n", " │ │ │\n", "(0, 1): ───H───┼────────ZZ^(𝛄)───ZZ──────────ZZ────────Z^(0.5*𝛄)────────────────────────────────────────────────────────────────────────X^(β)───M────────\n", " │ │ │ │\n", "(0, 2): ───H───┼─────────────────┼───────────ZZ^(𝛄)────ZZ────────────────────Z^(0.5*𝛄)──────────────────────────────────────────────────X^(β)───M────────\n", " │ │ │ │\n", "(1, 0): ───H───ZZ^(𝛄)───ZZ───────┼───────────ZZ────────┼────────Z^(0.5*𝛄)───────────────────────────────────────────────────────────────X^(β)───M────────\n", " │ │ │ │ │\n", "(1, 1): ───H────────────┼────────ZZ^(𝛄)──────ZZ^(𝛄)────┼────────ZZ───────────ZZ───────────Z^(0.5*𝛄)─────────────────────────────────────X^(β)───M────────\n", " │ │ │ │ │\n", "(1, 2): ───H────────────┼──────────────────────────────ZZ^(𝛄)───┼────────────ZZ^(𝛄)───────ZZ────────────────────Z^(0.5*𝛄)───────────────X^(β)───M────────\n", " │ │ │ │\n", "(2, 0): ───H────────────ZZ^(𝛄)──────────────────────────────────┼────────────ZZ───────────┼────────Z^(0.5*𝛄)────────────────────────────X^(β)───M────────\n", " │ │ │ │\n", "(2, 1): ───H────────────────────────────────────────────────────ZZ^(𝛄)───────ZZ^(𝛄)───────┼─────────────────────ZZ──────────Z^(0.5*𝛄)───X^(β)───M────────\n", " │ │ │\n", "(2, 2): ───H──────────────────────────────────────────────────────────────────────────────ZZ^(𝛄)────────────────ZZ^(𝛄)──────Z^(0.5*𝛄)───X^(β)───M────────\n", " └──────────────────┘ └──────────────────┘" ], "text/plain": [ " ┌──────────────────┐ ┌──────────────────┐\n", "(0, 0): ───H───ZZ───────ZZ───────Z^(0.5*𝛄)──────────────────────────────────────────────────────────────────────────────────────────────X^(β)───M('m')───\n", " │ │ │\n", "(0, 1): ───H───┼────────ZZ^(𝛄)───ZZ──────────ZZ────────Z^(0.5*𝛄)────────────────────────────────────────────────────────────────────────X^(β)───M────────\n", " │ │ │ │\n", "(0, 2): ───H───┼─────────────────┼───────────ZZ^(𝛄)────ZZ────────────────────Z^(0.5*𝛄)──────────────────────────────────────────────────X^(β)───M────────\n", " │ │ │ │\n", "(1, 0): ───H───ZZ^(𝛄)───ZZ───────┼───────────ZZ────────┼────────Z^(0.5*𝛄)───────────────────────────────────────────────────────────────X^(β)───M────────\n", " │ │ │ │ │\n", "(1, 1): ───H────────────┼────────ZZ^(𝛄)──────ZZ^(𝛄)────┼────────ZZ───────────ZZ───────────Z^(0.5*𝛄)─────────────────────────────────────X^(β)───M────────\n", " │ │ │ │ │\n", "(1, 2): ───H────────────┼──────────────────────────────ZZ^(𝛄)───┼────────────ZZ^(𝛄)───────ZZ────────────────────Z^(0.5*𝛄)───────────────X^(β)───M────────\n", " │ │ │ │\n", "(2, 0): ───H────────────ZZ^(𝛄)──────────────────────────────────┼────────────ZZ───────────┼────────Z^(0.5*𝛄)────────────────────────────X^(β)───M────────\n", " │ │ │ │\n", "(2, 1): ───H────────────────────────────────────────────────────ZZ^(𝛄)───────ZZ^(𝛄)───────┼─────────────────────ZZ──────────Z^(0.5*𝛄)───X^(β)───M────────\n", " │ │ │\n", "(2, 2): ───H──────────────────────────────────────────────────────────────────────────────ZZ^(𝛄)────────────────ZZ^(𝛄)──────Z^(0.5*𝛄)───X^(β)───M────────\n", " └──────────────────┘ └──────────────────┘" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\"\"\"Add measurements to the QAOA circuit.\"\"\"\n", "measurement_circuit = qaoa.copy()\n", "measurement_circuit.append(\n", " cirq.measure(*[qubit for row in qubits for qubit in row], key=\"m\")\n", ")\n", "measurement_circuit" ] }, { "cell_type": "markdown", "metadata": { "id": "_OOqzrQwGTJZ" }, "source": [ "Now we'll measure the output of the circuit repeatedly for a good set of angles $\\gamma$ and $\\beta$. Note that these are simply found from inspecting the above heatmap of the energy found via grid search." ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "execution": { "iopub.execute_input": "2023-05-02T09:34:11.237482Z", "iopub.status.busy": "2023-05-02T09:34:11.236960Z", "iopub.status.idle": "2023-05-02T09:34:11.256810Z", "shell.execute_reply": "2023-05-02T09:34:11.256115Z" }, "id": "KbIu8eyNSK_t" }, "outputs": [], "source": [ "\"\"\"Sample from the QAOA circuit.\"\"\"\n", "num_reps = 1000 # Try different numbers of repetitions.\n", "gamma_value, beta_value = 0.2, 0.25 # Try different values of the parameters.\n", "\n", "# Sample from the circuit.\n", "simulator = cirq.Simulator()\n", "params = cirq.ParamResolver({\"𝛄\": gamma_value, \"β\": beta_value})\n", "result = simulator.run(measurement_circuit, param_resolver=params, repetitions=num_reps)" ] }, { "cell_type": "markdown", "metadata": { "id": "EudMLjzNGadh" }, "source": [ "Finally, we'll compute the energy for each of our measurement outcomes and look at the statistics. We start with a helper function which calculates the energy given a set of measurement outcomes." ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "execution": { "iopub.execute_input": "2023-05-02T09:34:11.260333Z", "iopub.status.busy": "2023-05-02T09:34:11.259727Z", "iopub.status.idle": "2023-05-02T09:34:11.264980Z", "shell.execute_reply": "2023-05-02T09:34:11.264309Z" }, "id": "Oa6kAObJTZRi" }, "outputs": [], "source": [ "def compute_energy(meas: np.ndarray) -> float:\n", " \"\"\"Returns the energy computed from measurements.\n", "\n", " Args:\n", " meas: Measurements/samples.\n", " \"\"\"\n", " Z_vals = 1 - 2 * meas.reshape(n_rows, n_cols)\n", " energy = 0\n", " for i in range(n_rows):\n", " for j in range(n_cols):\n", " if i < n_rows - 1:\n", " energy -= Z_vals[i, j] * Z_vals[i + 1, j]\n", " if j < n_cols - 1:\n", " energy -= Z_vals[i, j] * Z_vals[i, j + 1]\n", " energy -= h[i, j] * Z_vals[i, j]\n", " return energy / (n_rows * n_cols)" ] }, { "cell_type": "markdown", "metadata": { "id": "kkUl5LYnG7E7" }, "source": [ "Now we consider the 10 most common outputs of our measurements and compute the energies of those." ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "execution": { "iopub.execute_input": "2023-05-02T09:34:11.268557Z", "iopub.status.busy": "2023-05-02T09:34:11.268006Z", "iopub.status.idle": "2023-05-02T09:34:11.274711Z", "shell.execute_reply": "2023-05-02T09:34:11.274058Z" }, "id": "t2SHZj_-TTFS" }, "outputs": [], "source": [ "\"\"\"Compute the energies of the most common measurement results.\"\"\"\n", "# Get a histogram of the measurement results.\n", "hist = result.histogram(key=\"m\")\n", "\n", "# Consider the top 10 of them.\n", "num = 10\n", "\n", "# Get the most common measurement results and their probabilities.\n", "configs = [c for c, _ in hist.most_common(num)]\n", "probs = [v / result.repetitions for _, v in hist.most_common(num)]" ] }, { "cell_type": "markdown", "metadata": { "id": "37ec9e5b702b" }, "source": [ "We can now plot the probabilities of the most common measurement results as well as the energies associated with these results." ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "execution": { "iopub.execute_input": "2023-05-02T09:34:11.278036Z", "iopub.status.busy": "2023-05-02T09:34:11.277567Z", "iopub.status.idle": "2023-05-02T09:34:11.615316Z", "shell.execute_reply": "2023-05-02T09:34:11.614395Z" }, "id": "6-jbvrc_WOgP" }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiwAAAGzCAYAAAAMr0ziAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAzlUlEQVR4nO3deViVdf7/8ReLHEgFFRJCURxz16RQCDW1olDJpFLRdFDHxmpcoxyXzCUr2jQcMY25ps0gnay0zEyltEVKBZ3yWy5ZLmWAWoFiocL9+6Mfp44schQ5H+n5uK5zefE57/u+3/fNOfDyPp/7xs2yLEsAAAAGc3d1AwAAAOdCYAEAAMYjsAAAAOMRWAAAgPEILAAAwHgEFgAAYDwCCwAAMB6BBQAAGI/AAgAAjEdggUu5ublp3Lhx1ba+F198UW5ubtq2bds5a3v37q3evXvbv96/f7/c3Nz04osv2sdmz54tNze3auuvOuTm5mrgwIHy9/eXm5ubkpOTXd0SAFx0BBaUUfpLv/Th7e2t1q1ba9y4ccrNzXV1ey732GOPaeXKlS7b/n333af33ntP06ZN09KlS9WnT58Ka5cvX67hw4erVatWcnNzcwhoZysqKtKUKVMUHBwsHx8fRUZGav369VXqaeTIkXJzc5Ovr69++eWXMs/v3bvX/np6+umnq7ROZ23evFmzZ8/Wzz//7NRyGzdu1O23366goCB5eXmpcePG6t+/v954442L0mdts3r1avXp00f+/v72nxUPPPCAjh07dt7rPHz4sGbPnq0dO3ZUX6OVSE9PJ/hfAggsqNDDDz+spUuXKiUlRd26ddPixYsVFRWlkydPurq1arFu3TqtW7eu0poZM2aU+QXs6sDy/vvva8CAAXrggQc0fPhwtW3btsLaxYsXa9WqVQoJCVHDhg0rXe/IkSM1f/58DRs2TAsWLJCHh4f69eunjz/+uEp9eXp66uTJk3r77bfLPJeWliZvb+8qred8bd68WXPmzHEqsMyaNUvXX3+9du7cqbvvvltLlizR5MmTdeLECd1xxx1KT0+/eA3XAg888ID69++vnJwcTZkyRSkpKYqOjlZKSoo6d+6s3bt3n9d6Dx8+rDlz5hBY4MDT1Q3AXH379lWXLl0kSXfddZf8/f01f/58rVq1SkOHDi13mcLCQtWtW7cm2zxvXl5e56zx9PSUp6dZb5O8vDw1aNCgSrVLly5VkyZN5O7uro4dO1ZYt2XLFi1btkxPPfWUHnjgAUlSQkKCOnbsqH/+85/avHnzObdls9nUvXt3vfrqqxo8eLDDc+np6YqNjdXrr79epb5rwooVK/Twww9r4MCBSk9PV506dezPTZ48We+9955Onz7twg7N9uqrr2revHmKj49XWlqaPDw87M+NHDlS119/vQYNGqTs7Gzj3kO4NHGGBVV2ww03SJK+/fZbSb/9UKpXr5727dunfv36qX79+ho2bJik34LL/fffr5CQENlsNrVp00ZPP/20Kvrj4GlpaWrTpo28vb0VHh6uDz/80OH5AwcO6B//+IfatGkjHx8f+fv7a9CgQdq/f3+56zt58qTuvvtu+fv7y9fXVwkJCfrpp58cas6ew1Kes+ewuLm5qbCwUC+99JL9I46RI0fqgw8+kJubm958880y60hPT5ebm5syMzMr3dY333yjQYMGqVGjRrrssst07bXX6p133rE/X/pRnWVZWrRokX37lQkJCZG7+7nf5itWrJCHh4fGjBljH/P29tbo0aOVmZmpQ4cOnXMdknTnnXfq3XffdTjLsXXrVu3du1d33nlnucuca79LLVy4UB06dNBll12mhg0bqkuXLvYzILNnz9bkyZMlSS1atLAfm4peH5L00EMPqVGjRnr++ecdwkqpmJgY3XLLLfav8/LyNHr0aAUGBsrb21udO3fWSy+95LBM6Tyop59+WosWLdJf/vIXXXbZZbr55pt16NAhWZaluXPnqmnTpvLx8dGAAQP0448/OqwjNDRUt9xyizZu3KguXbrIx8dHnTp10saNGyVJb7zxhjp16mR/r2zfvr1M7++//76uu+461a1bVw0aNNCAAQP01VdfOdSUvra//vprjRw5Ug0aNJCfn59GjRpVpbOoc+bMUcOGDZWamuoQViQpIiJCU6ZM0RdffKEVK1Y47NvIkSPLrOuP78WNGzeqa9eukqRRo0bZv5elc8t69+6tjh07KisrS926dZOPj49atGihJUuWOKyz9P1y9mtg48aNcnNzsx/P3r1765133tGBAwfs2woNDbXXV/a6Q80isKDK9u3bJ0ny9/e3j505c0YxMTFq3Lixnn76ad1xxx2yLEu33nqrnnnmGfXp00fz589XmzZtNHnyZCUmJpZZ76ZNmzRp0iQNHz5cDz/8sI4dO6Y+ffpo586d9pqtW7dq8+bNGjJkiP71r3/pnnvuUUZGhnr37l3uD9dx48bpq6++0uzZs5WQkKC0tDTFxcVVGJiqaunSpbLZbLruuuu0dOlSLV26VHfffbd69+6tkJAQpaWllVkmLS1NLVu2VFRUVIXrzc3NVbdu3fTee+/pH//4hx599FH9+uuvuvXWW+0hqGfPnlq6dKkk6aabbrJvvzps375drVu3lq+vr8N4RESEJFX51Pztt98uNzc3h/kf6enpatu2ra655poy9VXZb0n697//rQkTJqh9+/ZKTk7WnDlzFBYWps8++8y+3dKzfs8884z92Fx++eXl9rl3717t2rVLcXFxql+//jn365dfflHv3r21dOlSDRs2TE899ZT8/Pw0cuRILViwoEx9Wlqann32WY0fP17333+/Nm3apMGDB2vGjBlau3atpkyZojFjxujtt9+2n9H6o6+//lp33nmn+vfvr6SkJP3000/q37+/0tLSdN9992n48OGaM2eO9u3bp8GDB6ukpMS+7IYNGxQTE6O8vDzNnj1biYmJ2rx5s7p3715ugBs8eLCOHz+upKQkDR48WC+++KLmzJlT6fHYu3evdu/erQEDBpR5zZRKSEiQ9NscF2e0a9dODz/8sCRpzJgx9u9lz5497TU//fST+vXrp/DwcD355JNq2rSp7r33Xj3//PNObUuSHnzwQYWFhSkgIMC+rdKPh871ukMNs4CzvPDCC5Yka8OGDdaRI0esQ4cOWcuWLbP8/f0tHx8f67vvvrMsy7JGjBhhSbKmTp3qsPzKlSstSdYjjzziMD5w4EDLzc3N+vrrr+1jkixJ1rZt2+xjBw4csLy9va3bbrvNPnby5MkyfWZmZlqSrJdffrlM7+Hh4dapU6fs408++aQlyVq1apV9rFevXlavXr3sX3/77beWJOuFF16wj82aNcs6+21St25da8SIEWX6mTZtmmWz2ayff/7ZPpaXl2d5enpas2bNKlP/R5MmTbIkWR999JF97Pjx41aLFi2s0NBQq7i42D4uyRo7dmyl6ytPhw4dHPb37OduuOGGMuP/93//Z0mylixZUum6R4wYYdWtW9eyrN++zzfeeKNlWZZVXFxsBQUFWXPmzLEf36eeesq+XFX3e8CAAVaHDh0q7eGpp56yJFnffvttpXWWZVmrVq2yJFnPPPPMOWsty7KSk5MtSdYrr7xiHzt16pQVFRVl1atXzyooKLAs6/fX0OWXX+7wOpg2bZolyercubN1+vRp+/jQoUMtLy8v69dff7WPNW/e3JJkbd682T723nvvWZIsHx8f68CBA/bx5557zpJkffDBB/axsLAwq3HjxtaxY8fsY//73/8sd3d3KyEhwT5W+tr+29/+5rCvt912m+Xv71/p8Sh9j5/r+Pn6+lrXXHONw76V9945+724devWMu/FP9ZKsubNm2cfKyoqsu936fu+9GfB2a+HDz74oMwxi42NtZo3b15mW1V53aHmcIYFFYqOjtbll1+ukJAQDRkyRPXq1dObb76pJk2aONTde++9Dl+vWbNGHh4emjBhgsP4/fffL8uy9O677zqMR0VFKTw83P51s2bNNGDAAL333nsqLi6WJPn4+NifP336tI4dO6Yrr7xSDRo0UHZ2dpnex4wZ43Ca/95775Wnp6fWrFnj5FGouoSEBBUVFTmcAl++fLnOnDmj4cOHV7rsmjVrFBERoR49etjH6tWrpzFjxmj//v368ssvL1rf0m9nEGw2W5nx0omy5V35U5E777xTGzduVE5Ojt5//33l5ORU+HFQVfe7QYMG+u6777R161ZndqtCBQUFklSlsyulfQYFBTnM3apTp44mTJigEydOaNOmTQ71gwYNkp+fn/3ryMhISdLw4cMd5nNERkbq1KlT+v777x2Wb9++vcMZudLlb7jhBjVr1qzM+DfffCNJ+uGHH7Rjxw6NHDlSjRo1stddddVVuummm8p9/d9zzz0OX1933XU6duyY/RiV5/jx45LOffzq169f6XrOl6enp+6++277115eXrr77ruVl5enrKysattOdb/ucGEILKjQokWLtH79en3wwQf68ssv9c033ygmJsahxtPTU02bNnUYO3DggIKDg8v8MGvXrp39+T9q1apVmW23bt1aJ0+e1JEjRyT99gtz5syZ9jkxAQEBuvzyy/Xzzz8rPz+/zPJnr7NevXq64oorKp3TcKHatm2rrl27OnwslJaWpmuvvVZXXnllpcseOHBAbdq0KTNe0TGrbj4+PioqKioz/uuvv9qfr6rS+UzLly9XWlqaunbtWuH+V3W/p0yZonr16ikiIkKtWrXS2LFj9cknn1S5p7OVfoxR+ov3XA4cOKBWrVqVmQ9U0ffnj6FCkj28hISElDt+9vyq812+tI+KjunRo0dVWFhY6bZKryY7u6c/Kn1vn+v4HT9+vMqh0BnBwcFlJve3bt1akqr1PV7drztcGAILKhQREaHo6Gj17t1b7dq1K3fyps1mq9Kkzgs1fvx4Pfrooxo8eLD++9//at26dVq/fr38/f0dPr93tYSEBG3atEnfffed9u3bp08//fScZ1dMcMUVV+iHH34oM146FhwcXOV12Ww23X777XrppZf05ptvVnh2xRnt2rXT7t27tWzZMvXo0UOvv/66evTooVmzZp3X+kovBf/iiy8uuLfynD0J9Vzj1llzqy50eWeczzpLg9rnn39eYc2BAwdUUFCg9u3b28cqmiReeia1OlXHtqr7dYcLQ2BBtWvevLkOHz5c5n9fu3btsj//R3v37i2zjj179uiyyy6zT5pcsWKFRowYoXnz5mngwIG66aab1KNHjwrvuXH2Ok+cOKEffvjBYfb/+arsypwhQ4bIw8NDr776qtLS0lSnTh3Fx8efc53Nmzcv954VFR2z6hYWFqY9e/aUOX1fOrkwLCzMqfXdeeed2r59u44fP64hQ4ZUWOfMftetW1fx8fF64YUXdPDgQcXGxton6UqVf1/O1rp1a7Vp00arVq3SiRMnzlnfvHlz7d27t0w4rqnvT1WV9lHRMQ0ICKiW2w60bt1arVu31sqVKys8y/Lyyy9LksOVVg0bNiz3PXv2GapzfS8PHz5c5kzRnj17JMn+Hi89U3T29so7W1nZ9s71ukPNIbCg2vXr10/FxcVKSUlxGH/mmWfk5uamvn37OoxnZmY6zEM5dOiQVq1apZtvvtn+vz8PD48y/+NbuHBhhf9bSk1NdbiHxuLFi3XmzJky2z4fdevWrTAoBQQEqG/fvnrllVeUlpamPn36KCAg4Jzr7Nevn7Zs2eJw6XNhYaFSU1MVGhrq8L/Ui2HgwIEqLi5WamqqfayoqEgvvPCCIiMjy3wUcS7XX3+95s6dq5SUFAUFBVVYV9X9PvuuqV5eXmrfvr0sy7J/n0t/EVf1xnFz5szRsWPHdNddd+nMmTNlnl+3bp39Cpd+/fopJydHy5cvtz9/5swZLVy4UPXq1VOvXr2qtM2L7YorrlBYWJheeuklh+Owc+dOrVu3Tv369au2bc2cOVM//fST7rnnnjLvw6ysLD3xxBPq2LGj7rjjDvt4y5Yt9emnn+rUqVP2sdWrV5e5bP5c38szZ87oueees3996tQpPffcc7r88svt8+FatmwpSQ63SDj7Nf7H7ZX30XJVXneoOdzNB9Wuf//+uv766/Xggw9q//796ty5s9atW6dVq1Zp0qRJ9h8kpTp27KiYmBhNmDBBNptNzz77rCQ5XFp5yy23aOnSpfLz81P79u2VmZmpDRs2OFxi/UenTp3SjTfeqMGDB2v37t169tln1aNHD916660XvH/h4eHasGGD5s+fr+DgYLVo0cI++VH67WOhgQMHSpLmzp1bpXVOnTpVr776qvr27asJEyaoUaNGeumll/Ttt9/q9ddfP++P3T788EP7D+wjR46osLBQjzzyiKTfLpMuvVQ0MjJSgwYN0rRp05SXl6crr7xSL730kvbv36///Oc/Tm/X3d1dM2bMOGddVff75ptvVlBQkLp3767AwEB99dVXSklJUWxsrH2OROkvqgcffFBDhgxRnTp11L9//wrPKMTHx+uLL77Qo48+qu3bt2vo0KFq3ry5jh07prVr1yojI8N+v40xY8boueee08iRI5WVlaXQ0FCtWLFCn3zyiZKTky/KPI3z9dRTT6lv376KiorS6NGj9csvv2jhwoXy8/PT7Nmzq207w4YN09atW7VgwQJ9+eWXGjZsmBo2bKjs7Gw9//zz8vf314oVKxwmv991111asWKF+vTpo8GDB2vfvn165ZVXyvxMaNmypRo0aKAlS5aofv36qlu3riIjI9WiRQtJv31E+cQTT2j//v1q3bq1li9frh07dig1NdW+vQ4dOujaa6/VtGnT9OOPP6pRo0ZatmxZueE0PDxcy5cvV2Jiorp27ap69eqpf//+VXrdoQa58AolGKr0csCtW7dWWvfHS1nPdvz4ceu+++6zgoODrTp16litWrWynnrqKaukpMShTv//Et1XXnnFatWqlWWz2ayrr77a4ZJDy7Ksn376yRo1apQVEBBg1atXz4qJibF27dpV5jLJ0t43bdpkjRkzxmrYsKFVr149a9iwYQ6XeVrW+V/WvGvXLqtnz56Wj4+PJanMZZpFRUVWw4YNLT8/P+uXX36p9Bj+0b59+6yBAwdaDRo0sLy9va2IiAhr9erVZerkxGXNpf2X9zj7UutffvnFeuCBB6ygoCDLZrNZXbt2tdauXVul7VT2WihV3mXNllW1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", "text/plain": [ "