dist_prep — Probability Distribution Encoding¶
Circuits that encode probability distributions into quantum amplitudes on the PDF register.
qiskit_impl.dist_prep.pdf_initialize ¶
Create the pdf as a wavefunction.
Build a quantum circuit that encodes the PDF Pr[ξ] as amplitudes on the ξ register.
The prepared state is
|ξ⟩ = Σ_ξ √Pr[ξ] |ξ⟩
so that measuring the ξ register gives outcome ξ with probability Pr[ξ]. This is Eq. (17) of the paper (|ξ⟩ = Π_j H_j for uniform, or Initialize for general).
Two cases
uniform == True : n Hadamard gates (H^{\otimes n}) — efficient O(n) circuit uniform == False : Qiskit Initialize (arbitrary statevector) — O(2^n) gates after transpile
Source code in qiskit_impl/dist_prep.py
qiskit_impl.dist_prep.make_pdf_uniform ¶
Generates a probability density for a uniform distribution. Input: system size n - int Output: dictionary containing PDF - dict
Build a discrete uniform PDF over all 2^n bitstrings on n qubits.
Every bitstring (including ones that violate wind-demand) gets equal probability 1/2^n. This is the simplest baseline; in the quantum circuit it corresponds to n Hadamard gates H^{\otimes n} on the pdf register.
Returns: dict {(b0,b1,...,bn-1): 1/2^n}.
Source code in qiskit_impl/dist_prep.py
qiskit_impl.dist_prep.make_pdf_skewnormal ¶
Generates a probability density for a skew normal distribution. Input: system size n Output: dictionary containing PDF
Build a discrete PDF approximating a skew-normal distribution over n-qubit bitstrings.
Strategy
- Map each Hamming weight s = sum(bitstring) to a normal-distribution probability.
- Divide that probability equally among all bitstrings with that weight (C(n,s) of them).
Returns: dict {(b0,b1,...,bn-1): probability} summing to 1.
Source code in qiskit_impl/dist_prep.py
qiskit_impl.dist_prep.make_normal_distribution_circuit ¶
Build a quantum circuit encoding a normal (Gaussian) distribution.
Wraps Qiskit Finance's NormalDistribution to encode
\(p(\xi) \sim \mathcal{N}(\mu, \sigma^2)\) as amplitudes on n_y qubits.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
args
|
dict
|
Dictionary with keys:
|
required |
Returns:
| Type | Description |
|---|---|
QuantumCircuit
|
QuantumCircuit encoding the normal distribution on |
Note
Requires qiskit_finance. The distribution is centered at num_qubits/2
when mu=0.
Source code in qiskit_impl/dist_prep.py
qiskit_impl.dist_prep.make_variational_distribution_circuit ¶
Build a variational (trainable) circuit for encoding a probability distribution.
Constructs an ansatz of alternating RY rotation layers and CNOT entanglers. The rotation angles are trainable parameters that can be optimized to approximate an arbitrary target distribution.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
args
|
dict
|
Dictionary with keys:
|
required |
Returns:
| Type | Description |
|---|---|
QuantumCircuit
|
QuantumCircuit with depth = |