quantrs2_tytan/tensor_network_sampler/
tensornetworksampler_traits.rs1use 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}