Udostępnij przez


CheckOperationsAreEqual, operacja

W pełni kwalifikowana nazwa: Std.Diagnostics.CheckOperationsAreEqual

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

Streszczenie

Biorąc pod uwagę dwie operacje, sprawdza, czy działają identycznie dla wszystkich stanów wejściowych.

Opis

Ta kontrola jest implementowana przy użyciu izomorfizmu Choi–Jamiołkowskiego w celu zmniejszenia tej kontroli do sprawdzenia dwóch splątanych rejestrów. W związku z tym ta operacja wymaga tylko jednego wywołania do każdej testowanej operacji, ale wymaga przydzielenia dwukrotnie większej liczby kubitów. Ta kontrola może służyć do zapewnienia, na przykład, że zoptymalizowana wersja operacji działa identycznie z jego naiwną implementacją lub że operacja, która działa na różnych danych wejściowych nie kwantowych zgadza się ze znanymi przypadkami.

Uwagi

Ta operacja wymaga, aby modelowanie operacji oczekiwane zachowanie było przylegające, dzięki czemu odwrotność może być wykonywana w samym rejestrze docelowym. Formalnie można określić operację transponowania, która złagodzi to wymaganie, ale operacja transponowania nie jest ogólnie fizycznie zrozumiała dla dowolnych operacji kwantowych, a tym samym nie jest tu uwzględniona jako opcja.

Wkład

nQubits

Liczba kubitów do przekazania do każdej operacji.

faktyczny

Operacja do przetestowania.

oczekiwany

Operacja definiująca oczekiwane zachowanie dla operacji testowej.

Wyjście

Prawda, jeśli operacje są równe, w przeciwnym razie wartość false.