In Qiskit, is there a way to perform a reset of a qubit with control on another without using an additional ancilla qubit?
No , From the documentation you can only reset based on a classical bit
I’m not 100% sure I understand the context, but I’ll try to answer to the best of my understanding of the question:
If you want to reset a qubit using quantum operations only, you can swap the state with an ancilla in the 0 state. If you want to do it controlled on the state of another qubit, do a controlled swap between the 0 state ancilla and your target qubit with the control qubit as, well, control.
You could perform a hand-rolled conditional reset with something like the code below. This will reset the second qubit if the first qubit is excited.
from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit qreg_q = QuantumRegister(2, 'q') creg_cw = ClassicalRegister(1, 'cw') circuit = QuantumCircuit(qreg_q, creg_cw) circuit.measure(qreg_q, creg_cw) circuit.reset(qreg_q).c_if(creg_cw, 1)