Selon la question liée, la solution la plus simple consiste simplement à demander au processeur classique d'effectuer de telles opérations si possible . Bien sûr, cela peut ne pas être possible, nous voulons donc créer un additionneur .
Il existe deux types d'additionneur à un seul bit: le demi-additionneur et l' additionneur complet . La demi-additionneur prend les entrées et B et délivre le (opération XOR) 'somme' S = A ⊕ B et la (opération ET) 'report' C = A ⋅ B . Un additionneur complet a également la 'carry en' C i n sortie et l'entrée 'exécuter' C o u t , en remplaçant C . Cela renvoie S = A ⊕ B ⊕ C i nABS=A⊕BC=A⋅BCinCoutCS=A⊕B⊕Cinet .Cout=Cin⋅(A+B)+A⋅B
Version quantique du demi-additionneur
En regardant la porte CNOT sur le registre qubit registre de contrôle B : CNOT A → B | 0 ⟩ A | 0 ⟩ BAB ce qui donne immédiatement la sortie de lachambreregistretant queA⊕B=S. Cependant, nous n'avons pas encore calculé le portage et l'état duregistreBa changé, nous devons donc également effectuer l'opération ET. Cela peut être fait en utilisant la porte Toffoli à 3 qubits (CNOT / CCNOT contrôlé). Cela peut être fait en utilisant les registresAetBcomme registres de contrôle et en initialisant le troisième registre(C)dans l'état| 0⟩
CNOTA→B|0⟩A|0⟩BCNOTA→B|0⟩A|1⟩BCNOTA→B|1⟩A|0⟩BCNOTA→B|1⟩A|1⟩B=|0⟩A|0⟩B=|0⟩A|1⟩B=|1⟩A|1⟩B=|1⟩A|0⟩B,
BA⊕B=SBAB(C)|0⟩, Donnant à la sortie du troisième registre en tant que
. L'implémentation de Toffoli sur les registres
A et
B contrôlant le registre
C suivi de CNOT avec
A contrôlant
B donne la sortie du registre
B comme somme et la sortie du registre
C comme report. Un schéma de circuit quantique du demi-additionneur est illustré à la figure 1.
A⋅B=CABCABBC
Figure 1: Schéma de circuit d'un demi-additionneur, composé de Toffoli suivi de CNOT. Bits d' entrée sont et B , ce qui donne la somme S avec report sur C .ABSC
Version quantique de l'additionneur complet
4ABCin11|0⟩|A⟩|B⟩|Cin⟩|0⟩
- AB1|A⟩|B⟩|Cin⟩|A⋅B⟩
- AB|A⟩|A⊕B⟩|Cin⟩|A⋅B⟩
- BCin1|A⟩|A⊕B⟩|Cin⟩|A⋅B⊕(A⊕B)⋅Cin=Cout⟩
- BCin|A⟩|A⊕B⟩|A⊕B⊕Cin=S⟩|Cout⟩
ABAB
|ψout⟩=|A⟩|B⟩|S⟩|Cout⟩
Cin2
ABCinSCout
Version quantique de l'additionneur de report d'ondulation
Une extension simple de l'additionneur complet est un additionneur de report d'ondulation, nommé car il `` ondule '' le report pour devenir le report du prochain additionneur dans une série d'additionneurs, permettant des sommes de taille arbitraire (si lentes). Une version quantique d'un tel additionneur peut être trouvée par exemple ici
Mise en œuvre réelle d'un demi-additionneur
Pour de nombreux systèmes, la mise en œuvre d'une porte Toffoli est loin d'être aussi simple que la mise en œuvre d'une porte à qubit unique (ou même à deux qubits). Cette réponse donne un moyen de décomposer Toffoli en plusieurs portes plus petites. Cependant, dans des systèmes réels, comme IBMQX , il peut également y avoir des problèmes sur lesquels les qubits peuvent être utilisés comme cibles. En tant que telle, une implémentation réelle sur IBMQX2 ressemble à ceci:
Figure 3: Implémentation d'un demi-additionneur sur IBMQX2. En plus de décomposer la porte de Toffoli en plusieurs portes plus petites, des portes supplémentaires sont nécessaires car tous les registres de qubit ne peuvent pas être utilisés comme cibles. Les registres q [0] et q [1] sont ajoutés pour obtenir la somme dans q [1] et le report dans q [2]. Dans ce cas, le résultat q [2] q [1] doit être 10. L'exécuter sur le processeur donne le résultat correct avec une probabilité de 42,8% (bien que ce soit toujours le résultat le plus probable).