Skip to main contentIBM Quantum Documentation
This page is from an old version of Qiskit SDK and does not exist in the latest version. We recommend you migrate to the latest version. See the release notes for more information.

qiskit.aqua.algorithms.QPE

class QPE(operator=None, state_in=None, iqft=None, num_time_slices=1, num_ancillae=1, expansion_mode='trotter', expansion_order=1, shallow_circuit_concat=False, quantum_instance=None)

GitHub

The Quantum Phase Estimation algorithm.

QPE (also sometimes abbreviated as PEA, for Phase Estimation Algorithm), has two quantum registers, control and target, where the control consists of several qubits initially put in uniform superposition, and the target a set of qubits prepared in an eigenstate (often a guess of the eigenstate) of the unitary operator of a quantum system. QPE then evolves the target under the control using dynamics on the unitary operator. The information of the corresponding eigenvalue is then ‘kicked-back’ into the phases of the control register, which can then be deconvoluted by an Inverse Quantum Fourier Transform (IQFT), and measured for read-out in binary decimal format. QPE also requires a reasonably good estimate of the eigen wave function to start the process. For example, when estimating molecular ground energies in chemistry, the Hartree-Fock method could be used to provide such trial eigen wave functions.

Parameters

  • operator (Union[OperatorBase, LegacyBaseOperator, None]) – The Hamiltonian Operator
  • state_in (Optional[InitialState]) – An optional InitialState component representing an initial quantum state. None may be supplied.
  • iqft (Optional[QuantumCircuit]) – A Inverse Quantum Fourier Transform component
  • num_time_slices (int) – The number of time slices, has a minimum value of 1.
  • num_ancillae (int) – The number of ancillary qubits to use for the measurement, has a min. value of 1.
  • expansion_mode (str) – The expansion mode (‘trotter’|’suzuki’)
  • expansion_order (int) – The suzuki expansion order, has a min. value of 1.
  • shallow_circuit_concat (bool) – Set True to use shallow (cheap) mode for circuit concatenation of evolution slices. By default this is False. See qiskit.aqua.operators.common.evolution_instruction() for more information.
  • quantum_instance (Union[QuantumInstance, Backend, BaseBackend, None]) – Quantum Instance or Backend

__init__

__init__(operator=None, state_in=None, iqft=None, num_time_slices=1, num_ancillae=1, expansion_mode='trotter', expansion_order=1, shallow_circuit_concat=False, quantum_instance=None)

Parameters

  • operator (Union[OperatorBase, LegacyBaseOperator, None]) – The Hamiltonian Operator
  • state_in (Optional[InitialState]) – An optional InitialState component representing an initial quantum state. None may be supplied.
  • iqft (Optional[QuantumCircuit]) – A Inverse Quantum Fourier Transform component
  • num_time_slices (int) – The number of time slices, has a minimum value of 1.
  • num_ancillae (int) – The number of ancillary qubits to use for the measurement, has a min. value of 1.
  • expansion_mode (str) – The expansion mode (‘trotter’|’suzuki’)
  • expansion_order (int) – The suzuki expansion order, has a min. value of 1.
  • shallow_circuit_concat (bool) – Set True to use shallow (cheap) mode for circuit concatenation of evolution slices. By default this is False. See qiskit.aqua.operators.common.evolution_instruction() for more information.
  • quantum_instance (Union[QuantumInstance, Backend, BaseBackend, None]) – Quantum Instance or Backend

Methods

__init__([operator, state_in, iqft, …])type operatorUnion[OperatorBase, LegacyBaseOperator, None]
compute_minimum_eigenvalue([operator, …])Computes minimum eigenvalue.
construct_circuit([measurement])Construct circuit.
run([quantum_instance])Execute the algorithm with selected backend.
set_backend(backend, **kwargs)Sets backend with configuration.
supports_aux_operators()Whether computing the expectation value of auxiliary operators is supported.

Attributes

aux_operatorsReturns aux operators
backendReturns backend.
operatorReturns operator
quantum_instanceReturns quantum instance.
randomReturn a numpy random.

aux_operators

Returns aux operators

Return type

Optional[List[Union[OperatorBase, LegacyBaseOperator]]]

backend

Returns backend.

Return type

Union[Backend, BaseBackend]

compute_minimum_eigenvalue

compute_minimum_eigenvalue(operator=None, aux_operators=None)

Computes minimum eigenvalue. Operator and aux_operators can be supplied here and if not None will override any already set into algorithm so it can be reused with different operators. While an operator is required by algorithms, aux_operators are optional. To ‘remove’ a previous aux_operators array use an empty list here.

Parameters

  • operator (Union[OperatorBase, LegacyBaseOperator, None]) – If not None replaces operator in algorithm
  • aux_operators (Optional[List[Union[OperatorBase, LegacyBaseOperator]]]) – If not None replaces aux_operators in algorithm

Return type

MinimumEigensolverResult

Returns

MinimumEigensolverResult

construct_circuit

construct_circuit(measurement=False)

Construct circuit.

Parameters

measurement (bool) – Boolean flag to indicate if measurement should be included in the circuit.

Returns

quantum circuit.

Return type

QuantumCircuit

operator

Returns operator

Return type

Optional[LegacyBaseOperator]

quantum_instance

Returns quantum instance.

Return type

Optional[QuantumInstance]

random

Return a numpy random.

run

run(quantum_instance=None, **kwargs)

Execute the algorithm with selected backend.

Parameters

  • quantum_instance (Union[QuantumInstance, Backend, BaseBackend, None]) – the experimental setting.
  • kwargs (dict) – kwargs

Returns

results of an algorithm.

Return type

dict

Raises

AquaError – If a quantum instance or backend has not been provided

set_backend

set_backend(backend, **kwargs)

Sets backend with configuration.

Return type

None

supports_aux_operators

classmethod supports_aux_operators()

Whether computing the expectation value of auxiliary operators is supported.

If the minimum eigensolver computes an eigenstate of the main operator then it can compute the expectation value of the aux_operators for that state. Otherwise they will be ignored.

Return type

bool

Returns

True if aux_operator expectations can be evaluated, False otherwise

Was this page helpful?
Report a bug or request content on GitHub.