问题标签 [qiskit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 以小数形式返回量子位状态的机会
我正在尝试在 2 个量子位上运行 X 门,然后将任一状态下的量子位的机会返回为小数。我已经寻找答案,但我没有得到任何地方。
python - 用于量子电路的 Qiskit Transpiler
好的,所以,在 Qiskit 中有这个transpile()
功能(参见文档)。我对转译器的理解最好被描述为一种将一组门操作转换为另一组门操作的方法,目的是在不同的后端运行算法(因为量子位连接,即架构的几何形状,从一台量子计算机到另一台)。有一些方法可以通过减少冗余和重写等效门来优化电路,例如将由 Hadamard 门共轭的 CNOT 更改为 CZ 以减少门数。如果硬件后端没有本机 CZ,则可能还想完全相反,从 CZ 转到 Hadamards 共轭的 CNOT。一般来说,这种为了优化某些固定硬件后端的任意电路而进行的转译是一个 QMA 完全问题(见这里例如...也许有人将LEAN用于类似的事情?)。有时也使用变分方法来近似最佳电路,但我离题了。
一个稍微不同但相关的问题:使用Nielsen & Chuang附录 3 中的 Kitaev-Solovay 定理和 4.5 中的材料,我们知道我们总是可以“有效”地用通用门集逼近任意单一门(这在书,在这里不一定重要)。我认为效率如何是一个悬而未决的问题,但至少有一些上限和下限。
鉴于此,人们会期望 Qiskittranspile()
函数近似单一门并将门集重构为最佳(最小化)门集以优化电路,但可能会遇到具有许多非标准门的大型电路的问题。但是,即使对于简单的示例,我也无法使其正常工作。例如,三个量子比特上的置换矩阵似乎是一个合理的近似单位(有些甚至可以很容易地手动转换为 SWAP 门和 X 门)。但是 Qiskit 似乎不喜欢这样做,我可以使用一些帮助来理解为什么。例如,我们可以在 Qiskit 中定义一个酉(置换)算子,并将其转换为量子电路中的门,如下所示:
现在,如果我尝试使用transpile()
Qiskit 中的函数,如下所示:
我得到了一些巨大的可怕的错误,结果是,
所以,我想我的问题是......为什么。哈哈。不,但说真的,我只是以错误的方式使用它吗?我的期望太高了吗?有没有合理的方法来做我想做的事?一组不同的基础门会起作用吗?如果是这样,如何决定基础门?我还尝试了该decompose()
函数(请参阅文档transpile()
),在查看每个函数的源代码时,该函数似乎具有更有限的功能。该功能decompose()
已实现(如本视频和本视频所示)。该功能也已实现(请参阅大约 10:35 单元格 In[18] 和他的讨论中的此视频)。您也可以尝试使用他的命令运行命令transpile()
它也不适用于该导入。如果有人理解为什么该transpile()
功能(或与此相关的decompose()
功能)没有按照我期望的方式工作,我希望得到一个解释。谢谢!!!
- - - - -更新 - - - - -
我发现了另一个问题。如果我们使用
生成随机电路,然后运行
一些结果(没有 3-qubit 门)不会转换,有些会。所以这似乎不仅仅是没有实现 3-qubit 或更多的门transpile()
。注意:您可能需要多次尝试此代码才能获得没有 3 量子位门的电路,因为这些电路是“随机的”。例如,下面的电路不会转译,
当我们跑步时
添加障碍将所有独立的门分成不同的步骤似乎也无济于事。所以这不是运行并行但独立的门操作的问题。
----------更新2----------
如果我们使用 Qiskit 生成随机的 3 量子比特单位,这些也不起作用。
您可以重新定义酉元运算的量子比特,或将电路简化为 3 量子比特电路,或以这种方式生成更大的 n 量子比特酉元。这些例子都不起作用。
quantum-computing - 如何将经典迭代嵌入到 Qiskit 中 Grover 算法的预言机中?
我最近使用 Qiskit 学习量子计算。现在我想知道是否有任何方法可以做到这一点:
例如,我获得一个数组 X,其中每个元素都是其他元素的总和,例如X[0] = y[0][0]+y[0][1]+...+y[0][m]
,X[1] = y[1][0]+y[1][1]+..., ...,
直到X[n]
,X 中的每个元素都是在一次迭代中获得的。任务是找到一定的X[i] == k
。
那我应该在 Grover 的迭代之前完成所有的迭代吗?我读过一些教科书和论文,其中预言是由一些二进制函数将目标状态标记为 1 和条件构建的。据我所知,我现在在 Qiskit 中可以做的是标记指示目标元素位置的索引,例如
那是在Qiskit Terra。Qiskit Aqua 中的另一种方式是调用 Oracle 和 Grover 的 API,但 Oracle 只接受逻辑表达式、真值表和自定义电路:任何人的构造都需要知道确切的 X 和 X[i] 的位置,据我所知。
我想要做的只是说明格罗弗算法的二次优势。如果可能的话,不应该遍历迭代,至少在 oracle 之外,但是如何在代码中实现它呢?
python - Python 脚本随着时间的推移而变慢 [已解决]
解决方案:似乎 qiskit 在您重复使用电路时会做一些奇怪的事情,这意味着运行它们需要额外的时间。解决方案是拉
对于任何感兴趣的人,进入 for 循环。
我已经看到为什么简单的 Python 程序会随着时间的推移而变慢?和Python 脚本随着它的进展而减慢?正如你所看到的,我已经尝试实施所有我可以从那里学到的东西,但这并没有帮助。
我正在尝试对一组数据执行一些计算,但随着时间的推移它会变得非常慢。具体来说
我的时间是每次在输出中完成列表理解的一个元素。我的 conv 函数定义为
查看我的终端输出,我看到类似
这告诉我,同一图像的每个过滤器花费大约相同的时间,但是每个后续图像花费的时间越来越长,通常是一个恒定的量。鉴于我需要对许多图像执行此操作,这对我来说是不可持续的,并且在 uni 机器上,它从 3s 过滤器变为 70s 过滤器。
如果我缺少任何信息,我的仓库在这里https://github.com/milanleonard/QNN-implementation 。我无法想象为什么这会放缓。
对于一些额外的信息,似乎是导致问题的循环中的步骤,因为减少量子电路的数量,即每个图像的过滤器数量,根本没有帮助。在每一步都进行重构以保存并没有帮助,而且我的记忆在任何地方都没有快速增长。
我们认为可能是附加到 img_outputs 是问题所在,但这个重构表明它不是。
在迈克尔建议的一些分析之后,我看到了这个
第二轮
看起来对 ApplyOperationBack 的调用次数随着循环的迭代线性增长
我想我应该去寻找为什么它会增长。
quantum-computing - IBMQProvider 问题
前几天我在后端成功安装并运行了几条电路(essex)。一切都很好,结果出来了,但是第二天,一旦我想要更多的 QC,我就无法找到提供者。
我查看了我的帐户(活动),查看了包(最新)以及项目中的一个新文件。我也已经禁用并启用了该帐户而没有问题,但我一直遇到此错误。
代码
我得到:
我想知道我错在哪里,我期待通过后端有效地学习。
先感谢您
quantum-computing - 意外的关键字参数“datatime”qiskit 提供程序
我正在尝试设置数据时间调用 backend.properties qiskit。
这是我的代码:
我收到此错误:TypeError: properties() got an unexpected keyword argument 'datatime'。如果我在propertis中使用refresh = True而不是datatime,则代码有效。
python - 无法导入 qiskit,numpy 中的属性错误:“‘numpy.random’没有属性‘default_rng’”
我正在使用 Python 3,并且正在使用 jupyter,当我尝试导入 qiskit 时,显示以下错误:
dask - 使用 Dask 执行 Qiskit 时出现问题。工人不启动
我正在尝试使用 Dask 执行 Qiskit。当我提交一个使用 Qiskit 执行量子电路模拟的函数时,它无法正常工作,此外,工作人员开始产生回调错误。所以我决定开始在工人身上预装 Qiskit,但它不起作用。工人优雅地停止,没有任何错误。但是,将另一个 python 包导入为 numpy,它们按预期工作。知道为什么工作人员无法加载 Qiskit 吗?
这是问题的痕迹:
但是 numpy 加载没有问题。
python - 警告:未找到 BLAS 库,Qiskit 安装
我正在尝试安装 Qiskit 并遇到错误:
我在 Mac OS El Capitan 上,并使用 Python 3.7。
如果有帮助,我跑去np.__config__
查看是否安装了 BLAS,它似乎可以正常工作,因为它返回了这个:
所以我认为这只是我的 Qiskit 安装的一个问题。有谁知道如何解决这一问题?
layout - qiskit 的转译器中的 DenseLayout 是如何工作的?
我正在寻找有关 qiskit 转译器使用的密集布局算法的解释。
看了源码,还是不明白什么"""Choose a Layout by finding the most connected subset of qubits"""
意思!
有没有关于这种映射算法的论文或我可以从中学习的其他资源?