Sdílet prostřednictvím


Operace CheckOperationsAreEqual

Plně kvalifikovaný název: Std.Diagnostics.CheckOperationsAreEqual

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

Shrnutí

Při dvou operacích zkontroluje, že fungují stejně pro všechny vstupní stavy.

Popis

Tato kontrola se implementuje pomocí isomorfismu Choi-Jamiołkowski k omezení této kontroly na kontrolu dvou propletených registrů. Proto tato operace potřebuje pouze jedno volání každé testované operace, ale vyžaduje, aby bylo přiděleno dvakrát tolik qubitů. Tuto kontrolu lze použít například k zajištění, že optimalizovaná verze operace funguje stejně jako její naïve implementace nebo že operace, která působí na řadu nevantových vstupů, souhlasí se známými případy.

Poznámky

Tato operace vyžaduje, aby modelování operace očekávané chování bylo adjointable, takže inverzní funkce může být provedena pouze v cílovém registru. Formálně lze určit transponovací operaci, která uvolní tento požadavek, ale transponovací operace není obecně fyzicky realizovatelná pro libovolné kvantové operace, a proto zde není zahrnuta jako možnost.

Vstup

nQubity

Počet qubitů, které se mají předat každé operaci.

skutečný

Operace, která se má testovat.

očekávaný

Operace definující očekávané chování operace v testu

Výstup

True, pokud jsou operace stejné, false v opačném případě.