Delen via


CheckOperationsAreEqual-bewerking

Volledig gekwalificeerde naam: Std.Diagnostics.CheckOperationsAreEqual

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

Samenvatting

Bij twee bewerkingen wordt gecontroleerd of ze identiek werken voor alle invoerstatussen.

Beschrijving

Deze controle wordt geïmplementeerd met behulp van het Choi-Jamiołkowski isomorphisme om deze controle te verminderen tot een controle op twee verstrengelde registers. Deze bewerking heeft dus slechts één aanroep nodig voor elke bewerking die wordt getest, maar vereist twee keer zoveel qubits die moeten worden toegewezen. Deze controle kan worden gebruikt om er bijvoorbeeld voor te zorgen dat een geoptimaliseerde versie van een bewerking identiek werkt aan de naïeve implementatie of dat een bewerking die op een bereik van niet-kwantuminvoer reageert, overeenkomt met bekende gevallen.

Opmerkingen

Voor deze bewerking moet het verwachte gedrag worden gemodelleerd, zodat de inverse alleen in het doelregister kan worden uitgevoerd. Formeel kan men een transponeerbewerking opgeven, waardoor deze vereiste wordt versoepelen, maar de transponeerbewerking is in het algemeen niet fysiek realiseerbaar voor willekeurige kwantumbewerkingen en is dus hier niet opgenomen als optie.

Invoer

nQubits

Aantal qubits dat moet worden doorgegeven aan elke bewerking.

werkelijk

Te testen bewerking.

verwacht

Bewerking die het verwachte gedrag definieert voor de bewerking die wordt getest.

Uitvoer

Waar als bewerkingen gelijk zijn, anders onwaar.