Skip to main content
IBM Quantum Platform

PhaseOracle

class qiskit.circuit.library.PhaseOracle(expression, var_order=None)

GitHub

ベース: QuantumCircuit

フェーズ Oracle.

Phase Oracle オブジェ ク ト は、 任意の入力論理式に対す る 回路を構築 し ます。 論理式は、論理演算子 & (論理 AND)、 | (論理 OR)、 ~ (論理 NOT)、 ^ (論理 XOR)で構成されます。 およびリテラル(変数)のシンボル。 例えば、'a & b' や ( v0 | ~v1 ) & ( ~v2 & v3 ) は、いずれもブーリアン論理式の有効な文字列表現である。

ブール関数f(x)の位相オラクルは、次のような量子演算を行う:

x(1)f(x)x|x\rangle \mapsto (-1)^{f(x)}|x\rangle

便宜上、このオラクルは、任意の論理式の解析に加えて、 DIMACS CNF形式の入力文字列もサポートしている。これは、SATisfiability(SAT)問題インスタンスを Conjunctive Normal Form(CNF )で指定するための標準形式である。 qiskit.circuit.library.phase_oracle.PhaseOracle.from_dimacs_file() を参照。

16変数以降は、デフォルトのシンセサイザーを使用した場合、パフォーマンス上の問題が発生する可能性があります。

バージョンから非推奨 2.2

クラス 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)

GitHub

ビット列でオラクルを評価する。 この評価は、量子回路を使わずに古典的に行われる。

パラメーター

bitstring (str) – 評価対象のビット列。 入力ビット列はリトルエンディアン・オーダーであることが期待される。

戻り値

ビット列が良い状態であれば真、そうでなければ偽。

戻りの型

bool

from_dimacs_file

classmethod from_dimacs_file(filename)

GitHub

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つのブール変数( x1,x2,x3x_1, x_2, x_3 と名付けましょう)を対象とし、5つの節を含むことが指定されています。 以下に列挙する5つの節は、論理積(AND)演算子( \land )によって暗黙的に結合され、各節内の変数(インデックスで表される)は、論理和(OR)演算子( \lor )によって暗黙的に結合される。ブール変数のインデックスの前にある - 記号は、論理否定(NOT)演算子( ¬\lnot )に対応する。文字0(ゼロ)は、各節の終わりを示す。 基本的に、上記のコードは次のCNFに対応しています:

(¬x1¬x2¬x3)(x1¬x2x3)(x1x2¬x3)(x1¬x2¬x3)(¬x1x2x3)(\lnot x_1 \lor \lnot x_2 \lor \lnot x_3) \land (x_1 \lor \lnot x_2 \lor x_3) \land (x_1 \lor x_2 \lor \lnot x_3) \land (x_1 \lor \lnot x_2 \lor \lnot x_3) \land (\lnot x_1 \lor x_2 \lor x_3).

パラメーター

filename (str) – DIMACS形式のファイル。

戻り値

位相オラクルを持つ量子回路。

戻りの型

PhaseOracle

このページは役に立ちましたか?
バグや誤字の報告、またはコンテンツの要求はGitHubで行ってください。