Professional Documents
Culture Documents
IBMQ.load_account()
qcomp = provider.get_backend('ibmq_quito')
Desafio 01
Construir um circuito de 2 Qubits fazendo uma CNOT controlada pelo |0>
Resultados esperados:
U |00⟩ = |01⟩
U |01⟩ = |00⟩
U |10⟩ = |10⟩
U |11⟩ = |11⟩
Solução
In [7]: #Cria um circuito quântico com 2 registradores quânticos e 2 registradores
clássicos
qregister = QuantumRegister(2)
cregister = ClassicalRegister(2)
circuit = QuantumCircuit(qregister,cregister)
circuit.initialize(ket_1, 0)
circuit.initialize(ket_1, 1)
Out[9]:
In [11]: circuit.draw(output='mpl')
Out[11]:
Out[13]:
In [15]: circuit.draw(output='mpl')
Out[15]:
Out[18]:
Simulação
In [19]: #Insere as medidas nos Qubits 0 e 1 do registrador 0
circuit.measure(qregister,cregister)
In [20]: circuit.draw(output='mpl')
Out[20]:
Out[22]:
Execução
In [23]: #Executa e monitora o job no backend
job = execute(circuit, backend=qcomp)
job_monitor(job)
Out[24]:
Desafio 02
Construir um circuito de 3 Qubits fazendo uma CCNOT controlada pelo |0>
Resultados esperados:
U |000⟩ = |001⟩
U |001⟩ = |000⟩
U |010⟩ = |010⟩
U |011⟩ = |011⟩
U |100⟩ = |100⟩
U |101⟩ = |101⟩
U |110⟩ = |110⟩
U |111⟩ = |111⟩
Solução
In [ ]:
cregister = ClassicalRegister(3)
circuit = QuantumCircuit(qregister,cregister)
circuit.initialize(ket_0, 0)
circuit.initialize(ket_0, 1)
circuit.initialize(ket_0, 2)
Out[27]:
In [29]: circuit.draw(output='mpl')
Out[29]:
In [31]: circuit.draw(output='mpl')
Out[31]:
In [32]: #Insere o operador X(NOT) nos Qubits 0 e 1 do registrador 0
circuit.x(qregister[0])
circuit.x(qregister[1])
In [33]: circuit.draw(output='mpl')
Out[33]:
Out[36]:
Simulação
In [37]: #Insere as medidas nos Qubits 0, 1 e 2 do registrador 0
circuit.measure(qregister,cregister)
Out[37]: <qiskit.circuit.instructionset.InstructionSet at 0x7f135e5f8640>
In [38]: circuit.draw(output='mpl')
Out[38]:
Out[40]:
Execução
In [41]: #Executa e monitora o job no backend
job = execute(circuit, backend=qcomp, shots=2048)
job_monitor(job)
Out[42]: