线性方程组的量子算法(HHL09):步骤2-初始状态的准备


9

这是用于线性方程组(HHL09)Quantum算法的延续:步骤2-什么是|Ψ0


在《线性方程组的量子算法》(Harrow,Hassidim&Lloyd,2009)一书中,没有给出该算法实际实现的细节。状态到底如何|Ψ0|b被创建,有点像“ 黑匣子 ”(请参阅​​第2-3页)。

|Ψ0=2Tτ=0T1sinπ(τ+12)T|τ

|b=1Nbi|i

哪里 |Ψ0 是时钟寄存器的初始状态,并且 |b 是输入寄存器的初始状态。

(说)我想在IBM上执行他们的算法16-qubit量子计算机。我想解决一个方程Ax=b 哪里 A 是一个 4×4 带实项的厄米矩阵和 b 是一个 4×1 具有实际条目的列向量。

让我们举个例子:

A=[1234215635174671]

b=[1234]

给定尺寸 Ab,我们应该需要 log24=2 输入寄存器的qubit和另一个 6 假设我们希望用特征值表示时钟值的时钟寄存器的量子位 90% 准确性和高达 3位精度的特征值(这已经讨论过这里以前)。所以总2+6+1=9 量子位将用于此目的(额外 1 qubit是ancilla)。

问题:

  1. 使用此信息,可以创建初始状态|Ψ0|b 在IBM上 16 qubit版本?

  2. 如果你认为 4×4太大了,无法在IBM Quantum计算机上实现,您甚至可以显示一个初始状态准备的示例2×2 厄米矩阵 A (或仅引用此类示例)。

我只是想对是否可以在IBM 16量子位量子计算机上完成(即是否可能)以及需要哪些门操作有一个大致的了解。如果不是IBM 16量子位量子计算机,可以使用QISKit仿真器来重新创建QISKit的初始状态准备吗|Ψ0|b在HHL算法中?还有其他更好的选择吗?


1
据我所知,IBM无法执行HHL,因为它涉及到在不同时间重叠进行操作,但是如果我做错了,我也不会感到惊讶。@James Woottoon可能会更好地知道答案。
user1271772

@ user1271772我也这么认为,但我有点怀疑,因为有人在聊天中告诉我他们模拟了HHL4×4下面这个,在IBM。
Sanchayan Dutta

那么,也许曹宇东论文的图4(您链接的那张)就足够了。
user1271772

@ user1271772是的,但是不幸的是,这仅适用于特定矩阵。我正在寻找一种通用技术,为此,我可能应该更全面地阅读该论文。
Sanchayan Dutta

正如约翰·瓦特鲁斯(John Watrous)在他的评论之一中提到的那样,有人在问一个特定的电路,“你是在要求人们做乏味但在概念上不有趣的工作”。Yudong在制作这些电路时是一名工程学本科生。他没有比您受过更多的训练(实际上,基于您的快速进步,您可能比写这篇文章时对量子计算了解更多)。如果他可以进行此电路设计,那么您应该可以为您面前的任何HHL示例创建相应的电路。
user1271772

Answers:


3

无法创建初始状态 |Ψ0|b在IBM 16 qubits版本上。另一方面,由于IBM芯片实现的门提供了这种可能性,因此可以用任意低的误差1近似它们。

在这里,您要求2种不同的量子态:

  1. |b完全不受限制。状态|b 由一个向量表示 N 复数可以是任何数(只要向量具有unit范数)。
  2. |Ψ0 可以看作是 |b,其中系数 bi 更受约束。

通过此分析,可以使用任何创建方法 |b 也可以用来创建 |Ψ0。另一方面,|Ψ0 更受限制,我们可以希望存在更有效的算法来产生 |Ψ0

对...有用 |b|Ψ0:基于量子逻辑电路的综合(Shende,Bullock和Markov,2006年),QISKit Python SDK实现了一种初始化任意量子状态的通用方法。

对...有用 |Ψ0创建与有效可积概率分布相对应的叠加(Grover&Rudolph,2002),提出了一种算法来快速初始化状态,该状态的振幅表示遵守某些约束的概率分布。这些约束得到尊重|Ψ0根据解决方程组线性系统的量子算法(Harrow,Hassidim&Lloyd,2009),第5页最后一行。

对于在QISKit上的实现,以下是初始化给定量子状态的示例:

import qiskit

statevector_backend = qiskit.get_backend('local_statevector_simulator')

###############################################################
# Make a quantum program for state initialization.
###############################################################
qubit_number = 5
Q_SPECS = {
    "name": "StatePreparation",
    "circuits": [
        {
            "name": "initializerCirc",
            "quantum_registers": [{
                "name": "qr",
                "size": qubit_number
            }],
            "classical_registers": [{
                "name": "cr",
                "size": qubit_number
            }]},
    ],
}
Q_program = qiskit.QuantumProgram(specs=Q_SPECS)

## State preparation
import numpy as np
from qiskit.extensions.quantum_initializer import _initializer

def psi_0_coefficients(qubit_number: int):
    T = 2**qubit_number
    tau = np.arange(T)
    return np.sqrt(2 / T) * np.sin(np.pi * (tau + 1/2) / T)

def get_coeffs(qubit_number: int):
    # Can be changed to anything, the initialize function will take
    # care of the initialisation.
    return np.ones((2**qubit_number,)) / np.sqrt(2**qubit_number)
    #return psi_0_coefficients(qubit_number)

circuit_prep = Q_program.get_circuit("initializerCirc")
qr = Q_program.get_quantum_register("qr")
cr = Q_program.get_classical_register('cr')
coeffs = get_coeffs(qubit_number)
_initializer.initialize(circuit_prep, coeffs, [qr[i] for i in range(len(qr))])

res = qiskit.execute(circuit_prep, statevector_backend).result()
statevector = res.get_statevector("initializerCirc")
print(statevector)

1这里的“误差”是指在处理理想的量子计算机时理想状态与近似值之间的误差(即无退相干,无门误差)。


0

对于IBM计算机,具有4 x 4矩阵A的HHL算法可能过大。我根据arXiv 1302.1210 link 线性方程组的求解系统,尝试了算法的较小玩具版本

我在stackexchange上对此电路做了一些解释:https//cs.stackexchange.com/questions/76525/could-a-quantum-computer-perform-linear-algebra-faster-than-a-classical-computer/ 77036#77036

不幸的是,它只是一个1比特的输入,矩阵A = 2 x 2,在答案中给出了到IBM电路的链接。


4x4 HHL实现的问题不是量子位的数量(需要7个量子位),而是量子门的错误率和去相干时间。可在此处使用QISKit实现4x4系统的实现。该实现遵循arxiv.org/abs/1110.2232v2
尼利米'18

4 x 4 HHL的出色实现。
布拉姆
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.