首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取默认EquivalenceLibrary?

如何获取默认EquivalenceLibrary?
EN

Stack Overflow用户
提问于 2021-03-31 11:00:58
回答 1查看 99关注 0票数 0

我想使用Qiskit中的BasisTranslator来处理我的电路到基门。

EquivalenceLibraryBasisTranslator的构造函数参数之一。我尝试创建一个无参数的EquivalenceLibrary()并将其传递给BasisTranslator,但是代码失败了,因为它不能将诸如MCT或CCX之类的门转换为默认基础。

代码语言:javascript
复制
TranspilerError: "Unable to map source basis {('mcx', 4), ('ccx', 3), ('x', 1), ('measure', 1), ('h', 1)} to target basis {'u2', 'snapshot', 'barrier', 'cx', 'u3', 'reset', 'u1', 'measure', 'delay'}

我希望当我尝试运行电路时,Transpiler会使用一些默认的EquivalenceLibrary,因为它既可以运行模拟器,也可以运行实际的硬件。如何获取这样的默认EquivalenceLibrary?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-31 18:46:33

最简单的方法是利用qiskit中包含的会话等价库(位于qiskit.circuit.equivalence_library.SessionEquivalenceLibrary),这是一个预先构建的等价库,其中包含所有标准库门。您可以将其与以下内容一起使用:

代码语言:javascript
复制
from qiskit.circuit.equivalence_library import SessionEquivalenceLibrary as sel
from qiskit.transpiler.passes import BasisTranslator
from qiskit.circuit import QuantumCircuit
from qiskit.converters import circuit_to_dag, dag_to_circuit

basis_gates = ['u2', 'snapshot', 'barrier', 'cx', 'u3', 'reset', 'u1', 'measure', 'delay']
bt_pass = BasisTranslator(sel, basis_gates)

circuit = QuantumCircuit(3)
circuit.ccx(0, 1, 2)


dag_out = bt_pass.run(circuit_to_dag(circuit))
circuit_out = dag_to_circuit(dag_out)

(在即将发布的qiskit-terra >=0.17.0中,您将不再需要在此处转换为dag并直接调用bt_pass(circuit) )

如果您对如何从头开始构建等价库感兴趣,可以查看会话等价库是如何构建的:https://github.com/Qiskit/qiskit-terra/blob/0.16.4/qiskit/circuit/library/standard_gates/equivalence_library.py

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66881062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档