大家好:Cirq 提供了一种从数组创建单一门的方法。我尝试在 Qiskit 中做同样的事情,但未能完全成功。这是一个示例代码,其中包含到目前为止我可以组合的内容。另外,有没有办法应用从 q[0] 到 q[1] 的单一受控操作?或者为此目的创建一个特定的标记门以在电路中使用?如果是这样,怎么办?多谢!
from qiskit.extensions import *
U2x2 = np.array([[0.998762, -0.049745], [-0.049745, -0.998762]])
# Still not sure how to use this, though it compiles
gate2x2 = UnitaryGate(U2x2)
# The best I could do so far was this:
# Create the quantum circuit
q = QuantumRegister(2)
c = ClassicalRegister(2)
qc = QuantumCircuit(q, c)
qc.unitary(U2x2, range(1))
qc.measure(q[0], c[0])
Run Code Online (Sandbox Code Playgroud) Qiskit 中有该transpile()
功能(请参阅文档)。我对转译器的最好理解是一种将一组门操作转换为另一组门操作的方法,其目的是在不同的后端运行算法(因为量子位连接性,即架构的几何形状,从一台量子计算机到另一台)。有多种方法可以通过减少冗余和根据等效门重写事物来优化电路,例如将哈达玛门共轭的 CNOT 更改为 CZ 以减少门数。如果硬件后端没有本机 CZ,人们可能还想做完全相反的事情,从 CZ 转到由 Hadamards 共轭的 CNOT。一般来说,这种为了优化某些固定硬件后端的任意电路而进行的转译是一个 QMA 完全问题(例如,参见此处......也许有人使用LEAN来完成类似的事情?)。有时也使用变分方法来近似最佳电路,但我离题了。
一个略有不同但相关的问题:使用Nielsen & Chuang附录 3 中的 Kitaev-Solovay 定理以及 4.5 中的材料,我们知道我们总是可以“有效地”用通用门集逼近任意酉门(这在书,在这里不一定重要)。我认为效率如何是一个悬而未决的问题,但至少有一些上限和下限。
鉴于此,人们期望 Qiskittranspile()
函数能够近似单一门并将门集重构为最佳(最小化)门集以优化电路,但可能会在具有许多非标准门的大型电路中出现问题。但是,即使对于简单的示例,我也无法使其正常工作。例如,三个量子位上的置换矩阵似乎是一个合理的酉近似(有些甚至可以轻松地手动转换为交换门和 X 门)。但 Qiskit 似乎不喜欢这样做,我需要一些帮助来理解原因。举个例子,我们可以在 Qiskit 中定义一个酉(置换)算子,并将其变成量子电路中的门,如下所示:
from qiskit import *
from qiskit.quantum_info import Operator
from qiskit.compiler import transpile
%matplotlib inline
permute = Operator([[0, 0, 1, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 0, 0, 0],
[0, 1, 0, 0, 0, 0, …
Run Code Online (Sandbox Code Playgroud) 我正在使用 colab 作为 qiskit,甚至在使用 pip 安装 pylatexenc 之后,这仍然是一个错误,我也使用了 !pip。这是完整的图片
文献中发现的 CNOT 门的常规矩阵表示为:
CNOT =
\begin{bmatrix}
1 & 0 & 0 & 0\\
0 & 1 & 0 & 0\\
0 & 0 & 0 & 1\\
0 & 0 & 1 & 0
\end{bmatrix}
Run Code Online (Sandbox Code Playgroud)
然而在 Qiskit 中,矩阵表示为 CNOT =
\begin{bmatrix}
1 & 0 & 0 & 0\\
0 & 0 & 0 & 1\\
0 & 0 & 1 & 0\\
0 & 1 & 0 & 0
\end{bmatrix}
Run Code Online (Sandbox Code Playgroud)
这与大端/小端问题有关吗?有没有一种方法可以像文献中恢复的那样来表示我的矩阵?
我试图编写一个脚本,使用 Qiskit 获取有关 IBM Quantum Platform 上作业的当前信息。
我设法使用 JobID 调用当前状态,但似乎没有函数或 API 调用可以显示作业的当前估计等待时间。
此外,虽然我设法收集有关作业当前状态的信息(例如已排队),但我得到的输出为“无”,也许我们也可以设法解决此问题。
有人可以帮我吗?
我尝试包含一个函数来调用估计等待时间,但似乎没有 API 调用。
我正在使用 qbraid 的 qiskit 教程,这是一个基本的 hello world。我发现可以使用其他量子后端而不是 qiskit,但用户界面中没有明确的路径。
是否有命令行或直接方式来搜索其他后端的 API?
我正在使用 Python 3 并且在 jupyter 中工作,当我尝试导入 qiskit 时,显示以下错误:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-2-578b7f7e9727> in <module>
----> 1 import qiskit
~\AppData\Roaming\Python\Python36\site-packages\qiskit\quantum_info\synthesis\two_qubit_decompose.py in __init__(self, unitary_matrix)
169 # D, P = la.eig(M2) # this can fail for certain kinds of degeneracy
170 for i in range(100): # FIXME: this randomized algorithm is horrendous
--> 171 state = np.random.default_rng(i)
172 M2real = state.normal()*M2.real + state.normal()*M2.imag
173 _, P = la.eigh(M2real)
AttributeError: module 'numpy.random' has no attribute 'default_rng'
Run Code Online (Sandbox Code Playgroud) 我想用以下矩阵制作一个量子电路。
如何将该矩阵分解为量子位运算,例如Rotation Y
、Control-NOT
等等?
仅供参考,我读了 Nielsen & Chuang 写的一本名为《量子计算和量子信息》的书,特别是第 4.5 节。
我正在尝试使用 Qiskit 中的 HHL 算法求解线性方程组。我无法理解以下函数的用途。
state_fidelity()
Run Code Online (Sandbox Code Playgroud)
为了理解这一点,我遵循了他们的官方文档。但我还不清楚。
他们像下面的代码一样使用这个函数。
from qiskit.quantum_info state_fidelity, process_fidelity
backend_sim = BasicAer.get_backend('statevector_simulator')
result = execute(circ, backend_sim).result()
state = result.get_statevector(circ)
print(state)
state_fidelity(basis_state('0110', 4), state)
Run Code Online (Sandbox Code Playgroud)
该代码的最后一行生成此输出。
1.0
请帮助我理解这一点。
我开始使用 Qiskit 及其官方教程(Sezon 1),并且使用相同的代码遇到了一些错误,一开始我只需要安装 pylatexenc 但后来我遇到了“模块‘qiskit.circle’没有属性‘draw’”错误,这不是真的,因为我之前使用过它,我在 GitHub 上找到了一些关于它的东西,但没有明确的解决方案,我的代码是:
from qiskit import *
qr = QuantumRegister(2)
cr = ClassicalRegister(2)
circuit = QuantumCircuit(qr, cr)
circuit = QuantumCircuit(qr, cr)
circuit.draw()
[it worked, output:
q0_0:
q0_1:
c0: 2/
]
circuit.h(qr[0])
[output: <qiskit.circuit.instructionset.InstructionSet at 0x12dc159de50>]
circuit.draw(output= 'mpl')
error:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-4-4b6f233c71ed> in <module>
----> 1 circuit.draw(output= 'mpl')
AttributeError: module 'qiskit.circuit' has no attribute 'draw'
Run Code Online (Sandbox Code Playgroud)
我使用 jupiter 和 Python 3.8,如果版本错误,请告诉我应该使用哪个版本以及在哪里下载它,另外,第一个输出circuit.draw()
由于某种原因与原始视频中不同
虽然我导入了plot_histogram
,但我没有得到预期的输出。这是我的代码:
a = QuantumCircuit(1)
a.z(0)
a.x(0)
a.h(0)
a.sdg(0)
a.t(0)
backend = Aer.get_backend('qasm_simulator')
result = execute(a, backend).result()
counts = result.get_counts()
plot_histogram(counts)
print(c)```
Run Code Online (Sandbox Code Playgroud) import numpy as np
from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister
from qiskit import execute
Run Code Online (Sandbox Code Playgroud)
当尝试上面的代码时,我收到以下错误:
ModuleNotFoundError Traceback(最近一次调用最后一次) in () 1 import numpy as np ----> 2 from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister 3 from qiskit importexecute
ModuleNotFoundError:没有名为“qiskit”的模块
qiskit ×12
python ×5
attributes ×1
endianness ×1
import ×1
jupyter ×1
numpy ×1
pip ×1
qbraid ×1
transpiler ×1