Fiquei me perguntando se existe uma maneira de compor um programa com múltiplos circuitos quânticos sem ter o registro reinicializado em para cada circuito.
Especificamente, eu gostaria de executar um segundo circuito quântico depois de executar o primeiro, como neste exemplo:
qp = QuantumProgram()
qr = qp.create_quantum_register('qr',2)
cr = qp.create_classical_register('cr',2)
qc1 = qp.create_circuit('B1',[qr],[cr])
qc1.x(qr)
qc1.measure(qr[0], cr[0])
qc1.measure(qr[1], cr[1])
qc2 = qp.create_circuit('B2', [qr], [cr])
qc2.x(qr)
qc2.measure(qr[0], cr[0])
qc2.measure(qr[1], cr[1])
#qp.add_circuit('B1', qc1)
#qp.add_circuit('B2', qc2)
pprint(qp.get_qasms())
result = qp.execute()
print(result.get_counts('B1'))
print(result.get_counts('B2'))
Infelizmente, o que eu recebo é o mesmo resultado para as duas execuções (ou seja, uma contagem de 11
para B1
e em B2
vez de 11
e 00
para a segunda, como se B2
fosse executada em um estado completamente novo inicializado 00
depois B1
.
algorithm
programming
qiskit
asdf
fonte
fonte
Respostas:
No Qiskit, você pode compor dois circuitos para criar um circuito maior. Você pode fazer isso simplesmente usando o
+
operador nos circuitos.Aqui está o seu programa reescrito para ilustrar isso (nota: você precisa da versão mais recente do Qiskit para isso, atualize com
pip install -U qiskit
).Você pode ver que qc3 é uma concatenação de q1 e q2.
Rendimentos:
Agora, você parece querer investigar o estado duas vezes: uma vez onde qc1 termina e uma vez quando qc2 termina. Você pode fazer isso em um simulador inserindo
snapshot
comandos. Isso salvará o vetor de estado em um determinado ponto do circuito. Não reduz o estado.Agora você pode executar
qc3
em um simulador.Rendimentos: [0. + 0.j 0. + 0.j 0. + 0.j 1. + 0.j] [1. + 0.j 0. + 0.j 0. + 0.j 0. + 0.j] {'00': 1024}
Portanto, o estado volta para | 00> conforme o esperado.
fonte
Depois que você faz uma medição, a função de onda do registro / estado quântico entra em colapso e perde sua natureza quântica. Não faz sentido aplicar outro circuito nele.
fonte