Delen via


ApplyControlledOnBitString-bewerking

Volledig gekwalificeerde naam: Std.Canon.ApplyControlledOnBitString

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

Samenvatting

Past oracle toe op target wanneer controlRegister de status heeft die is opgegeven door bits.

Beschrijving

Hiermee past u een eenheidsbewerking toe oracle op de target, die wordt beheerd op een toestand die is opgegeven door een bepaald bitmasker bits. De bit op bits[i] komt overeen met qubit op controlRegister[i]. Het patroon dat door bits wordt gegeven, kan korter zijn dan controlRegister, in welk geval extra controle-qubits worden genegeerd (dat wil gezegd, noch beheerd op |0⟩ noch |1⟩). Als bits langer is dan controlRegister, wordt er een fout gegenereerd.

Invoer

bits

De bittekenreeks waarop de opgegeven eenheidsbewerking moet worden bepaald.

orakel

De eenheidsbewerking die moet worden toegepast op het doel.

doel

Het doel dat moet worden doorgegeven aan oracle als invoer.

controlRegister

Een kwantumregister waarmee de toepassing van oraclewordt gecontroleerd.

Voorbeeld

// 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.