ApplyPermutationUsingTransformation-Vorgang
Warnung
Diese Dokumentation bezieht sich auf das klassische QDK, das durch das moderne QDK ersetzt wurde.
Weitere Informationen finden https://aka.ms/qdk.api Sie in der API-Dokumentation für das moderne QDK.
Namespace: Microsoft.Quantum.Synthesis
Paket: Microsoft.Quantum.Standard
Permutiert die Amplituden in einem Quantenzustand bei einer Permutation mithilfe einer transformationsbasierten Synthese.
operation ApplyPermutationUsingTransformation (perm : Int[], qubits : Microsoft.Quantum.Arithmetic.LittleEndian) : Unit is Adj + Ctl
BESCHREIBUNG
Dieses Verfahren implementiert den unidirektionalen transformationsbasierten Syntheseansatz. Input ist eine Permutation $\pi$ über $2^n$-Elemente ${0, \dots, 2^n-1}$, die eine $n$-variable reversible boolesche Funktion darstellt. Der Algorithmus führt die folgenden Schritte iterativ aus:
- Suchen Sie die kleinste $x$ so, dass $x \ne \pi(x) = y$.
- Suchen sie nach mehrstufigen Toffoli-Vorgängen, die auf die Ausgaben angewendet werden, machen $\pi(x) = x$ und ändern $\pi(x')$ für alle $x' < x$ nicht.
Eingabe
perm : Int[]
Eine Permutation von $2^n$-Elementen ab 0.
Qubits : LittleEndian
Eine Liste von $n$-Qubits, auf die die Permutation angewendet wird.
Ausgabe: Einheit
Beispiel
So synthetisieren Sie einen SWAP
Vorgang:
using (qubits = Qubit[2]) {
ApplyPermutationUsingTransformation([0, 2, 1, 3], LittleEndian(qubits));
}
Referenzen
- D. Michael Miller, Dmitri Maslov, Gerhard W. Dueck, Proc. DAC 2003, IEEE, S. 318-323, 2003
- Mathias Soeken, Gerhard W. Dueck, D. Michael Miller, Proc. RC 2016, Springer, S. 307-321, 2016