From cdb7c475bca19324c5f5551fb9090cada71e7995 Mon Sep 17 00:00:00 2001 From: "A.C.E07" Date: Mon, 16 Feb 2026 21:14:35 +0800 Subject: [PATCH 1/4] MPS Encoding Algorithm --- README.md | 1 + notebooks/textbook/MPS_Encoding.ipynb | 207 +++++++++++ .../algorithms/mps_encoding/__init__.py | 16 + .../algorithms/mps_encoding/mps_encoding.md | 11 + .../algorithms/mps_encoding/mps_encoding.py | 321 ++++++++++++++++++ .../mps_encoding/test_mps_encoding.py | 65 ++++ 6 files changed, 621 insertions(+) create mode 100644 notebooks/textbook/MPS_Encoding.ipynb create mode 100644 src/braket/experimental/algorithms/mps_encoding/__init__.py create mode 100644 src/braket/experimental/algorithms/mps_encoding/mps_encoding.md create mode 100644 src/braket/experimental/algorithms/mps_encoding/mps_encoding.py create mode 100644 test/unit_tests/braket/experimental/algorithms/mps_encoding/test_mps_encoding.py diff --git a/README.md b/README.md index d234ca0d..7f3d16f1 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,7 @@ Running notebooks locally requires additional dependencies located in [notebooks | CHSH Inequality | [CHSH_Inequality.ipynb](notebooks/textbook/CHSH_Inequality.ipynb) | [Clauser1970](https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.23.880) | | Deutsch-Jozsa | [Deutsch_Jozsa_Algorithm.ipynb](notebooks/textbook/Deutsch_Jozsa_Algorithm.ipynb) | [Deutsch1992](https://royalsocietypublishing.org/doi/10.1098/rspa.1992.0167) | | Grover's Search | [Grovers_Search.ipynb](notebooks/textbook/Grovers_Search.ipynb) | [Figgatt2017](https://www.nature.com/articles/s41467-017-01904-7), [Baker2019](https://arxiv.org/abs/1904.01671) | +| MPS Encoding | [MPS_Encoding.ipynb](notebooks/textbook/MPS_Encoding.ipynb) | [Ran2019](https://arxiv.org/abs/1908.07958), [Rudolph2022](https://arxiv.org/abs/2209.00595) | | QAOA | [Quantum_Approximate_Optimization_Algorithm.ipynb](notebooks/textbook/Quantum_Approximate_Optimization_Algorithm.ipynb) | [Farhi2014](https://arxiv.org/abs/1411.4028) | | Quantum Circuit Born Machine | [Quantum_Circuit_Born_Machine.ipynb](notebooks/textbook/Quantum_Circuit_Born_Machine.ipynb) | [Benedetti2019](https://www.nature.com/articles/s41534-019-0157-8), [Liu2018](https://journals.aps.org/pra/abstract/10.1103/PhysRevA.98.062324) | | QFT | [Quantum_Fourier_Transform.ipynb](notebooks/textbook/Quantum_Fourier_Transform.ipynb) | [Coppersmith2002](https://arxiv.org/abs/quant-ph/0201067) | diff --git a/notebooks/textbook/MPS_Encoding.ipynb b/notebooks/textbook/MPS_Encoding.ipynb new file mode 100644 index 00000000..f75aa364 --- /dev/null +++ b/notebooks/textbook/MPS_Encoding.ipynb @@ -0,0 +1,207 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "0479afb1", + "metadata": {}, + "source": [ + "# MPS Encoding" + ] + }, + { + "cell_type": "markdown", + "id": "9057d3c0", + "metadata": {}, + "source": [ + "Matrix Product State (MPS) encoding tackles the critical task of state preparation in $O(N)$ circuit depth, an exponential reduction in circuit depth compared to\n", + "exact encoding algorithms like Shende, Isometry, and Mottonen. The current implementation uses an analytical decomposition based on work by\n", + "Ran to create a staircase ansatz comprised of 1 and 2 qubit unitary gates. Main consideration with the decomposition is that it is prone to\n", + "approximation limitations imposed by MPS IR, which limits the adequate performance of the synthesis to area-law entangled states only. This can be resolved\n", + "by using tensor network sweeping [2].\n", + "\n", + "In this notebook, we implement Grover's algorithm based on Ran [1]. For a comprehensive description of the algorithm, see [1]. In the following, we present the MPS performance on randomly generated area-law entangled states and compare performance with exact encoders.\n", + "\n", + "---\n", + "# References \n", + "\n", + "[1] S. Ran (2019). \"Encoding of Matrix Product States into Quantum Circuits of One- and Two-Qubit Gates\", [arXiv:1908.07958](https://arxiv.org/abs/1908.07958).\n", + "\n", + "[2] M. S. Rudolph, J. Chen, J. Miller, A. Acharya, A. Perdomo-Ortiz (2022). \"Decomposition of Matrix Product States into Shallow Quantum Circuits\", [arXiv:2209.00595](https://arxiv.org/abs/2209.00595)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7fe2019a", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "\n", + "%matplotlib inline\n", + "\n", + "import matplotlib.pyplot as plt\n", + "\n", + "from braket.aws import AwsDevice\n", + "from braket.devices import LocalSimulator\n", + "from braket.tracking import Tracker\n", + "\n", + "from braket.experimental.algorithms.mps_encoding import mps_circuit_from_statevector" + ] + }, + { + "cell_type": "markdown", + "id": "c026eda8", + "metadata": {}, + "source": [ + "# Run on a local simulator\n", + "We demonstrate MPS Encoding on a classical simulator first. You can choose between a local simulator or an on-demand simulator." + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "3f97eb8d", + "metadata": {}, + "outputs": [], + "source": [ + "def mps_encoding_metadata(num_qubits: int) -> dict:\n", + " state = np.random.rand(2**num_qubits) + 1j * np.random.rand(2**num_qubits)\n", + " state /= np.linalg.norm(state)\n", + "\n", + " circuit = mps_circuit_from_statevector(state, max_num_layers=max(1, int(num_qubits // 1.5)))\n", + " result = LocalSimulator(\"braket_sv\").run(circuit.state_vector(), shots=0).result()\n", + " fidelity = np.vdot(result.result_types[0].value, state)\n", + "\n", + " return {\n", + " \"num_qubits\": num_qubits,\n", + " \"fidelity\": np.abs(fidelity),\n", + " \"circuit_depth\": circuit.depth,\n", + " }" + ] + }, + { + "cell_type": "markdown", + "id": "6c1a43d6", + "metadata": {}, + "source": [ + "We observe a minimum fidelity of 0.88 as the system size increases." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "f727fd9a", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "results = [mps_encoding_metadata(num_qubits) for num_qubits in range(2, 18)]\n", + "\n", + "plt.plot(\n", + " [result[\"num_qubits\"] for result in results],\n", + " [result[\"fidelity\"] for result in results],\n", + " marker=\"o\",\n", + ")\n", + "plt.xlabel(\"Number of Qubits\")\n", + "plt.ylabel(\"Fidelity\")\n", + "plt.title(\"Fidelity of MPS Encoding vs. Number of Qubits\")\n", + "plt.grid()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "eb5d79ea", + "metadata": {}, + "source": [ + "We can observe the massive difference between the exact approaches and MPS approach for this class of states in terms of circuit depth. With refinements from sweeping, this can be maintained whilst pushing fidelity to 0.97+ from the experimentation and even push it to perform as such on even volume-law entangled states." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "4551b8a5", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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wzL89ddfjnm635YuXYpA8u2332LEiBH+LoaIiOQA9f4LIbM37sOIH7bg3yOnHa+VKRyHoTfVxHW1y+TYcnnl7i+//BJvvvkm8ubNa17joJyff/656XLu7rrrrsPkyZORlJSEWbNmmeCLPagGDRqEDz74wGRyxo4di5YtW5pp1q9fj40bN2ZZjv/973+oVauWy2vZ7UmZ04oVK+bvIoiISA5RpipE/LTtAHp9vsYloKJ9R06j56erMXvjvzm27AYNGpjAilkYCx8zoGKWyV1sbKwZuLNChQro2bMn2rRpg++//968x/vbb78dDzzwgMliMUi666678OKLL2ZZDgZQnK/zzeru/vzzz6N+/fr45JNPULFiRRQuXBh33nknjh075jJswauvvmqWyzKy/M7L3bBhA6655hoTOHJZDz30kBkry8KeYP369TPZNb4/YMAAM2inM/fqP5blpZdeQvfu3VGwYEGzzEmTJrn8z+LFi8025vpcfvnlmD59usnCrV27NsttIiISNg7+CSSdPaf7g4KqAMUv45PJqV7djp1OwSvz/oSnij7rtee/32ym82Z+7oGANxgUMPtkYcapW7duXv0vgxSOOUUMHFhlt2vXLvjaH3/8YQKSmTNnmtvChQvx8ssvO95npozPn3vuOWzevNlk2kqVKmXeO3HiBNq1a4eiRYtixYoVmDp1qsmM9e7d2/H/o0aNwocffmjW/ddff8XBgwcxbdq0LMvF/2vUqBHWrFmDRx991ASa27ZtM+8dPXoUN910E2rXro2ff/4Zw4YNw8CBA32+bUREgt5X9wEjLwZ+/5/fiqDqvwB1KiUNNYfM8cm8GCLtO3oadZ6f69X0m4e3Q7482Ts07rnnHhOUWMHQb7/9ZqoEGQhkWC6bDT/99BPmzJmDxx57zLw2dOhQdOzY0WRwqlatiqZNm+KGG27AbbfdluUgn1deeeU50zhnkpiJYtDDjBDde++9ZvnMRjFjNWbMGIwbNw5du3Y171966aVo3ry5ecwAi1WaH3/8MfLnz29e47QMeF555RUTfI0ePdpsA5afJk6caNYtK1w/BlPEgInVqAsWLEC1atXMcpmVYvaKgWehQoXMSN49evTIcr4iImEjLQXYb/8xiuKV/VYMBVXisxGm27dvb4IWBkt8XKJECY/TMkvERugc8JSBzt13322q56hMmTJYsmSJ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iRMn4t1333W5/l+zZs1MkCUiIiJilKoJ9PgJePAnhINsB1Xbtm1DixYtznm9cOHCOHz4sK/KJSIiIqEiwj5aQKjLdlBVunRp/P777+e8zvZUl1xyia/KJSIiIsEuLQXhJNtBVY8ePdCnTx8sW7bMjEW1d+9efPbZZ3jqqafQs2fPnCmliIiIBJfUJGDkxcD4JsCpQwgH2R5S4emnn0Z6ejpat26NkydPmqrA2NhYE1Q99thjOVNKERERCS4HdgCpp4Fj/wJxRRAOsh1UMTv17LPPon///qYa8Pjx46hZsyYKFCiQMyUUERGRoBORuPnsoJ9h0qYq20GVdRkaXtuvVKlSJqASERER8RhUhcHlac6rTdW+fftw3333oWjRoiagio+PN4+7d++OhISEnCuliIiIBGmmqhbChdeZKmamOII6q/u6deuG6tWrm4zV5s2b8cUXX5jefxynStWAIiIiEpEYPtf8y3ZQNWbMGERFRWHTpk0oWbKky3uDBw82g3+OHTsWzzzzTE6UU0RERIJEntRjiDh+pgYrvjrChdfVfz/88IMJmNwDKmI14KBBgzBjxgxfl09ERESCTGR6MtJr3wZUvhaILYhw4XVQtX37dlP9lxG+x9HWRUREJLydzlMcabdMBO75GuEkMjttqooUyXicCb7HaURERETCkddBFRulR0ZGZjp+FacRERGR8JY3+T8gPQ3hxuuG6gyYqlataoKnjN4XERGRMJeehtabByJy27NA7xVAkXIIF14HVZMnT87ZkoiIiEjwO/QnomwpsEXEAIXKIpx4HVR17do1Z0siIiIiITPop61kdURERiGcZGtEdREREZHMRCSE3+VpLAqqRERExGciEjaYe5uCKhEREZHzdPooIv5aZB6mX9wk7DajMlUiIiLiG1tmICL1NI7FlgFK1w27rZrtoGr48OE4efLkOa+fOnXKvCciIiJhqlILpLV8Br/HX88BLBFush1UDRs2DMePHz/ndQZafE9ERETCVJFySG/eD3+XuBrhKNtBFQf59DQA6Lp161CsWDFflUtEREQkNMepKlq0qAmmeHMfWT0tLc1krx555JGcKqeIiIgEsh+fBso1Bi5ti3DldVA1evRok6Xq3r27qeYrXLiw4708efKgYsWKaNq0aU6VU0RERAJV4hZg2QRgxbtAnzPjVIWhbI+oXqlSJVx55ZWI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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(\n", + " [result[\"num_qubits\"] for result in results],\n", + " [result[\"circuit_depth\"] for result in results],\n", + " marker=\"o\",\n", + " label=\"MPS Encoding\",\n", + ")\n", + "plt.plot(\n", + " [result[\"num_qubits\"] for result in results],\n", + " [2 ** result[\"num_qubits\"] for result in results],\n", + " linestyle=\"--\",\n", + " label=\"Shende et al. Lower Bound\",\n", + ")\n", + "plt.xlabel(\"Number of Qubits\")\n", + "plt.ylabel(\"Circuit Depth\")\n", + "plt.title(\"Circuit Depth of MPS Encoding vs. Number of Qubits\")\n", + "plt.legend()\n", + "plt.grid()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "9e45c99f", + "metadata": {}, + "source": [ + "Overall, MPS IR is a critical step forward for efficient synthesis of statevectors, and makes a major difference for current term and 2030's onward FTQC hardware." + ] + }, + { + "cell_type": "markdown", + "id": "de5434b0", + "metadata": {}, + "source": [ + "Note: Charges shown are estimates based on your Amazon Braket simulator and quantum processing unit (QPU) task usage. Estimated charges shown may differ from your actual charges. Estimated charges do not factor in any discounts or credits, and you may experience additional charges based on your use of other services such as Amazon Elastic Compute Cloud (Amazon EC2)." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": ".venv", + "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.1" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/src/braket/experimental/algorithms/mps_encoding/__init__.py b/src/braket/experimental/algorithms/mps_encoding/__init__.py new file mode 100644 index 00000000..099b14d8 --- /dev/null +++ b/src/braket/experimental/algorithms/mps_encoding/__init__.py @@ -0,0 +1,16 @@ +# Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. + +from braket.experimental.algorithms.mps_encoding.mps_encoding import ( # noqa: F401 + mps_circuit_from_statevector, +) diff --git a/src/braket/experimental/algorithms/mps_encoding/mps_encoding.md b/src/braket/experimental/algorithms/mps_encoding/mps_encoding.md new file mode 100644 index 00000000..967a41c2 --- /dev/null +++ b/src/braket/experimental/algorithms/mps_encoding/mps_encoding.md @@ -0,0 +1,11 @@ +Matrix Product State (MPS) encoding tackles the critical task of state preparation in $O(N)$ circuit depth, an exponential reduction in circuit depth compared to +exact encoding algorithms like Shende, Isometry, and Mottonen. The current implementation uses an analytical decomposition based on work by +Ran et al. to create a staircase ansatz comprised of 1 and 2 qubit unitary gates. Main consideration with the decomposition is that it is prone to +approximation limitations imposed by MPS IR, which limits the adequate performance of the synthesis to area-law entangled states only. This can be resolved +by using tensor network sweeping. + + diff --git a/src/braket/experimental/algorithms/mps_encoding/mps_encoding.py b/src/braket/experimental/algorithms/mps_encoding/mps_encoding.py new file mode 100644 index 00000000..7517fb56 --- /dev/null +++ b/src/braket/experimental/algorithms/mps_encoding/mps_encoding.py @@ -0,0 +1,321 @@ +# Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). You +# may not use this file except in compliance with the License. A copy of +# the License is located at +# +# http://aws.amazon.com/apache2.0/ +# +# or in the "license" file accompanying this file. This file is +# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF +# ANY KIND, either express or implied. See the License for the specific +# language governing permissions and limitations under the License. + +from __future__ import annotations + +from typing import TYPE_CHECKING + +import numpy as np +import quimb.tensor as qtn + +from braket.circuits import Circuit + +if TYPE_CHECKING: + import numpy.typing as npt + + +def _gram_schmidt(matrix: npt.NDArray[np.complex128]) -> npt.NDArray[np.complex128]: + """Perform Gram-Schmidt orthogonalization on the columns of a square matrix + to define the unitary block to encode the MPS. + + This implementation provides slightly better fidelity compared to the Schmidt + decomposition approach used in scipy.linalg.qr for our use case. + + Args: + matrix (NDArray[np.complex128]): Square matrix with complex entries. + + Returns: + (NDArray[np.complex128]): A unitary matrix with orthonormal columns derived from the input matrix. + If a column is approximately zero, it is replaced with a random vector. + """ + assert len(matrix.shape) == 2 and matrix.shape[0] == matrix.shape[1], ( + "Input matrix must be square." + ) + + num_rows: int = matrix.shape[0] + unitary = np.zeros((num_rows, num_rows), dtype=np.complex128) + orthonormal_basis: list[npt.NDArray[np.complex128]] = [] + + for j in range(num_rows): + column = matrix[:, j] + + # If column is (approximately) zero, replace with random + if np.allclose(column, 0): + column = np.random.uniform(-1, 1, num_rows) + 1j * np.random.uniform(-1, 1, num_rows) + + # Gram-Schmidt orthogonalization + for basis_vector in orthonormal_basis: + column -= (basis_vector.conj().T @ column) * basis_vector + + # Handle near-zero vectors (linear dependence) + if np.linalg.norm(column) < 1e-12: # pragma: no cover + column = np.random.uniform(-1, 1, num_rows) + 1j * np.random.uniform(-1, 1, num_rows) + + for basis_vector in orthonormal_basis: + column -= (basis_vector.conj().T @ column) * basis_vector + + unitary[:, j] = column / np.linalg.norm(column) + orthonormal_basis.append(unitary[:, j]) + + return unitary + + +class MPSSequential: + """MPS to Circuit synthesis via sequential layers of unitaries. + + This class provides methods to convert a Matrix Product State (MPS) + into a quantum circuit representation using layers of two-qubit and single-qubit unitaries + in the form of a staircase. + + This approach allows for approximately encoding an area-law entangled state + using O(N) circuit depth, where N is the number of qubits by leveraging the MPS structure + as an intermediate representation. This is an exponential improvement over the + standard method of encoding arbitrary states, which typically requires O(2^N) depth. + + The analytical decomposition is based on the approach presented in: + [arXiv:1908.07958](https://arxiv.org/abs/1908.07958){:.external} + + Further improvements for future include using sweeping techniques from tensor network + literature to iteratively improve the fidelity of the encoding with a fixed number of + layers. The algorithm is described in detail in the following paper: + [arXiv:2209.00595](https://arxiv.org/abs/2209.00595){:.external} + """ + + def __init__(self, max_fidelity_threshold: float = 0.95) -> None: + """Initialize the Sequential class. + + Args: + max_fidelity_threshold (float): The maximum fidelity required, after + which we can stop the encoding to save depth. + """ + self.max_fidelity_threshold = max_fidelity_threshold + + def generate_layer( + self, mps: qtn.MatrixProductState + ) -> list[tuple[list[int], npt.NDArray[np.complex128]]]: + """Convert a Matrix Product State (MPS) to a circuit representation + using a single unitary layer. + + Args: + mps (qtn.MatrixProductState): The MPS to convert. + + Returns: + (list[tuple[list[int], npt.NDArray[np.complex128]]]): A list of tuples + representing the unitary layer of the circuit. + Each tuple contains: + - A list of qubit indices (in LSB order) that the unitary acts on. + - A unitary matrix (as a 2D NumPy array) that encodes the MPS. + """ + num_sites = mps.L + + unitary_layer: list[tuple[list[int], npt.NDArray[np.complex128]]] = [] + + for i, tensor in enumerate(reversed(mps.arrays)): + i = num_sites - i - 1 + + # MPS representation uses 1D entanglement, thus we need to define + # the range of the indices via the tensor shape + # i.e., if q0 and q3 are entangled, then regardless of q1 and q2 being + # entangled the entanglement range would be q0-q3 + if i == 0: + d_right, d = tensor.shape + tensor = tensor.reshape((1, d_right, d)) + if i == num_sites - 1: + d_left, d = tensor.shape + tensor = tensor.reshape((d_left, 1, d)) + + tensor = np.swapaxes(tensor, 1, 2) + + # Combine the physical index and right-virtual index of the tensor to construct + # an isometry matrix + d_left, d, d_right = tensor.shape + isometry = tensor.reshape((d * d_left, d_right)) + + qubits = [ + num_sites - 1 - q for q in range(i, i - int(np.ceil(np.log2(d_left))) - 1, -1) + ] + + matrix = np.zeros((isometry.shape[0], isometry.shape[0]), dtype=isometry.dtype) + + # Keep columns for which all ancillas are in the zero state + matrix[:, : isometry.shape[1]] = isometry + + # Perform Gram-Schmidt orthogonalization to ensure the columns are orthonormal + unitary = _gram_schmidt(matrix) + + unitary_layer.append((qubits, unitary)) + + return unitary_layer + + def mps_to_circuit_approx( + self, statevector: npt.NDArray[np.complex128], max_num_layers: int, chi_max: int + ) -> Circuit: + """Approximately encodes the MPS into a circuit via multiple layers + of exact encoding of bond 2 truncated MPS. + + Whilst we can encode the MPS exactly in a single layer, we require + $log(chi) + 1$ qubits for each tensor, which results in larger circuits. + This function uses bond 2 which allows us to encode the MPS using one and + two qubit gates, which results in smaller circuits, and easier to run on + hardware. + + This is the core idea of Ran's paper [1]. + + [1] https://arxiv.org/abs/1908.07958 + + Args: + statevector (NDArray[np.complex128]): The statevector to convert. + max_num_layers (int): The number of layers to use in the circuit. + chi_max (int): The maximum bond dimension of the target MPS. + + Returns: + (Circuit): The generated quantum circuit that encodes the MPS. + """ + mps_dense = qtn.MatrixProductState.from_dense(statevector) + mps: qtn.MatrixProductState = qtn.tensor_1d_compress.tensor_network_1d_compress( + mps_dense, max_bond=chi_max + ) + mps.permute_arrays() + + mps.compress(form="left", max_bond=chi_max) + mps.left_canonicalize(normalize=True) + + compressed_mps = mps.copy(deep=True) + disentangled_mps = mps.copy(deep=True) + + circuit = Circuit() + + unitary_layers = [] + + # Initialize the zero state |00...0> to serve as comparison + # for the disentangled MPS + zero_state = np.zeros((2**mps.L,), dtype=np.complex128) + zero_state[0] = 1.0 + + # Ran's approach uses a iterative disentanglement of the MPS + # where each layer compresses the MPS to a maximum bond dimension of 2 + # and applies the inverse of the layer to disentangle the MPS + # After a few layers we are adequately close to |00...0> state + # after which we can simply reverse the layers (no inverse) and apply them + # to the |00...0> state to obtain the MPS state + for layer_index in range(max_num_layers): + # Compress the MPS from the previous layer to a maximum bond dimension of 2, + # |ψ_k> -> |ψ'_k> + compressed_mps = disentangled_mps.copy(deep=True) + + # Normalization improves fidelity of the encoding + compressed_mps.normalize() + compressed_mps.compress(form="left", max_bond=2) + + unitary_layer = self.generate_layer(compressed_mps) + unitary_layers.append(unitary_layer) + + # To update the MPS definition, apply the inverse of U_k to disentangle |ψ_k>, + # |ψ_(k+1)> = inv(U_k) @ |ψ_k> + for i, _ in enumerate(unitary_layer): + inverse = unitary_layer[-(i + 1)][1].conj().T + + if inverse.shape[0] == 4: + disentangled_mps.gate_split_(inverse, (i - 1, i)) + else: + disentangled_mps.gate_(inverse, (i), contract=True) + + # Compress the disentangled MPS to a maximum bond dimension of chi_max + # This is to ensure that the disentangled MPS does not grow too large + # and improves the fidelity of the encoding + disentangled_mps: qtn.MatrixProductState = ( # type: ignore + qtn.tensor_1d_compress.tensor_network_1d_compress( + disentangled_mps, max_bond=chi_max + ) + ) + + fidelity = np.abs(np.vdot(disentangled_mps.to_dense(), zero_state)) ** 2 + fidelity = float(np.real(fidelity)) + + if fidelity >= self.max_fidelity_threshold: + break + + # The layers disentangle the MPS to a state close to |00...0> + # inv(U_k) ... inv(U_1) |ψ> = |00...0> + # So, we have to reverse the layers and apply them to the |00...0> state + # to obtain the MPS state + # |ψ> = U_1 ... U_k |00...0> + unitary_layers.reverse() + + for unitary_layer in unitary_layers: + for qubits, unitary in unitary_layer: + qubits = list(reversed([mps.L - 1 - q for q in qubits])) + + # In certain cases, floating point errors can cause `unitary` + # to not be unitary + # We handle this by using SVD to approximate it again with the + # closest unitary + U, _, Vh = np.linalg.svd(unitary) + unitary = U @ Vh + + circuit.unitary(matrix=unitary, targets=qubits) + + return circuit + + def __call__( + self, statevector: npt.NDArray[np.complex128], max_num_layers: int = 10 + ) -> Circuit: + """Call the instance to create the circuit that encodes the statevector. + + Args: + statevector (NDArray[np.complex128]): The statevector to convert. + + Returns: + (Circuit): The generated quantum circuit. + """ + num_qubits = int(np.ceil(np.log2(len(statevector)))) + + # Single qubit statevector is optimal, and cannot be + # further improved given depth of 1 + if num_qubits == 1: + circuit = Circuit() + + magnitude = abs(statevector) + phase = np.angle(statevector) + + divisor = magnitude[0] ** 2 + magnitude[1] ** 2 + alpha_y = 2 * np.arcsin(np.sqrt(magnitude[1] ** 2 / divisor)) if divisor != 0 else 0.0 + alpha_z = phase[1] - phase[0] + global_phase = sum(phase / len(statevector)) + + circuit.ry(angle=alpha_y, target=0) + circuit.rz(angle=alpha_z, target=0) + circuit.gphase(angle=global_phase) + + return circuit + + circuit = self.mps_to_circuit_approx(statevector, max_num_layers, 2**num_qubits) + + return circuit + + +def mps_circuit_from_statevector( + statevector: npt.NDArray[np.complex128], max_num_layers: int = 10, target_fidelity: float = 0.95 +) -> Circuit: + """Create the circuit that encodes the statevector using MPS synthesis. + + Args: + statevector (NDArray[np.complex128]): The target statevector to be encoded. + max_num_layers (int): The maximum number of layers allowed in the circuit. + target_fidelity (float): The target fidelity for the approximation. + + Returns: + A braket.Circuit that encodes the statevector. + """ + encoder = MPSSequential(max_fidelity_threshold=target_fidelity) + return encoder(statevector, max_num_layers=max_num_layers) diff --git a/test/unit_tests/braket/experimental/algorithms/mps_encoding/test_mps_encoding.py b/test/unit_tests/braket/experimental/algorithms/mps_encoding/test_mps_encoding.py new file mode 100644 index 00000000..69441ead --- /dev/null +++ b/test/unit_tests/braket/experimental/algorithms/mps_encoding/test_mps_encoding.py @@ -0,0 +1,65 @@ +import numpy as np +import pytest + +from braket.circuits import Circuit +from braket.devices import LocalSimulator +from braket.experimental.algorithms.mps_encoding import mps_circuit_from_statevector + + +def test_compile_single_qubit_state() -> None: + # General random state + state = np.random.randn(2) + 1j * np.random.randn(2) + state /= np.linalg.norm(state) + + circuit = mps_circuit_from_statevector(state, max_num_layers=1) + result = LocalSimulator("braket_sv").run(circuit.state_vector(), shots=0).result() + np.testing.assert_allclose(result.result_types[0].value, state, atol=1e-6) + + +@pytest.mark.parametrize("num_qubits", [5, 8, 10, 11]) +def test_compile_area_law_states(num_qubits: int) -> None: + # Given random_superposition can generate volume-law entangled states, + # we manually construct an exclusively area-law entangled state here + state = np.random.rand(2**num_qubits) + 1j * np.random.rand(2**num_qubits) + state /= np.linalg.norm(state) + + circuit = mps_circuit_from_statevector(state, max_num_layers=6) + result = LocalSimulator("braket_sv").run(circuit.state_vector(), shots=0).result() + fidelity = np.vdot(result.result_types[0].value, state) + assert np.abs(fidelity) > 0.85 + + +def test_compile_trivial_state_with_mps_pass() -> None: + # Define a circuit that produces a trivial state + # aka a product state + trivial_circuit = Circuit() + + trivial_circuit.ry(angle=np.pi / 2, target=9) + trivial_circuit.rx(angle=np.pi, target=9) + trivial_circuit.rz(angle=np.pi / 4, target=9) + for i in reversed(range(9)): + trivial_circuit.cnot(i + 1, i) + trivial_circuit.rz(angle=-np.pi / (2 ** (9 - i)), target=i) + trivial_circuit.cnot(i + 1, i) + trivial_circuit.rz(angle=np.pi / (2 ** (9 - i)), target=i) + trivial_circuit.ry(angle=np.pi / 2, target=i) + trivial_circuit.rx(angle=np.pi, target=i) + trivial_circuit.rz(angle=np.pi / 4, target=i) + for i in reversed(range(9)): + trivial_circuit.rz(angle=np.pi / (2 ** (9 - i)), target=i) + for i in reversed(range(9)): + trivial_circuit.cnot(i + 1, i) + for i in reversed(range(9)): + trivial_circuit.cnot(i, i + 1) + + simulator = LocalSimulator("braket_sv") + state = simulator.run(trivial_circuit.state_vector(), shots=0).result().result_types[0].value + circuit = mps_circuit_from_statevector(state, max_num_layers=1) + result = ( + LocalSimulator("braket_sv") + .run(circuit.state_vector(), shots=0) + .result() + .result_types[0] + .value + ) + np.testing.assert_allclose(result, state, atol=1e-6) From 6f1080509e9e5f6f153b959abab7d95b83045dbd Mon Sep 17 00:00:00 2001 From: "A.C.E07" Date: Sat, 21 Feb 2026 23:40:39 +0800 Subject: [PATCH 2/4] resolved some of the edit requests --- notebooks/textbook/MPS_Encoding.ipynb | 85 +++++++++++++++---- .../algorithms/mps_encoding/mps_encoding.md | 3 +- .../algorithms/mps_encoding/mps_encoding.py | 7 +- 3 files changed, 70 insertions(+), 25 deletions(-) diff --git a/notebooks/textbook/MPS_Encoding.ipynb b/notebooks/textbook/MPS_Encoding.ipynb index f75aa364..ba4e2c61 100644 --- a/notebooks/textbook/MPS_Encoding.ipynb +++ b/notebooks/textbook/MPS_Encoding.ipynb @@ -13,25 +13,19 @@ "id": "9057d3c0", "metadata": {}, "source": [ - "Matrix Product State (MPS) encoding tackles the critical task of state preparation in $O(N)$ circuit depth, an exponential reduction in circuit depth compared to\n", - "exact encoding algorithms like Shende, Isometry, and Mottonen. The current implementation uses an analytical decomposition based on work by\n", - "Ran to create a staircase ansatz comprised of 1 and 2 qubit unitary gates. Main consideration with the decomposition is that it is prone to\n", - "approximation limitations imposed by MPS IR, which limits the adequate performance of the synthesis to area-law entangled states only. This can be resolved\n", - "by using tensor network sweeping [2].\n", + "Matrix Product State (MPS) encoding tackles the critical task of state preparation in $O(N)$ circuit depth [1], an exponential reduction in circuit depth compared to exact encoding algorithms like Shende, Isometry, and Mottonen. The current implementation uses an analytical decomposition based on work by Ran to create a staircase ansatz comprised of 1 and 2 qubit unitary gates. Main consideration with the decomposition is that it is prone to approximation limitations imposed by MPS intermediate-representation (IR), which limits the adequate performance of the synthesis to area-law entangled states only.\n", "\n", - "In this notebook, we implement Grover's algorithm based on Ran [1]. For a comprehensive description of the algorithm, see [1]. In the following, we present the MPS performance on randomly generated area-law entangled states and compare performance with exact encoders.\n", + "In this notebook, we implement the analytical decomposition based on Ran [1]. For a comprehensive description of the algorithm, see [1]. In the following, we present the MPS performance on randomly generated area-law entangled states and compare performance with exact encoders.\n", "\n", "---\n", "# References \n", "\n", - "[1] S. Ran (2019). \"Encoding of Matrix Product States into Quantum Circuits of One- and Two-Qubit Gates\", [arXiv:1908.07958](https://arxiv.org/abs/1908.07958).\n", - "\n", - "[2] M. S. Rudolph, J. Chen, J. Miller, A. Acharya, A. Perdomo-Ortiz (2022). \"Decomposition of Matrix Product States into Shallow Quantum Circuits\", [arXiv:2209.00595](https://arxiv.org/abs/2209.00595)." + "[1] S. Ran (2019). \"Encoding of Matrix Product States into Quantum Circuits of One- and Two-Qubit Gates\", [arXiv:1908.07958](https://arxiv.org/abs/1908.07958)." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "id": "7fe2019a", "metadata": {}, "outputs": [], @@ -42,7 +36,6 @@ "\n", "import matplotlib.pyplot as plt\n", "\n", - "from braket.aws import AwsDevice\n", "from braket.devices import LocalSimulator\n", "from braket.tracking import Tracker\n", "\n", @@ -55,12 +48,13 @@ "metadata": {}, "source": [ "# Run on a local simulator\n", - "We demonstrate MPS Encoding on a classical simulator first. You can choose between a local simulator or an on-demand simulator." + "We demonstrate MPS Encoding on a classical simulator first. You can choose between a local simulator or an on-demand simulator.\n", + "\n" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 2, "id": "3f97eb8d", "metadata": {}, "outputs": [], @@ -71,12 +65,13 @@ "\n", " circuit = mps_circuit_from_statevector(state, max_num_layers=max(1, int(num_qubits // 1.5)))\n", " result = LocalSimulator(\"braket_sv\").run(circuit.state_vector(), shots=0).result()\n", - " fidelity = np.vdot(result.result_types[0].value, state)\n", + " fidelity = np.vdot(result.values[0], state)\n", "\n", " return {\n", " \"num_qubits\": num_qubits,\n", " \"fidelity\": np.abs(fidelity),\n", " \"circuit_depth\": circuit.depth,\n", + " \"circuit\": circuit,\n", " }" ] }, @@ -90,13 +85,25 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 3, "id": "f727fd9a", "metadata": {}, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "c:\\Users\\A.C.EA\\Documents\\GitHub\\amazon-braket-algorithm-library\\.venv\\Lib\\site-packages\\cotengra\\hyperoptimizers\\hyper.py:36: UserWarning: Couldn't import `kahypar` - skipping from default hyper optimizer and using basic `labels` method instead. `kahypar` is highly recommended for the best quality contraction paths.\n", + " warnings.warn(\n", + "c:\\Users\\A.C.EA\\Documents\\GitHub\\amazon-braket-algorithm-library\\.venv\\Lib\\site-packages\\cotengra\\hyperoptimizers\\hyper.py:75: UserWarning: Couldn't find `optuna`, `cmaes`, or `nevergrad` so will use completely random sampling in place of hyper-optimization. It is recommended to install one of these libraries for higher quality hyper-optimization.\n", + " warnings.warn(\n", + "c:\\Users\\A.C.EA\\Documents\\GitHub\\amazon-braket-algorithm-library\\.venv\\Lib\\site-packages\\cotengra\\hyperoptimizers\\hyper.py:55: UserWarning: Couldn't find `optuna`, `cmaes`, or `nevergrad` so will use completely random sampling in place of hyper-optimization. It is recommended to install one of these libraries for higher quality contraction paths.\n", + " warnings.warn(\n" + ] + }, { "data": { - "image/png": "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", + "image/png": "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EikDn+bk3Llzagw0GQtMxsWSASSHDx+OuLg4q2+TjDd36dIlNY6g+Oqrr1CqVCmrvw6RI2AARESKlHRMnjwZ165d080RSU1NLfRzT506hdatW6uAJqfRz6OiotCsWTM1Svq3336rBpycM2eOCphatmyJq1evwpokwJJBOR01KCWyJgZARKS0a9dOfblOmjQpxyPy7rvv3lUdNG3aNFSrVs2sNElGRf/www8RGBioSigmTpyI9PR0Neq0jEBdqVIlLFy40GK1k5RySDDWoEEDbNq0yezxgwcP4rHHHoOPj49a9/PPP48rV65kPf7www9j2LBharR2f39/dOzY0eJ+ZGZmqm2S7fDw8FD7JCNgG0mAsWfPHrWM3Jb9tuSll15SQcnatWvRpk0bNbK2bN+ff/6JCxcu4O233zZbp5SomZJjI6U4+T0GplVgcnvAgAGIj49X80y3c9asWWqkelmHHCcZzZ2IzDEAIiLFxcVFBS0zZszA+fPn7+mo/PXXX7h48SI2b96MqVOnquqk//znPyhdujR27tyJwYMHY9CgQXe9jgRIr7/+Ovbu3atKULp27ZpVlSRf+o888giaNGmC3bt3q4Dl8uXLePbZZ83WsWjRIhWUbNu2TZXGWDJ9+nRMmTIFn3zyCQ4cOKACpccff1yV5AipZqpfv77aFrn9xhtv3LUOKd35448/MHToUHh5eZk9JoFk7969sWzZMhR0vOncjoEpCZIk+PTz81PbaNxOOTavvPKKCt6k+k6O00MPPVSgbSByBAyAiChL9+7dVWmIBCz3Qkp5PvvsM9SpU0flx8j/pKQkjBkzRpVMjB49WgUpW7duNXuelN489dRTqFevHmbPnq1yXb788kv12Oeff66CHwnS6tatq24vWLAAGzZswPHjx7PWIev/+OOP1WvKZIkEPm+99RZ69uyplpGqP9lvCSiMAYyrq6sqaZLb8j87CZYkuJFttUTmS3VibGxsgY5dbsfAlBw/eUxKfmQbjdt59uxZlbskAadU38lxkoCIiMwxACIiMxIMSCnKkSNHCn1kpPTE2fnOx4tUwzRs2NCstEnyamJiYsyeJyUeRhKASH6NcTv279+vgh35kjdOEggZ83WMQkNDc922hIQEVTrVqlUrs/lyvzD7nFcJjwQqBZHbMciP9u3bq8CnevXqqorwm2++UcEnEZljAEREZqS6RKqEpJQmOwlqsn/hp6Wl3bWcm5ub2X0ppbA0T3Jx8uvmzZuqOkiaiZtOUhJjWsUjpR/FoWbNmmofcgpOZH65cuWyWmnJsvk5dvfK19cXkZGRKim7fPnyGDduHBo1asSm80TZMAAiortIc/jVq1cjPDzcbL58oUdHR5t9kVuz754dO3Zk3ZakaUlENlYxNW3aFIcOHVIJ1xJ8mE4FCXokZ0aarEuOkCm5HxISku/1SAmWlLZIwvGtW7fMHpNjJCUvkhBueuwkT8dIAjdLJTO5HQNLpUsZGRl3zZeSI0lql6pAyXGSPoYkL4uI7mAARER3keoqSeKVPB5T0spKclrki1WqnWbOnInff//dakdQ1rdy5UrVEkpaWEkOjeQQCbkvicfPPfccdu3apV5fkpClJZSlICCvRGOp6pMkZUkUHjVqlArkpP+egpC8pJSUFFViJgnf0ieQJB1LYFS7dm1V+mIkCdyyvCQ3S6KyJIJnLxXL6xhkJ8GglIxJs3tpDScB1S+//KLOm+zPmTNn8PXXX6uStpzyoYgcFQMgIrJIWhFlr6KSkggp8ZAvaalWiYiIsNhC6l5KnmSSdUuC9M8//6yaswtjqY0EOx06dFBBmjR3lyom03yj/JCk4BEjRqjWVrIeCVrktSSBuiBkeQnGJN9GWqNJ7o00g5fgR7bVNHlaWp1VrlwZDz74IHr16qWOm7e3d4GOgaWWYBJI9ejRQ5UwSWAqx2PFihUq4JLzJS3hpDpM8rKI6A4nQ0HbaBIRUY6kBZ00/V+3bp0aSoOIbBMDICIiK5NOHqWDQilpKmjpFBEVDwZARERE5HD404SIiIgcDgMgIiIicjgMgIiIiMjhMAAiIiIih8MAiIiIiBwOAyAiIiJyOAyAiIiIyOEwACIiIiKHwwCIiIiIHM7/A0aC9T4r77wMAAAAAElFTkSuQmCC", "text/plain": [ "
" ] @@ -120,6 +127,50 @@ "plt.show()" ] }, + { + "cell_type": "markdown", + "id": "119506f4", + "metadata": {}, + "source": [ + "Below, we can observe the resulting circuit structure for the case of 4 qubits. As mentioned, Ran's algorithm produces staircase layers of one and two qubit unitary gates to encode the MPS to circuit." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "a931a428", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "T : │ 0 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │\n", + " ┌───┐ ┌───┐ ┌───┐ ┌───┐ \n", + "q0 : ───────────────────┤ U ├─┤ U ├─┤ U ├─┤ U ├─\n", + " └─┬─┘ └───┘ └─┬─┘ └───┘ \n", + " ┌───┐ ┌─┴─┐ ┌───┐ ┌─┴─┐ \n", + "q1 : ─────────────┤ U ├─┤ U ├─┤ U ├─┤ U ├───────\n", + " └─┬─┘ └───┘ └─┬─┘ └───┘ \n", + " ┌───┐ ┌─┴─┐ ┌───┐ ┌─┴─┐ \n", + "q2 : ───────┤ U ├─┤ U ├─┤ U ├─┤ U ├─────────────\n", + " └─┬─┘ └───┘ └─┬─┘ └───┘ \n", + " ┌───┐ ┌─┴─┐ ┌───┐ ┌─┴─┐ \n", + "q3 : ─┤ U ├─┤ U ├─┤ U ├─┤ U ├───────────────────\n", + " └─┬─┘ └───┘ └─┬─┘ └───┘ \n", + " ┌─┴─┐ ┌─┴─┐ \n", + "q4 : ─┤ U ├───────┤ U ├─────────────────────────\n", + " └───┘ └───┘ \n", + "T : │ 0 │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │\n", + "\n", + "Additional result types: StateVector\n" + ] + } + ], + "source": [ + "print(results[3][\"circuit\"].diagram())" + ] + }, { "cell_type": "markdown", "id": "eb5d79ea", @@ -130,7 +181,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 5, "id": "4551b8a5", "metadata": {}, "outputs": [ diff --git a/src/braket/experimental/algorithms/mps_encoding/mps_encoding.md b/src/braket/experimental/algorithms/mps_encoding/mps_encoding.md index 967a41c2..0dbeac2a 100644 --- a/src/braket/experimental/algorithms/mps_encoding/mps_encoding.md +++ b/src/braket/experimental/algorithms/mps_encoding/mps_encoding.md @@ -1,8 +1,7 @@ Matrix Product State (MPS) encoding tackles the critical task of state preparation in $O(N)$ circuit depth, an exponential reduction in circuit depth compared to exact encoding algorithms like Shende, Isometry, and Mottonen. The current implementation uses an analytical decomposition based on work by Ran et al. to create a staircase ansatz comprised of 1 and 2 qubit unitary gates. Main consideration with the decomposition is that it is prone to -approximation limitations imposed by MPS IR, which limits the adequate performance of the synthesis to area-law entangled states only. This can be resolved -by using tensor network sweeping. +approximation limitations imposed by MPS IR, which limits the adequate performance of the synthesis to area-law entangled states only.