Please download QOSF_Task_3.pdf for better visualizations! (Both .ipynb and .pdf have rendering issues opening on Github)
Please write a simple compiler – program, which translates one quantum circuit into another, using a restricted set of gates.
You need to consider just the basic gates for the input circuit, such as (I, H, X, Y, Z, RX, RY, RZ, CNOT, CZ).
The output circuit should consist only from the following gates: RX, RZ, CZ. In other words, each gate in the original circuit must be replaced by an equivalent combination of gates coming from the restricted set (RX, RZ, CZ) only.
For example, a Hadamard gate after compilation looks like this:
RZ(pi/2) RX(pi/2) RZ(pi/2)
Analyze what’s the overhead of the compiled program compared to the original one and propose how to improve it. What we mean by overhead is the following: by replacing all the initial gates with the restricted set of gates given in the problem, you will see that the resulting circuit is much more involved than the original one. This is what we called the overhead, and you may think about how to treat this problem, i.e. you could try to simplify as much as possible the resulting circuit.