Partager via


Opération ApplyControlOnBitString

Nom complet : Std.Canon.ApplyControlOnBitString

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

Résumé

Applique oracle sur target lorsque controlRegister est dans l’état spécifié par bits.

Descriptif

Applique une opération unitaire oracle sur la target, contrôlée sur un état spécifié par un masque de bits donné bits. Le bit à bits[i] correspond au qubit à controlRegister[i]. Le modèle donné par bits peut être plus court que controlRegister, auquel cas des qubits de contrôle supplémentaires sont ignorés (autrement dit, ni contrôlés sur |0⟩ ni |1⟩). Si bits est plus long que controlRegister, une erreur est générée.

Entrée

bribes

Chaîne de bits sur laquelle contrôler l’opération unitaire donnée.

oracle

Opération unitaire à appliquer sur la cible.

cible

Cible à passer à oracle en tant qu’entrée.

controlRegister

Registre quantique qui contrôle l’application de oracle.

Exemple

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