HamiltonianSimulation¶
Overview¶
// global functions QCircuit QPanda::simulateZTerm(const std::vector<Qubit*>& qubit_vec, double coef, double t); QCircuit QPanda::simulateOneTerm( const std::vector<Qubit*>& qubit_vec, const QTerm& hamiltonian_term, double coef, double t ); QCircuit QPanda::simulateHamiltonian( const std::vector<Qubit*>& qubit_vec, const QHamiltonian& hamiltonian, double t, size_t slices ); QCircuit QPanda::simulatePauliZHamiltonian(const std::vector<Qubit*>& qubit_vec, const QHamiltonian& hamiltonian, double t); QCircuit QPanda::applySingleGateToAll(const std::string& gate, const std::vector<Qubit*>& qubit_vec); void QPanda::applySingleGateToAll(const std::string& gate, const std::vector<Qubit*>& qubit_vec, QCircuit& circuit); QCircuit QPanda::ising_model(const std::vector<Qubit*>& qubit_vec, const QGraph& graph, const vector_d& gamma); QCircuit QPanda::pauliX_model(const std::vector<Qubit*>& qubit_vec, const vector_d& beta);
Detailed Documentation¶
Global Functions¶
QCircuit QPanda::simulateZTerm(const std::vector<Qubit*>& qubit_vec, double coef, double t)
Simulating z-only term like H=coef * (Z0..Zn-1) U=exp(-iHt)
Z-Hamiltonian spreads over the qubit_vec
Parameters:
| std::vector<Qubit*>& | the qubit needed to simulate the Hamiltonian |
| double | the coefficient of hamiltonian |
| double | time |
Returns:
QCircuit QPanda::simulateOneTerm( const std::vector<Qubit*>& qubit_vec, const QTerm& hamiltonian_term, double coef, double t )
Simulate a single term of Hamilonian like “X0 Y1 Z2” with coefficient and time. U=exp(-it*coef*H)
Parameters:
| std::vector<Qubit*>& | the qubit needed to simulate the Hamiltonian |
| QTerm& | hamiltonian_term: string like “X0 Y1 Z2” |
| double | coef: the coefficient of hamiltonian |
| double | t time |
Returns:
QCircuit QPanda::simulateHamiltonian( const std::vector<Qubit*>& qubit_vec, const QHamiltonian& hamiltonian, double t, size_t slices )
Simulate a general case of hamiltonian by Trotter-Suzuki approximation. U=exp(-iHt)=(exp(-i H1 t/n)*exp(-i H2 t/n))^n.
Parameters:
| std::vector<Qubit*>& | qubit_vec: the qubit needed to simulate the Hamiltonian |
| QHamiltonian& | hamiltonian: Hamiltonian |
| double | t: time |
| size_t | slices: the approximate slices |
Returns:
QCircuit QPanda::simulatePauliZHamiltonian( const std::vector<Qubit*>& qubit_vec, const QHamiltonian& hamiltonian, double t )
Simulate hamiltonian consists of pauli-Z operators.
Parameters:
| std::vector<Qubit*>& | qubit_vec: the qubit needed to simulate the Hamiltonian |
| QHamiltonian& | hamiltonian: Hamiltonian |
| double | t: time |
Returns:
QCircuit QPanda::applySingleGateToAll( const std::string& gate, const std::vector<Qubit*>& qubit_vec )
Apply single gates to all qubits in qubit_list.
Parameters:
| std::string& | gate: single gate name. |
| std::vector<Qubit*>& | qubit_vec: qubit vector |
Returns:
void QPanda::applySingleGateToAll( const std::string& gate, const std::vector<Qubit*>& qubit_vec, QCircuit& circuit )
Apply single gates to all qubits in qubit_list and insert into circuit.
Parameters:
| std::string& | gate: single gate name. |
| std::vector<Qubit*>& | qubit_vec: qubit vector |
| QCircuit& | circuit: operated circuit. |
Returns:
QCircuit QPanda::ising_model( const std::vector<Qubit*>& qubit_vec, const QGraph& graph, const vector_d& gamma )
Ising model.
Parameters:
| std::vector<Qubit*>& | qubit_vec: qubit vector |
| QGraph& | graph: the problem graph |
| vector_d& | gamma: model para |
Returns:
QCircuit QPanda::pauliX_model(const std::vector<Qubit*>& qubit_vec, const vector_d& beta)
pauli X model
Parameters:
| std::vector<Qubit*>& | qubit_vec: qubit vector |
| vector_d& | beta: model para |
Returns: