15#ifndef __TENSOR_CONTRACTOR_H_
16#define __TENSOR_CONTRACTOR_H_ 1
36 std::unordered_map<Eigen::Index, std::shared_ptr<TensorNode>>;
40 std::vector<Eigen::Index> &keys,
41 std::unordered_map<Eigen::Index, Eigen::Index> &keysKeys,
42 bool fillKeys =
true,
bool contract =
true) = 0;
79 virtual std::shared_ptr<ITensorContractor>
Clone()
const = 0;
Tensor Contractor interface.
virtual void SetMultithreading(bool multithreading=true)=0
Enable/disable multithreading.
std::unordered_map< Eigen::Index, std::shared_ptr< TensorNode > > TensorsMap
virtual TensorsMap InitializeTensors(const TensorNetwork &network, Types::qubit_t qubit, std::vector< Eigen::Index > &keys, std::unordered_map< Eigen::Index, Eigen::Index > &keysKeys, bool fillKeys=true, bool contract=true)=0
virtual double Contract(const TensorNetwork &network, Types::qubit_t qubit)=0
Contract the tensor network.
virtual bool GetMultithreading() const =0
Get the multithreading flag.
virtual std::shared_ptr< ITensorContractor > Clone() const =0
Clone the tensor contractor.
virtual size_t GetMaxTensorRank() const =0
uint_fast64_t qubit_t
The type of a qubit.