Parece que você quer um "Olá Mundo" quântico. A versão quântica mais direta disso seria apenas escrever uma versão codificada binária do texto Hello World
em um registro de qubits. Mas isso exigiria ~ 100 qubits e seria maior que o seu limite superior para o comprimento do código.
Então, vamos escrever um pequeno pedaço de texto. Vamos escrever ;)
, precisamos de uma sequência de bits de comprimento 16. Especificamente, usando a codificação ASCII
;) = 00111011 00101001
Usando o QISKit, você faria isso usando o código a seguir.
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")
Claro, isso não é muito quântico. Então você pode fazer uma superposição de dois emoticons diferentes. O exemplo mais fácil é sobrepor;) com 8), uma vez que as cadeias de bits diferem apenas nos qubits 8 e 9.
;) = 00111011 00101001
8) = 00111000 00101001
Então você pode simplesmente substituir as linhas
qc.x(qr[9])
qc.x(qr[8])
do acima com
qc.h(qr[9]) # create superposition on 9
qc.cx(qr[9],qr[8]) # spread it to 8 with a cnot
O Hadamard cria uma superposição de 0
e 1
, e o nó não o torna uma superposição de 00
e 11
em dois qubits. Esta é a única superposição necessária para ;)
e 8)
.
Se você quiser ver uma implementação real disso, ela pode ser encontrada no tutorial do QISKit (divulgação completa: foi escrito por mim).