Schaltkreisbibliothek
qiskit.circuit.library
Die Schaltkreisbibliothek ist eine Sammlung von Quantenschaltkreisen, die als algorithmische Bausteine, Benchmarking-Werkzeuge und Beispiele dienen, von denen angenommen wird, dass sie klassisch nur schwer zu simulieren sind. Das Ziel besteht darin, Schaltkreise bereitzustellen, die klar definiert, vielseitig einsetzbar und in verschiedenen Arbeitsabläufen leicht wiederverwendbar sind.
Die Kriterien für eine Schaltung in der Bibliothek lauten:
Klar definiert
Die Schaltung weist eine klare Struktur oder einen mathematischen Ablauf auf, der durch eine Abhandlung oder eine Quelle belegt ist.
Weit verbreitet und relevant
Die Schaltung ist eine kanonische oder allgemein anerkannte Wahl für eine genau definierte Aufgabe, dient als Standardreferenz oder gängige Basis oder ist historisch gesehen von grundlegender Bedeutung für einen wesentlichen Teilbereich des Quantencomputings.
Eigenständig
Die Schaltung ist in sich geschlossen, was bedeutet, dass sie effizient und ohne neue externe Abhängigkeiten erstellt werden kann.
Die Elemente in der Schaltkreisbibliothek sind entweder QuantumCircuits oder Instructions, sodass sie leicht untersucht oder in andere Schaltkreise eingebunden werden können. Dies ermöglicht ein schnelles Prototyping und Schaltungsdesign auf höheren Abstraktionsebenen.
Zum Beispiel:
from qiskit.circuit import QuantumCircuit
from qiskit.circuit.library import PauliEvolutionGate
from qiskit.quantum_info import SparsePauliOp
hamiltonian = SparsePauliOp(["ZZI", "IZZ", "IXI"], coeffs=[1, 1, -1])
gate = PauliEvolutionGate(hamiltonian)
circuit = QuantumCircuit(hamiltonian.num_qubits)
circuit.append(gate, circuit.qubits)
circuit.draw("mpl")
Diese Bibliothek ist in verschiedene Abschnitte unterteilt:
Wir unterscheiden zwischen verschiedenen Kategorien von Vorgängen:
Standard-Tore
Dies sind grundlegende Quantengatter, von denen eine Teilmenge in der Regel den Basisgatter-Satz eines Quantencomputers bildet. GateDies sind Einheitsoperationen, die als dargestellt werden. BarrierDie Bibliothek stellt außerdem Standard-Compiler-Direktiven (a) und nicht-unitäre Operationen (wie Measure) bereit.
Abstrakte Operationen
Diese Kategorie umfasst Operationen, die durch eine mathematische Aktion definiert sind, jedoch mit unterschiedlichen Zerlegungen umgesetzt werden können. Beispielsweise bewirkt ein Multi-Control-Gatter XGate eine Umkehrung des Ziel-Qubits, wenn alle Steuer-Qubits den Zustand „ “ annehmen, und es gibt eine Vielzahl konkreter Schaltungen, die diese Operation mithilfe von Gatterelementen auf niedrigerer Ebene umsetzen. InstructionSolche abstrakten Operationen werden als Gate oder dargestellt. Auf diese Weise lässt sich die Schaltung aufbauen, ohne für jeden Block eine konkrete Implementierung festlegen zu müssen, und schließlich kann der Compiler (oder Sie als Benutzer) die optimale Aufgliederung auswählen. Zum Beispiel:
from qiskit.circuit.library import MCXGate
mcx = MCXGate(4)
from qiskit import QuantumCircuit
circuit = QuantumCircuit(5)
circuit.append(mcx, [0, 1, 4, 2, 3])
circuit.draw("mpl")
Bei Schaltungen mit abstrakten Operationen wird der Kontext der Schaltung bei der Transpilierung berücksichtigt. Stehen beispielsweise ungenutzte Qubits zur Verfügung, so können diese verwendet werden, um einen flacheren Schaltkreis zu erhalten:
from qiskit import transpile
small_circuit = QuantumCircuit(5) # here we have no idle qubits
small_circuit.append(mcx, [0, 1, 4, 2, 3])
small_tqc = transpile(small_circuit, basis_gates=["u", "cx"])
print("No aux:", small_tqc.count_ops())
large_circuit = QuantumCircuit(10) # now we will have 5 idle qubits
large_circuit.append(mcx, [0, 1, 4, 2, 3])
large_tqc = transpile(large_circuit, basis_gates=["u", "cx"])
print("With aux:", large_tqc.count_ops())Welche Drucke:
No aux: OrderedDict([('u', 41), ('cx', 36)])
With aux: OrderedDict([('u', 24), ('cx', 18)])Strukturelle Maßnahmen
Diese Vorgänge haben eine eindeutige Untergliederung. Da der Compiler nicht auf einer höheren Ebene über sie nachdenken muss, werden sie als Funktionen implementiert, die ein QuantumCircuit objekt zurückgeben. Zum Beispiel:
from qiskit.circuit.library import real_amplitudes
ansatz = real_amplitudes(5, entanglement="pairwise")
ansatz.draw("mpl")
Standardtore
GateDiese Operationen sind umkehrbare unitäre Gatter und bilden alle eine Unterklasse von. Folglich verfügen sie alle über die Methoden to_matrix(), power(), und control(), die wir im Allgemeinen nur auf unitäre Operationen anwenden können.
Zum Beispiel:
from qiskit.circuit.library import XGate
gate = XGate()
print(gate.to_matrix()) # X gate
print(gate.power(1/2).to_matrix()) # √X gate -- see also the SXGate
print(gate.control(1).to_matrix()) # CX (controlled X) gate[[0.+0.j 1.+0.j]
[1.+0.j 0.+0.j]]
[[0.5+0.5j 0.5-0.5j]
[0.5-0.5j 0.5+0.5j]]
[[1.+0.j 0.+0.j 0.+0.j 0.+0.j]
[0.+0.j 0.+0.j 0.+0.j 1.+0.j]
[0.+0.j 0.+0.j 1.+0.j 0.+0.j]
[0.+0.j 1.+0.j 0.+0.j 0.+0.j]]Die Funktion get_standard_gate_name_mapping() können Sie die verfügbaren Standardtore und -operationen anzeigen.
get_standard_gate_name_mapping
qiskit.circuit.library.get_standard_gate_name_mapping()
Rückgabe eines Wörterbuchs, das den Namen von Standardgattern und -anweisungen auf ein Objekt mit diesem Namen abbildet.
Beispiele
from qiskit.circuit.library import get_standard_gate_name_mapping
gate_name_map = get_standard_gate_name_mapping()
cx_object = gate_name_map["cx"]
print(cx_object)
print(type(cx_object))Instruction(name='cx', num_qubits=2, num_clbits=0, params=[])
_SingletonCXGate1-Qubit-Standardgatter
Kolumne „ 1 “ | Kolumne „ 2 “ |
|---|---|
HGate(*args[, _force_mutable] ) | Ein-Qubit-Hadamard-Tor. |
IGate(*args[, _force_mutable] ) | Identity Gate. |
PhaseGate(Theta[, Bezeichnung] ) | Ein-Qubit-Drehung um die Z-Achse. |
RGate(Theta, Phi[, Bezeichnung] ) | Rotation um die Achse . |
RXGate(Theta[, Bezeichnung] ) | Ein-Qubit-Drehung um die X-Achse. |
RYGate(Theta[, Bezeichnung] ) | Ein-Qubit-Drehung um die Y-Achse. |
RZGate(phi[, Bezeichnung] ) | Ein-Qubit-Drehung um die Z-Achse. |
SGate(*args[, _force_mutable] ) | Einzelqubit-S-Gate ( ). |
SdgGate(*args[, _force_mutable] ) | S-adjungiertes Gatter für ein einzelnes Qubit ( ). |
SXGate(*args[, _force_mutable] ) | Das Ein-Qubit-Gatter Sqrt(X) ( ). |
SXdgGate(*args[, _force_mutable] ) | Das inverse Ein-Qubit-Gatter Sqrt(X). |
TGate(*args[, _force_mutable] ) | Einzelqubit-T-Gatter ( ). |
TdgGate(*args[, _force_mutable] ) | T-adjungiertes Gatter für ein einzelnes Qubit ( ). |
UGate(Theta, Phi, Lam[, Label] ) | Allgemeine Ein-Qubit-Rotation in Form von ZYZ-Euler-Winkeln. |
U1Gate(Theta[, Bezeichnung] ) | Ein-Qubit-Drehung um die Z-Achse. |
U2Gate(phi, lam[, label] ) | Ein-Qubit-Drehung um die X+Z-Achse. |
U3Gate(Theta, Phi, Lam[, Label] ) | Generisches Ein-Qubit-Rotationstor mit 3 Euler-Winkeln. |
XGate(*args[, _force_mutable] ) | Das Ein-Qubit-Pauli-X-Gatter ( ). |
YGate(*args[, _force_mutable] ) | Das Ein-Qubit-Pauli-Y-Gatter ( ). |
ZGate(*args[, _force_mutable] ) | Das Ein-Qubit-Pauli-Z-Gatter ( ). |
2-Qubit-Standardgatter
Kolumne „ 1 “ | Kolumne „ 2 “ |
|---|---|
CHGate(*args[, _force_mutable] ) | Kontrolliertes Hadamard-Tor. |
CPhaseGate(theta[, label, ctrl_state,...] ) | Controlled-Phase-Gate. |
CRXGate(theta[, label, ctrl_state, _base_label] ) | Kontrolliertes RX-Gate. |
CRYGate(theta[, label, ctrl_state, _base_label] ) | Gesteuertes-RY-Gate. |
CRZGate(theta[, label, ctrl_state, _base_label] ) | Kontrolliertes RZ-Gatter. |
CSGate(*args[, _force_mutable] ) | Kontrolliertes S-Gatter. |
CSdgGate(*args[, _force_mutable] ) | Gesteuertes Gate vom Typ „ “. |
CSXGate(*args[, _force_mutable] ) | Gesteuertes-√X-Gate. |
CUGate(Theta, Phi, Lam, Gamma[, Label,...] ) | Kontrolliertes U-Gatter (4-Parameter-Zwei-Qubit-Gatter). |
CU1Gate(theta[, label, ctrl_state, _base_label] ) | Controlled-U1 tor. |
CU3Gate(Theta, Phi, Lam[, Label,...] ) | Controlled-U3 gatter (3-Parameter-Zwei-Qubit-Gatter). |
CXGate(*args[, _force_mutable] ) | Kontrolliertes X-Gate. |
CYGate(*args[, _force_mutable] ) | Kontrolliertes Y-Tor. |
CZGate(*args[, _force_mutable] ) | Kontrolliertes Z-Tor. |
DCXGate(*args[, _force_mutable] ) | Doppel-CX-Gatter. |
ECRGate(*args[, _force_mutable] ) | Ein Kreuzresonanztor mit Echo. |
iSwapGate(*args[, _force_mutable] ) | iSWAP tor. |
RXXGate(Theta[, Bezeichnung] ) | Eine parametrische 2-Qubit-Wechselwirkung (Drehung um XX). |
RYYGate(Theta[, Bezeichnung] ) | Eine parametrische 2-Qubit-Wechselwirkung (Drehung um YY). |
RZXGate(Theta[, Bezeichnung] ) | Eine parametrische 2-Qubit-Wechselwirkung (Drehung um ZX). |
RZZGate(Theta[, Bezeichnung] ) | Eine parametrische 2-Qubit-Wechselwirkung (Drehung um ZZ). |
SwapGate(*args[, _force_mutable] ) | Das SWAP-Gate. |
XXMinusYYGate(Theta[, Beta, Bezeichnung] ) | XX-YY-Interaktionstor. |
XXPlusYYGate(Theta[, Beta, Bezeichnung] ) | XX+YY Interaktionsgatter. |
3+ Qubit-Standardgatter
Kolumne „ 1 “ | Kolumne „ 2 “ |
|---|---|
C3SXGate(*args[, _force_mutable] ) | Das 3-Qubit-gesteuerte sqrt-X-Gatter. |
C3XGate(*args[, _force_mutable] ) | Das X-Gate wird über 3 Qubits gesteuert. |
C4XGate(*args[, _force_mutable] ) | Das 4-Qubit-gesteuerte X-Gatter. |
CCXGate(*args[, _force_mutable] ) | CCX-Tor, auch bekannt als Toffoli-Tor. |
CCZGate(*args[, _force_mutable] ) | CCZ-Tor. |
CSwapGate(*args[, _force_mutable] ) | Controlled-SWAP-Gate, auch Fredkin-Gate genannt. |
RCCXGate(*args[, _force_mutable] ) | Das vereinfachte Toffoli-Tor, das auch als Margolus-Tor bezeichnet wird. |
RC3XGate(*args[, _force_mutable] ) | Das vereinfachte 3-kontrollierte Toffoli-Tor. |
Globale Standardtore
Das folgende Gatter ist global und benötigt keine Qubit-Argumente.
Kolumne „ 1 “ | Kolumne „ 2 “ |
|---|---|
GlobalPhaseGate(Phase[, Bezeichnung] ) | Das globale Phasengatter ( ). |
Standardrichtlinien
Direktiven sind Operationen auf dem Quantenstapel, die vom Backend oder dem Transpiler interpretiert werden sollen. Im Allgemeinen kann der Transpiler oder das Backend diese optional ignorieren, wenn es keine Implementierung für sie gibt.
Standardvorgänge
Operationen sind nicht umkehrbare Änderungen des Quantenzustands des Schaltkreises.
Zusätzlich gibt es eine Measureverallgemeinerte gemeinsame Pauli-Messung, die als Grundoperation in der Pauli-basierten Berechnung verwendet wird.
Kolumne „ 1 “ | Kolumne „ 2 “ |
|---|---|
PauliProductMeasurement(Pauli[, Label] ) | Pauli Produkt Messanleitung. |
Verallgemeinerte Gates
Dieses Modul erweitert die Standardgatter um eine breitere Sammlung von Grundgattern. Dazu gehören Gatter, die variabel sind, d. h. die Anzahl der Qubits hängt von der Eingabe ab. Zum Beispiel:
from qiskit.circuit.library import DiagonalGate
diagonal = DiagonalGate([1, 1j])
print(diagonal.num_qubits)
diagonal = DiagonalGate([1, 1, 1, -1])
print(diagonal.num_qubits)der druckt:
1
2Kolumne „ 1 “ | Kolumne „ 2 “ |
|---|---|
DiagonalGate(diag) | Ein allgemeines diagonales Quantengatter. |
PermutationGate(Muster) | Ein Tor, das Qubits vertauscht. |
MCMTGate(Gatter, Anzahl_Steuer-Qubits,...[,...] ) | Das mehrfach gesteuerte Mehrzieltor, für ein beliebiges einfach gesteuertes Zieltor. |
MCPhaseGate(lam, num_ctrl_qubits[, label,...] ) | Multi-Controlled-Phase-Gate. |
MCXGate( [num_ctrl_qubits, label,...] ) | Das allgemeine, mehrfach gesteuerte X-Gate. |
MSGate(num_qubits, theta[, label] ) | Das Mølmer-Sørensen-Tor. |
RVGate(v_x, v_y, v_z[, Basis] ) | Drehung um eine beliebige Drehachse , wobei der Drehwinkel in Radianten ist. |
PauliGate(Bezeichnung) | Ein Multi-Qubit-Pauli-Gatter. |
PauliProductRotationGate(Pauli, Winkel[, Bezeichnung] ) | Eine generische Pauli-Rotation. |
LinearFunction(linear[, validate_input] ) | Eine lineare reversible Schaltung mit n Qubits. |
Isometry(Isometrie, num_ancillas_zero,...[,...] ) | Zersetzung beliebiger Isometrien von bis qubits. |
UnitaryGate(Daten[, Bezeichnung, Eingabeprüfung,...] ) | Klasse für Quanten-Gates, die durch eine unitäre Matrix spezifiziert sind. |
UCGate(gate_list[, up_to_diagonal, mux_simp] ) | Gleichmäßig gesteuertes Gatter (auch Multiplex-Gatter genannt). |
UCPauliRotGate(Winkel_Liste, Drehachse) | Gleichmäßig kontrollierte Pauli-Rotationen. |
UCRXGate(Winkel_Liste) | Gleichmäßig kontrollierte Pauli-X-Drehungen. |
UCRYGate(Winkel_Liste) | Gleichmäßig kontrollierte Pauli-Y-Drehungen. |
UCRZGate(Winkel_Liste) | Gleichmäßig kontrollierte Pauli-Z-Drehungen. |
InstructionDie oben genannten Objekte leiten Gate oder ab, wodurch der Compiler sie auf einer abstrakten Ebene analysieren kann. Wir empfehlen daher, diese anstelle der folgenden zu verwenden, die abgeleitet werden QuantumCircuit und vorzeitig konstruiert werden.
Kolumne „ 1 “ | Kolumne „ 2 “ |
|---|---|
Diagonal(diag) | Schaltung zur Durchführung einer diagonalen Transformation. |
MCMT(Gate, Anzahl_Steuer-Qubits, Anzahl_Ziel-Qubits) | Das mehrfach gesteuerte Mehrzieltor, für ein beliebiges einfach gesteuertes Zieltor. |
MCMTVChain(Gatter, Anzahl_Steuer-Qubits,...) | Die MCMT-Implementierung unter Verwendung der CCX-V-Kette. |
MCXGrayCode( [num_ctrl_qubits, label,...] ) | Implementieren Sie das mehrfach gesteuerte X-Gatter mit Hilfe des Gray-Codes. |
MCXRecursive( [num_ctrl_qubits, label,...] ) | Implementierung des mehrfach gesteuerten X-Gatters durch Rekursion. |
MCXVChain( [num_ctrl_qubits, dirty_ancillas,...] ) | Implementierung des mehrfach gesteuerten X-Gatters mit einer V-Kette von CX-Gattern. |
Permutation(num_qubits[, Muster, Startwert] ) | Eine n_qubit-Schaltung, die Qubits vertauscht. |
GMS(num_qubits, theta) | Globales Mølmer-Sørensen-Tor. |
GR(num_qubits, theta, phi) | Globales R-Tor. |
GRX(num_qubits, theta) | Globales RX-Gate. |
GRY(num_qubits, theta) | Globales RY-Gate. |
GRZ(num_qubits, phi) | Globales RZ-Tor. |
Boolesche Logik
GateDiese implementieren boolesche Logikoperationen, wie beispielsweise die logische or einer Menge von Qubit-Zuständen.
Kolumne „ 1 “ | Kolumne „ 2 “ |
|---|---|
AndGate(num_variable_qubits[, flags] ) | Ein Gatter, das die logische UND-Verknüpfung einer Anzahl von Qubits darstellt. |
OrGate(num_variable_qubits[, flags] ) | Ein Gatter, das die logische ODER-Verknüpfung mit einer Anzahl von Qubits darstellt. |
BitwiseXorGate(Anzahl_Qubits, Betrag) | Ein n-Qubit-Gatter zur bitweisen Xor-Verknüpfung des Eingangs mit einer ganzen Zahl amount. |
InnerProductGate(Anzahl der Qubits) | Eine 2n-qubit Boolesche Funktion, die das innere Produkt von zwei n-Qubit-Vektoren über berechnet. |
Die oben genannten Objekte leiten diesen Typ ab Gate (bzw. geben ihn zurück), wodurch der Compiler sie auf einer abstrakten Ebene analysieren kann. Wir empfehlen daher, diese anstelle der folgenden zu verwenden, die abgeleitet werden QuantumCircuit und vorzeitig erstellt werden.
Kolumne „ 1 “ | Kolumne „ 2 “ |
|---|---|
AND(num_variable_qubits[, flags, mcx_mode] ) | Ein Schaltkreis, der die logische UND-Verknüpfung einer Anzahl von Qubits durchführt. |
OR(num_variable_qubits[, flags, mcx_mode] ) | Ein Schaltkreis, der die logische ODER-Verknüpfung einer Anzahl von Qubits durchführt. |
XOR(num_qubits[, amount, seed] ) | Eine n_qubit-Schaltung zur bitweisen Xor-Verknüpfung der Eingabe mit einer ganzen Zahl amount. |
InnerProduct(Anzahl der Qubits) | Eine 2n-qubit Boolesche Funktion, die das innere Produkt von zwei n-Qubit-Vektoren über berechnet. |
Eine zufällige bitweise xor Schaltung kann direkt mit erzeugt werden:
Kolumne „ 1 “ | Kolumne „ 2 “ |
|---|---|
random_bitwise_xor(num_qubits, seed) | Erstellen Sie eine zufällige BitwiseXorGate. |
Basisänderung
Diese Gatter führen Basistransformationen der Qubitzustände durch. Bei der Quanten-Fourier-Transformation (QFT) wird beispielsweise zwischen der Berechnungsbasis und der Fourier-Basis transformiert.
Kolumne „ 1 “ | Kolumne „ 2 “ |
|---|---|
QFTGate(Anzahl der Qubits) | Quantum Fourier Transform Gate. |
GateDas oben genannte Objekt leitet sich ab, wodurch der Compiler es auf einer abstrakten Ebene analysieren kann. Wir empfehlen daher, dies anstelle der folgenden Variante zu verwenden, die abgeleitet wird QuantumCircuit und vorzeitig aufgebaut wird.
Kolumne „ 1 “ | Kolumne „ 2 “ |
|---|---|
QFT( [Anzahl_der_Qubits, Näherungsgrad,...] ) | Quanten-Fourier-Transformations-Schaltung. |
Arithmetische Operatoren
Diese Gatter und Schaltungen führen klassische arithmetische Operationen wie Addition oder Multiplikation aus.
Adders
Addierer berechnen die Summe von zwei -qubit-Registern, d. h
wobei die Größe des Ausgangsregisters von der Art des verwendeten Addierers abhängt.
Kolumne „ 1 “ | Kolumne „ 2 “ |
|---|---|
ModularAdderGate(Anzahl der Zustands-Qubits[, Bezeichnung] ) | Berechnen Sie die Summe modulo von zwei -großen Qubit-Registern. |
HalfAdderGate(Anzahl der Zustands-Qubits[, Bezeichnung] ) | Berechnen Sie die Summe von zwei gleich großen Qubit-Registern, einschließlich eines Übertragsbits. |
FullAdderGate(Anzahl der Zustands-Qubits[, Bezeichnung] ) | Berechnen Sie die Summe zweier -großer Qubit-Register, einschließlich Carry-In- und -Out-Bits. |
GateDie oben genannten Objekte leiten sich ab, was es dem Compiler ermöglicht, auf abstrakter Ebene über sie zu urteilen. Wir empfehlen daher, diese anstelle der folgenden zu verwenden, die abgeleitet werden QuantumCircuit und vorzeitig erstellt werden.
Kolumne „ 1 “ | Kolumne „ 2 “ |
|---|---|
DraperQFTAdder(Anzahl_Zustands-Qubits[, Typ, Name] ) | Eine Schaltung, die QFT verwendet, um die Addition von zwei Qubit-Registern an Ort und Stelle durchzuführen. |
CDKMRippleCarryAdder(Anzahl der Zustands-Qubits[,...] ) | Eine Ripple-Carry-Schaltung zur Durchführung von In-Place-Addition auf zwei Qubit-Registern. |
VBERippleCarryAdder(Anzahl der Zustands-Qubits[,...] ) | Der VBE-Ripple-Carry-Addierer [1]. |
Multiplikatoren
Multiplikatoren berechnen das Produkt zweier -qubit-Register, d. h
wobei die Anzahl der Bits ist, die zur Darstellung des Ergebnisses verwendet werden.
Kolumne „ 1 “ | Kolumne „ 2 “ |
|---|---|
MultiplierGate(Anzahl der Zustands-Qubits[,...] ) | Berechne das Produkt aus zwei gleich großen Qubit-Registern in ein neues Register. |
GateDas oben genannte Objekt leitet sich ab, wodurch der Compiler es auf einer abstrakten Ebene analysieren kann. Wir empfehlen daher, diese zu verwenden, anstatt die folgenden, die abgeleitet werden QuantumCircuit und vorzeitig erstellt werden.
Kolumne „ 1 “ | Kolumne „ 2 “ |
|---|---|
HRSCumulativeMultiplier(Anzahl der Zustands-Qubits[,...] ) | Eine Multiplikationsschaltung zur Speicherung des Produkts zweier Eingangsregister an einer anderen Stelle. |
RGQFTMultiplier(Anzahl der Zustands-Qubits[,...] ) | Eine QFT-Multiplikationsschaltung zur Speicherung des Produkts zweier Eingangsregister an einer anderen Stelle. |
Amplitudenfunktionen
Eine Amplitudenfunktion approximiert eine Funktion , die auf die Amplituden von Qubits angewendet wird. Siehe die Klassendoku für weitere Informationen.
Kolumne „ 1 “ | Kolumne „ 2 “ |
|---|---|
LinearAmplitudeFunctionGate(...[, ...]) | Eine Schaltung, die eine (stückweise) lineare Funktion auf Qubit-Amplituden implementiert. |
GateDas oben genannte Objekt leitet sich ab, wodurch der Compiler es auf einer abstrakten Ebene analysieren kann. Wir empfehlen daher, dies anstelle der folgenden Variante zu verwenden, die abgeleitet wird QuantumCircuit und vorzeitig aufgebaut wird.
Kolumne „ 1 “ | Kolumne „ 2 “ |
|---|---|
LinearAmplitudeFunction(Anzahl der Zustands-Qubits,...) | Eine Schaltung, die eine (stückweise) lineare Funktion auf Qubit-Amplituden implementiert. |
Funktionale Pauli-Rotationen
Funktionale Pauli-Drehungen setzen Operationen der Form
unter Verwendung von Pauli- Rotationen für verschiedene Arten von Funktionen , wie lineare, polynomiale oder stückweise Versionen dieser Funktionen. Sie ähneln den obigen Amplitudenfunktionen, jedoch ohne Vor- und Nachbearbeitung für den Bereich und das Bild der Zielfunktion.
Kolumne „ 1 “ | Kolumne „ 2 “ |
|---|---|
LinearPauliRotationsGate(Anzahl der Zustands-Qubits[,...] ) | Linear gesteuerte X-, Y- oder Z-Drehung. |
PolynomialPauliRotationsGate(Anzahl der Zustands-Qubits) | Ein Tor, das polynomiale Pauli-Drehungen implementiert. |
PiecewiseLinearPauliRotationsGate([...]) | Stückweise, linear gesteuerte Pauli-Drehungen. |
PiecewisePolynomialPauliRotationsGate(...[, ...]) | Stückweise polynomial gesteuerte Pauli-Drehungen. |
PiecewiseChebyshevGate(f_x, num_state_qubits) | Stückweise Tschebyscheff-Annäherung an eine Eingangsfunktion. |
GateDie oben genannten Objekte leiten sich ab, was es dem Compiler ermöglicht, auf abstrakter Ebene über sie zu urteilen. Wir empfehlen daher, diese anstelle der folgenden zu verwenden, die abgeleitet werden QuantumCircuit und vorzeitig erstellt werden.
Kolumne „ 1 “ | Kolumne „ 2 “ |
|---|---|
FunctionalPauliRotations( [Anzahl der Zustands-Qubits,...] ) | Basisklasse für funktionale Pauli-Drehungen. |
LinearPauliRotations( [Anzahl der Zustands-Qubits,...] ) | Linear gesteuerte X-, Y- oder Z-Drehung. |
PolynomialPauliRotations( [Anzahl der Zustands-Qubits,...] ) | Ein Schaltkreis, der polynomiale Pauli-Drehungen implementiert. |
PiecewiseLinearPauliRotations([...]) | Stückweise, linear gesteuerte Pauli-Drehungen. |
PiecewisePolynomialPauliRotations([...]) | Stückweise polynomial gesteuerte Pauli-Drehungen. |
PiecewiseChebyshev(f_x[, Grad,...] ) | Stückweise Tschebyscheff-Annäherung an eine Eingangsfunktion. |
Andere arithmetische Funktionen
Hier finden Sie weitere arithmetische Schaltungen. Weitere Einzelheiten finden Sie in den Dokumentationen der einzelnen Klassen.
Kolumne „ 1 “ | Kolumne „ 2 “ |
|---|---|
ExactReciprocalGate(Anzahl der Zustands-Qubits, Skalierung) | Implementiert eine exakte reziproke Funktion. |
IntegerComparatorGate(Anzahl der Zustands-Qubits, Wert) | Führen Sie eine (oder ) auf einem Qubit-Register gegen eine klassische ganze Zahl durch. |
QuadraticFormGate( [num_result_qubits,...] ) | Implementiert eine quadratische Form auf binären Variablen, die in Qubit-Registern kodiert sind. |
WeightedSumGate(Anzahl der Zustands-Qubits[, Gewichte,...] ) | Ein Gatter zur Berechnung der gewichteten Summe von Qubit-Registern. |
GateDie oben genannten Objekte leiten sich ab, was es dem Compiler ermöglicht, auf abstrakter Ebene über sie zu urteilen. Wir empfehlen daher, diese anstelle der folgenden zu verwenden, die abgeleitet werden QuantumCircuit und vorzeitig erstellt werden.
Kolumne „ 1 “ | Kolumne „ 2 “ |
|---|---|
ExactReciprocal(Anzahl der Zustands-Qubits, Skalierung[,...] ) | Exakter Kehrwert |
IntegerComparator( [Anzahl der Zustands-Qubits, Wert,...] ) | Ganzzahliger Komparator. |
QuadraticForm( [num_result_qubits,...] ) | Implementiert eine quadratische Form auf binären Variablen, die in Qubit-Registern kodiert sind. |
WeightedAdder( [Anzahl der Zustands-Qubits, Gewichte, Name] ) | Eine Schaltung zur Berechnung der gewichteten Summe von Qubit-Registern. |
Spezifische Quantenschaltungen
Die folgenden Gatter und Quantenschaltungen definieren spezifische Operationen von Interesse:
Kolumne „ 1 “ | Kolumne „ 2 “ |
|---|---|
fourier_checking(f, g) | Fourier-Kontrollschaltung. |
hidden_linear_function(Adjazenzmatrix) | Schaltung zur Lösung des Problems der verborgenen linearen Funktion. |
iqp(Wechselwirkungen) | IQP-Schaltung (Instantaneous Quantum Polynomial Time). |
random_iqp(num_qubits[, seed] ) | Ein zufälliger instantaner Quantenpolynomialzeit-Schaltkreis (IQP). |
quantum_volume(num_qubits[, Tiefe, Startwert] ) | Ein Quanten-Volumenmodell-Schaltkreis. |
phase_estimation(Anzahl der Auswertungs-Qubits, unitär) | Schaltung zur Phasenschätzung. |
grover_operator(Oracle[, state_preparation,...] ) | Konstruieren Sie den Grover-Operator. |
unitary_overlap(unitary1, unitary2[, ...]) | Schaltung, die die Überschneidung zwischen zwei Einheiten zurückgibt . |
GraphStateGate(Adjazenzmatrix) | Ein Gatter, das einen Graphzustand darstellt. |
PauliEvolutionGate(Operator[, Zeit, Bezeichnung,...] ) | Zeitliche Entwicklung eines aus Paulis bestehenden Operators. |
HamiltonianGate(Datum, Uhrzeit[, Bezeichnung] ) | Klasse zur Darstellung der Entwicklung durch einen Hamilton-Operator als Tor. |
Im Folgenden werden die gleichen Operationen wie bei den Klassen angeboten, die sich von QuantumCircuit. Für eine bessere Laufzeit und Compilerleistung empfehlen wir jedoch die Verwendung der oben genannten Funktionen und Gatter.
Kolumne „ 1 “ | Kolumne „ 2 “ |
|---|---|
FourierChecking(f, g) | Fourier-Kontrollschaltung. |
GraphState(Adjazenzmatrix) | Schaltung zur Vorbereitung eines Diagrammzustands. |
HiddenLinearFunction(Adjazenzmatrix) | Schaltung zur Lösung des Problems der verborgenen linearen Funktion. |
IQP(Wechselwirkungen) | Instantane Quantenpolynomschaltung (IQP). |
QuantumVolume(num_qubits[, Tiefe, Startwert,...] ) | Ein Quanten-Volumenmodell-Schaltkreis. |
PhaseEstimation(Anzahl der Auswertungs-Qubits, unitär) | Schaltung zur Phasenschätzung. |
GroverOperator(Oracle[, state_preparation,...] ) | Der Betreiber Grover. |
UnitaryOverlap(unitary1, unitary2[, ...]) | Schaltung, die die Überschneidung zwischen zwei Einheiten zurückgibt . |
N-lokale Schaltungen
Die folgenden Funktionen geben einen parametrisierten QuantumCircuit zurück, der als Ansatz in einer breiten Palette von Variationsquantenalgorithmen verwendet werden kann.
Wir können zum Beispiel einen Variationskreislauf aufbauen
from qiskit.circuit.library import efficient_su2
num_qubits = 4
ansatz = efficient_su2(num_qubits, entanglement="pairwise")
ansatz.draw("mpl")
und kombinieren sie mit
from qiskit.circuit.library import zz_feature_map
circuit = zz_feature_map(num_qubits)
circuit.barrier()
circuit.compose(ansatz, inplace=True)
circuit.draw("mpl")
um eine Schaltung für die Variationsquantenklassifizierung zu erhalten.
Die folgenden Funktionen konstruieren alle Variationsschaltungen und sind für eine schnelle Konstruktion optimiert:
Kolumne „ 1 “ | Kolumne „ 2 “ |
|---|---|
n_local(Anzahl_Qubits, Rotationsblöcke,...[,...] ) | Konstruieren Sie einen n-lokalen Variationskreis. |
efficient_su2(num_qubits[, su2_gates,...] ) | Die hardware-effiziente 2-Lokal-Schaltung. |
real_amplitudes(Anzahl der Qubits[, Verschränkung,...] ) | Konstruieren Sie eine 2-lokale Schaltung mit reellen Amplituden. |
pauli_two_design(num_qubits[, reps, seed,...] ) | Konstruieren Sie einen Pauli-2-Entwurf-Ansatz. |
excitation_preserving(num_qubits[, mode,...] ) | Der heuristische anregungserhaltende Wellenfunktionsansatz. |
qaoa_ansatz(Kosten_Operator[, Wiederholungen,...] ) | Ein verallgemeinerter QAOA-Quantenschaltkreis mit einer Unterstützung von benutzerdefinierten Anfangszuständen und Mischern. |
hamiltonian_variational_ansatz(Hamiltonian) | Konstruieren Sie einen Hamiltonschen Variationsansatz. |
evolved_operator_ansatz(Betreiber[, Vertreter, …] ) | Konstruieren Sie einen Ansatz aus Operatorentwicklungen. |
Wir empfehlen die Verwendung der oben genannten Funktionen, unterstützen aber auch weiterhin die folgenden BlueprintCircuit, die die Schaltkreise in einen Block verpacken und Inplace-Mutationen der Schaltkreise ermöglichen:
Kolumne „ 1 “ | Kolumne „ 2 “ |
|---|---|
NLocal( [Anzahl_Qubits, Rotationsblöcke,...] ) | Die n-örtliche Schaltkreisklasse. |
TwoLocal( [Anzahl_Qubits, Rotationsblöcke,...] ) | Die Zweilokalschaltung. |
PauliTwoDesign( [num_qubits, reps, seed,...] ) | Der Pauli Two-Design Ansatz. |
RealAmplitudes( [Anzahl der Qubits, Verschränkung,...] ) | Der 2-Lokal-Schaltkreis mit reellen Amplituden. |
EfficientSU2( [num_qubits, su2_gates,...] ) | Die hardware-effiziente SU(2)-2-local-Schaltung. |
EvolvedOperatorAnsatz( [Betreiber, Vertreter, …] ) | Der evolvierte Operator-Ansatz. |
ExcitationPreserving( [num_qubits, mode,...] ) | Der heuristische anregungserhaltende Wellenfunktionsansatz. |
QAOAAnsatz( [Kosten_Operator, Wiederholungen,...] ) | Ein verallgemeinerter QAOA-Quantenschaltkreis mit einer Unterstützung von benutzerdefinierten Anfangszuständen und Mischern. |
Datenkodierungsschaltungen
Die folgenden Funktionen geben eine parametrisierte QuantumCircuit zurück, die als Datenkodierungsschaltungen in einer Reihe von variablen Quantenalgorithmen verwendet werden können:
Kolumne „ 1 “ | Kolumne „ 2 “ |
|---|---|
pauli_feature_map(Merkmal_Dimension[, Wiederholungen,...] ) | Der Pauli-Expansionskreislauf. |
z_feature_map(Merkmal_Dimension[, Wiederholungen,...] ) | Der Pauli-Z-Evolutionskreis erster Ordnung. |
zz_feature_map(Merkmal_Dimension[, Wiederholungen,...] ) | Pauli-Z-Evolutionskreis zweiter Ordnung. |
Wir empfehlen die Verwendung der oben genannten Funktionen, unterstützen aber auch weiterhin die folgenden BlueprintCircuit, die die Schaltkreise in einen Block verpacken und Inplace-Mutationen der Schaltkreise ermöglichen:
Kolumne „ 1 “ | Kolumne „ 2 “ |
|---|---|
PauliFeatureMap( [Merkmal_Dimension, Wiederholungen,...] ) | Der Kreislauf der Pauli-Erweiterung. |
ZFeatureMap(Merkmal_Dimension[, Wiederholungen,...] ) | Der Pauli-Z-Evolutionskreis erster Ordnung. |
ZZFeatureMap(Merkmal_Dimension[, Wiederholungen,...] ) | Pauli-Z-Evolutionskreis zweiter Ordnung. |
Datenaufbereitungsschaltungen
Die folgenden Operationen werden für die Vorbereitung des Status verwendet:
Kolumne „ 1 “ | Kolumne „ 2 “ |
|---|---|
StatePreparation(params[, num_qubits,...] ) | Vorbereitung eines Zustands mit komplexer Amplitude. |
Initialize(params[, num_qubits, normalize] ) | Komplexe Amplitudeninitialisierung. |
Oracle
Ein "Orakel" kann sich auf eine Vielzahl von Black-Box-Operationen mit Quantenzuständen beziehen. Hier betrachten wir Orakel, die boolesche Funktionen über Phasenumkehrungen implementieren
oder Bit-flips
Diese sind implementiert in
Kolumne „ 1 “ | Kolumne „ 2 “ |
|---|---|
PhaseOracleGate(Ausdruck[, var_order, Bezeichnung] ) | Implementiert ein Phasenorakel. |
BitFlipOracleGate(Ausdruck[, var_order, Bezeichnung] ) | Implementiert ein Bit-flip-Orakel |
und ein wichtiger Baustein für den Grover-Algorithmus (siehe grover_operator()).
Neben der Gate-basierten Implementierung unterstützen wir auch die QuantumCircuit-Version des Phasenumkehr-Orakels
Kolumne „ 1 “ | Kolumne „ 2 “ |
|---|---|
PhaseOracle(Ausdruck[, var_order] ) | Phase Oracle. |
Schablonen-Schaltungen
Templates sind Funktionen, die Schaltkreise zurückgeben, die die Identität berechnen. Sie werden bei der Optimierung von Schaltkreisen verwendet, wo die Übereinstimmung mit einem Teil der Schablone es dem Compiler ermöglicht, die Übereinstimmung durch die Umkehrung des Restes der Schablone zu ersetzen.
In diesem Beispiel wird die Identitätskonstante in einer Vorlage geprüft:
from qiskit.circuit.library.templates import template_nct_4b_1
from qiskit.quantum_info import Operator
import numpy as np
template = template_nct_4b_1()
identity = np.identity(2 ** len(template.qubits), dtype=complex)
data = Operator(template).data
np.allclose(data, identity) # True, template_nct_4b_1 is the identityNCT-Vorlagenschaltungen (Not-CNOT-Toffoli)
Schaltungsvorlagen für XGate, CXGate, und CCXGate (Toffoli-)Gatter.
Quellenangaben:
Maslov, D. und Dueck, G. W. und Miller, D. M., Techniken für die Synthese von reversiblen Toffoli-Netzwerken, 2007 https://dx.doi.org/10.1145/1278349.1278355
template_nct_2a_1
qiskit.circuit.library.templates.nct.template_nct_2a_1()
Vorlage 2a_1:
┌───┐┌───┐
q_0: ┤ X ├┤ X ├
└───┘└───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_2a_2
qiskit.circuit.library.templates.nct.template_nct_2a_2()
Vorlage 2a_2:
q_0: ──■────■──
┌─┴─┐┌─┴─┐
q_1: ┤ X ├┤ X ├
└───┘└───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_2a_3
qiskit.circuit.library.templates.nct.template_nct_2a_3()
Vorlage 2a_3:
q_0: ──■────■──
│ │
q_1: ──■────■──
┌─┴─┐┌─┴─┐
q_2: ┤ X ├┤ X ├
└───┘└───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_4a_1
qiskit.circuit.library.templates.nct.template_nct_4a_1()
Vorlage 4a_1:
q_0: ───────■─────────■──
│ │
q_1: ──■────┼────■────┼──
│ │ │ │
q_2: ──■────■────■────■──
│ ┌─┴─┐ │ ┌─┴─┐
q_3: ──┼──┤ X ├──┼──┤ X ├
┌─┴─┐└───┘┌─┴─┐└───┘
q_4: ┤ X ├─────┤ X ├─────
└───┘ └───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_4a_2
qiskit.circuit.library.templates.nct.template_nct_4a_2()
Vorlage 4a_2:
q_0: ──■─────────■───────
│ │
q_1: ──■────■────■────■──
│ ┌─┴─┐ │ ┌─┴─┐
q_2: ──┼──┤ X ├──┼──┤ X ├
┌─┴─┐└───┘┌─┴─┐└───┘
q_3: ┤ X ├─────┤ X ├─────
└───┘ └───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_4a_3
qiskit.circuit.library.templates.nct.template_nct_4a_3()
Vorlage 4a_3:
q_0: ──■────■────■────■──
│ ┌─┴─┐ │ ┌─┴─┐
q_1: ──┼──┤ X ├──┼──┤ X ├
┌─┴─┐└───┘┌─┴─┐└───┘
q_2: ┤ X ├─────┤ X ├─────
└───┘ └───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_4b_1
qiskit.circuit.library.templates.nct.template_nct_4b_1()
Vorlage 4b_1:
q_0: ───────■─────────■──
│ │
q_1: ──■────┼────■────┼──
│ │ │ │
q_2: ──■────■────■────■──
┌─┴─┐┌─┴─┐┌─┴─┐┌─┴─┐
q_3: ┤ X ├┤ X ├┤ X ├┤ X ├
└───┘└───┘└───┘└───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_4b_2
qiskit.circuit.library.templates.nct.template_nct_4b_2()
Vorlage 4b_2:
q_0: ──■─────────■───────
│ │
q_1: ──■────■────■────■──
┌─┴─┐┌─┴─┐┌─┴─┐┌─┴─┐
q_2: ┤ X ├┤ X ├┤ X ├┤ X ├
└───┘└───┘└───┘└───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_5a_1
qiskit.circuit.library.templates.nct.template_nct_5a_1()
Vorlage 5a_1:
q_0: ──■────■────■────■────■──
│ ┌─┴─┐ │ ┌─┴─┐ │
q_1: ──■──┤ X ├──■──┤ X ├──┼──
┌─┴─┐└───┘┌─┴─┐└───┘┌─┴─┐
q_2: ┤ X ├─────┤ X ├─────┤ X ├
└───┘ └───┘ └───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_5a_2
qiskit.circuit.library.templates.nct.template_nct_5a_2()
Vorlage 5a_2:
q_0: ──■─────────■─────────■──
│ ┌───┐ │ ┌───┐ │
q_1: ──■──┤ X ├──■──┤ X ├──┼──
┌─┴─┐└───┘┌─┴─┐└───┘┌─┴─┐
q_2: ┤ X ├─────┤ X ├─────┤ X ├
└───┘ └───┘ └───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_5a_3
qiskit.circuit.library.templates.nct.template_nct_5a_3()
Vorlage 5a_3:
q_0: ───────■─────────■────■──
┌─┴─┐ ┌─┴─┐ │
q_1: ──■──┤ X ├──■──┤ X ├──┼──
┌─┴─┐└───┘┌─┴─┐└───┘┌─┴─┐
q_2: ┤ X ├─────┤ X ├─────┤ X ├
└───┘ └───┘ └───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_5a_4
qiskit.circuit.library.templates.nct.template_nct_5a_4()
Vorlage 5a_4:
┌───┐ ┌───┐
q_0: ──■──┤ X ├──■──┤ X ├
┌─┴─┐└───┘┌─┴─┐├───┤
q_1: ┤ X ├─────┤ X ├┤ X ├
└───┘ └───┘└───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_6a_1
qiskit.circuit.library.templates.nct.template_nct_6a_1()
Vorlage 6a_1:
┌───┐ ┌───┐ ┌───┐
q_0: ──■──┤ X ├──■──┤ X ├──■──┤ X ├
┌─┴─┐└─┬─┘┌─┴─┐└─┬─┘┌─┴─┐└─┬─┘
q_1: ┤ X ├──■──┤ X ├──■──┤ X ├──■──
└───┘ └───┘ └───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_6a_2
qiskit.circuit.library.templates.nct.template_nct_6a_2()
Vorlage 6a_2:
q_0: ──■────■────■────■────■────■──
│ ┌─┴─┐ │ ┌─┴─┐ │ ┌─┴─┐
q_1: ──■──┤ X ├──■──┤ X ├──■──┤ X ├
┌─┴─┐└─┬─┘┌─┴─┐└─┬─┘┌─┴─┐└─┬─┘
q_2: ┤ X ├──■──┤ X ├──■──┤ X ├──■──
└───┘ └───┘ └───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_6a_3
qiskit.circuit.library.templates.nct.template_nct_6a_3()
Vorlage 6a_3:
q_0: ───────■─────────■────■────■──
┌─┴─┐ ┌─┴─┐ │ ┌─┴─┐
q_1: ──■──┤ X ├──■──┤ X ├──■──┤ X ├
┌─┴─┐└─┬─┘┌─┴─┐└─┬─┘┌─┴─┐└─┬─┘
q_2: ┤ X ├──■──┤ X ├──■──┤ X ├──■──
└───┘ └───┘ └───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_6a_4
qiskit.circuit.library.templates.nct.template_nct_6a_4()
Vorlage 6a_4:
q_0: ───────■──────────────■───────
┌─┴─┐ ┌───┐ │ ┌───┐
q_1: ──■──┤ X ├──■──┤ X ├──■──┤ X ├
┌─┴─┐└─┬─┘┌─┴─┐└─┬─┘┌─┴─┐└─┬─┘
q_2: ┤ X ├──■──┤ X ├──■──┤ X ├──■──
└───┘ └───┘ └───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_6b_1
qiskit.circuit.library.templates.nct.template_nct_6b_1()
Vorlage 6b_1:
q_0: ──■─────────■────■─────────■──
│ ┌─┴─┐ │ ┌─┴─┐
q_1: ──■────■──┤ X ├──■────■──┤ X ├
┌─┴─┐┌─┴─┐└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘
q_2: ┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──
└───┘└───┘ └───┘└───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_6b_2
qiskit.circuit.library.templates.nct.template_nct_6b_2()
Vorlage 6b_2:
q_0: ───────■────■─────────■────■──
│ ┌─┴─┐ │ ┌─┴─┐
q_1: ──■────■──┤ X ├──■────■──┤ X ├
┌─┴─┐┌─┴─┐└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘
q_2: ┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──
└───┘└───┘ └───┘└───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_6c_1
qiskit.circuit.library.templates.nct.template_nct_6c_1()
Vorlage 6c_1:
q_0: ──■─────────■─────────■────■──
│ ┌───┐ │ ┌───┐ │ ┌─┴─┐
q_1: ──■──┤ X ├──■──┤ X ├──■──┤ X ├
┌─┴─┐└─┬─┘┌─┴─┐└─┬─┘┌─┴─┐└─┬─┘
q_2: ┤ X ├──■──┤ X ├──■──┤ X ├──■──
└───┘ └───┘ └───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_7a_1
qiskit.circuit.library.templates.nct.template_nct_7a_1()
Vorlage 7a_1:
┌───┐ ┌───┐
q_0: ┤ X ├──■─────────■────■──┤ X ├──■──
└─┬─┘┌─┴─┐ │ ┌─┴─┐└─┬─┘ │
q_1: ──■──┤ X ├──■────■──┤ X ├──■────■──
└───┘┌─┴─┐┌─┴─┐└───┘ ┌─┴─┐
q_2: ──────────┤ X ├┤ X ├──────────┤ X ├
└───┘└───┘ └───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_7b_1
qiskit.circuit.library.templates.nct.template_nct_7b_1()
Vorlage 7b_1:
┌───┐ ┌───┐
q_0: ┤ X ├──■─────────■────■──┤ X ├──■──
└───┘┌─┴─┐ │ ┌─┴─┐└───┘ │
q_1: ─────┤ X ├──■────■──┤ X ├───────■──
└───┘┌─┴─┐┌─┴─┐└───┘ ┌─┴─┐
q_2: ──────────┤ X ├┤ X ├──────────┤ X ├
└───┘└───┘ └───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_7c_1
qiskit.circuit.library.templates.nct.template_nct_7c_1()
Vorlage 7c_1:
┌───┐ ┌───┐
q_0: ┤ X ├──■─────────■────■──┤ X ├──■──
└───┘┌─┴─┐ │ ┌─┴─┐└───┘ │
q_1: ─────┤ X ├──■────■──┤ X ├───────■──
└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘ ┌─┴─┐
q_2: ───────■──┤ X ├┤ X ├──■───────┤ X ├
└───┘└───┘ └───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_7d_1
qiskit.circuit.library.templates.nct.template_nct_7d_1()
Vorlage 7d_1:
┌───┐ ┌───┐
q_0: ┤ X ├──■─────────■────■──┤ X ├──■──
└─┬─┘┌─┴─┐ │ ┌─┴─┐└─┬─┘ │
q_1: ──■──┤ X ├──■────■──┤ X ├──■────■──
└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘ ┌─┴─┐
q_2: ───────■──┤ X ├┤ X ├──■───────┤ X ├
└───┘└───┘ └───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_7e_1
qiskit.circuit.library.templates.nct.template_nct_7e_1()
Vorlage 7e_1:
┌───┐ ┌───┐
q_0: ┤ X ├──■─────────■────■──┤ X ├──■──
└───┘┌─┴─┐ │ ┌─┴─┐└───┘ │
q_1: ─────┤ X ├───────┼──┤ X ├───────┼──
└─┬─┘┌───┐┌─┴─┐└─┬─┘ ┌─┴─┐
q_2: ───────■──┤ X ├┤ X ├──■───────┤ X ├
└───┘└───┘ └───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_9a_1
qiskit.circuit.library.templates.nct.template_nct_9a_1()
Vorlage 9a_1:
┌───┐ ┌───┐ ┌───┐
q_0: ┤ X ├──■──┤ X ├──■────■──┤ X ├──■──
└─┬─┘┌─┴─┐└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘┌─┴─┐
q_1: ──■──┤ X ├──■──┤ X ├┤ X ├──■──┤ X ├
└─┬─┘ │ ├───┤└─┬─┘┌───┐└─┬─┘
q_2: ───────■────■──┤ X ├──■──┤ X ├──■──
└───┘ └───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_9c_1
qiskit.circuit.library.templates.nct.template_nct_9c_1()
Vorlage 9c_1:
┌───┐ ┌───┐┌───┐ ┌───┐ ┌───┐
q_0: ┤ X ├──■──┤ X ├┤ X ├─────┤ X ├──■───────┤ X ├
└─┬─┘┌─┴─┐└───┘└─┬─┘┌───┐└─┬─┘┌─┴─┐┌───┐└─┬─┘
q_1: ──■──┤ X ├───────■──┤ X ├──■──┤ X ├┤ X ├──■──
└───┘ └───┘ └───┘└───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_9c_2
qiskit.circuit.library.templates.nct.template_nct_9c_2()
Vorlage 9c_2:
q_0: ───────■────■──────────────■────■─────────■──
┌───┐ │ ┌─┴─┐┌───┐ ┌─┴─┐ │ ┌─┴─┐
q_1: ┤ X ├──■──┤ X ├┤ X ├─────┤ X ├──■───────┤ X ├
└─┬─┘┌─┴─┐└───┘└─┬─┘┌───┐└─┬─┘┌─┴─┐┌───┐└─┬─┘
q_2: ──■──┤ X ├───────■──┤ X ├──■──┤ X ├┤ X ├──■──
└───┘ └───┘ └───┘└───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_9c_3
qiskit.circuit.library.templates.nct.template_nct_9c_3()
Vorlage 9c_3:
q_0: ───────■────────────────────────■────────────
┌───┐ │ ┌───┐┌───┐ ┌───┐ │ ┌───┐
q_1: ┤ X ├──■──┤ X ├┤ X ├─────┤ X ├──■───────┤ X ├
└─┬─┘┌─┴─┐└───┘└─┬─┘┌───┐└─┬─┘┌─┴─┐┌───┐└─┬─┘
q_2: ──■──┤ X ├───────■──┤ X ├──■──┤ X ├┤ X ├──■──
└───┘ └───┘ └───┘└───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_9c_4
qiskit.circuit.library.templates.nct.template_nct_9c_4()
Vorlage 9c_4:
q_0: ──■────■─────────■──────────────■────────────
┌─┴─┐ │ ┌───┐┌─┴─┐ ┌───┐ │ ┌───┐
q_1: ┤ X ├──■──┤ X ├┤ X ├─────┤ X ├──■───────┤ X ├
└─┬─┘┌─┴─┐└───┘└─┬─┘┌───┐└─┬─┘┌─┴─┐┌───┐└─┬─┘
q_2: ──■──┤ X ├───────■──┤ X ├──■──┤ X ├┤ X ├──■──
└───┘ └───┘ └───┘└───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_9c_5
qiskit.circuit.library.templates.nct.template_nct_9c_5()
Vorlage 9c_5:
q_0: ────────────■─────────■──────────────■───────
┌───┐ ┌─┴─┐┌───┐ │ ┌───┐ │ ┌───┐
q_1: ┤ X ├──■──┤ X ├┤ X ├──┼──┤ X ├──■────┼──┤ X ├
└─┬─┘┌─┴─┐└───┘└─┬─┘┌─┴─┐└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘
q_2: ──■──┤ X ├───────■──┤ X ├──■──┤ X ├┤ X ├──■──
└───┘ └───┘ └───┘└───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_9c_6
qiskit.circuit.library.templates.nct.template_nct_9c_6()
Vorlage 9c_6:
q_0: ───────■────■─────────■─────────■────■───────
┌───┐ │ ┌─┴─┐┌───┐ │ ┌───┐ │ │ ┌───┐
q_1: ┤ X ├──■──┤ X ├┤ X ├──┼──┤ X ├──■────┼──┤ X ├
└─┬─┘┌─┴─┐└───┘└─┬─┘┌─┴─┐└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘
q_2: ──■──┤ X ├───────■──┤ X ├──■──┤ X ├┤ X ├──■──
└───┘ └───┘ └───┘└───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_9c_7
qiskit.circuit.library.templates.nct.template_nct_9c_7()
Vorlage 9c_7:
q_0: ──■────■────■────■────■─────────■────■───────
┌─┴─┐ │ ┌─┴─┐┌─┴─┐ │ ┌───┐ │ │ ┌───┐
q_1: ┤ X ├──■──┤ X ├┤ X ├──┼──┤ X ├──■────┼──┤ X ├
└─┬─┘┌─┴─┐└───┘└─┬─┘┌─┴─┐└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘
q_2: ──■──┤ X ├───────■──┤ X ├──■──┤ X ├┤ X ├──■──
└───┘ └───┘ └───┘└───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_9c_8
qiskit.circuit.library.templates.nct.template_nct_9c_8()
Vorlage 9c_8:
q_0: ──■─────────■────■─────────■──────────────■──
┌─┴─┐ ┌─┴─┐┌─┴─┐ ┌─┴─┐ ┌─┴─┐
q_1: ┤ X ├──■──┤ X ├┤ X ├─────┤ X ├──■───────┤ X ├
└─┬─┘┌─┴─┐└───┘└─┬─┘┌───┐└─┬─┘┌─┴─┐┌───┐└─┬─┘
q_2: ──■──┤ X ├───────■──┤ X ├──■──┤ X ├┤ X ├──■──
└───┘ └───┘ └───┘└───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_9c_9
qiskit.circuit.library.templates.nct.template_nct_9c_9()
Vorlage 9c_9:
q_0: ──■────■────■────■─────────■────■─────────■──
┌─┴─┐ │ ┌─┴─┐┌─┴─┐ ┌─┴─┐ │ ┌─┴─┐
q_1: ┤ X ├──■──┤ X ├┤ X ├─────┤ X ├──■───────┤ X ├
└─┬─┘┌─┴─┐└───┘└─┬─┘┌───┐└─┬─┘┌─┴─┐┌───┐└─┬─┘
q_2: ──■──┤ X ├───────■──┤ X ├──■──┤ X ├┤ X ├──■──
└───┘ └───┘ └───┘└───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_9c_10
qiskit.circuit.library.templates.nct.template_nct_9c_10()
Vorlage 9c_10:
q_0: ──■─────────■────■────■────■─────────■────■──
┌─┴─┐ ┌─┴─┐┌─┴─┐ │ ┌─┴─┐ │ ┌─┴─┐
q_1: ┤ X ├──■──┤ X ├┤ X ├──┼──┤ X ├──■────┼──┤ X ├
└─┬─┘┌─┴─┐└───┘└─┬─┘┌─┴─┐└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘
q_2: ──■──┤ X ├───────■──┤ X ├──■──┤ X ├┤ X ├──■──
└───┘ └───┘ └───┘└───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_9c_11
qiskit.circuit.library.templates.nct.template_nct_9c_11()
Vorlage 9c_11:
q_0: ───────■────■─────────■────■────■────■────■──
┌───┐ │ ┌─┴─┐┌───┐ │ ┌─┴─┐ │ │ ┌─┴─┐
q_1: ┤ X ├──■──┤ X ├┤ X ├──┼──┤ X ├──■────┼──┤ X ├
└─┬─┘┌─┴─┐└───┘└─┬─┘┌─┴─┐└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘
q_2: ──■──┤ X ├───────■──┤ X ├──■──┤ X ├┤ X ├──■──
└───┘ └───┘ └───┘└───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_9c_12
qiskit.circuit.library.templates.nct.template_nct_9c_12()
Vorlage 9c_12:
q_0: ──■────■────■────■────■────■────■────■────■──
┌─┴─┐ │ ┌─┴─┐┌─┴─┐ │ ┌─┴─┐ │ │ ┌─┴─┐
q_1: ┤ X ├──■──┤ X ├┤ X ├──┼──┤ X ├──■────┼──┤ X ├
└─┬─┘┌─┴─┐└───┘└─┬─┘┌─┴─┐└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘
q_2: ──■──┤ X ├───────■──┤ X ├──■──┤ X ├┤ X ├──■──
└───┘ └───┘ └───┘└───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_9d_1
qiskit.circuit.library.templates.nct.template_nct_9d_1()
Vorlage 9d_1:
┌───┐ ┌───┐ ┌───┐
q_0: ──■───────┤ X ├───────■──┤ X ├───────■──┤ X ├
┌─┴─┐┌───┐└─┬─┘┌───┐┌─┴─┐└─┬─┘┌───┐┌─┴─┐└─┬─┘
q_1: ┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──
└───┘└───┘ └───┘└───┘ └───┘└───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_9d_2
qiskit.circuit.library.templates.nct.template_nct_9d_2()
Vorlage 9d_2:
q_0: ──■────■────■──────────────■──────────────■──
│ │ ┌─┴─┐ ┌─┴─┐ ┌─┴─┐
q_1: ──■────┼──┤ X ├───────■──┤ X ├───────■──┤ X ├
┌─┴─┐┌─┴─┐└─┬─┘┌───┐┌─┴─┐└─┬─┘┌───┐┌─┴─┐└─┬─┘
q_2: ┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──
└───┘└───┘ └───┘└───┘ └───┘└───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_9d_3
qiskit.circuit.library.templates.nct.template_nct_9d_3()
Vorlage 9d_3:
q_0: ──■────■───────────────────■─────────────────
│ │ ┌───┐ ┌─┴─┐ ┌───┐
q_1: ──■────┼──┤ X ├───────■──┤ X ├───────■──┤ X ├
┌─┴─┐┌─┴─┐└─┬─┘┌───┐┌─┴─┐└─┬─┘┌───┐┌─┴─┐└─┬─┘
q_2: ┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──
└───┘└───┘ └───┘└───┘ └───┘└───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_9d_4
qiskit.circuit.library.templates.nct.template_nct_9d_4()
Vorlage 9d_4:
q_0: ───────■─────────■──────────────■────────────
│ ┌───┐ │ ┌───┐ │ ┌───┐
q_1: ──■────┼──┤ X ├──┼────■──┤ X ├──┼────■──┤ X ├
┌─┴─┐┌─┴─┐└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘
q_2: ┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──
└───┘└───┘ └───┘└───┘ └───┘└───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_9d_5
qiskit.circuit.library.templates.nct.template_nct_9d_5()
Vorlage 9d_5:
q_0: ──■────■─────────■─────────■────■────────────
│ │ ┌───┐ │ ┌─┴─┐ │ ┌───┐
q_1: ──■────┼──┤ X ├──┼────■──┤ X ├──┼────■──┤ X ├
┌─┴─┐┌─┴─┐└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘
q_2: ┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──
└───┘└───┘ └───┘└───┘ └───┘└───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_9d_6
qiskit.circuit.library.templates.nct.template_nct_9d_6()
Vorlage 9d_6:
q_0: ──■────■──────────────■────■─────────■───────
│ │ ┌───┐ │ ┌─┴─┐ │ ┌───┐
q_1: ──■────┼──┤ X ├───────■──┤ X ├───────■──┤ X ├
┌─┴─┐┌─┴─┐└─┬─┘┌───┐┌─┴─┐└─┬─┘┌───┐┌─┴─┐└─┬─┘
q_2: ┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──
└───┘└───┘ └───┘└───┘ └───┘└───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_9d_7
qiskit.circuit.library.templates.nct.template_nct_9d_7()
Vorlage 9d_7:
q_0: ──■────■─────────■────■────■────■────■───────
│ │ ┌───┐ │ │ ┌─┴─┐ │ │ ┌───┐
q_1: ──■────┼──┤ X ├──┼────■──┤ X ├──┼────■──┤ X ├
┌─┴─┐┌─┴─┐└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘
q_2: ┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──
└───┘└───┘ └───┘└───┘ └───┘└───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_9d_8
qiskit.circuit.library.templates.nct.template_nct_9d_8()
Vorlage 9d_8:
q_0: ──■────■────■────■─────────■────■─────────■──
│ │ ┌─┴─┐ │ ┌─┴─┐ │ ┌─┴─┐
q_1: ──■────┼──┤ X ├──┼────■──┤ X ├──┼────■──┤ X ├
┌─┴─┐┌─┴─┐└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘
q_2: ┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──
└───┘└───┘ └───┘└───┘ └───┘└───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_9d_9
qiskit.circuit.library.templates.nct.template_nct_9d_9()
Vorlage 9d_9:
q_0: ──■────■────■─────────■────■─────────■────■──
│ │ ┌─┴─┐ │ ┌─┴─┐ │ ┌─┴─┐
q_1: ──■────┼──┤ X ├───────■──┤ X ├───────■──┤ X ├
┌─┴─┐┌─┴─┐└─┬─┘┌───┐┌─┴─┐└─┬─┘┌───┐┌─┴─┐└─┬─┘
q_2: ┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──
└───┘└───┘ └───┘└───┘ └───┘└───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
template_nct_9d_10
qiskit.circuit.library.templates.nct.template_nct_9d_10()
Vorlage 9d_10:
q_0: ──■────■────■────■────■────■────■────■────■──
│ │ ┌─┴─┐ │ │ ┌─┴─┐ │ │ ┌─┴─┐
q_1: ──■────┼──┤ X ├──┼────■──┤ X ├──┼────■──┤ X ├
┌─┴─┐┌─┴─┐└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘┌─┴─┐┌─┴─┐└─┬─┘
q_2: ┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──┤ X ├┤ X ├──■──
└───┘└───┘ └───┘└───┘ └───┘└───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
Clifford-Schablonenschaltungen
Schablonenschaltungen über Clifford-Gatter.
clifford_2_1
qiskit.circuit.library.clifford_2_1()
Clifford Vorlage 2_1:
q_0: ─■──■─
│ │
q_1: ─■──■─Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
clifford_2_2
qiskit.circuit.library.clifford_2_2()
Clifford-Vorlage 2_2:
q_0: ──■────■──
┌─┴─┐┌─┴─┐
q_1: ┤ X ├┤ X ├
└───┘└───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
clifford_2_3
qiskit.circuit.library.clifford_2_3()
Clifford-Vorlage 2_3:
┌───┐┌───┐
q_0: ┤ H ├┤ H ├
└───┘└───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
clifford_2_4
qiskit.circuit.library.clifford_2_4()
Clifford-Vorlage 2_4:
q_0: ─X──X─
│ │
q_1: ─X──X─Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
clifford_3_1
qiskit.circuit.library.clifford_3_1()
Clifford Vorlage 3_1:
┌───┐┌───┐┌───┐
q_0: ┤ S ├┤ S ├┤ Z ├
└───┘└───┘└───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
clifford_4_1
qiskit.circuit.library.clifford_4_1()
Clifford Vorlage 4_1:
┌───┐
q_0: ──■──┤ X ├──■───X─
┌─┴─┐└─┬─┘┌─┴─┐ │
q_1: ┤ X ├──■──┤ X ├─X─
└───┘ └───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
clifford_4_2
qiskit.circuit.library.clifford_4_2()
Clifford-Vorlage 4_2:
q_0: ───────■────────■─
┌───┐┌─┴─┐┌───┐ │
q_1: ┤ H ├┤ X ├┤ H ├─■─
└───┘└───┘└───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
clifford_4_3
qiskit.circuit.library.clifford_4_3()
Clifford-Vorlage 4_3:
┌───┐ ┌─────┐
q_0: ┤ S ├──■──┤ SDG ├──■──
└───┘┌─┴─┐└─────┘┌─┴─┐
q_1: ─────┤ X ├───────┤ X ├
└───┘ └───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
clifford_4_4
qiskit.circuit.library.clifford_4_4()
Clifford-Vorlage 4_4:
┌───┐ ┌─────┐
q_0: ┤ S ├─■─┤ SDG ├─■─
└───┘ │ └─────┘ │
q_1: ──────■─────────■─Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
clifford_5_1
qiskit.circuit.library.clifford_5_1()
Clifford Vorlage 5_1:
q_0: ──■─────────■─────────■── ┌─┴─┐ ┌─┴─┐ │ q_1: ┤ X ├──■──┤ X ├──■────┼── └───┘┌─┴─┐└───┘┌─┴─┐┌─┴─┐ q_2: ─────┤ X ├─────┤ X ├┤ X ├ └───┘ └───┘└───┘
Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
clifford_6_1
qiskit.circuit.library.clifford_6_1()
Clifford-Vorlage 6_1:
┌───┐ ┌───┐┌───┐ q_0: ┤ H ├──■──┤ H ├┤ X ├ ├───┤┌─┴─┐├───┤└─┬─┘ q_1: ┤ H ├┤ X ├┤ H ├──■── └───┘└───┘└───┘
Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
clifford_6_2
qiskit.circuit.library.clifford_6_2()
Clifford-Vorlage 6_2:
┌───┐ q_0: ┤ S ├──■───────────■───■─ ├───┤┌─┴─┐┌─────┐┌─┴─┐ │ q_1: ┤ S ├┤ X ├┤ SDG ├┤ X ├─■─ └───┘└───┘└─────┘└───┘
Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
clifford_6_3
qiskit.circuit.library.clifford_6_3()
Clifford-Vorlage 6_3:
┌───┐ ┌───┐
q_0: ─X──■─┤ H ├──■──┤ X ├─────
│ │ └───┘┌─┴─┐└─┬─┘┌───┐
q_1: ─X──■──────┤ X ├──■──┤ H ├
└───┘ └───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
clifford_6_4
qiskit.circuit.library.clifford_6_4()
Clifford-Vorlage 6_4:
global phase: 7π/4
┌───┐┌───┐┌───┐┌───┐┌───┐┌───┐
q: ┤ S ├┤ H ├┤ S ├┤ H ├┤ S ├┤ H ├
└───┘└───┘└───┘└───┘└───┘└───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
clifford_6_5
qiskit.circuit.library.clifford_6_5()
Clifford-Vorlage 6_5:
┌───┐
q_0: ─■───■───┤ S ├───■───────
│ ┌─┴─┐┌┴───┴┐┌─┴─┐┌───┐
q_1: ─■─┤ X ├┤ SDG ├┤ X ├┤ S ├
└───┘└─────┘└───┘└───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
clifford_8_1
qiskit.circuit.library.clifford_8_1()
Clifford Vorlage 8_1:
┌───┐ ┌───┐ ┌───┐┌─────┐
q_0: ──■───────┤ X ├─┤ S ├─┤ X ├┤ SDG ├
┌─┴─┐┌───┐└─┬─┘┌┴───┴┐└─┬─┘└┬───┬┘
q_1: ┤ X ├┤ H ├──■──┤ SDG ├──■───┤ H ├─
└───┘└───┘ └─────┘ └───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
clifford_8_2
qiskit.circuit.library.clifford_8_2()
Clifford-Vorlage 8_2:
┌───┐
q_0: ──■─────────■───┤ S ├───■────────────
┌─┴─┐┌───┐┌─┴─┐┌┴───┴┐┌─┴─┐┌───┐┌───┐
q_1: ┤ X ├┤ H ├┤ X ├┤ SDG ├┤ X ├┤ S ├┤ H ├
└───┘└───┘└───┘└─────┘└───┘└───┘└───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
clifford_8_3
qiskit.circuit.library.clifford_8_3()
Clifford-Vorlage 8_3:
q_0: ─────────────────■───────────────────────■──
┌───┐┌───┐┌───┐┌─┴─┐┌─────┐┌───┐┌─────┐┌─┴─┐
q_1: ┤ S ├┤ H ├┤ S ├┤ X ├┤ SDG ├┤ H ├┤ SDG ├┤ X ├
└───┘└───┘└───┘└───┘└─────┘└───┘└─────┘└───┘Rückgabe
vorlage als Quantenschaltung.
Rückgabetyp
RZXGate-Schablonenschaltungen
Schaltplanvorlagen mit RZXGate.
rzx_yz
qiskit.circuit.library.rzx_yz(theta=None)
RZX-basierte Vorlage für CX - RYGate - CX.
┌────────┐ ┌─────────┐┌─────────┐┌──────────┐
q_0: ──■──┤ RY(-ϴ) ├──■──┤ RX(π/2) ├┤0 ├┤ RX(-π/2) ├
┌─┴─┐└────────┘┌─┴─┐└─────────┘│ RZX(ϴ) │└──────────┘
q_1: ┤ X ├──────────┤ X ├───────────┤1 ├────────────
└───┘ └───┘ └─────────┘Parameter
theta (ParameterExpression |float | None)
rzx_xz
qiskit.circuit.library.rzx_xz(theta=None)
RZX-basierte Vorlage für CX - RXGate - CX.
global phase: π
┌───┐ ┌───┐┌─────────┐┌─────────┐┌─────────┐┌──────────┐»
q_0: ┤ X ├─────────┤ X ├┤ Rz(π/2) ├┤ Rx(π/2) ├┤ Rz(π/2) ├┤0 ├»
└─┬─┘┌───────┐└─┬─┘└─────────┘└─────────┘└─────────┘│ Rzx(-ϴ) │»
q_1: ──■──┤ Rx(ϴ) ├──■───────────────────────────────────┤1 ├»
└───────┘ └──────────┘»
« ┌─────────┐┌─────────┐┌─────────┐
«q_0: ┤ Rz(π/2) ├┤ Rx(π/2) ├┤ Rz(π/2) ├
« └─────────┘└─────────┘└─────────┘
«q_1: ─────────────────────────────────
«Parameter
theta (ParameterExpression |float | None)
rzx_cy
qiskit.circuit.library.rzx_cy(theta=None)
RZX-basierte Vorlage für CX - RYGate - CX.
┌──────────┐
q_0: ──■─────────────■─────────────────────────────────┤0 ├───────────
┌─┴─┐┌───────┐┌─┴─┐┌────────┐┌──────────┐┌───────┐│ RZX(-ϴ) │┌─────────┐
q_1: ┤ X ├┤ RY(ϴ) ├┤ X ├┤ RY(-ϴ) ├┤ RZ(-π/2) ├┤ RX(ϴ) ├┤1 ├┤ RZ(π/2) ├
└───┘└───────┘└───┘└────────┘└──────────┘└───────┘└──────────┘└─────────┘Parameter
theta (ParameterExpression |float | None)
rzx_zz1
qiskit.circuit.library.rzx_zz1(theta=None)
RZX-basierte Vorlage für CX - RZGate - CX.
global phase: π/2
»
q_0: ──■────────────────────────────────────────────■───────────────────────»
┌─┴─┐┌───────┐┌────┐┌───────┐┌────┐┌────────┐┌─┴─┐┌────────┐┌─────────┐»
q_1: ┤ X ├┤ Rz(ϴ) ├┤ √X ├┤ Rz(π) ├┤ √X ├┤ Rz(3π) ├┤ X ├┤ Rz(-ϴ) ├┤ Rz(π/2) ├»
└───┘└───────┘└────┘└───────┘└────┘└────────┘└───┘└────────┘└─────────┘»
« ┌──────────┐ »
«q_0: ───────────────────────────────┤0 ├──────────────────────»
« ┌─────────┐┌─────────┐┌───────┐│ Rzx(-ϴ) │┌─────────┐┌─────────┐»
«q_1: ┤ Rx(π/2) ├┤ Rz(π/2) ├┤ Rx(ϴ) ├┤1 ├┤ Rz(π/2) ├┤ Rx(π/2) ├»
« └─────────┘└─────────┘└───────┘└──────────┘└─────────┘└─────────┘»
«
«q_0: ───────────
« ┌─────────┐
«q_1: ┤ Rz(π/2) ├
« └─────────┘Parameter
theta (ParameterExpression |float | None)
rzx_zz2
qiskit.circuit.library.rzx_zz2(theta=None)
RZX-basierte Vorlage für CX - PhaseGate - CX.
global phase: π
»
q_0: ──■────────────■─────────────────────────────────────────────────────»
┌─┴─┐┌──────┐┌─┴─┐┌───────┐┌─────────┐┌─────────┐┌─────────┐┌───────┐»
q_1: ┤ X ├┤ P(ϴ) ├┤ X ├┤ P(-ϴ) ├┤ Rz(π/2) ├┤ Rx(π/2) ├┤ Rz(π/2) ├┤ Rx(ϴ) ├»
└───┘└──────┘└───┘└───────┘└─────────┘└─────────┘└─────────┘└───────┘»
« ┌──────────┐
«q_0: ┤0 ├─────────────────────────────────
« │ Rzx(-ϴ) │┌─────────┐┌─────────┐┌─────────┐
«q_1: ┤1 ├┤ Rz(π/2) ├┤ Rx(π/2) ├┤ Rz(π/2) ├
« └──────────┘└─────────┘└─────────┘└─────────┘Parameter
theta (ParameterExpression |float | None)
rzx_zz3
qiskit.circuit.library.rzx_zz3(theta=None)
RZX-basierte Vorlage für CX - RZGate - CX.
global phase: π
»
q_0: ──■─────────────■──────────────────────────────────────────────────────»
┌─┴─┐┌───────┐┌─┴─┐┌────────┐┌─────────┐┌─────────┐┌─────────┐┌───────┐»
q_1: ┤ X ├┤ Rz(ϴ) ├┤ X ├┤ Rz(-ϴ) ├┤ Rz(π/2) ├┤ Rx(π/2) ├┤ Rz(π/2) ├┤ Rx(ϴ) ├»
└───┘└───────┘└───┘└────────┘└─────────┘└─────────┘└─────────┘└───────┘»
« ┌──────────┐
«q_0: ┤0 ├─────────────────────────────────
« │ Rzx(-ϴ) │┌─────────┐┌─────────┐┌─────────┐
«q_1: ┤1 ├┤ Rz(π/2) ├┤ Rx(π/2) ├┤ Rz(π/2) ├
« └──────────┘└─────────┘└─────────┘└─────────┘Parameter
theta (ParameterExpression |float | None)