uniqc.algorithms.core.circuits.grover_oracle module

Grover oracle and diffusion operator construction.

Provides reusable building blocks for Grover’s quantum search algorithm:

Both functions return a fresh Circuit fragment, following the standard circuit-fragment convention of uniqc.algorithms.core.circuits.

References

Grover, L. K. (1996). “A fast quantum mechanical algorithm for database search.” STOC ‘96. https://arxiv.org/abs/quant-ph/9605043

uniqc.algorithms.core.circuits.grover_oracle.grover_diffusion(n_qubits=None, *, qubits=None)[source]

Grover diffusion (amplitude amplification) operator fragment.

diff = grover_diffusion(qubits=[0, 1, 2])     # -> Circuit
diff = grover_diffusion(3)                    # n_qubits positional
uniqc.algorithms.core.circuits.grover_oracle.grover_oracle(marked_state=None, *, qubits=None, ancilla=None, n_qubits=None)[source]

Construct a phase-flip oracle fragment for a marked basis state.

oracle = grover_oracle(marked_state=5, qubits=[0, 1, 2])  # -> Circuit

See module docstring for the algorithm.

uniqc.algorithms.core.circuits.grover_oracle.grover_oracle_example()[source]

Return a 3-qubit Grover oracle marking state |5⟩ for tests/docs.