Beispiel #1
0
 def phase_estimation(
     self,
     unitary_circuit,
     state_preparation=None,
     num_evaluation_qubits=6,
     backend=None,
     construct_circuit=False,
 ):
     """Run phase estimation with operator, eigenvalue pair `unitary_circuit`,
     `state_preparation`. Return all results
     """
     if backend is None:
         backend = qiskit.BasicAer.get_backend("statevector_simulator")
     qi = qiskit.utils.QuantumInstance(backend=backend, shots=10000)
     phase_est = PhaseEstimation(
         num_evaluation_qubits=num_evaluation_qubits, quantum_instance=qi)
     if construct_circuit:
         pe_circuit = phase_est.construct_circuit(unitary_circuit,
                                                  state_preparation)
         result = phase_est.estimate_from_pe_circuit(
             pe_circuit, unitary_circuit.num_qubits)
     else:
         result = phase_est.estimate(unitary=unitary_circuit,
                                     state_preparation=state_preparation)
     return result
Beispiel #2
0
 def one_phase(
     self,
     unitary_circuit,
     state_preparation=None,
     backend_type=None,
     phase_estimator=None,
     num_iterations=6,
 ):
     """Run phase estimation with operator, eigenvalue pair `unitary_circuit`,
     `state_preparation`. Return the estimated phase as a value in :math:`[0,1)`.
     """
     if backend_type is None:
         backend_type = "qasm_simulator"
     backend = qiskit.BasicAer.get_backend(backend_type)
     qi = qiskit.utils.QuantumInstance(backend=backend, shots=10000)
     if phase_estimator is None:
         phase_estimator = IterativePhaseEstimation
     if phase_estimator == IterativePhaseEstimation:
         p_est = IterativePhaseEstimation(num_iterations=num_iterations,
                                          quantum_instance=qi)
     elif phase_estimator == PhaseEstimation:
         p_est = PhaseEstimation(num_evaluation_qubits=6,
                                 quantum_instance=qi)
     else:
         raise ValueError("Unrecognized phase_estimator")
     result = p_est.estimate(unitary=unitary_circuit,
                             state_preparation=state_preparation)
     phase = result.phase
     return phase
Beispiel #3
0
 def one_phase(self,
               unitary_circuit,
               state_preparation=None,
               n_eval_qubits=6,
               backend=None):
     """Run phase estimation with operator, eigenvalue pair `unitary_circuit`,
     `state_preparation`. Return the bit string with the largest amplitude.
     """
     if backend is None:
         backend = qiskit.BasicAer.get_backend('qasm_simulator')
     qi = qiskit.utils.QuantumInstance(backend=backend, shots=10000)
     p_est = PhaseEstimation(num_evaluation_qubits=n_eval_qubits,
                             quantum_instance=qi)
     result = p_est.estimate(unitary=unitary_circuit,
                             state_preparation=state_preparation)
     phase = result.most_likely_phase
     return phase