ดูเหมือนว่าคุณต้องการควอนตัม "Hello World" รุ่นควอนตัมที่ตรงไปตรงมาที่สุดของเรื่องนี้ก็คือการเขียนข้อความที่เข้ารหัสแบบไบนารีHello World
ในการลงทะเบียนของ qubits แต่จะต้องมี ~ 100 qubits และยาวเกินขีด จำกัด สูงสุดของคุณสำหรับความยาวรหัส
งั้นลองเขียนข้อความสั้น ๆ มาเขียน;)
กันเราต้องการสตริงความยาว 16 บิตโดยเฉพาะโดยใช้การเข้ารหัส ASCII
;) = 00111011 00101001
ใช้ QISKit คุณทำได้โดยใช้รหัสต่อไปนี้
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")
แน่นอนว่านี่ไม่ใช่ควอนตัมมาก ดังนั้นคุณสามารถซ้อนทับอิโมติคอนสองตัวแทนได้ ตัวอย่างที่ง่ายที่สุดคือการซ้อนทับ) กับ 8) เนื่องจากสตริงบิตสำหรับสิ่งเหล่านี้จะแตกต่างกันเฉพาะใน qubits 8 และ 9
;) = 00111011 00101001
8) = 00111000 00101001
ดังนั้นคุณสามารถแทนที่เส้น
qc.x(qr[9])
qc.x(qr[8])
จากด้านบนด้วย
qc.h(qr[9]) # create superposition on 9
qc.cx(qr[9],qr[8]) # spread it to 8 with a cnot
Hadamard สร้างการทับซ้อนของ0
และ1
และ cnot ทำให้เป็นการทับซ้อนของ00
และ11
บนสอง qubits นี่คือการทับซ้อนที่จำเป็นเท่านั้นสำหรับและ;)
8)
หากคุณต้องการเห็นการใช้งานจริงของสิ่งนี้สามารถพบได้ในบทช่วยสอน QISKit (การเปิดเผยเต็มรูปแบบ: เขียนโดยฉัน)