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:

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. None means max(qubits) + 1.

Returns:

A fresh Circuit containing 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. None means all data qubits.

Returns:

A new Circuit containing the oracle gates.