107 lines
7.4 KiB
Plaintext
107 lines
7.4 KiB
Plaintext
---
|
||
title: CustomCircuitOracle
|
||
description: API reference for qiskit.aqua.components.oracles.CustomCircuitOracle
|
||
in_page_toc_min_heading_level: 1
|
||
python_api_type: class
|
||
python_api_name: qiskit.aqua.components.oracles.CustomCircuitOracle
|
||
---
|
||
|
||
# qiskit.aqua.components.oracles.CustomCircuitOracle
|
||
|
||
<Class id="qiskit.aqua.components.oracles.CustomCircuitOracle" isDedicatedPage={true} github="https://github.com/qiskit-community/qiskit-aqua/tree/stable/0.9/qiskit/aqua/components/oracles/custom_circuit_oracle.py" signature="CustomCircuitOracle(variable_register, output_register, circuit, ancillary_register=None, evaluate_classically_callback=None)" modifiers="class">
|
||
The Custom Circuit-based Quantum Oracle.
|
||
|
||
A helper class to, in essence, ‘wrap’ a user-supplied quantum circuit such that it becomes of type [`Oracle`](qiskit.aqua.components.oracles.Oracle "qiskit.aqua.components.oracles.Oracle") and hence can be used by algorithms taking an oracle as input.
|
||
|
||
This class is provided for easy creation of oracles using custom circuits. It is geared towards programmatically experimenting with oracles, where a user directly provides a QuantumCircuit object, corresponding to the intended oracle function, together with the various QuantumRegister objects involved.
|
||
|
||
<Admonition title="Note" type="note">
|
||
The evaluate\_classically\_callback param is to supply a method to classically evaluate the function (as encoded by the oracle) on a particular input bitstring. For example for an oracle that encodes 3-SAT problems, this method would determine classically if an input variable assignment would satisfy the 3-SAT expression.
|
||
|
||
The input bitstring is a string of 1’s and 0’s corresponding to the input variable(s). The return should be a (bool, List\[int]) tuple where the bool corresponds to the return value of the *binary* function encoded by the oracle, and the List\[int] should just be a different representation of the input variable assignment, which should be equivalent to the bitstring or a quantum measurement.
|
||
|
||
Examples of existing implementations, for reference, can be found in other oracles such as [`TruthTableOracle.evaluate_classically()`](qiskit.aqua.components.oracles.TruthTableOracle#evaluate_classically "qiskit.aqua.components.oracles.TruthTableOracle.evaluate_classically") and [`LogicalExpressionOracle.evaluate_classically()`](qiskit.aqua.components.oracles.LogicalExpressionOracle#evaluate_classically "qiskit.aqua.components.oracles.LogicalExpressionOracle.evaluate_classically").
|
||
</Admonition>
|
||
|
||
**Parameters**
|
||
|
||
* **variable\_register** (`QuantumRegister`) – The register holding variable qubit(s) for the oracle function
|
||
* **output\_register** (`QuantumRegister`) – The register holding output qubit(s) for the oracle function
|
||
* **circuit** (`QuantumCircuit`) – The quantum circuit corresponding to the intended oracle function
|
||
* **ancillary\_register** (`Optional`\[`QuantumRegister`]) – The register holding ancillary qubit(s)
|
||
* **evaluate\_classically\_callback** (`Optional`\[`Callable`\[\[`str`], `Tuple`\[`bool`, `List`\[`int`]]]]) – The classical callback function for evaluating the oracle, for example, to use with [`Grover`](qiskit.aqua.algorithms.Grover "qiskit.aqua.algorithms.Grover")’s search
|
||
|
||
**Raises**
|
||
|
||
[**AquaError**](qiskit.aqua.AquaError "qiskit.aqua.AquaError") – Invalid input
|
||
|
||
### \_\_init\_\_
|
||
|
||
<Function id="qiskit.aqua.components.oracles.CustomCircuitOracle.__init__" signature="__init__(variable_register, output_register, circuit, ancillary_register=None, evaluate_classically_callback=None)">
|
||
**Parameters**
|
||
|
||
* **variable\_register** (`QuantumRegister`) – The register holding variable qubit(s) for the oracle function
|
||
* **output\_register** (`QuantumRegister`) – The register holding output qubit(s) for the oracle function
|
||
* **circuit** (`QuantumCircuit`) – The quantum circuit corresponding to the intended oracle function
|
||
* **ancillary\_register** (`Optional`\[`QuantumRegister`]) – The register holding ancillary qubit(s)
|
||
* **evaluate\_classically\_callback** (`Optional`\[`Callable`\[\[`str`], `Tuple`\[`bool`, `List`\[`int`]]]]) – The classical callback function for evaluating the oracle, for example, to use with [`Grover`](qiskit.aqua.algorithms.Grover "qiskit.aqua.algorithms.Grover")’s search
|
||
|
||
**Raises**
|
||
|
||
[**AquaError**](qiskit.aqua.AquaError "qiskit.aqua.AquaError") – Invalid input
|
||
</Function>
|
||
|
||
## Methods
|
||
|
||
| | |
|
||
| --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------- |
|
||
| [`__init__`](#qiskit.aqua.components.oracles.CustomCircuitOracle.__init__ "qiskit.aqua.components.oracles.CustomCircuitOracle.__init__")(variable\_register, output\_register, …) | **type variable\_register**`QuantumRegister` |
|
||
| [`construct_circuit`](#qiskit.aqua.components.oracles.CustomCircuitOracle.construct_circuit "qiskit.aqua.components.oracles.CustomCircuitOracle.construct_circuit")() | Construct the oracle circuit. |
|
||
|
||
## Attributes
|
||
|
||
| | |
|
||
| ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------- |
|
||
| [`ancillary_register`](#qiskit.aqua.components.oracles.CustomCircuitOracle.ancillary_register "qiskit.aqua.components.oracles.CustomCircuitOracle.ancillary_register") | returns ancillary register |
|
||
| [`circuit`](#qiskit.aqua.components.oracles.CustomCircuitOracle.circuit "qiskit.aqua.components.oracles.CustomCircuitOracle.circuit") | |
|
||
| [`output_register`](#qiskit.aqua.components.oracles.CustomCircuitOracle.output_register "qiskit.aqua.components.oracles.CustomCircuitOracle.output_register") | returns output register |
|
||
| [`variable_register`](#qiskit.aqua.components.oracles.CustomCircuitOracle.variable_register "qiskit.aqua.components.oracles.CustomCircuitOracle.variable_register") | returns variable register |
|
||
|
||
### ancillary\_register
|
||
|
||
<Attribute id="qiskit.aqua.components.oracles.CustomCircuitOracle.ancillary_register">
|
||
returns ancillary register
|
||
</Attribute>
|
||
|
||
### circuit
|
||
|
||
<Attribute id="qiskit.aqua.components.oracles.CustomCircuitOracle.circuit" />
|
||
|
||
### construct\_circuit
|
||
|
||
<Function id="qiskit.aqua.components.oracles.CustomCircuitOracle.construct_circuit" signature="construct_circuit()">
|
||
Construct the oracle circuit.
|
||
|
||
**Returns**
|
||
|
||
A quantum circuit for the oracle.
|
||
|
||
**Return type**
|
||
|
||
[QuantumCircuit](qiskit.circuit.QuantumCircuit "qiskit.circuit.QuantumCircuit")
|
||
</Function>
|
||
|
||
### output\_register
|
||
|
||
<Attribute id="qiskit.aqua.components.oracles.CustomCircuitOracle.output_register">
|
||
returns output register
|
||
</Attribute>
|
||
|
||
### variable\_register
|
||
|
||
<Attribute id="qiskit.aqua.components.oracles.CustomCircuitOracle.variable_register">
|
||
returns variable register
|
||
</Attribute>
|
||
</Class>
|
||
|