Skip to main content

quantrs2_tytan/tensor_network_sampler/
tensornetworksampler_traits.rs

1//! # TensorNetworkSampler - Trait Implementations
2//!
3//! This module contains trait implementations for `TensorNetworkSampler`.
4//!
5//! ## Implemented Traits
6//!
7//! - `Sampler`
8//!
9//! 🤖 Generated with [SplitRS](https://github.com/cool-japan/splitrs)
10
11use crate::sampler::{SampleResult, Sampler, SamplerError, SamplerResult};
12use scirs2_core::ndarray::{Array1, Array2, ArrayD};
13use scirs2_core::random::prelude::*;
14use std::collections::HashMap;
15
16use super::types::TensorNetworkSampler;
17
18impl Sampler for TensorNetworkSampler {
19    fn run_qubo(
20        &self,
21        _qubo: &(
22            scirs2_core::ndarray::Array2<f64>,
23            std::collections::HashMap<String, usize>,
24        ),
25        _num_reads: usize,
26    ) -> SamplerResult<Vec<crate::sampler::SampleResult>> {
27        Err(SamplerError::NotImplemented(
28            "Use run_hobo instead ".to_string(),
29        ))
30    }
31    fn run_hobo(
32        &self,
33        problem: &(
34            scirs2_core::ndarray::ArrayD<f64>,
35            std::collections::HashMap<String, usize>,
36        ),
37        num_reads: usize,
38    ) -> SamplerResult<Vec<crate::sampler::SampleResult>> {
39        let (hamiltonian, _var_map) = problem;
40        let mut sampler_copy = Self::new(self.config.clone());
41        match sampler_copy.sample(hamiltonian, num_reads) {
42            Ok(results) => Ok(results),
43            Err(e) => Err(SamplerError::InvalidParameter(e.to_string())),
44        }
45    }
46}