uniqc.algorithms.core.circuits.deutsch_jozsa module¶
Deutsch-Jozsa algorithm circuit and oracle builder.
The oracular convention here (per the design notes in the project README) is:
deutsch_jozsa_oracle()returns a freshCircuit(the oracle).deutsch_jozsa_circuit()accepts a quantum-circuit oracle as its argument and returns a fresh full-DJCircuit(fragment style).
- uniqc.algorithms.core.circuits.deutsch_jozsa.deutsch_jozsa_circuit(oracle=None, *, qubits=None, ancilla=None)[source]¶
Build the Deutsch-Jozsa algorithm circuit fragment.
ora = deutsch_jozsa_oracle(qubits=[0, 1, 2], balanced=True) circuit = deutsch_jozsa_circuit(ora, qubits=[0, 1, 2]) # returns Circuit
- Parameters:
oracle – The oracle
Circuit(positional or keyword).qubits – Data-qubit indices.
ancilla – Ancilla qubit index.
Nonemeansmax(qubits) + 1.
- Returns:
A fresh
Circuitcontaining the full DJ circuit.
- uniqc.algorithms.core.circuits.deutsch_jozsa.deutsch_jozsa_example()[source]¶
Return a 3-qubit balanced-DJ algorithm circuit for tests/docs.
- uniqc.algorithms.core.circuits.deutsch_jozsa.deutsch_jozsa_oracle(qubits, balanced=True, target_bits=None)[source]¶
Build a Deutsch-Jozsa oracle circuit.
See module docstring; behaviour is unchanged from previous releases — this is already a fragment-style API (returns a fresh
Circuit).- Parameters:
qubits – Data-qubit indices (explicit list, no default).
balanced – If
True, build a balanced oracle; otherwise constant.target_bits – Data-qubit indices (positions within qubits) that control the ancilla flip. Only used when balanced is
True.Nonemeans all data qubits.
- Returns:
A new
Circuitcontaining the oracle gates.