Kedengarannya seperti Anda menginginkan kuantum "Hello World". Versi kuantum yang paling mudah dari ini hanya akan menulis versi teks biner yang dikodekan Hello World
dalam daftar qubit. Tetapi ini membutuhkan ~ 100 qubit, dan lebih panjang dari batas atas Anda untuk panjang kode.
Jadi mari kita menulis suatu bagian teks yang lebih pendek. Mari kita menulis ;)
, kita perlu sedikit string dengan panjang 16. Secara khusus, menggunakan pengkodean ASCII
;) = 00111011 00101001
Menggunakan QISKit, Anda akan melakukan ini menggunakan kode berikut.
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")
Tentu saja, ini tidak terlalu kuantum. Jadi, Anda bisa melakukan superposisi dua emotikon berbeda. Contoh termudah adalah menempatkan superposisi;) dengan 8), karena string bit untuk ini berbeda hanya pada qubit 8 dan 9.
;) = 00111011 00101001
8) = 00111000 00101001
Jadi Anda cukup mengganti baris
qc.x(qr[9])
qc.x(qr[8])
dari atas dengan
qc.h(qr[9]) # create superposition on 9
qc.cx(qr[9],qr[8]) # spread it to 8 with a cnot
Hadamard menciptakan superposisi dari 0
dan 1
, dan cnot membuatnya menjadi superposisi dari 00
dan 11
pada dua qubit. Ini adalah satu-satunya superposisi yang diperlukan untuk ;)
dan 8)
.
Jika Anda ingin melihat implementasi sebenarnya dari ini, dapat ditemukan pada tutorial QISKit (pengungkapan penuh: ditulis oleh saya).