Freigeben über


CheckOperationsAreEqual-Vorgang

Vollqualifizierter Name: Std.Diagnostics.CheckOperationsAreEqual

operation CheckOperationsAreEqual(nQubits : Int, actual : (Qubit[] => Unit), expected : (Qubit[] => Unit is Adj)) : Bool

Zusammenfassung

Bei zwei Vorgängen wird überprüft, ob sie für alle Eingabezustände identisch sind.

Beschreibung

Diese Prüfung wird mithilfe des Choi-Jamiołkowski-Isomorphismus implementiert, um diese Überprüfung auf eine Überprüfung von zwei geangten Registern zu reduzieren. Daher benötigt dieser Vorgang nur einen einzigen Aufruf jedes getesteten Vorgangs, erfordert jedoch doppelt so viele Qubits zuzuordnen. Diese Überprüfung kann verwendet werden, um beispielsweise sicherzustellen, dass eine optimierte Version eines Vorgangs identisch mit seiner naiven Implementierung funktioniert oder dass eine Operation, die auf einen Bereich von nicht-Quantum-Eingaben wirkt, mit bekannten Fällen übereinstimmt.

Bemerkungen

Dieser Vorgang erfordert, dass die Vorgangsmodellierung des erwarteten Verhaltens angrenzend ist, sodass die Umkehrung allein für das Zielregister ausgeführt werden kann. Formell kann man einen Transponieren-Vorgang angeben, der diese Anforderung entspannt, aber der Transponieren-Vorgang ist für willkürliche Quantenoperationen nicht physisch realisierbar und ist daher hier nicht als Option enthalten.

Eingabe

nQubits

Die Anzahl der Qubits, die an jeden Vorgang übergeben werden sollen.

Aktuell

Zu testende Operation.

erwartet

Vorgang, der das erwartete Verhalten für den Testvorgang definiert.

Ausgabe

True, wenn Vorgänge gleich sind, andernfalls "false".