Quantum computations are typically performed as a sequence of basic operations, called quantum gates. Different gate sequences, circuits, can implement the same overall computation. Since every additional takes time and introduces noise into system, it is important to find smallest possible circuit that implements given computation, especially for near-term devices execute only limited number g...