def test_reflection_qubits(self): """Test setting idle qubits doesn't apply any operations on these qubits.""" oracle = QuantumCircuit(4) oracle.z(3) grover_op = GroverOperator(oracle, reflection_qubits=[0, 3]) dag = circuit_to_dag(grover_op.decompose()) self.assertEqual(set(dag.idle_wires()), {dag.qubits[1], dag.qubits[2]})
def gen_grover(width): oracle = QuantumCircuit(width, name='q') oracle.z(width - 1) full_circuit = GroverOperator(oracle, insert_barriers=False, name='q') full_circuit = dag_to_circuit(circuit_to_dag(full_circuit)) full_circuit.qregs[0].name = 'q' full_circuit = full_circuit.decompose() full_circuit = transpile(full_circuit, optimization_level=3) return full_circuit
def test_custom_zero_reflection(self): """Test passing in a custom zero reflection.""" oracle = QuantumCircuit(1) oracle.z(0) zero_reflection = QuantumCircuit(1) zero_reflection.x(0) zero_reflection.rz(np.pi, 0) zero_reflection.x(0) grover_op = GroverOperator(oracle, zero_reflection=zero_reflection) with self.subTest("zero reflection up to phase works"): self.assertGroverOperatorIsCorrect(grover_op, oracle) with self.subTest("circuits match"): expected = QuantumCircuit(*grover_op.qregs, global_phase=np.pi) expected.compose(oracle, inplace=True) expected.h(0) # state_in is H expected.compose(zero_reflection, inplace=True) expected.h(0) self.assertEqual(expected, grover_op.decompose())