Algorithms API Reference
HLQuantum ships with a library of ready-to-use quantum algorithms. Each module exposes a canonical function name as well as a friendly alias for readability.
Friendly Aliases
| Alias (friendly) | Canonical function | Module |
|---|---|---|
frequency_transform |
qft(num_qubits, inverse) |
algorithms.qft |
quantum_search |
grover(num_qubits, target, iters) |
algorithms.grover |
find_hidden_pattern |
bernstein_vazirani(secret) |
algorithms.bernstein_vazirani |
check_balance |
deutsch_jozsa(num_qubits, oracle) |
algorithms.deutsch_jozsa |
add_two_bits |
half_adder() |
algorithms.arithmetic |
add_three_bits |
full_adder() |
algorithms.arithmetic |
add_numbers |
ripple_carry_adder(num_bits) |
algorithms.arithmetic |
find_minimum_energy |
vqe_solve(...) |
algorithms.vqe |
variational_circuit |
hardware_efficient_ansatz(...) |
algorithms.vqe |
optimize_combinatorial |
qaoa_solve(...) |
algorithms.qaoa |
learn_distribution |
gqe_solve(...) |
algorithms.gqe |
compute_gradient |
parameter_shift_gradient(...) |
algorithms.grad |
Quick Example
from hlquantum import algorithms
# Use friendly aliases
qft_circuit = algorithms.frequency_transform(num_qubits=4)
bv_circuit = algorithms.find_hidden_pattern("1011")
search = algorithms.quantum_search(num_qubits=3, target_states=["101"])
# Variational / optimisation
from hlquantum.algorithms import find_minimum_energy, optimize_combinatorial, compute_gradient
# Parameter-shift gradients
grads = compute_gradient(circuit, {"theta": 0.5})
Foundational Algorithms
Quantum Fourier Transform
hlquantum.algorithms.qft ~~~~~~~~~~~~~~~~~~~~~~~~
Quantum Fourier Transform (QFT) implementation.
frequency_transform = qft
module-attribute
Alias for :func:qft — transform quantum amplitudes into the frequency domain.
qft(num_qubits, inverse=False)
Generate a Quantum Fourier Transform circuit.
Parameters
num_qubits : int Number of qubits to apply the QFT on. inverse : bool, optional If True, generate the Inverse QFT (IQFT).
Returns
Circuit The QFT or IQFT circuit.
Notes
Controlled-Phase(θ) is decomposed as: Rz(target, θ/2) → CX(control, target) → Rz(target, -θ/2) → CX(control, target) → Rz(control, θ/2)
Source code in hlquantum/algorithms/qft.py
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | |
Grover's Search
Grover's search algorithm implementation.
grover(num_qubits, target_states, iterations=None)
Generate a Grover's search circuit.
Source code in hlquantum/algorithms/grover.py
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | |
Bernstein-Vazirani
hlquantum.algorithms.bernstein_vazirani ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Bernstein-Vazirani algorithm implementation.
find_hidden_pattern = bernstein_vazirani
module-attribute
Alias for :func:bernstein_vazirani — discover a hidden bitstring pattern in one query.
bernstein_vazirani(secret_bitstring)
Generate a Bernstein-Vazirani circuit to find a secret bitstring.
Parameters
secret_bitstring : str The secret bitstring (e.g., "1011") that the algorithm will discover.
Returns
Circuit The Bernstein-Vazirani circuit.
Source code in hlquantum/algorithms/bernstein_vazirani.py
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | |
Deutsch-Jozsa
hlquantum.algorithms.deutsch_jozsa ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Deutsch-Jozsa algorithm implementation.
check_balance = deutsch_jozsa
module-attribute
Alias for :func:deutsch_jozsa — check whether a function is constant or balanced.
balanced_oracle(qc)
Example of a balanced oracle (CX from q0 to ancilla).
Source code in hlquantum/algorithms/deutsch_jozsa.py
57 58 59 | |
constant_oracle(qc)
Example of a constant oracle (does nothing).
Source code in hlquantum/algorithms/deutsch_jozsa.py
52 53 54 | |
deutsch_jozsa(num_qubits, oracle)
Generate a Deutsch-Jozsa circuit.
Parameters
num_qubits : int Number of input qubits (n). oracle : Callable[[Circuit], None] A function that applies the oracle to a Circuit of size n+1.
Returns
Circuit The Deutsch-Jozsa circuit.
Source code in hlquantum/algorithms/deutsch_jozsa.py
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | |
Quantum Arithmetic
hlquantum.algorithms.arithmetic ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Quantum arithmetic operations (Adders, etc.).
add_numbers = ripple_carry_adder
module-attribute
Alias for :func:ripple_carry_adder — add two n-bit numbers.
add_three_bits = full_adder
module-attribute
Alias for :func:full_adder — add two bits with a carry-in.
add_two_bits = half_adder
module-attribute
Alias for :func:half_adder — add two single-bit inputs.
full_adder()
Generate a 1-bit full adder.
Qubits: - 0, 1, 2: Input bits (A, B, Cin) - 3: Sum (A ^ B ^ Cin) - 4: Carry out (Cout)
Source code in hlquantum/algorithms/arithmetic.py
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | |
half_adder()
Generate a 2-qubit half adder.
Qubits: - 0, 1: Input bits (A, B) - 2: Sum (A ^ B) - 3: Carry (A & B)
Source code in hlquantum/algorithms/arithmetic.py
13 14 15 16 17 18 19 20 21 22 23 24 25 26 | |
ripple_carry_adder(num_bits)
Generate an n-bit ripple-carry adder.
Qubit layout
a[0..n-1] — first operand b[0..n-1] — second operand (sum is written here in-place) c[0..n] — carry chain (c[0]=carry-in, c[n]=carry-out)
Total qubits: 3*num_bits + 1 After execution b[i] holds the i-th bit of (A+B) and c[n] holds the final carry-out.
Source code in hlquantum/algorithms/arithmetic.py
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | |
Variational & Optimisation
VQE (Variational Quantum Eigensolver)
Variational Quantum Eigensolver (VQE) utilities.
hardware_efficient_ansatz(num_qubits, params)
A standard Hardware-Efficient Ansatz (HEA) template.
Source code in hlquantum/algorithms/vqe.py
50 51 52 53 54 55 56 57 58 59 | |
vqe_solve(ansatz, initial_params, optimizer=None, shots=1000, **kwargs)
Solve an optimization problem using VQE.
Source code in hlquantum/algorithms/vqe.py
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | |
QAOA (Quantum Approximate Optimisation)
hlquantum.algorithms.qaoa ~~~~~~~~~~~~~~~~~~~~~~~~~
Quantum Approximate Optimization Algorithm (QAOA) implementation.
optimize_combinatorial = qaoa_solve
module-attribute
Alias for :func:qaoa_solve — solve combinatorial optimisation problems (e.g. Max-Cut).
qaoa_solve(cost_hamiltonian, p=1, optimizer=None, shots=1000, **kwargs)
Solve an optimization problem using QAOA.
Parameters
cost_hamiltonian : list[dict] Representation of the cost function (e.g., Max-Cut). Each dict should have 'qubits': (i, j) and 'weight': float. p : int Number of QAOA layers (steps). optimizer : Callable, optional A classical optimizer (defaults to scipy.optimize.minimize). shots : int, optional Number of shots for expectation value estimation. **kwargs Forwarded to the runner.
Returns
dict Optimization results including optimal beta/gamma and max-cut value.
Source code in hlquantum/algorithms/qaoa.py
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | |
GQE (Generative Quantum Eigensolver)
hlquantum.algorithms.gqe ~~~~~~~~~~~~~~~~~~~~~~~~
Generative Quantum Eigensolver (GQE) implementation.
learn_distribution = gqe_solve
module-attribute
Alias for :func:gqe_solve — learn a target probability distribution using a quantum circuit.
gqe_solve(ansatz, loss_fn, optimizer=None, **kwargs)
Solve an optimization problem using a Generative Quantum Eigensolver approach.
GQE uses generative learning to find the ground state or approximate the probability distribution of a Hamiltonian.
Source code in hlquantum/algorithms/gqe.py
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | |
Differentiable Programming
Parameter-Shift Gradients
hlquantum.algorithms.grad ~~~~~~~~~~~~~~~~~~~~~~~~~
Gradient calculation for quantum circuits using the Parameter Shift Rule.
compute_gradient = parameter_shift_gradient
module-attribute
Alias for :func:parameter_shift_gradient — compute quantum circuit gradients.
parameter_shift_gradient(circuit, parameter_values, shots=1000, **kwargs)
Calculate the gradient of a circuit's expectation value using the Parameter Shift Rule.
The formula is: df/dθ = 0.5 * [f(θ + π/2) - f(θ - π/2)]
Parameters
circuit : Circuit The parameterized circuit. parameter_values : dict The current values for all parameters in the circuit. shots : int Number of shots for each evaluation. **kwargs Additional arguments for the runner.
Returns
dict A mapping from parameter name to its gradient value.
Source code in hlquantum/algorithms/grad.py
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | |