On dirait que vous voulez un "Hello World" quantique. La version quantique la plus simple de cela serait simplement d'écrire une version codée binaire du texte Hello World
dans un registre de qubits. Mais cela nécessiterait ~ 100 qubits et serait plus long que votre limite supérieure pour la longueur du code.
Écrivons donc un morceau de texte plus court. Écrivons ;)
, nous avons besoin d'une chaîne de bits de longueur 16. Plus précisément, en utilisant le codage ASCII
;) = 00111011 00101001
En utilisant QISKit, vous le feriez en utilisant le code suivant.
from qiskit import QuantumProgram
import Qconfig
qp = QuantumProgram()
qp.set_api(Qconfig.APItoken, Qconfig.config["url"]) # set the APIToken and API url
# set up registers and program
qr = qp.create_quantum_register('qr', 16)
cr = qp.create_classical_register('cr', 16)
qc = qp.create_circuit('smiley_writer', [qr], [cr])
# rightmost eight (qu)bits have ')' = 00101001
qc.x(qr[0])
qc.x(qr[3])
qc.x(qr[5])
# second eight (qu)bits have 00111011
# these differ only on the rightmost two bits
qc.x(qr[9])
qc.x(qr[8])
qc.x(qr[11])
qc.x(qr[12])
qc.x(qr[13])
# measure
for j in range(16):
qc.measure(qr[j], cr[j])
# run and get results
results = qp.execute(["smiley_writer"], backend='ibmqx5', shots=1024)
stats = results.get_counts("smiley_writer")
Bien sûr, ce n'est pas très quantique. Vous pouvez donc faire une superposition de deux émoticônes différentes à la place. L'exemple le plus simple est de superposer;) avec 8), car les chaînes de bits pour celles-ci ne diffèrent que sur les qubits 8 et 9.
;) = 00111011 00101001
8) = 00111000 00101001
Vous pouvez donc simplement remplacer les lignes
qc.x(qr[9])
qc.x(qr[8])
de ce qui précède avec
qc.h(qr[9]) # create superposition on 9
qc.cx(qr[9],qr[8]) # spread it to 8 with a cnot
Le Hadamard crée une superposition de 0
et 1
, et le cnot en fait une superposition de 00
et 11
sur deux qubits. Il s'agit de la seule superposition requise pour ;)
et 8)
.
Si vous voulez voir une implémentation réelle de cela, vous pouvez le trouver sur le tutoriel QISKit (divulgation complète: il a été écrit par moi).