Quantum Counting#

quantum_counting(qv, oracle, precision)[source]#

This algorithm estimates the amount of solutions for a given Grover oracle.

Parameters
qvQuantumVariable

The QuantumVariable on which to evaluate.

oraclefunction

The oracle function.

precisionint

The precision to perform the quantum phase estimation with.

Returns
Mfloat

An estimate of the amount of solutions.

Examples

We create an oracle, which performs a simple phase flip on the last qubit.

from qrisp import quantum_counting, z, QuantumVariable

def oracle(qv):
    z(qv[-1])

We expect half of the state-space of the input to be a solution.

For 3 qubits, the state space is \(2^3 = 8\) dimensional.

>>> quantum_counting(QuantumVariable(3), oracle, 3)
3.999999999999999

For 4 qubits, the state space is \(2^4 = 16\) dimensional.

>>> quantum_counting(QuantumVariable(4), oracle, 3)
7.999999999999998