양자 "Hello World"를 원하는 것처럼 들립니다. 이것의 가장 간단한 양자 버전은 텍스트의 이진 인코딩 버전 Hello World
을 큐 비트 레지스터에 쓰는 것 입니다. 그러나 이것은 ~ 100 큐 비트가 필요하며 코드 길이의 상한보다 길다.
짧은 텍스트 조각을 작성합시다. 작성해 봅시다. ;)
길이가 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과 9에서만 다르기 때문에;)를 8)과 겹치는 것입니다.
;) = 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
마드는의 중첩을 생성 0
하고 1
, 상기 CNOT는의 중첩으로하게 00
하고 11
두 개의 큐빗에. ;)
and에 대한 유일한 필수 중첩입니다 8)
.
실제 구현을보고 싶다면 QISKit 튜토리얼 에서 찾을 수 있습니다 (전체 공개 : 나에 의해 작성되었습니다).