IBM Quantum Challenge

This was a fun 4 day program with the IBM Quantum Challenge. I probably spent +- 30 hours working through the 4 challenges, and during this time I recognized I really needed to learn more of the fundamental math aspects which Physics is built upon. In the end I completed all the work, the final challenge was a monster for someone with little theoretical knowledge in the field but after a few hints and tips from the team, I had a score which was acceptable.

This was the final requirements:

What circuit would make such a complicated unitary?

Is there some symmetry, or is it random? We just updated Qiskit with the introduction of a quantum circuit library (https://github.com/Qiskit/qiskit-terra/tree/master/qiskit/circuit/library). This library gives users access to a rich set of well-studied circuit families, instances of which can be used as benchmarks (quantum volume), as building blocks in building more complex circuits (adders), or as tools to explore quantum computational advantage over classical computation (instantaneous quantum polynomial complexity circuits).from qiskit import QuantumCircuit from may4_challenge.ex4 import check_circuit, submit_circuit

Using only single qubit rotations and CNOT gates, find a quantum circuit that approximates that unitary  by a unitary  up to an error , such that  !

Note that the norm we are using here is the spectral norm, .

This can be seen as the largest scaling factor that the matrix  has on any initial (normalized) state . One can show that this norm corresponds to the largest singular value of , i.e., the square root of the largest eigenvalue of the matrix , where  denotes the conjugate transpose of .

When you submit a circuit, we remove the global phase of the corresponding unitary  before comparing it with  using the spectral norm. For example, if you submit a circuit that generates , we remove the global phase  from  before computing the norm, and you will have a successful submission. As a result, you do not have to worry about matching the desired unitary, , up to a global phase.

As the single-qubit gates have a much higher fidelity than the two-qubit gates, we will look at the number of CNOT-gates, , and the number of u3-gates, , to determine the cost of your decomposition as

Try to optimize the cost of your decomposition.

Note that you will need to ensure that your circuit is composed only of  and  gates. The exercise is considered correctly solved if your cost is smaller than 1600.

import qiskit.extensions.quantum_initializer.isometry as isometry
from qiskit.quantum_info.operators import Operator
import qiskit.compiler.transpile as transpile
from scipy.linalg import hadamard
from math import pi

qc = QuantumCircuit(4)

#apply hadamard using u3 gates
qc.u3(pi/2,0,pi,[0])
qc.u3(pi/2,0,pi,[1])
qc.u3(pi/2,0,pi,[2])
qc.u3(pi/2,0,pi,[3])

#k=HUH
Y=np.diag(k*np.exp(-2j*pi/3))
qc.diagonal(list(Y),[0,1,2,3])

qc.u3(pi/2,0,pi,[0])
qc.u3(pi/2,0,pi,[1])
qc.u3(pi/2,0,pi,[2])
qc.u3(pi/2,0,pi,[3])

qc3=transpile(qc, basis_gates=['u3', 'cx'],optimization_level=3)
check_circuit(qc3)

Circuit stats:
||U-V||_2 = 2.5785120546697708e-15
(U is the reference unitary, V is yours, and the global phase has been removed from both of them).
Cost is 51

Great! Your circuit meets all the constrains.
Your score is 51. The lower, the better!
Feel free to submit your answer and remember you can re-submit a new circuit at any time!
qc3.draw(output='mpl')