示例#1
0
 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]})
示例#2
0
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
示例#3
0
    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())