2
$\begingroup$

This is related to my previous question.

To apply amplitude amplification in Qiskit, one needs to use AmplificationProblem() or GroverOperator(). According to documentation:

$$\mathcal{Q}=\mathcal{AS_0A}^{\dagger}\mathcal{S_f},$$ $\mathcal{A}$ is an input state preparation. In the standard Grover search $\mathcal{A=H^{\otimes n}}$.

However, in generalized form, $\mathcal{A}$ to could be a circuit representing any (non-uniform) superposition of basis states.

So now imagine we have a circuit. One of the QuantumRegisters (qubits=[0,1,2]), is initialised in the superposition of $\{|0001\rangle, |0100\rangle, |0111\rangle\}$ states. The oracle and good_states have been both set to $|0111\rangle$.

good_state=['0111']


oracle_state_vector=[0]*(2**4)
for index in [7]:
    oracle_state_vector[index]=complex(1, 0)
oracle=Statevector(oracle_state_vector)

testCirc=QuantumCircuit(4)

initial_state=[1,4,7]
init_state_vector=[0]*(2**3)
normConstant=1/m.sqrt(len(initial_state))
for state in initial_state:
    init_state_vector[state]=normConstant*complex(1, 0)

testCirc.initialize(init_state_vector, [0,1,2] )
testCirc = RemoveResetInZeroState()(testCirc.decompose())


state_preparation=testCirc
#state_preparation.x([3])

problem = AmplificationProblem(oracle, is_good_state=good_state, 
                               state_preparation=state_preparation, objective_qubits=[0,1,2])
state_preparation.draw()
backend = Aer.get_backend('aer_simulator')
quantum_instance = QuantumInstance(backend, shots=1024)
grover = Grover(quantum_instance=quantum_instance)
result = None

if problem is not None:
    result = grover.amplify(problem)
    print(result.assignment)
if result is not None:
    display(plot_histogram(result.circuit_results[0]))

The histogram shows we were able to amplify the amplitude of the $|0111\rangle$ state.

However, if we add a X gate (by X I am trying to abstract part of a potential algorithm that can be applied on a QuantumRegister) to the other QuantumRegister,qubit[3], the amplification result is not satisfying anymore.

What am I missing here?

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.