Freigeben über


ApplyControlledOnBitString-Vorgang

Vollqualifizierter Name: Std.Canon.ApplyControlledOnBitString

operation ApplyControlledOnBitString<'T>(bits : Bool[], oracle : ('T => Unit is Adj + Ctl), controlRegister : Qubit[], target : 'T) : Unit is Adj + Ctl

Zusammenfassung

Wendet oracle auf target an, wenn controlRegister sich im durch bitsangegebenen Zustand befindet.

Beschreibung

Wendet einen einheitlichen Vorgang oracle auf dem targetan, gesteuert auf einem Zustand, der durch eine bestimmte Bitmaske bitsangegeben wird. Das Bit bei bits[i] entspricht qubit bei controlRegister[i]. Das von bits angegebene Muster kann kürzer als controlRegistersein, in diesem Fall werden zusätzliche Kontrollqubits ignoriert (d. a. weder auf |0⟩ noch |1⟩). Wenn bits länger als controlRegisterist, wird ein Fehler ausgelöst.

Eingabe

Bits

Die Bitzeichenfolge zum Steuern des angegebenen Einheitsvorgangs.

Orakel

Der einheitliche Vorgang, der auf das Ziel angewendet werden soll.

Ziel

Das Ziel, das als Eingabe an oracle übergeben werden soll.

controlRegister

Ein Quantenregister, das die Anwendung von oraclesteuert.

Beispiel

// When bits = [1,0,0] oracle is applied if and only if controlRegister
// is in the state |100⟩.
use t = Qubit();
use c = Qubit[3];
X(c[0]);
ApplyControlledOnBitString([true, false, false], X, c, t);
Message($"{M(t)}"); // Prints `One` since oracle `X` was applied.