braket.experimental.algorithms.quantum_phase_estimation.quantum_phase_estimation module
- braket.experimental.algorithms.quantum_phase_estimation.quantum_phase_estimation.quantum_phase_estimation_circuit(quantum_phase_estimation_circ: Circuit, precision_qubits: Qubit | int | Iterable[Qubit | int], query_qubits: Qubit | int | Iterable[Qubit | int], unitary_apply_func: Callable) Circuit[source]
Adds result type to quantum phase estimation
- Parameters:
quantum_phase_estimation_circ (Circuit) – Circuit with query bits prepared
precision_qubits (QubitSetInput) – Qubits defining the precision register
query_qubits (QubitSetInput) – Qubits defining the query register
unitary_apply_func (Callable) – Function that applies the desired controlled unitary to a provided circuit using provided control and target qubits
- Returns:
Circuit – Implements the Quantum Phase Estimation algorithm with result type
- braket.experimental.algorithms.quantum_phase_estimation.quantum_phase_estimation.quantum_phase_estimation(precision_qubits: Qubit | int | Iterable[Qubit | int], query_qubits: Qubit | int | Iterable[Qubit | int], unitary_apply_func: Callable) Circuit[source]
Creates the Quantum Phase Estimation circuit using:
1) The first register for precision. 2)The second register for query qubits which hosts the eigenstate and should already be prepared in its initial state. 3) A function that applies a controlled unitary circuit. This function accepts a control qubit and the target qubits on which to apply the unitary. Quantum Phase Estimation will repeatedly apply this function for the target qubits. This is a necessary input because the controlled unitary needs to be defined in terms of available gates for a given QPU.
Example
>>> def cnot_apply_func(circ, control_qubit, query_qubits): ... circ.qpe_cnot_unitary(control_qubit, query_qubits) >>> circ = Circuit().h([2]) >>> circ.quantum_phase_estimation([0, 1], [2], cnot_apply_func) >>> print(circ) T : |0|1| 2 |3| 4 |5| q0 : -H---SWAP---PHASE(-1.57)-H- | | q1 : -H-C-SWAP-H-C-------------- | q2 : -H-X----------------------- T : |0|1| 2 |3| 4 |5|
- Parameters:
precision_qubits (QubitSetInput) – Qubits defining the precision register
query_qubits (QubitSetInput) – Qubits defining the query register
unitary_apply_func (Callable) – Function that applies the desired controlled unitary to a provided circuit using provided control and target qubits
- Returns:
Circuit – Circuit object that implements the Quantum Phase Estimation algorithm
- braket.experimental.algorithms.quantum_phase_estimation.quantum_phase_estimation.run_quantum_phase_estimation(circuit: Circuit, device: Device, shots: int = 1000) QuantumTask[source]
Function to run Quantum Phase Estimation algorithm and return measurement counts.
- Parameters:
circuit (Circuit) – Quantum Phase Estimation circuit
device (Device) – Braket device backend
shots (int) – Number of measurement shots (default is 1000).
- Returns:
QuantumTask – Task from running Quantum Phase Estimation
- braket.experimental.algorithms.quantum_phase_estimation.quantum_phase_estimation.get_quantum_phase_estimation_results(task: QuantumTask, precision_qubits: Qubit | int | Iterable[Qubit | int], query_qubits: Qubit | int | Iterable[Qubit | int], verbose: bool = False) Dict[str, Any][source]
Function to postprocess results returned by run_quantum_phase_estimation and pretty print results.
- Parameters:
task (QuantumTask) – The task which holds the results for the quantum phase estimation run
precision_qubits (QubitSetInput) – Qubits defining the precision register
query_qubits (QubitSetInput) – Qubits defining the query register
verbose (bool) – If True, prints aggregate results (default is False)
- Returns:
Dict[str, Any] – aggregate measurement results
- braket.experimental.algorithms.quantum_phase_estimation.quantum_phase_estimation.inverse_qft(qubits: Qubit | int | Iterable[Qubit | int]) Circuit[source]
Construct a circuit object corresponding to the inverse Quantum Fourier Transform (QFT) algorithm, applied to the argument qubits. Does not use recursion to generate the circuit.
- Parameters:
qubits (QubitSetInput) – Qubits on which to apply the inverse Quantum Fourier Transform
- Returns:
Circuit – Circuit object that implements the inverse Quantum Fourier Transform algorithm