{ "cells": [ { "cell_type": "markdown", "id": "ccbf48d3", "metadata": {}, "source": [ "## How to generate exact sampling coefficients\n", "\n", "This how-to guide is intended to show users how they can generate exact sampling coefficients to be used in reconstructing the simulated expectation value of the original circuit.\n", "\n", "First, we set up a simple cutting problem following the [first tutorial](../tutorials/01_gate_cutting_to_reduce_circuit_width.ipynb)." ] }, { "cell_type": "code", "execution_count": 1, "id": "dc54656b", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "from qiskit.circuit.library import EfficientSU2\n", "from qiskit.quantum_info import SparsePauliOp\n", "\n", "from qiskit_addon_cutting import (\n", " partition_problem,\n", " generate_cutting_experiments,\n", ")" ] }, { "cell_type": "code", "execution_count": 2, "id": "dd147239", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "circuit = EfficientSU2(4, entanglement=\"linear\", reps=2).decompose()\n", "circuit.assign_parameters([0.8] * len(circuit.parameters), inplace=True)\n", "observable = SparsePauliOp([\"ZZZZ\"])\n", "circuit.draw(\"mpl\", scale=0.8)" ] }, { "cell_type": "markdown", "id": "0bce456c", "metadata": {}, "source": [ "Partition the circuit between qubits 1 and 2 by cutting 2 CNOT gates." ] }, { "cell_type": "code", "execution_count": 3, "id": "d4ccf5b8", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "partitioned_problem = partition_problem(\n", " circuit=circuit, partition_labels=\"AABB\", observables=observable.paulis\n", ")\n", "subcircuits = partitioned_problem.subcircuits\n", "bases = partitioned_problem.bases\n", "subobservables = partitioned_problem.subobservables\n", "subcircuits[\"A\"].draw(\"mpl\", scale=0.6)" ] }, { "cell_type": "code", "execution_count": 4, "id": "44956cbb", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "subcircuits[\"B\"].draw(\"mpl\", scale=0.6)" ] }, { "cell_type": "markdown", "id": "fce55187", "metadata": {}, "source": [ "### Demonstrate how to obtain all weights exactly\n", "\n", "If you wish to calculate all weights exactly, no matter how small, you can achieve this by passing infinity (`np.inf`) to `num_samples`:" ] }, { "cell_type": "code", "execution_count": 5, "id": "8c56282f", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[(0.24999999999999992, ),\n", " (0.24999999999999992, ),\n", " (0.24999999999999992, ),\n", " (-0.24999999999999992, ),\n", " (0.24999999999999992, ),\n", " (-0.24999999999999992, ),\n", " (0.24999999999999992, ),\n", " (0.24999999999999992, ),\n", " (0.24999999999999992, ),\n", " (-0.24999999999999992, ),\n", " (0.24999999999999992, ),\n", " (-0.24999999999999992, ),\n", " (0.24999999999999992, ),\n", " (0.24999999999999992, ),\n", " (0.24999999999999992, ),\n", " (-0.24999999999999992, ),\n", " (0.24999999999999992, ),\n", " (-0.24999999999999992, ),\n", " (-0.24999999999999992, ),\n", " (-0.24999999999999992, ),\n", " (-0.24999999999999992, ),\n", " (0.24999999999999992, ),\n", " (-0.24999999999999992, ),\n", " (0.24999999999999992, ),\n", " (0.24999999999999992, ),\n", " (0.24999999999999992, ),\n", " (0.24999999999999992, ),\n", " (-0.24999999999999992, ),\n", " (0.24999999999999992, ),\n", " (-0.24999999999999992, ),\n", " (-0.24999999999999992, ),\n", " (-0.24999999999999992, ),\n", " (-0.24999999999999992, ),\n", " (0.24999999999999992, ),\n", " (-0.24999999999999992, ),\n", " (0.24999999999999992, )]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "subexperiments, coefficients = generate_cutting_experiments(\n", " circuits=subcircuits,\n", " observables=subobservables,\n", " num_samples=np.inf,\n", ")\n", "coefficients" ] }, { "cell_type": "markdown", "id": "b5fc6579", "metadata": {}, "source": [ "### Demonstrate how to find the minimum `num_samples` needed to retrieve all exact weights for 2 CNOT cuts\n", "\n", "When `num_samples` is set to a finite number, each weight whose absolute value is above a threshold of 1 / `num_samples` will be evaluated exactly. The remaining weights -- those in the tail of the distribution -- will then be sampled from, resulting in at most `num_samples` unique weights.\n", "\n", "In the case of a CNOT gate -- or any gate equivalent to it up to single-qubit unitaries -- each of the six weights of the quasi-probability decomposition have the same magnitude, so each gets sampled with a probability of $1/6$:" ] }, { "cell_type": "code", "execution_count": 6, "id": "78539fcc", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Mapping probabilities for a CNOT decomposition: [0.16666667 0.16666667 0.16666667 0.16666667 0.16666667 0.16666667]\n" ] } ], "source": [ "print(f\"Mapping probabilities for a CNOT decomposition: {bases[0].probabilities}\")" ] }, { "cell_type": "markdown", "id": "5770cf75", "metadata": {}, "source": [ "In this example, we have cut two CNOT gates. Given that the probability of any given mapping in a CNOT decomposition is $1/6$, the probability of any given mapping in the _joint_ distribution combining the two cut CNOT gates is $(1/6)^2$. Therefore, we need to take at least $6^2$ weights in order to retrieve all exact weights from `generate_cutting_experiments`." ] }, { "cell_type": "code", "execution_count": 7, "id": "f07a6cc3", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Number of samples needed to retrieve exact weights: 36.0\n" ] } ], "source": [ "from qiskit_addon_cutting.qpd import QPDBasis\n", "from qiskit.circuit.library.standard_gates import CXGate\n", "\n", "qpd_basis_cx = QPDBasis.from_instruction(CXGate())\n", "\n", "\n", "def _min_nonzero(seq, /):\n", " \"\"\"Return the minimum value in a sequence, ignoring values near zero.\"\"\"\n", " return min(x for x in seq if not np.isclose(x, 0))\n", "\n", "\n", "num_cx_cuts = 2\n", "\n", "print(\n", " f\"Number of samples needed to retrieve exact weights: {1 / _min_nonzero(qpd_basis_cx.probabilities)**num_cx_cuts}\"\n", ")" ] }, { "cell_type": "markdown", "id": "deb6ad1e", "metadata": {}, "source": [ "#### Observe the coefficient weights returned from `generate_cutting_experiments` are `WeightType.EXACT`\n", "\n", "Above, we determined 36 samples would trigger the coefficients to be returned as exact. Here we set `num_samples` to exactly 36 to test this." ] }, { "cell_type": "code", "execution_count": 8, "id": "43d32869", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[(0.25, ),\n", " (0.25, ),\n", " (0.25, ),\n", " (-0.25, ),\n", " (0.25, ),\n", " (-0.25, ),\n", " (0.25, ),\n", " (0.25, ),\n", " (0.25, ),\n", " (-0.25, ),\n", " (0.25, ),\n", " (-0.25, ),\n", " (0.25, ),\n", " (0.25, ),\n", " (0.25, ),\n", " (-0.25, ),\n", " (0.25, ),\n", " (-0.25, ),\n", " (-0.25, ),\n", " (-0.25, ),\n", " (-0.25, ),\n", " (0.25, ),\n", " (-0.25, ),\n", " (0.25, ),\n", " (0.25, ),\n", " (0.25, ),\n", " (0.25, ),\n", " (-0.25, ),\n", " (0.25, ),\n", " (-0.25, ),\n", " (-0.25, ),\n", " (-0.25, ),\n", " (-0.25, ),\n", " (0.25, ),\n", " (-0.25, ),\n", " (0.25, )]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "subexperiments, coefficients = generate_cutting_experiments(\n", " circuits=subcircuits,\n", " observables=subobservables,\n", " num_samples=36,\n", ")\n", "coefficients" ] } ], "metadata": { "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.11.8" } }, "nbformat": 4, "nbformat_minor": 5 }