pub trait QuantumInference {
// Required methods
fn solve_qaoa(&self, num_layers: usize) -> Result<HashMap<String, usize>>;
fn quantum_marginals(
&self,
num_shots: usize,
) -> Result<HashMap<String, ArrayD<f64>>>;
fn quantum_partition_function(&self) -> Result<f64>;
}Expand description
Trait for quantum-enhanced inference on factor graphs.
This trait provides methods for using quantum algorithms (QAOA, quantum annealing) to perform inference tasks on probabilistic graphical models.
§Example
use tensorlogic_quantrs_hooks::{FactorGraph, QuantumInference};
use std::collections::HashMap;
let mut graph = FactorGraph::new();
graph.add_variable_with_card("x".to_string(), "Binary".to_string(), 2);
graph.add_variable_with_card("y".to_string(), "Binary".to_string(), 2);
// Solve using QAOA
let solution = graph.solve_qaoa(2).unwrap();
println!("Best assignment: {:?}", solution);Required Methods§
Sourcefn solve_qaoa(&self, num_layers: usize) -> Result<HashMap<String, usize>>
fn solve_qaoa(&self, num_layers: usize) -> Result<HashMap<String, usize>>
Solve the optimization problem using QAOA (Quantum Approximate Optimization Algorithm).
QAOA maps the factor graph to a quantum circuit and finds the optimal variable assignment that maximizes the joint probability (or minimizes energy).
§Arguments
num_layers- Number of QAOA layers (p parameter). More layers give better approximation but require more quantum resources.
§Returns
A map from variable names to their optimal values.
Sourcefn quantum_marginals(
&self,
num_shots: usize,
) -> Result<HashMap<String, ArrayD<f64>>>
fn quantum_marginals( &self, num_shots: usize, ) -> Result<HashMap<String, ArrayD<f64>>>
Compute marginal distributions using quantum sampling.
This method uses quantum circuits to sample from the joint distribution and estimates marginal probabilities from the samples.
§Arguments
num_shots- Number of measurement shots for sampling.
§Returns
A map from variable names to their marginal probability distributions.
Sourcefn quantum_partition_function(&self) -> Result<f64>
fn quantum_partition_function(&self) -> Result<f64>
Compute the partition function using quantum amplitude estimation.
This is useful for computing normalized probabilities and free energy.