From f43b4d974d03e79fa9ba0c73817a8dc97d57f099 Mon Sep 17 00:00:00 2001 From: Quleaf Date: Fri, 27 Aug 2021 15:23:01 +0800 Subject: [PATCH] slight update --- README.md | 4 +- README_CN.md | 4 +- paddle_quantum/mbqc/mcalculus.py | 4 +- paddle_quantum/mbqc/qobject.py | 21 +-- paddle_quantum/mbqc/simulator.py | 3 +- paddle_quantum/mbqc/utils.py | 25 ++-- paddle_quantum/utils.py | 87 ++++++++++- tutorial/mbqc/Introduction_CN.md | 8 +- tutorial/mbqc/Introduction_EN.md | 8 +- tutorial/mbqc/MBQC_CN.ipynb | 24 ++- tutorial/mbqc/MBQC_EN.ipynb | 2 +- tutorial/mbqc/PUBO_CN.ipynb | 140 +++++++++--------- tutorial/mbqc/PUBO_EN.ipynb | 140 +++++++++--------- .../mbqc/figures/mbqc-fig-qaoa_graph_1.jpg | Bin 122653 -> 66015 bytes tutorial/quantum_simulation/VQE_CN.ipynb | 28 ++-- tutorial/quantum_simulation/VQE_EN.ipynb | 40 ++--- 16 files changed, 306 insertions(+), 232 deletions(-) diff --git a/README.md b/README.md index ed45e44..b26adff 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ Paddle Quantum aims at establishing a bridge between artificial intelligence (AI ## Features - Easy-to-use - - Many online learning resources (23+ tutorials) + - Many online learning resources (37+ tutorials) - High efficiency in building QNN with various QNN templates - Automatic differentiation - Versatile @@ -90,7 +90,7 @@ pip install -e . ### Environment setup for Quantum Chemistry module -Our qchem module is based on `Openfermion` and `Psi4`, so before executing quantum chemistry, we have to install the two Python packages first. +Our `qchem` module is based on `Openfermion` and `Psi4`, so before executing quantum chemistry, we have to install the two Python packages first. > It is recommended that these Python packages be installed in a Python 3.8 environment. diff --git a/README_CN.md b/README_CN.md index 7386bfa..61f0798 100644 --- a/README_CN.md +++ b/README_CN.md @@ -55,7 +55,7 @@ ## 特色 - 轻松上手 - - 丰富的在线学习资源(23+ 教程案例) + - 丰富的在线学习资源(37+ 教程案例) - 通过模板高效搭建量子神经网络 - 自动微分框架 - 功能丰富 @@ -91,7 +91,7 @@ pip install -e . ### 量子化学模块的环境设置 -我们的量子化学模块是基于 `Openfermion` 和 `Psi4` 进行开发的,所以在运行量子化学模块之前需要先行安装这两个Python包。 +我们的量子化学模块是基于 `Openfermion` 和 `Psi4` 进行开发的,所以在运行量子化学模块之前需要先行安装这两个 Python 包。 > 推荐在 Python3.8 环境中安装这些 Python包。 diff --git a/paddle_quantum/mbqc/mcalculus.py b/paddle_quantum/mbqc/mcalculus.py index 7c5c823..2e06043 100644 --- a/paddle_quantum/mbqc/mcalculus.py +++ b/paddle_quantum/mbqc/mcalculus.py @@ -334,7 +334,7 @@ class MCalculus: # Measurement pattern of CNOT by 15 qubits, c.f. [arXiv: quant-ph/0301052v2] # Note: due to the '1' in byproduct Z of qubit-7, we manually add a Z gate after qubit 7 to match this - elif name == "cnot_15": # Control Not gate + elif name == "cnot_15": # Controlled Not gate input1, input2 = input_ output1, output2 = output_ ancilla = self.__set_ancilla_label(input_, output_, [7, 5]) @@ -381,7 +381,7 @@ class MCalculus: commands = [E12, E23, E34, E45, E48, E56, E67, E716, E1617, E910, E1011, E1112, E812, E1213, E1314, E1415, M1, M2, M3, M4, M5, M6, M8, M12, M9, M10, M11, M13, M14, M7, M16, X15, X17, Z15, Z17] - elif name == 'cz': # Control Z gate + elif name == 'cz': # Controlled Z gate commands = [Pattern.CommandE(input_)] elif name == 'm': # Single-qubit measurement diff --git a/paddle_quantum/mbqc/qobject.py b/paddle_quantum/mbqc/qobject.py index 20e6869..64097d7 100644 --- a/paddle_quantum/mbqc/qobject.py +++ b/paddle_quantum/mbqc/qobject.py @@ -108,7 +108,7 @@ class Circuit: .. math:: - H = \frac{1}{\sqrt{2}}\begin{bmatrix} 1&1\\1&-1 \end{bmatrix} + \frac{1}{\sqrt{2}}\begin{bmatrix} 1&1\\1&-1 \end{bmatrix} Args: which_qubit (int): 作用量子门的量子位编号 @@ -236,7 +236,7 @@ class Circuit: .. math:: - T = \begin{bmatrix} 1&0\\0& i} \end{bmatrix} + \begin{bmatrix} 1&0\\0& i \end{bmatrix} Args: which_qubit (int): 作用量子门的量子位编号 @@ -268,7 +268,7 @@ class Circuit: .. math:: - T = \begin{bmatrix} 1&0\\0& e^{i\pi/ 4} \end{bmatrix} + \begin{bmatrix} 1&0\\0& e^{i\pi/ 4} \end{bmatrix} Args: which_qubit (int): 作用量子门的量子位编号 @@ -491,10 +491,7 @@ class Circuit: .. math:: - \begin{align} - CNOT &=|0\rangle \langle 0|\otimes I + |1 \rangle \langle 1|\otimes X\\ - &=\begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \end{bmatrix} - \end{align} + \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \end{bmatrix} Args: which_qubits (list): 作用量子门的量子位,其中列表第一个元素为控制位,第二个元素为受控位 @@ -531,10 +528,7 @@ class Circuit: .. math:: - \begin{align} - CNOT &=|0\rangle \langle 0|\otimes I + |1 \rangle \langle 1|\otimes X\\ - &=\begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \end{bmatrix} - \end{align} + \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \end{bmatrix} Args: which_qubits (list): 作用量子门的量子位,其中列表第一个元素为控制位,第二个元素为受控位 @@ -571,10 +565,7 @@ class Circuit: .. math:: - \begin{align} - CZ &=|0\rangle \langle 0|\otimes I + |1 \rangle \langle 1|\otimes Z\\ - &=\begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & -1 \end{bmatrix} - \end{align} + \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & -1 \end{bmatrix} Args: which_qubits (list): 作用量子门的量子位,其中列表第一个元素为控制位,第二个元素为受控位 diff --git a/paddle_quantum/mbqc/simulator.py b/paddle_quantum/mbqc/simulator.py index 6bdbce5..1e6d859 100644 --- a/paddle_quantum/mbqc/simulator.py +++ b/paddle_quantum/mbqc/simulator.py @@ -654,8 +654,7 @@ class MBQC: r"""获取 MBQC 模型运行后的经典输出结果。 Returns: - str or dict: 如果用户输入是测量模式,则返回测量输出节点得到的比特串,与原电路的测量结果相一致,没有被测量的比特位填充 "?"; - 如果用户输入是图,则返回所有节点的测量结果 + str or dict: 如果用户输入是测量模式,则返回测量输出节点得到的比特串,与原电路的测量结果相一致,没有被测量的比特位填充 "?",如果用户输入是图,则返回所有节点的测量结果 """ # If the input is pattern, return the equivalent result as the circuit model if self.__pattern is not None: diff --git a/paddle_quantum/mbqc/utils.py b/paddle_quantum/mbqc/utils.py index 0166b61..4e7783c 100644 --- a/paddle_quantum/mbqc/utils.py +++ b/paddle_quantum/mbqc/utils.py @@ -254,7 +254,7 @@ def t_gate(): def cz_gate(): - r"""定义 ``Control Z`` 门。 + r"""定义 ``Controlled-Z`` 门。 其矩阵形式为: @@ -263,7 +263,7 @@ def cz_gate(): \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & -1 \end{bmatrix} Returns: - Tensor: ``Control Z`` 门矩阵对应的 ``Tensor`` 形式 + Tensor: ``Controlled-Z`` 门矩阵对应的 ``Tensor`` 形式 代码示例: @@ -287,7 +287,7 @@ def cz_gate(): def cnot_gate(): - r"""定义 ``Control NOT (CNOT)`` 门。 + r"""定义 ``Controlled-NOT (CNOT)`` 门。 其矩阵形式为: @@ -296,7 +296,7 @@ def cnot_gate(): \begin{bmatrix} 1 & 0 & 0 & 0 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 \end{bmatrix} Returns: - Tensor: ``Control NOT (CNOT)`` 门矩阵对应的 ``Tensor`` 形式 + Tensor: ``Controlled-NOT (CNOT)`` 门矩阵对应的 ``Tensor`` 形式 代码示例: @@ -540,16 +540,13 @@ def basis(label, theta=to_tensor([0], dtype='float64')): 常用的测量方式有 XY-平面测量,YZ-平面测量,X 测量,Y 测量,Z 测量。 .. math:: - - M^{XY}(\theta) = {R_{z}(\theta)|+\rangle, R_{z}(\theta)|-\rangle} - - M^{YZ}(\theta) = {R_{x}(\theta)|0\rangle, R_{x}(\theta)|1\rangle} - - X = M^{XY}(0) - - Y = M^{YZ}(\pi / 2) = M^{XY}(-\pi / 2) - - Z = M_{YZ}(0) + \begin{align*} + & M^{XY}(\theta) = \{R_{z}(\theta)|+\rangle, R_{z}(\theta)|-\rangle\}\\ + & M^{YZ}(\theta) = \{R_{x}(\theta)|0\rangle, R_{x}(\theta)|1\rangle\}\\ + & X = M^{XY}(0)\\ + & Y = M^{YZ}(\pi / 2) = M^{XY}(-\pi / 2)\\ + & Z = M_{YZ}(0) + \end{align*} Args: label (str): 测量基索引字符,"XY" 表示 XY-平面测量,"YZ" 表示 YZ-平面测量,"X" 表示 X 测量,"Y" 表示 Y 测量,"Z" 表示 Z 测量 diff --git a/paddle_quantum/utils.py b/paddle_quantum/utils.py index 54cdd23..a314ca4 100644 --- a/paddle_quantum/utils.py +++ b/paddle_quantum/utils.py @@ -29,11 +29,8 @@ from paddle import matmul from paddle import transpose from paddle import concat, ones from paddle import zeros -from scipy.linalg import logm, sqrtm from scipy import sparse -import matplotlib.pyplot as plt import matplotlib as mpl -from math import sqrt from paddle_quantum import simulator import matplotlib.animation as animation @@ -280,7 +277,7 @@ def NKron(matrix_A, matrix_B, *args): Tensor: 输入矩阵的Kronecker积 .. code-block:: python - + from paddle_quantum.state import density_op_random from paddle_quantum.utils import NKron A = density_op_random(2) @@ -305,7 +302,7 @@ def dagger(matrix): 代码示例: .. code-block:: python - + from paddle_quantum.utils import dagger import numpy as np rho = paddle.to_tensor(np.array([[1+1j, 2+2j], [3+3j, 4+4j]])) @@ -1522,3 +1519,83 @@ def plot_rotation_in_bloch_sphere( update(len(bloch_vectors) - 2) plt.show() + + +def pauli_basis(n): + r"""生成 n 量子比特的泡利基空间 + Args: + n (int): 量子比特的数量 + + Return: + tuple: + basis_str: 泡利基空间的一组基底表示(array形式) + label_str: 泡利基空间对应的一组基底表示(标签形式),形如``[ 'X', 'Y', 'Z', 'I']`` + """ + sigma_x = np.array([[0, 1], [1, 0]], dtype=np.complex128) + sigma_y = np.array([[0, -1j], [1j, 0]], dtype=np.complex128) + sigma_z = np.array([[1, 0], [0, -1]], dtype=np.complex128) + sigma_id = np.array([[1, 0], [0, 1]], dtype=np.complex128) + pauli = [sigma_x, sigma_y, sigma_z, sigma_id] + labels = ['X', 'Y', 'Z', 'I'] + + num_qubits = n + num = 1 + if num_qubits > 0: + basis_str = pauli[:] + label_str = labels[:] + pauli_basis = pauli[:] + palui_label = labels[:] + while num < num_qubits: + length = len(basis_str) + for i in range(4): + for j in range(length): + basis_str.append(np.kron(basis_str[j], pauli_basis[i])) + label_str.append(label_str[j] + palui_label[i]) + basis_str = basis_str[-1:-4**(num+1)-1:-1] + label_str = label_str[-1:-4**(num+1)-1:-1] + num += 1 + return basis_str, label_str + + +def decompose(matrix): + r"""生成 n 量子比特的泡利基空间 + Args: + matrix (numpy.ndarray): 要分解的矩阵 + + Return: + pauli_form (list): 返回矩阵分解后的哈密顿量,形如 ``[[1, 'Z0, Z1'], [2, 'I']]`` + """ + if np.log2(len(matrix)) % 1 != 0: + print("Please input correct matrix!") + return -1 + basis_space, label_str = pauli_basis(np.log2(len(matrix))) + coefficients = [] # 对应的系数 + pauli_word = [] # 对应的label + pauli_form = [] # 输出pauli_str list形式:[[1, 'Z0, Z1'], [2, 'I']] + for i in range(len(basis_space)): + # 求系数 + a_ij = 1/len(matrix) * np.trace(matrix@basis_space[i]) + if a_ij != 0: + if a_ij.imag != 0: + coefficients.append(a_ij) + else: + coefficients.append(a_ij.real) + pauli_word.append(label_str[i]) + for i in range(len(coefficients)): + pauli_site = [] # 临时存放一个基 + pauli_site.append(coefficients[i]) + word = '' + for j in range(len(pauli_word[0])): + if pauli_word[i] == 'I'*int(np.log2(len(matrix))): + word = 'I' # 和Hamiltonian类似,若全是I就用一个I指代 + break + if pauli_word[i][j] == 'I': + continue # 如果是I就不加数字下标 + if j != 0 and len(word) != 0: + word += ',' + word += pauli_word[i][j] + word += str(j) # 对每一个label加标签,说明是作用在哪个比特 + pauli_site.append(word) # 添加上对应作用的门 + pauli_form.append(pauli_site) + + return pauli_form diff --git a/tutorial/mbqc/Introduction_CN.md b/tutorial/mbqc/Introduction_CN.md index 68a47c7..ec77e2a 100644 --- a/tutorial/mbqc/Introduction_CN.md +++ b/tutorial/mbqc/Introduction_CN.md @@ -2,9 +2,10 @@ ## 概述 -基于测量的量子计算(Measurement-Based Quantum Computation, MBQC)模块是基于量桨开发的通用量子计算模拟工具。与传统的量子电路模型不同,MBQC 具有其独特的运行方式 [1-8],因而常见的电路模拟工具无法直接用于该模型的模拟。为了促进对 MBQC 的进一步研究和探索,我们在模块中设计并提供了模拟 MBQC 所需的多个核心模块。 +基于测量的量子计算(Measurement-Based Quantum Computation, MBQC)模块是基于量桨开发的通用量子计算模拟工具。与传统的量子电路模型不同,MBQC 具有其独特的运行方式 [1-8],因而常见的电路模拟工具无法直接用于该模型的模拟。为了促进对 MBQC 的进一步研究和探索,我们设计并提供了模拟 MBQC 所需的多个核心模块。 -一方面,与其他常见的量子电路模拟器一样,我们可以利用 MBQC 模块快速实现量子神经网络的搭建与训练,在诸如量子化学,量子自然语言处理,量子金融等人工智能领域具有强大的应用前景。另一方面,MBQC 模块在某些特殊情形下可以展现出其运算效率上的独特优势,特别是在多比特浅层量子电路模拟时可以大幅度降低计算资源的消耗,从而有潜力实现更大规模的量子算法模拟。 +一方面,与其他常见的量子电路模拟器一样,我们可以利用 MBQC 模块快速实现量子神经网络的搭建与训练,在诸如量子化学,量子自然语言处理,量子金融等人工智能领域具有广阔的应用前景。另一方面,MBQC +模块在某些特殊情形下可以展现出其运算效率上的独特优势,特别是在多比特浅层量子电路模拟时可以大幅度降低计算资源的消耗,从而有潜力实现更大规模的量子算法模拟。 我们的模块是业界首个、目前也是唯一一个支持模拟 MBQC 量子计算模型的系统性工具。我们由衷地期待广大的量子计算爱好者和开发者进行使用和学习。欢迎加入我们,共同探索 MBQC 中更多的奥秘! @@ -62,7 +63,8 @@ state_out = mbqc.get_quantum_output() #### 测量模式调用方法 -MBQC 和电路模型一样都可以实现通用量子计算,并且两者之间存在一一对应的关系。然而将电路模型转化到等价的 MBQC 测量模式过程复杂且计算量大 [9]。为此,我们在模块中提供了由量子电路模型自动翻译为测量模式的转义模块 `transpiler` 。我们可以直接使用类似于 [UAnstaz](https://qml.baidu.com/api/paddle_quantum.circuit.uansatz.html) 的调用格式来构建量子电路,将其自动翻译成测量模式,再接入模拟模块中运行。同样地,这里我们以实现单比特 `Hadamard` 门为例,简要展示其用法。 +MBQC 和电路模型一样都可以实现通用量子计算,并且两者之间存在一一对应的关系。然而将电路模型转化为等价的 MBQC 测量模式过程复杂且计算量大 [9]。为此,我们在模块中提供了将量子电路模型自动翻译为测量模式的转义模块 +`transpiler` 。我们可以直接使用类似于 [UAnstaz](https://qml.baidu.com/api/paddle_quantum.circuit.uansatz.html) 的调用格式来构建量子电路,将其自动翻译成测量模式,再接入模拟模块中运行。同样地,这里我们以实现单比特 `Hadamard` 门为例,简要展示其用法。 ```python # 引入模块 diff --git a/tutorial/mbqc/Introduction_EN.md b/tutorial/mbqc/Introduction_EN.md index 7052e7a..bf8818c 100644 --- a/tutorial/mbqc/Introduction_EN.md +++ b/tutorial/mbqc/Introduction_EN.md @@ -2,11 +2,11 @@ ## Introduction -Measurement-Based Quantum Computation (MBQC) module is a simulation tool for universal quantum computing, developed based on Baidu PaddlePaddle. Unlike the conventional quantum circuit model, MBQC has its unique way of computing [1-8] and thus common circuit simulation tools cannot be directly used for the simulation of this model. To facilitate further research and exploration of MBQC, we have designed and provided several core modules in the module that are required for simulation. +Measurement-Based Quantum Computation (MBQC) module is a simulation tool for universal quantum computing, developed based on Paddle Quantum. Unlike the conventional quantum circuit model, MBQC has its unique way of computing [1-8] and thus common circuit simulation tools cannot be directly used for the simulation of this model. To facilitate further research and exploration of MBQC, we have designed and provided several core modules that are required for simulation. On the one hand, as with common quantum circuit simulators, we can use the module to quickly build and train quantum neural networks, which have powerful application prospects in the field of artificial intelligence such as quantum chemistry, quantum natural language processing, and quantum finance. On the other hand, the MBQC module demonstrates its unique advantages in computational efficiency in some special cases, especially in quantum shallow circuit simulations, where the required computational resource can be significantly reduced, leading to a potential opportunity for larger-scale quantum algorithm simulations. -Our module is currently the first and the only systematic tool in the industry that supports the simulation of MBQC. We sincerely look forward to its learning and usage by quantum computing enthusiasts and researchers. Welcome to join us and discover the infinite possibilities of MBQC together! +Our module is the first and only systematic tool in the industry that supports the simulation of MBQC. We sincerely look forward to its learning and usage by quantum computing enthusiasts and researchers. Welcome to join us and discover the infinite possibilities of MBQC together! ## Features @@ -103,7 +103,9 @@ shortly. - Q: How is the MBQC physically implemented? - A: The difficulty in the physical implementation of MBQC is mainly the preparation of resource states. Unlike the superconducting techniques used in the quantum circuit model, the resource states are mostly prepared using linear optics or cold atoms, see e.g. [2,12,13] for the currently available techniques for the resource states preparation. + A: The difficulty in the physical implementation of MBQC is mainly the preparation of resource states. Unlike + the superconducting techniques used in the quantum circuit model, the resource states are mostly prepared using + linear optics or cold atoms, see e.g. [2,12,13] for the existing techniques of resource states preparation. ## References diff --git a/tutorial/mbqc/MBQC_CN.ipynb b/tutorial/mbqc/MBQC_CN.ipynb index e73df92..3de7ac3 100644 --- a/tutorial/mbqc/MBQC_CN.ipynb +++ b/tutorial/mbqc/MBQC_CN.ipynb @@ -16,18 +16,24 @@ "source": [ "## 概述\n", "\n", - "量子计算利用量子世界中特有的运行规律,为我们提供了一条全新的并且非常有前景的信息处理方式。其计算的本质是通过特定的方式将初始制备的量子态演化成我们预期的另一个量子态,然后在该量子态上做测量以获得计算结果。但是在不同模型下,量子态的演化方式各异。我们比较常用的**量子电路模型 (quantum circuit model)** [1,2] 是通过对量子态进行量子门操作来完成演化,该模型可以理解为经典计算模型的量子版本,并且被广泛地应用在量子计算领域中。**基于测量的量子计算 (measurement-based quantum computation, MBQC)** 是一种完全不同于量子电路模型的计算方式。\n", + "量子计算利用量子世界中特有的运行规律,为我们提供了一种全新的并且非常有前景的信息处理方式。其计算的本质是通过特定的方式将初始制备的量子态演化成我们预期的另一个量子态,然后在演化后的量子态上做测量以获得计算结果。但是在不同模型下,量子态的演化方式各异。比较常用的**量子电路模型 (quantum circuit model)** [1,2] 通过对量子态进行量子门操作来完成演化,该模型可以理解为经典计算模型的量子版本,被广泛地应用在量子计算领域中。而**基于测量的量子计算 (measurement-based quantum computation, MBQC)** 是一种完全不同于量子电路模型的计算方式。\n", "\n", - "顾名思义,MBQC 模型的计算过程是通过量子测量完成的。基于测量的量子计算主要有两种子模型:**隐形传态量子计算 (teleportation-based quantum computing, TQC)** 模型 [3-5] 和**单向量子计算机 (one-way quantum computer, 1WQC)** 模型 [6-9]。其中,前者需要用到多量子比特的联合测量,而后者只需要单比特测量即可。有趣的是,这两种子模型在被分别提出后,被证明是高度相关并且一一对应的 [10]。所以我们后面将不加声明地,**默认讨论的 MBQC 模型为 1WQC 模型。**\n", + "顾名思义,MBQC 模型的计算过程是通过量子测量完成的。基于测量的量子计算主要有两种子模型:**隐形传态量子计算 (teleportation-based quantum computing, TQC)** 模型 [3-5]\n", + "和**单向量子计算机 (one-way quantum computer, 1WQC)** 模型\n", + "[6-9]。其中,前者需要用到多量子比特的联合测量,而后者只需要单比特测量即可。有趣的是,这两种子模型在被分别提出后,被证明是高度相关并且一一对应的 [10]。所以我们此后将不加声明地,**默认讨论的 MBQC 模型为 1WQC 模型。**\n", "\n", - "与电路模型不同,MBQC 是量子计算特有的一种模型,没有经典计算的对应。该模型的核心思想在于对一个量子纠缠态的部分比特进行测量,未被测量的量子系统将会实现相应的演化,并且通过对测量方式的控制,我们可以实现任意需要的演化。MBQC 模型下的计算过程主要分为三个步骤:第一步,准备一个**资源态 (resource state)**,即一个高度纠缠的多体量子态,该量子态可以在计算开始之前准备好,且可以与具体计算任务无关;第二步,对准备好的资源态的每个比特依次做单比特测量,其中后续比特的测量方式可以根据已经被测量的比特的测量结果做出相应调整,即允许**适应性测量 (adaptive measurement)**;第三步,对测量后得到的量子态进行 **副产品纠正 (byproduct correction)**。最后,我们对所有比特的测量结果进行经典数据处理,即可得到需要的计算结果。\n", + "与电路模型不同,MBQC 是量子计算特有的一种模型,没有经典计算模型的对应。该模型的核心思想在于对一个量子纠缠态的部分比特进行测量,未被测量的量子系统将会实现相应的演化,并且通过对测量方式的控制,我们可以实现任意需要的演化。MBQC\n", + "模型下的计算过程主要分为三个步骤:第一步,准备一个**资源态 (resource state)**,即一个高度纠缠的多体量子态,该量子态可以在计算开始之前准备好,且可以与具体计算任务无关;第二步,对准备好的资源态的每个比特依次做单比特测量,其中后续比特的测量方式可以根据已经被测量的比特的测量结果做出相应调整,即允许**适应性测量 (adaptive measurement)**;第三步,对测量后得到的量子态进行 **副产品纠正 (byproduct correction)**。最后,我们对所有比特的测量结果进行经典数据处理,即可得到需要的计算结果。\n", "\n", "图 1 给出了一个 MBQC 模型下的算法示例。图中的网格代表了一种常用的量子资源态,(称为**团簇态,cluster state**,详见下文),网格上的每个节点都代表了一个量子比特,整个网格则代表了一个高度纠缠的量子态。我们依次对每个比特进行测量(节点中的 $X, Y, Z, XY$ 等表示对应的测量基),对测量后的量子态进行副产品纠正(消除 Pauli $X$ 算符和 Pauli $Z$ 算符),即可完成计算。\n", "\n", "![MBQC example](./figures/mbqc-fig-general_pattern.jpg)\n", "
图 1: 通过对网格上的每个比特进行测量来完成计算
\n", "\n", - "MBQC 模型的计算方式给我们带来了诸多好处。比如说,如果第一步制备的量子态噪声太大,我们则可以**在计算开始之前(即测量之前)** 丢弃这个态,并重新制备,以此保证计算结果的准确性;由于资源态可以与计算任务无关,因此可以应用在安全代理计算中 [11,12],保护计算的隐私;另外,单比特量子测量在实验上比量子门更容易实现,保真度更高,无适应性依赖关系的量子测量则可以同步进行,从而降低整个计算的深度,对量子系统相干时间要求更低。MBQC 模型实现上的技术难点主要在于第一步资源态的制备,该量子态高度纠缠,并且所需的比特数比通常电路模型的多很多。关于资源态制备的相关进展,有兴趣的读者可以参见 [13,14] 。表格 1 概括了 MBQC 模型与量子电路模型的优势和限制。\n", + "MBQC 模型的计算方式给我们带来了诸多好处。比如说,如果第一步制备的量子态噪声太大,我们则可以**在计算开始之前(即测量之前)**\n", + "丢弃这个态,并重新制备,以此保证计算结果的准确性;由于资源态可以与计算任务无关,因此可以应用在安全代理计算中 [11,\n", + "12],保护计算的隐私;另外,单比特量子测量在实验上比量子门更容易实现,保真度更高,并且无适应性依赖关系的量子测量可以同步进行,从而降低整个计算的深度,对量子系统相干时间要求更低。MBQC\n", + "模型实现上的技术难点主要在于第一步资源态的制备,该量子态高度纠缠,并且制备所需的比特数比通常电路模型的多很多。关于资源态制备的相关进展,有兴趣的读者可以参见 [13,14] 。表格 1 概括了 MBQC 模型与量子电路模型的优势和限制。\n", "\n", "| | 量子电路模型 | 基于测量的量子计算模型 |\n", "|:---: | :---: | :---: |\n", @@ -47,11 +53,13 @@ "source": [ "## 预备知识\n", "\n", - "在正式介绍 MBQC 模型及其我们的模块之前,我们首先回顾一下掌握 MBQC 模型需要用到的两个核心知识点。\n", + "在正式介绍 MBQC 模型以及我们的模块之前,我们首先回顾一下掌握 MBQC 模型需要用到的两个核心知识点。\n", "\n", "### 1. 图与图态\n", " \n", - "对于任意给定一个图 $G=(V, E)$,其中,$V$ 是点的集合,$E$ 是边的集合,我们可以定义一个量子态与之对应。具体的做法为,将图 $G$ 中每个节点对应一个加态 $|+\\rangle = (|0\\rangle + |1\\rangle) / \\sqrt{2}$,如果图中两个节点之间有边相连,则将对应节点上的加态之间作用控制 Z 门, $CZ = |0\\rangle\\langle0| \\otimes I + |1\\rangle\\langle1|\\otimes Z$。由此步骤生成的量子态称为图 $G$ 的**图态** (graph state),记为 $|G\\rangle$,具体数学表达式如下:\n", + "对于任意给定一个图 $G=(V, E)$,其中,$V$ 是点的集合,$E$ 是边的集合,我们可以定义一个量子态与之对应。具体的做法为,将图 $G$ 中每个节点对应一个加态 $|+\\rangle = (|0\\rangle +\n", + "|1\\rangle) / \\sqrt{2}$,如果图中两个节点之间有边相连,则将对应节点上的加态之间作用控制 Z 门, $CZ = |0\\rangle\\langle0| \\otimes I +\n", + "|1\\rangle\\langle1|\\otimes Z$。由此步骤生成的量子态称为图 $G$ 的**图态 (graph state)**,记为 $|G\\rangle$,具体数学表达式如下:\n", " \n", "$$\n", "|G\\rangle = \\prod_{(a,b) \\in E} CZ_{ab} \\left(\\bigotimes_{v \\in V}|+\\rangle_v\\right). \\tag{1}\n", @@ -95,7 +103,9 @@ "\n", "- **量子图态准备**:即准备一个多体纠缠态。一般地,我们给出图(点和边)的信息,初始化图中节点为加态,根据图中节点的连线方式作用控制 Z 门,便可以生成量子图态。以此对应关系,每当我们给定一个图的信息,我们便可以在其上定义对应的量子图态。此外,我们还可以根据需要选择性替换图态中某些节点上的加态为指定的输入态。\n", "- **单比特测量**:按照特定的测量方式对上一步准备好的量子图态进行单比特测量,测量角度可以根据已获得的测量结果进行动态调整。无适应性依赖关系的测量可以交换顺序或同时进行。\n", - "- **副产品纠正**:由于测量结果的随机性,未测量量子态的演化方式不能唯一确定,换句话说,未测量的量子态有可能会进行一些多余的演化。我们称这些多余的演化为副产品(byproduct)。因而算法的最后一步就是对副产品进行纠正,得到我们预期的演化结果。如果算法最后要求输出的不是一个量子态,而是对演化完的量子态继续进行测量并获取经典结果的话,副产品的影响只需要通过经典数据处理来修正即可。因此,MBQC 模型的主要步骤为前两步,第三步是否进行则是取决于我们想要获得的是量子态的输出还是测量结果的经典输出。\n", + "- **副产品纠正**:由于测量结果的随机性,未测量量子态的演化方式不能唯一确定,换句话说,未测量的量子态有可能会进行一些多余的演化。我们称这些多余的演化为**副产品(byproduct\n", + ")**。因而算法的最后一步就是对副产品进行纠正,得到我们预期的演化结果。如果算法最后要求输出的不是一个量子态,而是对演化完的量子态继续进行测量并获取经典结果的话,副产品的影响只需要通过经典数据处理来修正即可。因此,MBQC\n", + "模型的主要步骤为前两步,第三步是否进行则是取决于我们想要获得的是量子态的输出还是测量结果的经典输出。\n", "\n", "依次进行上述三个步骤,我们可以概括出 MBQC 模型“三步走”的流程,即:量子图态准备、单比特测量和副产品纠正。\n", "\n", diff --git a/tutorial/mbqc/MBQC_EN.ipynb b/tutorial/mbqc/MBQC_EN.ipynb index 31b3fb1..0f16af8 100644 --- a/tutorial/mbqc/MBQC_EN.ipynb +++ b/tutorial/mbqc/MBQC_EN.ipynb @@ -136,7 +136,7 @@ "
Table 2: Frequently used methods of the class MBQC and their functionalities
\n", "
\n", "\n", - "In the ``simulator`` module, we provide two simulation modes, \"graph\" and \"pattern\", corresponding to the two equivalent descriptions of the MBQC computation process respectively. If we set a graph, the whole computation needs to follow the \"three-step\" process. It is worth mentioning that we design a ** vertex dynamic classification algorithm** to simulate the MBQC computation process efficiently. Roughly speaking, we integrate the first two steps of the process, change the execution order of entanglement and measurement operations automatically to reduce the number of effective qubits involved in the computation and thereby improve the efficiency. The outline to use the simulation module is as follows:\n", + "In the ``simulator`` module, we provide two simulation modes, \"graph\" and \"pattern\", corresponding to the two equivalent descriptions of the MBQC computation process respectively. If we set a graph, the whole computation needs to follow the \"three-step\" process. It is worth mentioning that we design a **vertex dynamic classification algorithm** to simulate the MBQC computation process efficiently. Roughly speaking, we integrate the first two steps of the process, change the execution order of entanglement and measurement operations automatically to reduce the number of effective qubits involved in the computation and thereby improve the efficiency. The outline to use the simulation module is as follows:\n", "\n", "```python\n", "\"\"\"\n", diff --git a/tutorial/mbqc/PUBO_CN.ipynb b/tutorial/mbqc/PUBO_CN.ipynb index 4ba44ee..b3d8d70 100644 --- a/tutorial/mbqc/PUBO_CN.ipynb +++ b/tutorial/mbqc/PUBO_CN.ipynb @@ -2,15 +2,16 @@ "cells": [ { "cell_type": "markdown", + "metadata": {}, "source": [ "# MBQC 模型下求解多项式组合优化问题\n", "\n", " Copyright (c) 2021 Institute for Quantum Computing, Baidu Inc. All Rights Reserved. " - ], - "metadata": {} + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "在[基于测量的量子近似优化算法](QAOA_CN.ipynb)中,我们介绍了多项式无约束布尔优化问题(polynomial unconstrained boolean optimization problem, PUBO),并提出了**基于测量的量子近似优化算法(MB-QAOA)** 对该类问题的求解方式,感兴趣的读者可以参阅前面的内容。这里我们给出两个示例作为 MB-QAOA 的实战演示:一个具体的 PUBO 问题和一个最大割问题。\n", "\n", @@ -29,12 +30,13 @@ "$$\n", "\n", "代码实现上,我们规定输入多项式的标准形式为一个列表,列表中的第一个元素为多项式的最大变量数,列表的第二个元素为一个字典,字典的键为每个单项式涉及的变量(常数则为 ‘cons’),变量之间用逗号隔开,值为该单项式的系数。比如,我们希望输入一个三元多项式 $x_1 + x_2 - x_3 + x_1 x_2 - x_1 x_2 x_3 + 0.5$,应输入如下代码:" - ], - "metadata": {} + ] }, { "cell_type": "code", "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "# 变量数\n", "var_num = 3\n", @@ -42,12 +44,11 @@ "poly_dict = {'x_1': 1, 'x_2': 1, 'x_3': -1, 'x_1,x_2': 1, 'x_1,x_2,x_3': -1, 'cons':0.5}\n", "# 构造符合约定的多项式\n", "polynomial = [var_num, poly_dict]" - ], - "outputs": [], - "metadata": {} + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "**注意:** 由于我们考虑的变量为布尔值,所以每个单项式中变量指数最大为 1,即输入的多项式字典的键中,每个变量最多出现一次。例如:{'x_1,x_1,x_2': 1} 为不符合规范的输入。我们同样约定自变量的下角标从 \"1\" 开始,与数学习惯相一致。并且为了统一输入规范,自变量需要连续编号,不能出现输入多项式为 $x_1x_2 + x_6$ 的情况,应该改为 $x_1x_2 + x_3$,否则我们会以报错的形式提醒输入不符合规范。\n", "\n", @@ -61,19 +62,20 @@ "from paddle_quantum.mbqc.QAOA.pubo import random_poly\n", "```\n", "**注意:** 随机生成的多项式并不一定是合法的!因此我们需要在计算之前检查多项式的合法性。" - ], - "metadata": {} + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "### 求解 PUBO 问题的代码实现" - ], - "metadata": {} + ] }, { "cell_type": "code", "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "# 引入记时模块\n", "from time import perf_counter\n", @@ -85,20 +87,20 @@ "from paddle_quantum.mbqc.QAOA.pubo import dict_to_symbol, is_poly_valid, brute_force_search\n", "# 引入 qaoa 模块 \n", "from paddle_quantum.mbqc.QAOA.qaoa import MBQC_QAOA_Net, get_solution_string" - ], - "outputs": [], - "metadata": {} + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "利用 MB-QAOA 算法,我们可以定义 PUBO 主函数 ``mbqc_pubo``,输入目标函数和 QAOA 算法深度,最终返回最优解对应的比特串。在主函数中,**最核心的是 MBQC_QAOA_Net 类**,其集成了 MB-QAOA 以及优化网络,感兴趣的读者可以返回到 [基于测量的量子近似优化算法](QAOA_CN.ipynb) 中查看,这里我们直接调用。" - ], - "metadata": {} + ] }, { "cell_type": "code", "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "# 定义 MBQC 模型求解 PUBO 问题的主函数\n", "def mbqc_pubo(OBJ_POLY, DEPTH, SEED, LR, ITR, EPOCH, SHOTS=1024):\n", @@ -151,33 +153,35 @@ " # 返回最优解和最优值\n", " opt = [solution_str, value]\n", " return opt" - ], - "outputs": [], - "metadata": {} + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "为了检验训练结果的正确性,我们在 `pubo` 中定义了 `brute_force_search` 函数,用遍历的方法在解空间里暴力搜索 PUBO 问题的解,方便与 MBQC 模型训练得到的解进行对比。\n", "\n", "```python\n", "from paddle_quantum.mbqc.QAOA.pubo import brute_force_search\n", "```" - ], - "metadata": {} + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "### Main 函数\n", "\n", "主函数定义后,我们就可以输入参数运行啦!" - ], - "metadata": {} + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "tags": [] + }, + "outputs": [], "source": [ "# 定义主函数\n", "def main():\n", @@ -221,14 +225,13 @@ "\n", "if __name__ == '__main__':\n", " main()" - ], - "outputs": [], - "metadata": { - "tags": [] - } + ] }, { "cell_type": "markdown", + "metadata": { + "tags": [] + }, "source": [ "## 示例:最大割问题\n", "\n", @@ -239,37 +242,35 @@ "在图论中,一个图由 $G = (V, E)$ 表示,其中 $V$ 为图的点集合,$E$ 为边集合。例如一个正方形就可以由 $G = (V,E)$ 其中 $V = [1,2,3,4]$, $E = [(1,2),(2,3),(3,4),(1,4)]$ 来表示。\n", "\n", "代码上,我们可以用 `maxcut` 中的 `plot_graph` 画出给定的图。" - ], - "metadata": { - "tags": [] - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "tags": [] + }, + "outputs": [], "source": [ "from paddle_quantum.mbqc.QAOA.maxcut import plot_graph\n", "V = [1,2,3,4]\n", "E = [(1,2),(2,3),(3,4),(1,4)]\n", "G = [V, E] \n", "plot_graph(G,\"A square\")" - ], - "outputs": [], - "metadata": { - "tags": [] - } + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "一个图的割是指将该图的顶点集 $V$ 分割成两个互不相交的子集合 $S_0$ 和 $S_1$ 的一种划分。如果图中边的两个顶点被划分到不同集合中,那么记录得一分,总得分则定义为这个割的大小。最大割问题就是要找到一个割使得该割的大小最大。\n", "\n", "比如对应如上所述正方形图 $G$, 其中一个最大割就是将点 $1$ 和 $3$ 分为同一个集合 $S_0$ 中,点 $2$ 和 $4$ 分到另一个集合 $S_1$ 中。 " - ], - "metadata": {} + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "### 转化为 PUBO 问题\n", "\n", @@ -292,12 +293,13 @@ "$$\n", "\n", "在 `maxcut` 当中,我们定义了 `graph_to_poly` 函数,可以输入待分割的图,返回等价的 PUBO 问题的目标多项式。" - ], - "metadata": {} + ] }, { "cell_type": "code", "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "# 引入 maxcut 模块\n", "from paddle_quantum.mbqc.QAOA.maxcut import graph_to_poly\n", @@ -311,22 +313,22 @@ "# 将图转化为对应 PUBO 问题的目标多项式\n", "poly = graph_to_poly(G)\n", "print(\"与图等价的目标多项式为:\\n\", poly)" - ], - "outputs": [], - "metadata": {} + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "### 求解最大割问题的代码实现\n", "\n", "得到等价的目标多项式之后,我们便可以仿照 PUBO 的流程,把最大割问题作为 PUBO 问题来求解。具体代码如下:" - ], - "metadata": {} + ] }, { "cell_type": "code", "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "# 引入符号运算模块\n", "from sympy import symbols\n", @@ -336,20 +338,20 @@ "from paddle_quantum.mbqc.QAOA.qaoa import MBQC_QAOA_Net, get_solution_string\n", "# 引入 maxcut 模块\n", "from paddle_quantum.mbqc.QAOA. maxcut import plot_graph, graph_to_poly, plot_solution" - ], - "outputs": [], - "metadata": {} + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "利用 MB-QAOA 算法,我们可以定义 MaxCut 主函数,将图输入到 MB-QAOA 算法中,最终返回求得的解并画出割的方式。" - ], - "metadata": {} + ] }, { "cell_type": "code", "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "# 定义 MaxCut 主函数\n", "def mbqc_maxcut(GRAPH, DEPTH, SEED, LR, ITR, EPOCH, SHOTS=1024):\n", @@ -405,22 +407,24 @@ "\n", " # 返回最优解和对应的最优值\n", " return mbqc_opt" - ], - "outputs": [], - "metadata": {} + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "### Main 函数\n", "\n", "主函数定义后,我们就可以输入参数运行啦!" - ], - "metadata": {} + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "tags": [] + }, + "outputs": [], "source": [ "def main():\n", " # 以正方形的 MaxCut 问题为例,输入节点和边信息\n", @@ -445,33 +449,27 @@ "\n", "if __name__ == '__main__':\n", " main()" - ], - "outputs": [], - "metadata": { - "tags": [] - } + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ - "至此,我们完成了本教程的两个完整示例。MB-QAOA 算法实现预示着 MBQC 模型在量子机器学习领域强大的潜力。很显然,MBQC 模型所能够处理的算法不仅有 QAOA,我们非常期待 MBQC 这种非同寻常的计算方式能在某些特殊情境下展现出无与伦比的优势!\n", - "\n", - "接下来的一个教程将会给出我们在 MBQC 模型优势上的一个探索,一起去学习吧!" - ], - "metadata": {} + "至此,我们完成了本教程的两个完整示例。MB-QAOA 算法实现预示着 MBQC 模型在量子机器学习领域强大的潜力。很显然,MBQC 模型所能够处理的算法不仅有 QAOA,我们非常期待 MBQC 这种非同寻常的计算方式能在某些特殊情境下展现出无与伦比的优势!" + ] }, { "cell_type": "markdown", + "metadata": { + "tags": [] + }, "source": [ "---\n", "\n", "## 参考文献\n", "\n", "[1] Farhi, Edward, et al. \"A quantum approximate optimization algorithm.\" [arXiv preprint arXiv:1411.4028 (2014).](https://arxiv.org/abs/1411.4028)" - ], - "metadata": { - "tags": [] - } + ] } ], "metadata": { @@ -537,4 +535,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} \ No newline at end of file +} diff --git a/tutorial/mbqc/PUBO_EN.ipynb b/tutorial/mbqc/PUBO_EN.ipynb index 24e629d..27324ef 100644 --- a/tutorial/mbqc/PUBO_EN.ipynb +++ b/tutorial/mbqc/PUBO_EN.ipynb @@ -2,15 +2,16 @@ "cells": [ { "cell_type": "markdown", + "metadata": {}, "source": [ "# Polynomial Unconstrained Boolean Optimization Problem in MBQC\n", "\n", " Copyright (c) 2021 Institute for Quantum Computing, Baidu Inc. All Rights Reserved. " - ], - "metadata": {} + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "In the tutorial [Measurement-based Quantum Approximate Optimization Algorithm](QAOA_EN.ipynb), we give a brief introduction to the **polynomial unconstrained boolean optimization (PUBO) problem** and propose the **measurement-based quantum approximate optimization algorithm (MB-QAOA)** to solve it. For interested readers, please refer to the previous tutorial for more information. In this tutorial, we will showcase two specific examples as practical demonstrations of MB-QAOA. The first one is a concrete PUBO problem, while the second one is a **maximum cut (MaxCut)** problem.\n", "\n", @@ -29,12 +30,13 @@ "$$\n", "\n", "For code implementation, we require that a standard polynomial is input as a list whose first item is the number of variables and the second item is a dictionary of all the monomials ('cons' stands for the constant item). In the dictionary, we make monomial variables split with ',' as keys and the corresponding coefficients as values. For example, suppose we want to input a polynomial $x_1 + x_2 - x_3 + x_1 x_2 - x_1 x_2 x_3 + 0.5$, we need to code as follows: " - ], - "metadata": {} + ] }, { "cell_type": "code", "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "# Number of variables\n", "var_num = 3\n", @@ -42,12 +44,11 @@ "poly_dict = {'x_1': 1, 'x_2': 1, 'x_3': -1, 'x_1,x_2': 1, 'x_1,x_2,x_3': -1, 'cons':0.5}\n", "# Construct the list required\n", "polynomial = [var_num, poly_dict]" - ], - "outputs": [], - "metadata": {} + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "**Note:** As the variables are boolean, the power of variables in a monomial should be no greater than 1. That is, each variable should appear at most once in a key of the dictionary. For instance, it is not a valid to input something like {'x_1,x_1,x_2': 1}. Also, we set variable subscripts by consecutive numbers starting from '1' to be consistent with math conventions. A polynomial like $x_1 x_2 + x_6$ will raise an error automatically. A valid polynomial should be like $x_1x_2 + x_3$. \n", "\n", @@ -62,19 +63,20 @@ "from paddle_quantum.mbqc.QAOA.pubo import random_poly\n", "```\n", "**Note:** The randomly generated polynomial is not always valid and we still need to check the validity before calculation." - ], - "metadata": {} + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "### Code implementation to slove PUBO problem" - ], - "metadata": {} + ] }, { "cell_type": "code", "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "# Import time module\n", "from time import perf_counter\n", @@ -86,20 +88,20 @@ "from paddle_quantum.mbqc.QAOA.pubo import dict_to_symbol,is_poly_valid,brute_force_search\n", "# Import qaoa module\n", "from paddle_quantum.mbqc.QAOA.qaoa import MBQC_QAOA_Net, get_solution_string" - ], - "outputs": [], - "metadata": {} + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "We define a function ``mbqc_pubo`` which takes in the objective polynomial and returns an optimal solution. **The core part of ``mbqc_pubo`` is the ``MBQC_QAOA_Net`` class**, which integrates MB-QAOA and the optimization net. Please refer to [Measurement-Based Quantum Approximate Optimization Algorithm](QAOA_EN.ipynb) for more details. Here we directly call the function." - ], - "metadata": {} + ] }, { "cell_type": "code", "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "# Define the PUBO main function\n", "def mbqc_pubo(OBJ_POLY, DEPTH, SEED, LR, ITR, EPOCH, SHOTS=1024):\n", @@ -153,33 +155,35 @@ " opt = [solution_str, value]\n", "\n", " return opt" - ], - "outputs": [], - "metadata": {} + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "To check the correctness of the training result, we provide a `brute_force_search` function in `pubo` that finds a global optimal value by brute force search. We can compare the training result with the optimal one.\n", "\n", "```python\n", "from paddle_quantum.mbqc.QAOA.pubo import brute_force_search\n", "```" - ], - "metadata": {} + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "### Main function\n", "\n", "After defining the main function, let's input the parameters to run the code!" - ], - "metadata": {} + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "tags": [] + }, + "outputs": [], "source": [ "# Define the main function\n", "def main():\n", @@ -223,14 +227,13 @@ "\n", "if __name__ == '__main__':\n", " main()" - ], - "outputs": [], - "metadata": { - "tags": [] - } + ] }, { "cell_type": "markdown", + "metadata": { + "tags": [] + }, "source": [ "## Example: MaxCut\n", "\n", @@ -241,37 +244,35 @@ "In graph theory, a graph is represented by $G = (V, E)$, where $V$ is a set of vertices and $E$ is a set of edges. For example, a square can be characterized by the graph $G = (V,E)$ with $V = [1,2,3,4]$ and $E = [(1,2),(2,3),(3,4),(1,4)]$.\n", "\n", "For code implementation, we can use the `plot_graph` function in `maxcut` to plot a graph." - ], - "metadata": { - "tags": [] - } + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "tags": [] + }, + "outputs": [], "source": [ "from paddle_quantum.mbqc.QAOA.maxcut import plot_graph\n", "V = [1,2,3,4]\n", "E = [(1,2),(2,3),(3,4),(1,4)]\n", "G = [V, E] \n", "plot_graph(G,\"A square\")" - ], - "outputs": [], - "metadata": { - "tags": [] - } + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "A cut in the graph is a partition separating the vertices set $V$ into two complementary subsets $S_0$ and $S_1$. If two vertices of an edge in the graph are separated into different subsets, we score a goal. The size of a cut is defined by the total scores that we get. Then the MaxCut problem is to find a cut of graph with maximal size. \n", "\n", "As for the above square $G$, one of the optimal solutions to the MaxCut problem is to put $1$ and $3$ into subset $S_0$ and put $2$ and $4$ into subset $S_1$. " - ], - "metadata": {} + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "### Transformation to a PUBO problem\n", "\n", @@ -294,12 +295,13 @@ "$$\n", "\n", "We provide a function `graph_to_poly` in `maxcut` which takes in the graph to be cut and returns the equivalent objective polynomial in PUBO." - ], - "metadata": {} + ] }, { "cell_type": "code", "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "# Import maxcut module\n", "from paddle_quantum.mbqc.QAOA.maxcut import graph_to_poly\n", @@ -313,22 +315,22 @@ "# Transform the graph to the equivalent polynomial\n", "poly = graph_to_poly(G)\n", "print(\"The equivalent objective polynomial is:\\n\", poly)" - ], - "outputs": [], - "metadata": {} + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "### Code implementation to solve MaxCut problem\n", "\n", "Once obtaining the objective polynomial, we can follow the same process as the previous example and solve the MaxCut problem as a special case of PUBO. The complete code implementation is as follows:" - ], - "metadata": {} + ] }, { "cell_type": "code", "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "# Import symbol calculaion module\n", "from sympy import symbols\n", @@ -338,20 +340,20 @@ "from paddle_quantum.mbqc.QAOA.qaoa import MBQC_QAOA_Net, get_solution_string\n", "# Import maxcut module\n", "from paddle_quantum.mbqc.QAOA.maxcut import plot_graph, graph_to_poly, plot_solution" - ], - "outputs": [], - "metadata": {} + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "We define the main function for MaxCut that takes in the graph to be cut and returns the optimal training results." - ], - "metadata": {} + ] }, { "cell_type": "code", "execution_count": null, + "metadata": {}, + "outputs": [], "source": [ "# Define the MaxCut main function\n", "def mbqc_maxcut(GRAPH, DEPTH, SEED, LR, ITR, EPOCH, SHOTS=1024):\n", @@ -407,22 +409,24 @@ " mbqc_opt = [mbqc_solution, mbqc_value]\n", "\n", " return mbqc_opt" - ], - "outputs": [], - "metadata": {} + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "### Main function\n", "\n", "After defining the main function, let's input the parameters to run the code!" - ], - "metadata": {} + ] }, { "cell_type": "code", "execution_count": null, + "metadata": { + "tags": [] + }, + "outputs": [], "source": [ "def main():\n", " # A graph to be cut\n", @@ -447,34 +451,28 @@ "\n", "if __name__ == '__main__':\n", " main()" - ], - "outputs": [], - "metadata": { - "tags": [] - } + ] }, { "cell_type": "markdown", + "metadata": {}, "source": [ "Now, we have completed the demonstration of two examples. The implementation of MB-QAOA indicates a great potential of MBQC in the field of quantum machine learning. Apparently, MBQC model can realize quantities of algorithms far beyond QAOA. We therefore are \n", - "looking forward to exploring more on this and to show some unparalleled advantages in practice. \n", - "\n", - "As a matter of fact, we have found an interesting application of MBQC in simulating a special class of quantum circuits! So, let's continue our exploration to the next tutorial together." - ], - "metadata": {} + "looking forward to exploring more on this and to show some unparalleled advantages in practice." + ] }, { "cell_type": "markdown", + "metadata": { + "tags": [] + }, "source": [ "---\n", "\n", "## References\n", "\n", "[1] Farhi, Edward, et al. \"A quantum approximate optimization algorithm.\" [arXiv preprint arXiv:1411.4028 (2014).](https://arxiv.org/abs/1411.4028)" - ], - "metadata": { - "tags": [] - } + ] } ], "metadata": { @@ -540,4 +538,4 @@ }, "nbformat": 4, "nbformat_minor": 4 -} \ No newline at end of file +} diff --git a/tutorial/mbqc/figures/mbqc-fig-qaoa_graph_1.jpg b/tutorial/mbqc/figures/mbqc-fig-qaoa_graph_1.jpg index 79f06222becaaeec7a3137b83faf00439651c574..78e8823a1b845a5d8a50e93c6156ffe813e77d70 100644 GIT binary patch literal 66015 zcmeFZ2UJtf=H1_A`q6OaF^%2ea;>C{rA52zBBF^@9cYs-%?k|%9`_=eg5X!p4gs+ z>^^61We(xu;)1k*FUa;3WB374GfPRH#&3H z%-q7#>YV*$2S=wX&Mw~9e6IWY`3Kw%4GWJzM&60N9~YmHn3SCP@KIKF&f_P!Ma3^l zUY3@XSG=jM!`C;web?C5-qG3B{qfW1q2ZCyvGIvXBAGJxZT|bh;?gqx*V_69V-xtj z^@lDl2=~9S>|Y7{ALtST>Ds}=!_C9@hc2!i5#Zt$O6K{*ADIr;7*?;^qQ3k6R1^gK#)% zMahu=TK_~m=(ojeL)@i)&u>F`k8eX_?xRe=V<5UGUjEAlx0PaPnpH;K^k{tn<~^d z)Q^U~)64VO(6BD2a;A$tmIkILNG>=cPa(7jUccF0kOt#{UAIlzhCngCBoUMveHzz} zi!Bgu)_@0?8q*!$`@fJA-HAN94e4~TU(7a@9tz{8cvcGXD~i?QpHIahugP@ECvWAf zq|xCWaCw4H|K#eNMM~iMl&vJ{GGI*G?4H?=A0%g!&NYmgIFQo}oktD~7v>|9p4X-? z|1@hzcmAHCC?IRGKNlcz1h~skI_!MdY&J>3RG0+BTF|;k6AhG{Hf%hR_sfb7%c9&L z&bwhNyksO2do4v}tfbslb%I)mZ%DVA&qWTXUtbs?%x1&IQT%hk6BZ1oK@)XKo~qjz zN{ngBg3>lq^`2_P5Od{tTj{1_k|Q{_WkTQbf`?_Ng_n(VRH0!go}9=MOevxU}H)y z(AsQtC8&<-Wcwk_r|!e>>H(xSHOL#2HJi(aoOhfp-tEV&%8@AG#SD

NpL-D{22 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 literal 122653 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�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 M{>r}v{pHPn0QnnD2><{9 diff --git a/tutorial/quantum_simulation/VQE_CN.ipynb b/tutorial/quantum_simulation/VQE_CN.ipynb index 9748f09..30b856c 100644 --- a/tutorial/quantum_simulation/VQE_CN.ipynb +++ b/tutorial/quantum_simulation/VQE_CN.ipynb @@ -22,7 +22,7 @@ "\\tag{1}\n", "$$\n", "\n", - "其中 $E_0$ 表示该系统的基态能量。从数值分析的角度来看,该问题可以被理解为求解一个**离散化**哈密顿量 $H$(厄米矩阵)的最小本征值 $\\lambda_{\\min}$ 和其对应的本征向量 $|\\Psi_0\\rangle$。具体的离散化过程是如何通过建立模型实现的,这属于量子化学的专业领域范畴。精确地解释该过程需要很长的篇幅,这超过了本教程所能处理的范围。我们会在下一节背景知识模块粗略的介绍一下相关知识,感兴趣的读者可以参考 `量子化学: 基本原理和从头计算法`系列丛书 [5]。通常来说,为了能在量子设备上处理量子化学问题,哈密顿量 $H$ 会被表示成为泡利算符 $\\{X,Y,Z\\}$ 的加权求和形式。\n", + "其中 $E_0$ 表示该系统的基态能量。从数值分析的角度来看,该问题可以被理解为求解一个**离散化**哈密顿量 $H$(埃尔米特矩阵)的最小本征值 $\\lambda_{\\min}$ 和其对应的本征向量 $|\\Psi_0\\rangle$。具体的离散化过程是如何通过建立模型实现的,这属于量子化学的专业领域范畴。精确地解释该过程需要很长的篇幅,这超过了本教程所能处理的范围。我们会在下一节背景知识模块粗略的介绍一下相关知识,感兴趣的读者可以参考 `量子化学: 基本原理和从头计算法`系列丛书 [5]。通常来说,为了能在量子设备上处理量子化学问题,哈密顿量 $H$ 会被表示成为泡利算符 $\\{X,Y,Z\\}$ 的加权求和形式。\n", "\n", "$$\n", "H = \\sum_k c_k ~ \\bigg( \\bigotimes_{j=0}^{M-1} \\sigma_j^{(k)} \\bigg),\n", @@ -351,23 +351,23 @@ "name": "stdout", "output_type": "stream", "text": [ - "iter: 20 loss: -0.8409\n", - "iter: 20 Ground state energy: -0.8409 Ha\n", - "iter: 40 loss: -1.1311\n", - "iter: 40 Ground state energy: -1.1311 Ha\n", - "iter: 60 loss: -1.1351\n", - "iter: 60 Ground state energy: -1.1351 Ha\n", + "iter: 20 loss: -1.0621\n", + "iter: 20 Ground state energy: -1.0621 Ha\n", + "iter: 40 loss: -1.1305\n", + "iter: 40 Ground state energy: -1.1305 Ha\n", + "iter: 60 loss: -1.1358\n", + "iter: 60 Ground state energy: -1.1358 Ha\n", "iter: 80 loss: -1.1370\n", "iter: 80 Ground state energy: -1.1370 Ha\n", "\n", "训练后的电路:\n", - "--Ry(1.578)----*--------------x----Ry(4.696)----*--------------x----Ry(9.430)--\n", + "--Ry(4.702)----*--------------x----Ry(4.759)----*--------------x----Ry(0.001)--\n", " | | | | \n", - "--Ry(3.986)----x----*---------|----Ry(1.331)----x----*---------|----Ry(4.274)--\n", + "--Ry(-1.56)----x----*---------|----Ry(4.698)----x----*---------|----Ry(1.607)--\n", " | | | | \n", - "--Ry(3.601)---------x----*----|----Ry(1.547)---------x----*----|----Ry(6.260)--\n", + "--Ry(3.170)---------x----*----|----Ry(1.789)---------x----*----|----Ry(4.817)--\n", " | | | | \n", - "--Ry(1.585)--------------x----*----Ry(4.713)--------------x----*----Ry(2.416)--\n", + "--Ry(6.365)--------------x----*----Ry(1.562)--------------x----*----Ry(3.178)--\n", " \n" ] } @@ -433,7 +433,7 @@ "outputs": [ { "data": { - "image/png": "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", + "image/png": "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ddLT08nJyWH37t3s3r2bYcOGAfDLX/6SDz74wO/zU1NTmTBhAmPHji1brrW83NxcLr30UvLy8jh06FCF603Mnz+f1T6Dcvfs2cO+ffto1qxZ2X1z584lKyuL6dOnA1BQUMD69euJiYlh0KBBdO7cGYC0tDRycnLKFnwaPXo04EokCQkJZce79FJXsbJ792727t3LkCFDALjiiiv417/+BcD48eO57777ePTRR3nllVdqZZnWUCWK9qqa593+EWgfaGcRGQTEAN9V8PivgV8DdOnSpRbD9IweDU89Bd98Az171v7xjQmCBx88cjs6+ujtRo2O3m7a9OjtFi2O3m51TOXwsfr06VP2xQ/w7LPPsmPHDjIyMnzO07TS40RHR1NSUlK27buoUKNGjcpuR0VFlVU9VeSqq67i66+/pmPHjsyZM4fZs2fzySefMGvWLB544AFWrlx5zHNuuukmbrvtNi688EIWLVrElClT/B67pKSEL7744pgFlXypKk8//TRnn332UfcvWrTomL/l8OHDqCp9+vThP//5j9/jVeX1a9KkCaNHj2bmzJm88847Aee3qqqgtVGIyHwRWeXnctTk7V6RRwMcJwF4E7hKVUv87aOqL6pqhqpmtG3btlb/DgBOP939Z1mjtjEVGjFiBIWFhTz33HNl9/30008V7j906FCmTp0KuC/ONm3a0KJFCxITE1m2bBkAy5YtY2Mlg17j4uKIi4srW0+i9JgAr776KsuXL2fOnDmUlJSwefNmzjzzTB5++GEKCgrYt28fzZs3Z+/evWXPKSgooFOnTgC8/vrrZfeX3++ss87i6aefLtv2bRcodfbZZ/Pcc89RVFQEwDfffMP+/fsr/Ft69uzJ9u3byxJFUVER2dnZfv/m5s2b8+WXXwIwbdq0ox6/5ppruPnmmxk4cCCtqpLlKxG0RKGqo1Q1xc9lJrDVSwCliWCbv2OISAtgNvC/qvpFsGKtVOPGLll88olNPW5MBUSE9957j48//pikpCQGDRrExIkTefjhh/3uP2XKFJYuXUpqaiqTJ08u+1K++OKLyc/Pp0+fPjzzzDNVmmL81Vdf5YYbbiAtLa2sUbi84uJifvGLX9C3b1/69+/PzTffTFxcHBdccAEzZswoa6SeMmUK48ePJz09nTZt2pQ9v/x+Tz31FJmZmaSmptK7d2+ef/75Y855zTXX0Lt3bwYMGEBKSgq/+c1vAvZYiomJYfr06fz2t7+lX79+pKWlVdjT6uWXX+baa68lLS2N/fv307Jly7LH0tPTadGiBVdddVWlr11VSEUvajCJyKPATlV9SEQmA61V9a5y+8QAHwCzVPWJqh47IyNDMzMzazVeANavh9tug8svhyuuqP3jG3Oc1qxZQ6/SpXxNvefbHvLQQw+Rl5fHk08+CcCWLVsYPnw4a9eupUGDY8sD/j4rIrJUVTOO2ZnQjaN4CBgtIuuBUd42IpIhIn/19vl/wDBgkogs9y5pIYkWoHt3V6qYMQPy80MWhjHGAMyePZu0tDRSUlJYvHgxv/vd7wB44403GDx4MA888IDfJFETISlRBFPQShQAeXlw/fWucfuGG4JzDmNqyEoUpqoipUQRmRIS4LzzYO5c2Lw51NEYc4z69sPP1L6afEYsUVTXpZe6HlA+vSGMCQexsbHs3LnTkoWpkKqyc+fOgF16/bE1s6urZUu45BJ4803IzoY+fUIdkTEAdO7cmdzcXLZv3x7qUEwYi42NLRvoV1WWKGpizBiYPRtefRV85qQxJpQaNmxY4ShiY46HVT3VRKNGcNFFsG6da+A2xph6zBJFTQ0c6K5trQpjTD1niaKmOnZ0vaC8qQaMMaa+skRxPNLTYcUKOHQo1JEYY0zQWKI4HunpLkn4mbTLGGPqC0sUx6NvX2jY0NopjDH1miWK49GoEaSkWKIwxtRrliiOV3o65ObCNr8zpRtjTMSzRHG8SlfvCtZEhMYYE2KWKI5Xx47Qrp11kzXG1FuWKI6XiCtVrFgB3nKHxhhTn1iiqA3p6VBYCKtXhzoSY4ypdZYoakNqKkRHW+8nY0y9ZImiNsTGum6yX38d6kiMMabWWaKoLX36wKZNsH9/qCMxxphaZYmitiQngyqsXx/qSIwxplZZoqgtPXq4HlBr14Y6EmOMqVWWKGpLkybQpYslCmNMvWOJojYlJ7tEYYvbG2PqEUsUtSk52TVm5+aGOhJjjKk1lihqU3Kyu7bqJ2NMPWKJojZ16gTNmsGaNaGOxBhjao0litokAj17WonCGFOvWKKobcnJsHmzDbwzxtQbIUkUItJaROaJyHrvulWAfVuISK6IPFOXMdZYaTvFunWhjcMYY2pJqEoUk4EFqtodWOBtV+Q+4JM6iao22MA7Y0w9E6pEMQZ43bv9OjDW304ikg60B+bWTVi1oEkTOPlkSxTGmHojVImivarmebd/xCWDo4hIA+Ax4I7KDiYivxaRTBHJ3L59e+1GWhPJyfDNNzbwzhhTLwQtUYjIfBFZ5ecyxnc/VVXA3zfqfwFzVLXS0Wuq+qKqZqhqRtu2bWvpLzgOpQPvNm8OdSTGGHPcooN1YFUdVdFjIrJVRBJUNU9EEoBtfnYbAgwVkf8CmgExIrJPVQO1Z4QH34F3XbqENhZjjDlOoap6eh+Y6N2eCMwsv4OqTlDVLqqaiKt+eiMikgRAx47QvLm1Uxhj6oVQJYqHgNEish4Y5W0jIhki8tcQxVR7RCAx0aqejDH1QtCqngJR1Z3ASD/3ZwLX+Ln/NeC1oAdWmxIS4MsvQx2FMcYcNxuZHSwJCVBQAAcOhDoSY4w5LpYogiUhwV3n5QXezxhjwpwlimCxRGGMqScsUQRLhw7u2hKFMSbCWaIIliZNoGVLSxTGmIgXsNeTiMQCPweGAh2BA8AqYLaqZgc/vAjXoQP8+GOoozDGmONSYaIQkXtxSWIR8CVu9HQs0AN4yEsit6tqVh3EGZk6doRVq0IdhTHGHJdAJYqvVPX3FTz2ZxFpB9j8FIF06ACLFkFRETRsGOpojDGmRipso1DV2YGeqKrbvAFypiIJCW4G2a1bQx2JMcbUWKUjs0WkLfBboDeu6gkAVR0RxLjqB98usp07hzYWY4ypoar0epoKrAGSgHuBHGBJEGOqP2wshTGmHqhKoohX1ZeBIlX9WFWvBqw0URUtWkDjxtbzyRgT0aoyKWCRd50nIucDW4DWwQupHhFxpYotW0IdiTHG1FhVEsX9ItISuB14GmgB/HdQo6pPEhIgJyfUURhjTI1VmihU9V/ezQLgzOCGUw+VTjdeUgINbCC8MSbyBBpw9zT+17IGQFVvDkpE9U1CAhw+DDt2QLt2oY7GGGOqLVCJwneMxL1ARYPvTCC+kwNaojDGRKAKE4Wqvl56W0Ru9d021dCxo7vOy4N+/UIbizHG1EBVK80rrIIylYiPd9N32FgKY0yEstbVYBOB9u0tURhjIlagxuy9HClJNBGRPaUPAaqqLYIdXL2RkGCJwhgTsQK1UTSvy0DqtYQEWLnSTRAoEupojDGmWiqsehKRZpU9uSr7GFyiKCyE3btDHYkxxlRboDaKmSLymIgME5GmpXeKSFcR+ZWIfAicE/wQ64HSyQFtzidjTAQKtB7FSGAB8BsgW0QKRGQn8BbQAZioqtPrJswIV5oobM4nY0wECjiFh6rOAebUUSz1V7t2rm3CShTGmAhk3WPrQnQ0tG7tpvEwxpgIY4mirsTHW6IwxkSkkCQKEWktIvNEZL133aqC/bqIyFwRWSMiq0UksY5DrT3x8bBzZ6ijMMaYaqs0UXg9n/rU8nknAwtUtTuuwXxyBfu9ATyqqr2AQcC2Wo6j7sTHQ35+qKMwxphqq0qJYg3wooh8KSLXeYsYHa8xQOkkg68DY8vvICK9gWhVnQegqvtU9adaOHdoxMfD/v1uPIUxxkSQShOFqv5VVX8GXAkkAlki8jcROZ5FjNqraumcFj8C7f3s0wPYLSLvisjXIvKoiET5O5iI/FpEMkUkc/v27ccRVhDFx7trq34yxkSYKrVReF/Qyd5lB7ACuE1EpgV4znwRWeXnMsZ3P1VV/M9OGw0MBe4ABgJdgUn+zqWqL6pqhqpmtG3btip/Ut2zRGGMiVCVLoUqIo8DF+DaEv6oql95Dz0sIusqep6qjgpwzK0ikqCqeSKSgP+2h1xguapu8J7zHnAq8HJlMYclSxTGmAhVlRJFFtBPVX/jkyRKDarhed8HJnq3JwIz/eyzBIgTkdIiwghgdQ3PF3qWKIwxEarSEgWumqmnHD3raQGwSVULanjeh4B3RORXwCbg/wGISAZwnapeo6rFInIHsEDcyZcCL9XwfKEXGwtNmljPJ2NMxKlKovgLMABXshAgBcgGWorI9ao6t7onVdWdwEg/92cC1/hszwNSq3v8sGVjKYwxEagqVU9bgP5eY3E60B/YAIwGHglmcPWOJQpjTASqSqLooarZpRuquhpILm1kNtVgicIYE4GqUvW0WkSeA0q7wl7q3dcIKApaZPVR6ejskhJoYNNsGWMiQ1W+rSYC3wK3epcNuPEMRcDxDLo78cTHuyRhK90ZYyJIwBKFN9BujqqeCTzmZ5d9QYmqvvLtItu6dWhjMcaYKgpYolDVYqCkluZ3MjaWwhgTgarSRrEPWCki84D9pXeq6s1Bi6q+skRhjIlAVUkU73oXc7zi4iAqyhKFMSaiVJooVPV1EWkMdFHVCud2MlUgAq1aWaIwxkSUqixcdAGwHPi3t50mIu8HOa76y8ZSGGMiTFW6x07BTf63G0BVl+Om/DY1YYnCGBNhqpIoivxM/lcSjGBOCJYojDERpiqJIltErgCiRKS7iDwNfB7kuOqv+Hg4cMBdjDEmAlQlUdwE9AEOAn8H9uBGaJuasC6yxpgIU5VeTz8B/+tdzPFq08Zd79wJnTuHNhZjjKmCqiyF2gO3bnWi7/6qOiJ4YdVjVqIwxkSYqgy4+wfwPPBXoDi44ZwAShPFjh2hjcMYY6qoKonisKo+F/RIThQxMdCsmZUojDERoyqN2bNE5L9EJEFEWpdegh5ZfWZdZI0xEaQqJYqJ3vWdPvcpNuiu5koXMDLGmAhQlV5PSXURyAklPh5yckIdhTHGVEmFVU8icpfP7fHlHvtjMIOq9+LjYdcuKLa+AcaY8BeojeIyn9t3l3vsnCDEcuKIjwdVlyyMMSbMBUoUUsFtf9umOmwshTEmggRKFFrBbX/bpjosURhjIkigxux+IrIHV3po7N3G244NemT1WUICNGwIq1bBaaeFOhpjjAmowhKFqkapagtVba6q0d7t0u2GdRlkvdO4MQweDIsWQVFR5fvv3Qu7dwc7KmOM8asq4yhMMIwaBZ9+CkuWHFuqOHwYPv4YsrNhzRrIzYUWLeD11yHa3jJjTN2qysjsWueN7p4nIuu961YV7PeIiGSLyBoReUpE6k8jev/+0Lo1zJ9/7GOvvQZPPAFffOGqqUaNgj17YOXKuo7SGGNCkyiAycACVe0OLPC2jyIipwE/A1KBFGAgcEZdBhlUDRrAiBGwdOnR3WTz8mD2bBg9GqZOhf/7P7j+ejdH1Jdfhi5eY8wJK1SJYgzwunf7dWCsn30U12geAzQCGgJb6yK4OjNqFJSUuLaKUqXVS7/4BZQWoGJiXAnkyy/d+AtjjKlDoUoU7VU1z7v9I9C+/A6q+h9gIZDnXT5U1TX+DiYivxaRTBHJ3L59e7Birn2dOkFyMsyb5xLAmjXw2Wdw8cWuWsrXqae6qck3bgxNrMaYE1bQEoWIzBeRVX4uY3z3U1XFz7gMETkF6AV0BjoBI0RkqL9zqeqLqpqhqhlt27YNwl8TRCNHwubNsH49vPKKSxBjxx6738CBroRh1U/GmDoWtEShqqNUNcXPZSawVUQSALzrbX4OMQ74QlX3qeo+4ANgSLDiDZmhQ13V0hNPwNq1rsop1s8wlZYtXenjiy/qPERjzIktVFVP73Nk+vKJwEw/+3wPnCEi0SLSENeQ7bfqKaI1bQpDhrhSRWKiK2FUZPBg2LDBVsczxtSpUCWKh4DRIrIeGOVtIyIZIvJXb5/pwHfASmAFsEJVZ4Ui2KA791yIioJf/cr1hqrI4MHu+quv6iYuY4wBROtZL5qMjAzNzMwMdRjVV1jov8rJlypcdx20bw9/+EPdxGWMOSGIyFJVzfD3WKhKFKa8ypIEuMbswYPdwLuffgp+TMYYgyWKyDN4sJviY9myUEdijDlBWKKINMnJ0Ly5dZM1xtQZSxSRJioK0tLchIHGGFMHLFFEoq5dYft22Lcv1JEYY04AligiUVKSu87JCWkYxpgTgyWKSFSaKGzeJ2NMHbBEEYlatXJTemzYEOpIjDEnAEsUkUjElSqsRGGMqQOWKCJVUhJ8/z0UF4c6EmNMPWeJIlIlJUFREfzwQ6gjMcbUc5YoIpU1aBtj6oglikjVubNbMtUShTEmyCxRRKroaOjSxXo+GWOCzhJFJLOeT8aYOmCJIpIlJcHu3e5ijDFBYokiklmDtjGmDliiiGSWKIwxdcASRSRr3hzatLFEYYwJKksUkS4pyXo+GWOCyhJFpEtKgtxcOHQo1JEYY+opSxSRLikJSkpg8+ZQR2KMqacsUUQ6a9A2xgSZJYpIl5AAjRpZO4UxJmgsUUS6Bg2ge3dYvTrUkRhj6ilLFPVBWporUezZU7Pnq9ZqOMaY+sUSRX2Qlua+7FesqP5zZ82CcePgzjvhzTdh+XLrQWWMOYolivqge3do2hS+/rp6z8vLg9deg8REl2imT4d77oEbb4TCwmBEaoyJQCFJFCIyXkSyRaRERDIC7HeOiKwTkW9FZHJdxhhRGjSAfv1coqhqNZIqPPOMm678nnvgT3+CadPgjjtcAvn734MbszEmYoSqRLEKuAj4pKIdRCQKeBY4F+gNXC4ivesmvAiUlgY7dsCWLVXbf/58yMqCSZMgPt7d17gxnHEGjB4NM2e6NbmNMSe8kCQKVV2jqusq2W0Q8K2qblDVQ8A0YEzwo4tQ/fu766pUP+Xnw8svQ0oKnHPOsY9PmgRNmsBzz1lDtzEmrNsoOgG+w41zvfuOISK/FpFMEcncvn17nQQXdjp0cJflyyvf94UXXIP1jTeCyLGPt2gBEyfCqlWwaFFtR2qMiTBBSxQiMl9EVvm51HqpQFVfVNUMVc1o27ZtbR8+cqSlueqkw4cr3iczEz7/HC6/HDr5zbvOWWdBz56u5LF/f62HaoyJHEFLFKo6SlVT/FxmVvEQPwAn+Wx39u4zFenfHw4cgPXr/T9eXAyvvOJGc48bF/hYInD99W5sxtSptR+rMSZihHPV0xKgu4gkiUgMcBnwfohjCm+pqe4LvqJ2io8+cpMHTprkejtVpls3GDUKPvyw5oP5jDERL1TdY8eJSC4wBJgtIh9693cUkTkAqnoYuBH4EFgDvKOq2aGIN2I0awY9evhvpygshLfectVJQ4ZU/Zhjxrj2jLlzay1MY0xkCVWvpxmq2llVG6lqe1U927t/i6qe57PfHFXtoardVPWBUMQacdLSYN26Y9sV3n/f9Xa6+mr/DdgVOflkV1KZPdtVXRljTjjhXPVkaiItza1PsXjxka6tBQVu1PWpp0LvGgxFufBCN0bjiy9qNVRjTGSoQkW1iSjJydCuHTz7LLz3HowcCT/8AAcPui6vNTFwILRv7+aF+tnPah6bquuR1bBhzY9hjKlzVqKob6Kj3dQct9wCrVrBG2/AggWuu2vnzjU7ZoMG8POfQ3Z2zde9+OEH+N3v4IorXHuHDeQzJmKI1rN/2IyMDM3MzAx1GOEjLw+WLYPhw93EgTW1f78rkQwd6pJQVR06BP/4h6v6atQITjoJ1q51Deo33QTNm9c8JmNMrRGRparqd+49K1HUdwkJcP75x5ckwD1/5Ej4+GPX5lEVP/zgRn9Pm+YSzPPPwyOPuAb1JUvcY1lZxxeXMSboLFGYqvv5z6GoyPWAqszBg/Dgg64k8sADcNttEBfnelyNGwePPebmk7r3XsjJCXbkxpjjYInCVN1JJ8Fpp7lqpM2bA+/74ouwaRPcfrvrXlte164ukTRtCg89ZOtfGBPGLFGY6rn+eoiNhccfr3hOqUWLXIP1+PEwYEDFx4qLc+tfbNkCf/mLNXAbE6YsUZjqiYuDG25w80lNn37s4z/84Lrm9u4NEyZUfrzUVDdB4cKFrneWMSbsWKIw1fezn8GwYa6R+rvv3H2qLnk89JAbJ3HnnRAVVbXjXXqpSxjPPWeLJRkThqx7rKmZvXtdr6VmzdzEgfPmuXaLRo3gf/4ncJWTP7t2ue6ysbHwxz+6QYPVceiQm0L9++9dHN9/75LXRRe5rsEN7DeRMYEE6h5ricLUXGam67UEbkT4qFFw+uk174q7fr1bv7tpU9fQXZVkoeq67L7xBpQuWtW+vWt4z893AwRPOgl++Us3hUl15rky5gRiicIEz/Ll0KZNzUd9l1edZLFypVtf49tv3ZToV17p2kZiY93jqm6RpjffdG0nKSmutGOD/Iw5hiUKE1m+/dYli8aN3Sjwnj2PfPkfPOgmPJwzxyWVNm1cghg+vOLSQnGxqxp74QU3APHee+FEXgnRGD8sUZjIs2GDmxtq716XADp3dlVIWVmwbx906QLnnQejR0NMTNWOuXIl3H+/S0D33uumUK8KVTcmZMcONyq9oMB1DU5Pd+NBrDrL1AOWKExk2r8f1qxxJYf1690I7uRklyD69KnZF3RODvz+965kcued7su+IsXF8Nln8M9/VjwZYrt2rhfY6adD9+6WNEzEskRhjK9t21yyyM117RZXXAF9+7rHVN39X3/tFnvauhU6dYKxYyEpCVq2dGNJiorc+hyffQYrVrgSRufObj6sESOgdetQ/oXGVJslCmPKO3TIrQU+fbrrHZWS4hrQV6921V3g2kYuuQQGDw5cUti/3yWM+fNdCUgEevVyDezdurnqqTZt3PiS6Gg3vuTQIbcO+Z49ripr+3aXwLZuhZ073eOHD7uEFBUFHTu66rYuXVyVWefO1uXX1CpLFMZUpDRhzJjhvsh79z5y6dix+lVJW7bARx+5UsbGja6KqzwR/9OVNGjgGtnbtnXjUaKj3aWoyJVy8vKOPK9RI5eEund3cTZu7Br8Gzd25ywogN273aW0XaWgwCWm4mJ3nNJjNW7skmTpJS7u6EvTpm68TLNmLmkVFR1JYj/9dCTh7dlzJMEVF7tL6bFLn+97adLEHS8q6kjS8z227+3Dh499zRo2dK+D76Vhw8DvmeqR2Mq/J5U9t56zRFENd9/thgOMHOk+m/fc49b8OfNM9/83ZYqrIh861P2QvP9+uOACN1fenj2uR+e4cTBokBtD9sgj7kdperprC33sMTcQOS0NfvwRnnzSzXSRkuJ6cD7zjOvE06uXaz99/nk3K3f37q6a/KWX4Npr3Y/U9etd79DrrnM/MtesccMJbrzR1ZasWgVTp7qOQx06uJ6sb7/t5ulr0waWLnU/qO+6y61x9NVX7vvy7ruhRQvXs3TWLNem3LTpkc5GU6a4/8mFC92UTvfd577PFixwP6offNC9lh9+6J5z//1ue84cd44pU9z2+++779N77nHbM2a4pSruvtttT5/u/ua77nLb06a51+j229321Knuh/itt7rt118/Mg4Q3Gtz8KCbngrcawfu9QM3ELxRI/f6gnvtmzc/shDgE0+47+zSmUgee8y9rpdd5rYfecS9D5dc4rYffNA1oYwb57bv+0MJ/U7axYXdsqGggClvncKgpO2cl/I9xMbyu3cHMHTwIc4eXQJt23L3n+IZdVaDij979xRzXsY2hrZZw/7sHO6fmsgFsfM5rflK9hQ15sFvxzOuw38Y1Go9uw415ZHvLuaSrstIT8pnR3QHHlt5Fpeeuom0k3fx496mPLkwlQkDvyGl9RZ++DGKZxb348qun9KrwTo25cXwfM45XH3SPLo3y2PD/va89P3ZXNvlQ7o23cr6fQm8snk01538ASc32c6avZ15I3cEN3b7gE7NCli1P4mp35/OLV3eo0PDnSwvSOLtLUO5vdt7tInZw9Ld3Zie9zPu6vZPWsXs56td3Znx4xDuPuUftGh4gM/zk5m1dRC/6/42TaMPsnhnb+Zsy2BKj7/RKOowC3f0Ze72/tzX8y2iG5SwYEcq87en8WDvN6FRIz7ckc7i7T25v+87oMqcH/rx1Y6uTDnlLffZ+3EQK/YkcU+Pt91nL+9U1u7vzN093oXoaKZvOY0NP3Xgrj6zoUEDpuWcyg8HWnF7rw9AlakbT2P7wRbcmvxv99nbMJS9RbHc2HOe++x9dwYHS6K5vrublual7850n70en4AIz60bQaPoYq7uvth99taMpHnDQiZ2+9R99rJH0zZ2LxO6/sd99lafS6cmu7is61cgwiMrz6Fr8x1ckrQUVHkw6zySW+QxbkSB+4etgUCJwpZCNSZYpAHEx7vpTgCWAoN6wXne48uBZKB0GfPKapKiolz33qEJMBjYApx3BvTdC9sK4fFGMGwAZJQAreClVnDpeEgHdgCPAZf+DNKAH4EC4LIBkAL8AEQBVw6HXsDGEnjqEIw5DdoVwLoi+EdLOCcBuhyGvGbw744wIRWSG0NeHLzbDG4eD52AVcBU4OYx0OogfFEI7whc0RcaFsAygQWtYFxTaFwI61rCVx1hfGNoKfBNG1jSHiYmQIsoWBkH/4mDX3eDGIUlzeDzZjCxHRwuhK+aw7LWcMmlLqsubwfrE450m87uAps6wPjLXMlhaSfYFOfOB/BFB9jcDM5v4EowS7rAtubuvSspgZhTYHfTI0sBx3SHfY1dJwaA6B5Q2BBOP+C9l93hcBScXlqi7AYKDCp0pZoDXSC6GPr1c/Ht7QSxRUdmNNhzEjQ7ABlFbv+CTq59rJ93vO0JEN8EUg66529LgHaNoPtPlXyIasZKFMYYY2yFO2OMMTVnicIYY0xAliiMMcYEZInCGGNMQJYojDHGBGSJwhhjTECWKIwxxgRkicIYY0xA9W7AnYhsBzZV4yltcONWw024xgXhG1u4xgXhG1u4xgUWW00cT1wnq6rfFb3qXaKoLhHJrGg0YiiFa1wQvrGFa1wQvrGFa1xgsdVEsOKyqidjjDEBWaIwxhgTkCUKeDHUAVQgXOOC8I0tXOOC8I0tXOMCi60mghLXCd9GYYwxJjArURhjjAnIEoUxxpiATthEISLniMg6EflWRCaHOJZXRGSbiKzyua+1iMwTkfXedasQxHWSiCwUkdUiki0it4RRbLEi8pWIrPBiu9e7P0lEvvTe17dFJKauY/PiiBKRr0XkX2EWV46IrBSR5SKS6d0XDu9nnIhMF5G1IrJGRIaESVw9vdeq9LJHRG4Nk9j+2/vsrxKRv3v/E0H5nJ2QiUJEooBngXNxC1FeLiK9Az8rqF4Dzil332Rggap2BxZ423XtMHC7qvYGTgVu8F6ncIjtIDBCVfvhFvc8R0ROBR4GHlfVU4BdwK9CEBvALcAan+1wiQvgTFVN8+lvHw7v55PAv1U1GeiHe+1CHpeqrvNeqzTcorI/ATNCHZuIdAJuBjJUNQW3kO1lBOtzpqon3AUYAnzos303cHeIY0oEVvlsrwMSvNsJwLoweN1mAqPDLTagCbAMt5L0DiDa3/tch/F0xn15jAD+BUg4xOWdOwdoU+6+kL6fQEtgI17nmnCJy0+cZwGfhUNsuJXJNwOtgWjvc3Z2sD5nJ2SJgiMvcqlc775w0l5V87zbPwLtQxmMiCQC/YEvCZPYvOqd5cA2YB7wHbBbVQ97u4TqfX0CuAso8bbjwyQuAAXmishSEfm1d1+o388kYDvwqldd91cRaRoGcZV3GfB373ZIY1PVH4A/Ad8DeUABsJQgfc5O1EQRUdT9PAhZP2YRaQb8E7hVVff4PhbK2FS1WF2VQGdgEJAcijh8icjPgW2qujTUsVTgdFUdgKt2vUFEhvk+GKL3MxoYADynqv2B/ZSrygmD/4EY4ELgH+UfC0VsXpvIGFyS7Qg05djq61pzoiaKH4CTfLY7e/eFk60ikgDgXW8LRRAi0hCXJKaq6rvhFFspVd0NLMQVteNEJNp7KBTv68+AC0UkB5iGq356MgziAsp+iaKq23B17YMI/fuZC+Sq6pfe9nRc4gh1XL7OBZap6lZvO9SxjQI2qup2VS0C3sV99oLyOTtRE8USoLvXQyAGV6R8P8Qxlfc+MNG7PRHXPlCnRESAl4E1qvrnMIutrYjEebcb49pO1uASxiWhik1V71bVzqqaiPtcfaSqE0IdF4CINBWR5qW3cXXuqwjx+6mqPwKbRaSnd9dIYHWo4yrnco5UO0HoY/seOFVEmnj/p6WvWXA+Z6FsHArlBTgP+AZXr/2/IY7l77h6xiLcr6tf4eq1FwDrgflA6xDEdTquSJ0FLPcu54VJbKnA115sq4D/8+7vCnwFfIurJmgUwvd1OPCvcInLi2GFd8ku/dyHyfuZBmR67+d7QKtwiMuLrSmwE2jpc1/IYwPuBdZ6n/83gUbB+pzZFB7GGGMCOlGrnowxxlSRJQpjjDEBWaIwxhgTkCUKY4wxAVmiMMYYE5AlChNRRERF5DGf7TtEZEotHfs1Ebmk8j2P+zzjvRlSF5a7v6OITPdup4nIebV4zjgR+S9/5zKmMpYoTKQ5CFwkIm1CHYgvn9GwVfEr4FpVPdP3TlXdoqqliSoNN2altmKIA8oSRblzGROQJQoTaQ7j1gX+7/IPlC8RiMg+73q4iHwsIjNFZIOIPCQiE8StZ7FSRLr5HGaUiGSKyDfevE2lkw8+KiJLRCRLRH7jc9zFIvI+blRs+Xgu946/SkQe9u77P9xAxpdF5NFy+yd6+8YAfwAu9dZAuNQbVf2KF/PXIjLGe84kEXlfRD4CFohIMxFZICLLvHOP8Q7/ENDNO96jpefyjhErIq96+38tImf6HPtdEfm3uHUXHqn2u2Xqher8CjImXDwLZFXzi6sf0AvIBzYAf1XVQeIWY7oJuNXbLxE3/1E3YKGInAJcCRSo6kARaQR8JiJzvf0HACmqutH3ZCLSEbc2QDpuXYC5IjJWVf8gIiOAO1Q101+gqnrISygZqnqjd7w/4qYDudqbuuQrEZnvE0OqquZ7pYpxqrrHK3V94SWyyV6cad7xEn1OeYM7rfYVkWQv1h7eY2m4WYMPAutE5GlV9Z152ZwArERhIo66GWzfwC3cUlVLVDVPVQ/ipm0p/aJfiUsOpd5R1RJVXY9LKMm4OZGuFDel+Ze46Ru6e/t/VT5JeAYCi9RN2nYYmAoM87NfVZ0FTPZiWATEAl28x+apar53W4A/ikgWbmqJTlQ+BfbpwFsAqroW2ASUJooFqlqgqoW4UtPJx/E3mAhlJQoTqZ7ALVb0qs99h/F+/IhIA8B3GciDPrdLfLZLOPr/oPycNor78r1JVT/0fUBEhuOmxK4LAlysquvKxTC4XAwTgLZAuqoWiZvFNvY4zuv7uhVj3xknJCtRmIjk/YJ+h6OXeszBVfWAWzugYQ0OPV5EGnjtFl1xK5l9CFwvbsp1RKSHN/tqIF8BZ4hIG3FL714OfFyNOPYCzX22PwRu8mYKRUT6V/C8lrj1MIq8tobSEkD54/lajEsweFVOXXB/tzGAJQoT2R4DfHs/vYT7cl6BW5uiJr/2v8d9yX8AXOdVufwVV+2yzGsAfoFKflmrW/1sMm7a5xXAUlWtzpTPC4HepY3ZwH24xJclItnetj9TgQwRWYlrW1nrxbMT17ayqnwjOvAXoIH3nLeBSV4VnTEANnusMcaYwKxEYYwxJiBLFMYYYwKyRGGMMSYgSxTGGGMCskRhjDEmIEsUxhhjArJEYYwxJqD/D2ctNTYbtV4KAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] @@ -448,7 +448,7 @@ "result = numpy.load('./output/summary_data.npz')\n", "\n", "eig_val, eig_state = numpy.linalg.eig(\n", - " Hamiltonian(molecular_hamiltonian.pauli_str).construct_h_matrix())\n", + " molecular_hamiltonian.construct_h_matrix())\n", "min_eig_H = numpy.min(eig_val.real)\n", "min_loss = numpy.ones([len(result['iter'])]) * min_eig_H\n", "\n", @@ -530,7 +530,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.10" + "version": "3.8.10" }, "toc": { "base_numbering": 1, diff --git a/tutorial/quantum_simulation/VQE_EN.ipynb b/tutorial/quantum_simulation/VQE_EN.ipynb index 497f902..ab3344f 100644 --- a/tutorial/quantum_simulation/VQE_EN.ipynb +++ b/tutorial/quantum_simulation/VQE_EN.ipynb @@ -226,7 +226,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 11, "metadata": { "ExecuteTime": { "end_time": "2021-04-30T09:14:50.083041Z", @@ -277,7 +277,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 12, "metadata": { "ExecuteTime": { "end_time": "2021-04-30T09:14:50.183996Z", @@ -319,7 +319,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 13, "metadata": { "ExecuteTime": { "end_time": "2021-04-30T09:14:50.222465Z", @@ -345,7 +345,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 14, "metadata": { "ExecuteTime": { "end_time": "2021-04-30T09:15:52.165788Z", @@ -357,23 +357,23 @@ "name": "stdout", "output_type": "stream", "text": [ - "iter: 20 loss: -1.0467\n", - "iter: 20 Ground state energy: -1.0467 Ha\n", - "iter: 40 loss: -1.1185\n", - "iter: 40 Ground state energy: -1.1185 Ha\n", - "iter: 60 loss: -1.1337\n", - "iter: 60 Ground state energy: -1.1337 Ha\n", - "iter: 80 loss: -1.1370\n", - "iter: 80 Ground state energy: -1.1370 Ha\n", + "iter: 20 loss: -1.0510\n", + "iter: 20 Ground state energy: -1.0510 Ha\n", + "iter: 40 loss: -1.1298\n", + "iter: 40 Ground state energy: -1.1298 Ha\n", + "iter: 60 loss: -1.1361\n", + "iter: 60 Ground state energy: -1.1361 Ha\n", + "iter: 80 loss: -1.1371\n", + "iter: 80 Ground state energy: -1.1371 Ha\n", "\n", "Circuit after training:\n", - "--Ry(7.841)----*--------------x----Ry(7.851)----*--------------x----Ry(0.021)--\n", + "--Ry(4.710)----*--------------x----Ry(1.569)----*--------------x----Ry(-0.01)--\n", " | | | | \n", - "--Ry(1.407)----x----*---------|----Ry(4.485)----x----*---------|----Ry(5.357)--\n", + "--Ry(1.507)----x----*---------|----Ry(1.566)----x----*---------|----Ry(4.392)--\n", " | | | | \n", - "--Ry(6.923)---------x----*----|----Ry(1.570)---------x----*----|----Ry(6.209)--\n", + "--Ry(5.984)---------x----*----|----Ry(4.476)---------x----*----|----Ry(1.692)--\n", " | | | | \n", - "--Ry(1.648)--------------x----*----Ry(4.728)--------------x----*----Ry(-0.16)--\n", + "--Ry(0.132)--------------x----*----Ry(7.773)--------------x----*----Ry(3.194)--\n", " \n" ] } @@ -430,7 +430,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 15, "metadata": { "ExecuteTime": { "end_time": "2021-04-30T09:15:18.096944Z", @@ -440,7 +440,7 @@ "outputs": [ { "data": { - "image/png": "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", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYoAAAEGCAYAAAB7DNKzAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAAyKUlEQVR4nO3deXxU1fn48c9DQgKEhF1AEBIURAJJIGETQdkUV1ChaLHiglYrKrVa8av9ldbWtda61X2tWLQoAoqCgCiuGJB9VQgSZQ87hkB4fn+cmziEySSQ5c4kz/v1mtfce+fMvU9mJvPMPeeec0RVMcYYY4pTw+8AjDHGhDdLFMYYY0KyRGGMMSYkSxTGGGNCskRhjDEmpGi/AyhvjRs31sTERL/DMMaYiDJ//vxtqtok2GNVLlEkJiaSmZnpdxjGGBNRRGR9cY9Z1ZMxxpiQLFEYY4wJyRKFMcaYkKpcG4Ux1dXBgwfJzs4mNzfX71BMGKtVqxYtW7akZs2apX6OJQpjqojs7Gzi4+NJTExERPwOx4QhVWX79u1kZ2eTlJRU6udZ1ZMxVURubi6NGjWyJGGKJSI0atTomM86LVEYU4VYkjAlOZ7PiCWKAvv2wRtvwOrVfkdijDFhxRJFgcOH4b//hRUr/I7EGGPCiiWKAnXrggjs2eN3JMYYE1YsURQQgfh42L3b70iMiXj9+vXj0KFDIcv8/PPPnHnmmeTn5wOQn5/PrbfeSnJyMp06dWLt2rXk5eXRp0+fI/Z11llnkZWVBcCzzz7LjTfeeMR+O3bsyAqvZiCwbHnHsmPHDi6++OJSvR6RzhJFoPh4O6MwpoyWLVtGo0aNiI4OffX9Sy+9xCWXXEJUVBQA999/P23atGHZsmXccsst/Pvf/yYmJob+/fvz5ptvBt3HkiVL6NKlS+F6bm4uWVlZtGvX7phiPp5YGjRoQE5ODtu3bz+mY0Ui60cRKCHBzihM1fD887B2bfnus00buO66EotNnjyZIUOGANC5c2c++OADnnzySU455RSSkpJ4+umnmTBhAuPHj+eNN94AYN++fUyaNIn58+cDkJSUxPvvvw/AkCFDuOuuuxgxYsRRx1q8eDFXX3114fqSJUto165d4Rd+oIqI5fzzz2fq1KlcddVVpXkFI5YlikDx8bB1q99RGBPRpk2bxnvvvcehQ4fIycmhWbNmLFq0iKFDh/Lpp5+SmppKXl4ea9eupWBKgJkzZ7JhwwbS0tIAyMnJYcCAAYCrSvrmm2+CHmvZsmVccsklhZd87t27lwsuuOCochUVy+DBg7nzzjstUVQrCQnl/yvMGD+U4pd/Rdi/fz95eXnUr1+fpUuX0r59ewCWL19Ohw4deOKJJ7jkkkvYtm0b9evXL3zewoUL+etf/8oNN9wAwKhRo0hJSQEgKiqKmJgY9uzZQ3x8fOFzNmzYQJMmTVi5cmXhttGjRwftcbxy5coKieXUU09l1apV5fDKhTdrowhkjdnGlEmdOnUQEfbu3cuqVas49dRTycnJoW7dusTExJCZmUnXrl2pXbv2Eb2Dd+zYQZ06dQD363/GjBlceOGFhY8fOHCAWrVqHXGsJUuWkJycfMS25cuXF36pB6qoWNavX39MQ2FEKksUgRISIC8PDhzwOxJjItY555zDhx9+SExMDCtXriQzM5PU1FRef/11EhMTOeGEE2jQoAH5+fmFX9Dt2rXjq6++AuDRRx/l/PPPL/wC3r59O40bNz5qELvFixfToUOHI7YtW7aMTp06HRVTRcUyefJkBg8eXF4vXdiyRBGo4LTWrnwy5rgNHjyYd999l0GDBtG+fXtGjBjBnDlzyMzM5LXXXissd/bZZ/PZZ58BcPnll7NgwQJOOeUUFi9ezD//+c/Cch9//DHnn3/+UcdZsmTJEYkiJycHVaVZs2ZHla2oWKZOnVotEgWqWqVu6enpetw+/1z1ggtUv//++PdhjE+WL1/udwiFOnXqpAcPHlRV1auuukpnzJhxVJn58+frFVdcUeK+Lr74Yl21alXh+plnnqnr1q0rVRxFy5ZnLDk5Odq7d+9SxRFugn1WgEwt5nvVzigCJSS4ezujMKZMFi9eXNiPYvHixUHbDbp06ULfvn0LO7kFk5eXx5AhQ465X0SouMorlgYNGvDpp5+WS1zhzq56ClSQKKxB25hyU9AfIZhrrrkm5HNjYmK48sorj9h21VVXHXGVUihFy5Z3LNWFJYpA1kZhTNg7lj4LVb1/Q2XxtepJRAaJyCoR+U5ExgZ5PFZE3vQe/1pEEis0oIJEYWcUxhhTyLdEISJRwFPAuUAH4HIR6VCk2LXADlU9BXgUeLBCg4qOhjp17IzCGGMC+HlG0Q34TlXXqmoeMAEoep3ZYOBVb3ki0F8qegov63RnjDFH8DNRtAA2BKxne9uCllHVQ8AuoFHRHYnI9SKSKSKZW8s6VlNCgp1RGGNMgCpxeayqPqeqGaqa0aRJk7LtzM4ojDHmCH4mih+BkwLWW3rbgpYRkWigHlCxg7/bnBTGHLfNmzfz61//mjZt2pCenk7Pnj2ZNGlSpcaQlZVFx44dS11+zpw5fPHFF+VWriryM1F8A7QVkSQRiQEuA6YUKTMFGOktDwVmez0IK45VPRlzXFSVIUOG0KdPH9auXcv8+fOZMGEC2dnZR5Utafa7yhSJiaKyXz/fEoXX5jAamA6sAN5S1WUi8lcRucgr9iLQSES+A24DjrqEttwlJMC+fRBGH2RjIsHs2bOJiYkpHJ4boHXr1tx8880AvPLKK1x00UX069eP/v37k5OTw5AhQ0hJSaFHjx4sXrwYgHHjxvGPf/yjcB8dO3YkKyuLrKwsTjvtNK677jqSk5M5++yz+fnnnwHXkS41NZXU1FSeeuqpYmN8/PHH6dChAykpKVx22WVkZWXxzDPP8Oijj5KWlsbcuXOZOnUq3bt3p3PnzgwYMIDNmzcHLbd161YuvfRSunbtSteuXfn888+POl5+fj533HEHXbt2JSUlhWeffRZwSeess85i6NChhWNQFfwGnj9/PmeeeSbp6emcc845bNy4EXDTuo4ZM4aMjAwee+wxvvnmG1JSUkhLS+OOO+4oPIvq06cPCxcuLIzhjDPOYNGiRcf8fh6huLE9IvVWprGeVFXfe8+N97RjR9n2Y0wlKzp+z9ixqjNnuuWDB9367NluPTfXrX/6qVvfu9etf/65W9+1y61//bVbz8kp+fiPPfaYjhkzptjHX375ZW3RooVu375dVVVHjx6t48aNU1XVWbNmaWpqqqqq/vnPf9aHH3648HnJycm6bt06XbdunUZFRem3336rqqrDhg3T//znP6rqxpb65JNPVFX19ttv1+Tk5KAxNG/eXHNzc1VVdYf3P170eDk5OXr48GFVVX3++ef1tttuC1ru8ssv17lz56qq6vr167V9+/ZHHe/ZZ5/Ve++9V1VVc3NzNT09XdeuXasff/yxJiQk6IYNGzQ/P1979Oihc+fO1by8PO3Zs6du2bJFVVUnTJigV199taq6catuvPHGI16XL774QlVV77zzzsK/+ZVXXtFbb71VVVVXrVqlwb4Tj3WsJ+uZXVRg7+xSDhNgjDnaTTfdxGeffUZMTEzhrHADBw6kYcOGAHz22We8/fbbAPTr14/t27ezu4QLSZKSkgpnnktPTycrK4udO3eyc+dO+vTpA8BvfvMbPvjgg6DPT0lJYcSIEQwZMqRwutaisrOzGT58OBs3biQvL6/Y+SZmzpzJ8uXLC9d3797N3r17qVu3buG2GTNmsHjxYiZOnAjArl27WLNmDTExMXTr1o2WLVsCkJaWRlZWVuGETwMHDgTcGUnz5s0L9zd8+HAAdu7cyZ49e+jZsycAv/71r3nvvfcAGDZsGPfeey8PP/wwL730Urn0TrdEUZSN92SqiPvv/2U5OvrI9djYI9fj4o5cT0g4cr1Bg5KPl5ycXPjFD/DUU0+xbds2MjIyAo4TV+J+oqOjOXz4cOF64KRCsbGxhctRUVGFVU/Fufrqq/n222858cQTmTZtGu+//z6ffvopU6dO5e9//ztLliw56jk333wzt912GxdddBFz5sxh3LhxQfd9+PBhvvrqq6MmVAqkqjzxxBOcc845R2yfM2fOUX/LoUOHUFWSk5P58ssvg+6vNK9fnTp1GDhwIJMnT+att94KOb5VaVWJy2PLlY0ga8xx6devH7m5uTz99NOF2/bv319s+d69ezN+/HjAfXE2btyYhIQEEhMTWbBgAQALFixg3bp1IY9bv3596tevXzifRME+AV5++WUWLlzItGnTOHz4MBs2bKBv3748+OCD7Nq1i7179xIfH8+egP/3Xbt20aKF69L16quvFm4vWu7ss8/miSeeKFwPbBcocM455/D0009z8OBBAFavXs2+ffuK/VtOPfVUtm7dWpgoDh48yLJly4L+zfHx8Xz99dcATJgw4YjHR40axS233ELXrl1pUJosXwJLFEXZeE/GHBcR4d133+WTTz4hKSmJbt26MXLkSB58MPjIO+PGjWP+/PmkpKQwduzYwi/lSy+9lJycHJKTk3nyySdLNcT4yy+/zE033URaWlpho3BR+fn5XHHFFXTq1InOnTtzyy23UL9+fS688EImTZpU2Eg9btw4hg0bRnp6Oo0bNy58ftFyjz/+OJmZmaSkpNChQweeeeaZo445atQoOnToQJcuXejYsSO//e1vQ16xFBMTw8SJE7nzzjtJTU0lLS2t2CutXnzxRa677jrS0tLYt28f9erVK3wsPT2dhIQErr766hJf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\n", "text/plain": [ "
" ] @@ -455,7 +455,7 @@ "result = numpy.load('./output/summary_data.npz')\n", "\n", "eig_val, eig_state = numpy.linalg.eig(\n", - " Hamiltonian(molecular_hamiltonian.pauli_str).construct_h_matrix())\n", + " molecular_hamiltonian.construct_h_matrix())\n", "min_eig_H = numpy.min(eig_val.real)\n", "min_loss = numpy.ones([len(result['iter'])]) * min_eig_H\n", "\n", @@ -535,7 +535,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.7.10" + "version": "3.8.10" }, "toc": { "base_numbering": 1, -- GitLab