Dela via


CheckOperationsAreEqual-åtgärd

Fullständigt kvalificerat namn: Std.Diagnostics.CheckOperationsAreEqual

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

Sammanfattning

Med två åtgärder kontrollerar du att de fungerar identiskt för alla indatatillstånd.

Beskrivning

Denna kontroll implementeras med hjälp av Choi-Jamiołkowski isomorphism för att minska denna kontroll till en kontroll av två sammanflätade register. Den här åtgärden behöver därför bara ett enda anrop till varje åtgärd som testas, men kräver att dubbelt så många kvantbitar allokeras. Den här kontrollen kan till exempel användas för att säkerställa att en optimerad version av en åtgärd fungerar identiskt med dess naiva implementering, eller att en åtgärd som agerar på en rad icke-kvantindata överensstämmer med kända fall.

Anmärkningar

Den här åtgärden kräver att åtgärden som modellerar det förväntade beteendet är angränsande, så att inversen kan utföras enbart i målregistret. Formellt kan man ange en transponeringsåtgärd, vilket minskar detta krav, men transponeringsåtgärden är inte i allmänhet fysiskt realiserbar för godtyckliga kvantåtgärder och ingår därför inte här som ett alternativ.

Inmatning

nQubits

Antal kvantbitar som ska skickas till varje åtgärd.

faktisk

Åtgärd som ska testas.

förväntad

Åtgärd som definierar det förväntade beteendet för den åtgärd som testas.

Utdata

Sant om åtgärderna är lika med, annars falskt.