Skip to main content
IBM Quantum Platform

TwoQubitBasisDecomposer

class qiskit.synthesis.TwoQubitBasisDecomposer(gate, basis_fidelity=1.0, euler_basis='U', pulse_optimize=None)

GitHub

Basen: object

Eine Klasse zur Zerlegung von 2-Qubit-Unitarien in eine minimale Anzahl von Verwendungen eines 2-Qubit-Basisgatters.

Parameter

  • gate (Gate) – Zwei-Qubit-Gatter, das bei der KAK-Zerlegung verwendet wird.
  • basis_fidelity (float) – Bei Anwendungen von KAK Gate ist von Treue auszugehen. Der Standardwert ist 1.0.
  • euler_basis (str) – Basisstring, der an OneQubitEulerDecomposer für die Synthese von 1Q. Gültige Optionen sind ['ZYZ', 'ZXZ', 'XYX', 'U', 'U3', 'U1X', 'PSX', 'ZSX', 'RR'].
  • pulse_optimize (bool | None) – Wenn True, versuchen Sie, eine Zerlegung durchzuführen, die die lokalen Einheiten zwischen den Verschränkungsgattern minimiert. Dies führt zu einer Ausnahme, wenn keine optimale Zerlegung durchgeführt wird. Derzeit ist nur [{CX, SX, RZ}] bekannt. Wenn False, versuchen Sie nicht zu optimieren. Wenn None, versuchen Sie die Optimierung, aber melden Sie sich nicht, wenn Sie unbekannt sind.

__call__

__call__(unitary, basis_fidelity=None, approximate=True, use_dag=False, *, _num_basis_uses=None)

GitHub

Zerlegen Sie ein Zwei-Qubit-System unitary über eine feste Basis und SU(2)SU(2) unter Verwendung der besten Näherung, da jede Basisanwendung eine endliche basis_fidelity hat.

Parameter

  • unitary (Operator or ndarray) – 4×44 \times 4 einheitlich zu synthetisieren.
  • basis_fidelity (float or None) – Bei Anwendungen von KAK Gate ist von Treue auszugehen. Falls angegeben, überschreibt basis_fidelity die Angabe bei init.
  • approximate (bool) – Annäherungen, wenn die Basistreue kleiner als 1.0 ist.
  • use_dag (bool) – Bei true wird ein DAGCircuit anstelle von QuantumCircuit zurückgegeben, wenn diese Klasse aufgerufen wird.
  • _num_basis_uses (int) – eine bestimmte Annäherung erzwingen, indem Sie eine Zahl zwischen [0 und 3] eingeben.

Rückgabe

Synthetisierte Quantenschaltung.

Rückgabetyp

QuantumCircuit

Erhöht

QiskitError – wenn pulse_optimize wahr ist, wir aber nicht wissen, wie das geht.


Methoden

decomp0

static decomp0(target)

GitHub

Zerlegen Sie das Ziel ∼Ud(x,y,z)\sim U_d(x, y, z) mit 00 unter Verwendung des Basisgatters. Das Ergebnis UrU_r hat eine Spur:

∣Tr(Ur⋅Utarget†)∣=4∣(cos⁡(x)cos⁡(y)cos⁡(z)+jsin⁡(x)sin⁡(y)sin⁡(z)∣\Big\vert\text{Tr}(U_r\cdot U_\text{target}^{\dag})\Big\vert = 4\Big\vert (\cos(x)\cos(y)\cos(z)+ j \sin(x)\sin(y)\sin(z)\Big\vert

die für alle Ziele und Basen optimal ist

decomp1

decomp1(target)

GitHub

Zerlegen Sie das Ziel ∼Ud(x,y,z)\sim U_d(x, y, z) mit 11 unter Verwendung des Basistors ∼Ud(a,b,c)\sim U_d(a, b, c). Das Ergebnis UrU_r hat eine Spur:

∣Tr(Ur⋅Utarget†)∣=4∣cos⁡(x−a)cos⁡(y−b)cos⁡(z−c)+jsin⁡(x−a)sin⁡(y−b)sin⁡(z−c)∣\Big\vert\text{Tr}(U_r \cdot U_\text{target}^{\dag})\Big\vert = 4\Big\vert \cos(x-a)\cos(y-b)\cos(z-c) + j \sin(x-a)\sin(y-b)\sin(z-c)\Big\vert

die für alle Ziele und Basen mit z==0 oder c==0 optimal ist.

decomp2_supercontrolled

decomp2_supercontrolled(target)

GitHub

Zerlegen Sie das Ziel ∼Ud(x,y,z)\sim U_d(x, y, z) mit 22 unter Verwendung des Basisgatters.

Für die superkontrollierte Basis ∼Ud(π/4,b,0)\sim U_d(\pi/4, b, 0), alle b, ergibt UrU_r die Spur

∣Tr(Ur⋅Utarget†)∣=4cos⁡(z)\Big\vert\text{Tr}(U_r \cdot U_\text{target}^\dag) \Big\vert = 4\cos(z)

die die optimale Annäherung für die Basis der CNOT-Klasse ∼Ud(π/4,0,0)\sim U_d(\pi/4, 0, 0) oder der DCNOT-Klasse ∼Ud(π/4,π/4,0)\sim U_d(\pi/4, \pi/4, 0) und ein beliebiges Ziel darstellt. Sie kann für b≠0b \neq 0 suboptimal sein (d.h. es gibt für jedes Ziel eine exakte Zerlegung unter Verwendung von B∼Ud(π/4,π/8,0)B \sim U_d(\pi/4, \pi/8, 0), aber es muss nicht diese Zerlegung sein). Dies ist eine exakte Zerlegung für die superkontrollierte Basis und das Ziel ∼Ud(x,y,0)\sim U_d(x, y, 0). Keine Garantien für nicht-superkontrollierte Basis.

decomp3_supercontrolled

decomp3_supercontrolled(target)

GitHub

Zerlegen Sie das Ziel mit 33 Verwendungen der Basis. Dies ist eine exakte Zerlegung für die superkontrollierte Basis ∼Ud(π/4,b,0)\sim U_d(\pi/4, b, 0), alle b, und jedes Ziel. Keine Garantien für nicht-superkontrollierte Basis.

num_basis_gates

num_basis_gates(unitary)

GitHub

Berechnet die Anzahl der Basistore, die für eine Zerlegung der unitären Eingabe benötigt werden

traces

traces(target)

GitHub

Geben Sie die erwarteten Spuren ∣Tr(U⋅Utarget†)∣\Big\vert\text{Tr}(U \cdot U_\text{target}^{\dag})\Big\vert für eine unterschiedliche Anzahl von Basisgattern an.

War diese Seite hilfreich?
Melden Sie auf GitHub einen Fehler, einen Tippfehler oder fordern Sie Inhalte an.