Skip to content

Foundations

ampamp.grover

GroverEngine

The core algebraic and circuit engine for Grover's Search.

Focuses on state synthesis and geometric calculations to amplify amplitudes of marked solution states optimally.

__init__(n_qubits, marked_indices)

Initializes the GroverEngine.

Parameters:

Name Type Description Default
n_qubits int

The number of qubits representing the problem space (\(N = 2^n\)).

required
marked_indices list[int]

List indicating the integers representing the marked states in the problem subspace.

required

compute_success_prob(lambda_val, k) staticmethod

Analytic success probability calculation.

Computes the success probability \(P(k)\) after \(k\) Grover iterations given the solution density \(\lambda\). The probability formula is defined geometrically as \(P(k) = \sin^2((2k + 1) \theta / 2)\), where \(\theta = 2 \arcsin(\sqrt{\lambda})\).

Parameters:

Name Type Description Default
lambda_val float

The solution density fraction, \(M/N\).

required
k int

The number of Grover iterations applied.

required

Returns:

Name Type Description
float float

The probability of measuring a marked state.

Raises:

Type Description
ValueError

If lambda_val is not within the inclusive bound [0, 1].

construct_circuit(iterations)

Synthesizes the full Grover circuit.

Links the oracle operator and diffusion operator for \(k\) iterations starting from the full uniformly mixed amplitude distribution \(|s\rangle\).

Parameters:

Name Type Description Default
iterations int

The amount of generalized Grover operator iterations to sequentially run \(Q = -A S_0 A^{-1} S_f\).

required

Returns:

Name Type Description
QuantumCircuit QuantumCircuit

The synthesized Grover standard algorithm sequence.

get_diffusion()

Generates the Grover Diffusion operator (Inversion about mean).

Returns:

Name Type Description
QuantumCircuit QuantumCircuit

An n-qubit circuit corresponding to \(2 |s\rangle\langle s| - I\),

QuantumCircuit

where \(|s\rangle\) is the equal superposition state.

get_oracle()

Generates a Phase Oracle for the marked states.

Constructs a standard quantum phase oracle gate circuit that flips the sign of the marked states while leaving orthogonal unmarked states alone.

Returns:

Name Type Description
QuantumCircuit QuantumCircuit

An n-qubit oracle circuit flipping the phase of marked states.