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).expect("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.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".