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 operate on a Circuit object passed in by the caller, following the standard circuit-building 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(*args, qubits=None, ancilla=None, n_qubits=None)[source]

Grover diffusion (amplitude amplification) operator.

Two calling conventions:

# Fragment style (recommended):
diff = grover_diffusion(qubits=[0, 1, 2])     # -> Circuit
diff = grover_diffusion(3)                    # n_qubits positional

# Legacy in-place (deprecated):
c = Circuit()
grover_diffusion(c, qubits=[0, 1, 2])
Parameters:
  • qubits (list[int] | None)

  • ancilla (int | None)

  • n_qubits (int | None)

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

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

Two calling conventions:

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

# Legacy in-place (deprecated):
c = Circuit()
anc = grover_oracle(c, marked_state=5, qubits=[0, 1, 2])  # mutates, returns ancilla idx

See module docstring for the algorithm.

Parameters:
  • marked_state (int | None)

  • qubits (list[int] | None)

  • ancilla (int | None)

  • n_qubits (int | None)

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

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

Return type:

Circuit