PhaseOracle
class qiskit.circuit.library.PhaseOracle(expression, var_order=None)
ベース: QuantumCircuit
フェーズ Oracle.
Phase Oracle オブジェ ク ト は、 任意の入力論理式に対す る 回路を構築 し ます。 論理式は、論理演算子 & (論理 AND)、 | (論理 OR)、 ~ (論理 NOT)、 ^ (論理 XOR)で構成されます。 およびリテラル(変数)のシンボル。 例えば、'a & b' や ( v0 | ~v1 ) & ( ~v2 & v3 ) は、いずれもブーリアン論理式の有効な文字列表現である。
ブール関数f(x)の位相オラクルは、次のような量子演算を行う:
便宜上、このオラクルは、任意の論理式の解析に加えて、 DIMACS CNF形式の入力文字列もサポートしている。これは、SATisfiability(SAT)問題インスタンスを Conjunctive Normal Form(CNF )で指定するための標準形式である。 qiskit.circuit.library.phase_oracle.PhaseOracle.from_dimacs_file() を参照。
16変数以降は、デフォルトのシンセサイザーを使用した場合、パフォーマンス上の問題が発生する可能性があります。
クラス qiskit.circuit.library.phase_oracle.PhaseOracle は Qiskit 2.2 で非推奨となりました。 Qiskit 3.0 で削除されます。 代わりにクラス qiskit.circuit.library.PhaseOracleGate。
パラメーター
- expression (str | BooleanExpression) – Python ライクなブーリアン式文字列または オブジェクト。 BooleanExpression
- var_order (list[str] | None) – 変数が作成される順序を指定したリスト。 (デフォルト:外観順)
属性
name
タイプ: str
人間が読める回路名。
例
from qiskit import QuantumCircuit
qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)my_circuit方法
evaluate_bitstring
evaluate_bitstring(bitstring)
ビット列でオラクルを評価する。 この評価は、量子回路を使わずに古典的に行われる。
パラメーター
bitstring (str) – 評価対象のビット列。 入力ビット列はリトルエンディアン・オーダーであることが期待される。
戻り値
ビット列が良い状態であれば真、そうでなければ偽。
戻りの型
from_dimacs_file
classmethod from_dimacs_file(filename)
DIMACS形式の文字列から PhaseOracle。
DIMACS CNF形式のファイルから PhaseOracle。これは、SATisfiability (SAT)問題インスタンスを Conjunctive Normal Form (CNF )で指定するための標準的な形式であり、1つ以上の節の接続詞である。
以下は、DIMACS形式で表現されたCNFの例である:
c DIMACS CNF file with 3 satisfying assignments: 1 -2 3, -1 -2 -3, 1 2 -3.
p cnf 3 5
-1 -2 -3 0
1 -2 3 0
1 2 -3 0
1 -2 -3 0
-1 2 3 0「c」という文字の後の最初の行はコメントです。 2行目では、CNFが3つのブール変数( と名付けましょう)を対象とし、5つの節を含むことが指定されています。 以下に列挙する5つの節は、論理積(AND)演算子( )によって暗黙的に結合され、各節内の変数(インデックスで表される)は、論理和(OR)演算子( )によって暗黙的に結合される。ブール変数のインデックスの前にある 記号は、論理否定(NOT)演算子( )に対応する。文字0(ゼロ)は、各節の終わりを示す。 基本的に、上記のコードは次のCNFに対応しています:
.
パラメーター
filename (str) – DIMACS形式のファイル。
戻り値
位相オラクルを持つ量子回路。
戻りの型