#include <state.hpp>

Inheritance diagram for QuantumStateBase:
QuantumStateCpu

Public Member Functions

 QuantumStateBase (UINT qubit_count_)
 
virtual ~QuantumStateBase ()
 
virtual void set_zero_state ()=0
 
virtual void set_computational_basis (ITYPE comp_basis)=0
 
virtual void set_Haar_random_state ()=0
 
virtual void set_Haar_random_state (UINT seed)=0
 
virtual double get_zero_probability (UINT target_qubit_index) const =0
 
virtual double get_marginal_probability (std::vector< UINT > measured_values) const =0
 
virtual double get_entropy () const =0
 
virtual double get_norm () const =0
 
virtual void normalize (double norm)=0
 
virtual QuantumStateBaseallocate_buffer () const =0
 
virtual QuantumStateBasecopy () const =0
 
virtual void load (const QuantumStateBase *state)=0
 
virtual void load (const std::vector< CPPCTYPE > &state)=0
 
virtual void load (const CPPCTYPE *state)=0
 
virtual const char * get_device_name () const =0
 
virtual CPPCTYPEdata_cpp () const =0
 
virtual CTYPE * data_c () const =0
 
virtual UINT get_classical_value (UINT index)
 
virtual void set_classical_value (UINT index, UINT val)
 
virtual const std::vector< UINT > get_classical_register () const
 
virtual std::vector< ITYPE > sampling (UINT sampling_count)=0
 
virtual std::string to_string () const
 

Public Attributes

const UINT & qubit_count = _qubit_count
 
const ITYPE & dim = _dim
 
const std::vector< UINT > & classical_register = _classical_register
 

Protected Attributes

ITYPE _dim
 
UINT _qubit_count
 
std::vector< UINT > _classical_register
 

Friends

std::ostream & operator<< (std::ostream &os, const QuantumStateBase &state)
 
std::ostream & operator<< (std::ostream &os, const QuantumStateBase *state)
 

Detailed Description

量子状態の基底クラス

Constructor & Destructor Documentation

◆ QuantumStateBase()

QuantumStateBase::QuantumStateBase ( UINT  qubit_count_)
inline

コンストラクタ

Parameters
qubit_count_量子ビット数

◆ ~QuantumStateBase()

virtual QuantumStateBase::~QuantumStateBase ( )
inlinevirtual

デストラクタ

Member Function Documentation

◆ allocate_buffer()

virtual QuantumStateBase* QuantumStateBase::allocate_buffer ( ) const
pure virtual

バッファとして同じサイズの量子状態を作成する。

Returns
生成された量子状態

Implemented in QuantumStateCpu.

◆ copy()

virtual QuantumStateBase* QuantumStateBase::copy ( ) const
pure virtual

自身の状態のディープコピーを生成する

Returns
自身のディープコピー

Implemented in QuantumStateCpu.

◆ data_c()

virtual CTYPE* QuantumStateBase::data_c ( ) const
pure virtual

量子状態をcsimのComplex型の配列として取得する

Returns
複素ベクトルのポインタ

Implemented in QuantumStateCpu.

◆ data_cpp()

virtual CPPCTYPE* QuantumStateBase::data_cpp ( ) const
pure virtual

量子状態をC++のstd::complex<double>の配列として取得する

Returns
複素ベクトルのポインタ

Implemented in QuantumStateCpu.

◆ get_classical_register()

virtual const std::vector<UINT> QuantumStateBase::get_classical_register ( ) const
inlinevirtual

古典レジスタのベクトルを返す

Returns
古典レジスタ

◆ get_classical_value()

virtual UINT QuantumStateBase::get_classical_value ( UINT  index)
inlinevirtual

指定した添え字の古典レジスタの値を取得する。

Parameters
indexセットするレジスタの添え字
Returns
複素ベクトルのポインタ

◆ get_device_name()

virtual const char* QuantumStateBase::get_device_name ( ) const
pure virtual

量子状態が配置されているメモリを保持するデバイス名を取得する。

Implemented in QuantumStateCpu.

◆ get_entropy()

virtual double QuantumStateBase::get_entropy ( ) const
pure virtual

計算基底で測定した時得られる確率分布のエントロピーを計算する。

Returns
エントロピー

Implemented in QuantumStateCpu.

◆ get_marginal_probability()

virtual double QuantumStateBase::get_marginal_probability ( std::vector< UINT >  measured_values) const
pure virtual

複数の量子ビットを測定した時の周辺確率を計算する

Parameters
measured_values量子ビット数と同じ長さの0,1,2の配列。0,1はその値が観測され、2は測定をしないことを表す。
Returns
計算された周辺確率

Implemented in QuantumStateCpu.

◆ get_norm()

virtual double QuantumStateBase::get_norm ( ) const
pure virtual

量子状態のノルムを計算する

量子状態のノルムは非ユニタリなゲートを作用した時に小さくなる。

Returns
ノルム

Implemented in QuantumStateCpu.

◆ get_zero_probability()

virtual double QuantumStateBase::get_zero_probability ( UINT  target_qubit_index) const
pure virtual

target_qubit_indexの添え字の量子ビットを測定した時、0が観測される確率を計算する。

量子状態は変更しない。

Parameters
target_qubit_index
Returns
double

Implemented in QuantumStateCpu.

◆ load() [1/3]

virtual void QuantumStateBase::load ( const QuantumStateBase state)
pure virtual

stateの量子状態を自身へコピーする。

Implemented in QuantumStateCpu.

◆ load() [2/3]

virtual void QuantumStateBase::load ( const std::vector< CPPCTYPE > &  state)
pure virtual

stateの量子状態を自身へコピーする。

Implemented in QuantumStateCpu.

◆ load() [3/3]

virtual void QuantumStateBase::load ( const CPPCTYPE state)
pure virtual

stateの量子状態を自身へコピーする。

Implemented in QuantumStateCpu.

◆ normalize()

virtual void QuantumStateBase::normalize ( double  norm)
pure virtual

量子状態を正規化する

Parameters
norm自身のノルム

Implemented in QuantumStateCpu.

◆ sampling()

virtual std::vector<ITYPE> QuantumStateBase::sampling ( UINT  sampling_count)
pure virtual

量子状態を測定した際の計算基底のサンプリングを行う

Parameters
[in]sampling_countサンプリングを行う回数
Returns
サンプルされた値のリスト

Implemented in QuantumStateCpu.

◆ set_classical_value()

virtual void QuantumStateBase::set_classical_value ( UINT  index,
UINT  val 
)
inlinevirtual

指定した添え字の古典レジスタに値をセットする

Parameters
indexセットするレジスタの添え字
valセットする値
Returns
複素ベクトルのポインタ

◆ set_computational_basis()

virtual void QuantumStateBase::set_computational_basis ( ITYPE  comp_basis)
pure virtual

量子状態をcomp_basisの基底状態に初期化する

Parameters
comp_basis初期化する基底を表す整数

Implemented in QuantumStateCpu.

◆ set_Haar_random_state() [1/2]

virtual void QuantumStateBase::set_Haar_random_state ( )
pure virtual

量子状態をHaar randomにサンプリングされた量子状態に初期化する

Implemented in QuantumStateCpu.

◆ set_Haar_random_state() [2/2]

virtual void QuantumStateBase::set_Haar_random_state ( UINT  seed)
pure virtual

量子状態をシードを用いてHaar randomにサンプリングされた量子状態に初期化する

Implemented in QuantumStateCpu.

◆ set_zero_state()

virtual void QuantumStateBase::set_zero_state ( )
pure virtual

量子状態を計算基底の0状態に初期化する

Implemented in QuantumStateCpu.

◆ to_string()

virtual std::string QuantumStateBase::to_string ( ) const
inlinevirtual

量子回路のデバッグ情報の文字列を生成する

Returns
生成した文字列

Friends And Related Function Documentation

◆ operator<< [1/2]

std::ostream& operator<< ( std::ostream &  os,
const QuantumStateBase state 
)
friend

量子状態のデバッグ情報を出力する。

Returns
受け取ったストリーム

◆ operator<< [2/2]

std::ostream& operator<< ( std::ostream &  os,
const QuantumStateBase state 
)
friend

量子状態のデバッグ情報を出力する。

Returns
受け取ったストリーム

Member Data Documentation

◆ _classical_register

std::vector<UINT> QuantumStateBase::_classical_register
protected

◆ _dim

ITYPE QuantumStateBase::_dim
protected

◆ _qubit_count

UINT QuantumStateBase::_qubit_count
protected

◆ classical_register

const std::vector<UINT>& QuantumStateBase::classical_register = _classical_register

古典ビットのレジスタ

◆ dim

const ITYPE& QuantumStateBase::dim = _dim

量子状態の次元

◆ qubit_count

const UINT& QuantumStateBase::qubit_count = _qubit_count

量子ビット数


The documentation for this class was generated from the following file:
  • /Users/tenninyan/Soft/qunasys/qulacs/src/cppsim/state.hpp