Skip to main content
IBM Quantum Platform

オペレーター

class qiskit.quantum_info.Operator(data, input_dims=None, output_dims=None)

GitHub

ベース: LinearOp

行列演算子クラス

これは行列演算子 MMevolve() a Statevectorψ|\psi\rangle 行列とベクトルの乗算によって

ψMψ,|\psi\rangle \mapsto M|\psi\rangle,

そして evolve() a DensityMatrixρ\rho 左右の乗算によって

ρMρM.\rho \mapsto M \rho M^\dagger.

例えば、ゼロの状態 ψ=0(ρ=00)|\psi\rangle=|0\rangle (\rho = |0\rangle\langle 0|) に適用される以下の演算子 M=XM = X は、それを1の状態 ψ=1(ρ=11)|\psi\rangle=|1\rangle (\rho = |1\rangle\langle 1|) に変更する:

>>> import numpy as np
>>> from qiskit.quantum_info import Operator
>>> op = Operator(np.array([[0.0, 1.0], [1.0, 0.0]]))  # Represents Pauli X operator
>>> from qiskit.quantum_info import Statevector
>>> sv = Statevector(np.array([1.0, 0.0]))
>>> sv.evolve(op)
Statevector([0.+0.j, 1.+0.j],
            dims=(2,))
>>> from qiskit.quantum_info import DensityMatrix
>>> dm = DensityMatrix(np.array([[1.0, 0.0], [0.0, 0.0]]))
>>> dm.evolve(op)
DensityMatrix([[0.+0.j, 0.+0.j],
            [0.+0.j, 1.+0.j]],
            dims=(2,))

演算子オブジェクトを初期化します。

パラメーター

  • data (QuantumCircuit |Operation | BaseOperator | np.ndarray) – オペレータを初期化するためのデータ。
  • input_dims (tuple | None) – 入力サブシステムの寸法。
  • output_dims (tuple | None) – 出力サブシステムの寸法。

レイズ

QiskitError - 入力データを演算子として初期化できない場合。

追加情報:

入力寸法または出力寸法がNoneの場合は、入力データから自動的に決定される。 入力データが( 2**N, 2**N ) 形式のNumpy配列の場合、qubitシステムが使用される。 入力演算子がN量子ビット演算子でない場合、入力の形状で指定された次元を持つ1つのサブシステムを割り当てます。 この方法で初期化された2つの演算子は、正規量子ビットの次数(または順列)と一致する場合のみ、等価であるとみなされることに注意してください。 参照 Operator.from_circuit() を参照のこと。


属性

atol

デフォルト値: 1e-08

data

基礎となるNumpy配列。

dim

タプル(input_shape, output_shape)を返す。

num_qubits

N量子ビット演算子の場合は量子ビット数を、それ以外の場合はNoneを返す。

qargs

演算子の qargs を返す。

rtol

デフォルト値: 1e-05

settings

オペレーターの設定を戻します。


方法

adjoint

adjoint()

GitHub

演算子の随伴点を返します。

戻りの型

自分

apply_permutation

apply_permutation(perm, front=False)

GitHub

オペレータのデータを並べ替えで構成して変更する。

パラメーター

  • perm (list) – 順列パターンを適用した後、どの量子ビットが0、1、2などの位置を占めるかを記述する。
  • front (bool) – True に設定すると、並べ替えは演算子の前に適用され、 に設定すると、並べ替えは演算子の後に適用される。 False

戻り値

修正された演算子。

戻りの型

オペレーター

レイズ

QiskitError - 並べ替えパターンのサイズが演算子の次元と一致しない場合。

compose

compose(other, qargs=None, front=False)

GitHub

別の Operator との演算子の合成を返します。

パラメーター

  • other (Operator) – 演算子オブジェクト。
  • qargs (list or None) – 他の処理を適用するサブシステムの位置のリスト。 すべてのサブシステムに「None」が適用される場合(デフォルト:None)。
  • front (bool) – Trueの場合、左掛け算ではなく右掛け算で合成する [:False].

戻り値

構成されたオペレーター。

戻りの型

オペレーター

レイズ

QiskitError - 他が演算子に変換できない場合、または指定されたサブシステムに対して互換性のない寸法を持つ場合。

デフォルトでは、合成(&)は行列演算子の左行列乗算として定義され、 @ (と等価) は右行列乗算として定義される。 dot()) は右行列乗算として定義されます。 つまり、 AB が同じタイプである場合、 A & B == A.compose(B)B @ A == B.dot(A) と等価である。

front=True kwargを設定すると、これは右行列の乗算に変わり、以下のメソッドと同等になる。 dot() メソッド A.dot(B) == A.compose(B, front=True) と等価である。

conjugate

conjugate()

GitHub

演算子の共役を返します。

copy

copy()

GitHub

現在のオペレータのディープコピーを作成する。

dot

dot(other, qargs=None)

GitHub

右掛け演算子 self * other を返します。

パラメーター

  • other (Operator) – 演算子オブジェクト。
  • qargs (list or None) – 他の処理を適用するサブシステムの位置のリスト。 すべてのサブシステムに「None」が適用される場合(デフォルト:None)。

戻り値

演算子を乗じた右行列。

戻りの型

オペレーター

ドット積は、 @ 二項演算子を用いて求めることができる。 したがって、 a.dot(b)a @ b と等価である。

draw

draw(output=None, **drawer_args)

GitHub

オペレータの視覚化を返します。

repr : String of the state's __repr__.

テキストで表示されます:ASCII TextMatrix コンソールに表示できる。

latex :Jupyterノートブックで表示するためのIPython Latexオブジェクト。

latex_source : LaTeX を用いて配列を生成する、コンパイルされていない生の ASCII ソース。

パラメーター

  • output (str) – 状態の描画に使用する出力方法を選択します。 有効な選択肢は repr, text, latex, latex_source、デフォルトは repr。
  • drawer_args - 関連する描画関数またはコンストラクタ ( TextMatrix( ), array_to_latex()) に直接渡される引数。関数のドキュメントは qiskit.visualization の該当関数を参照。

戻り値

オペレーターの図面。

戻りの型

str または TextMatrix または IPython.display.Latex

レイズ

  • ValueError - 無効な出力方法が選択された場合。
  • MissingOptionalLibrary - SymPy がインストールされておらず、 'latex' または 'latex_source'output のために選択されている場合。

equiv

equiv(other, rtol=None, atol=None)

GitHub

演算子がグローバル位相まで等価であれば真を返す。

パラメーター

  • other (Operator) – 演算子オブジェクト。
  • rtol (float) – 比較のための相対公差値。
  • atol (float) – 比較のための絶対許容値。

戻り値

演算子がグローバル位相まで等価であれば真。

戻りの型

bool

expand

expand(other)

GitHub

別のOperatorとの逆順テンソル積を返す。

パラメーター

other (Operator) – 演算子オブジェクト。

戻り値

テンソル積 bab \otimes aaa

は現在のオペレーターであり、 bb はもう一方のオペレーターである。

戻りの型

オペレーター

from_circuit

classmethod from_circuit(circuit, ignore_set_layout=False, layout=None, final_layout=None)

GitHub

から新しいOperatorオブジェクトを作成する。 QuantumCircuit

しかし QuantumCircuit オブジェクトを直接 data としてクラスのコンストラクタに渡すことができますが、この場合、回路をどのように使って Operator. このコンストラクタ・メソッドによって Operator を制御することができます。

デフォルトでは、このコンストラクタのメソッドは、設定された初期レイアウト(つまりトランスパイルされた後)に基づいて量子ビットを並べ替えます。 また、手動で Layout オブジェクトを直接提供するオプションもある。

パラメーター

  • circuit (QuantumCircuit) – を使用して QuantumCircuit からOperatorオブジェクトを作成します。
  • ignore_set_layout (bool) – 入力 circuit にレイアウトが設定されている場合、 True に設定すると無視される
  • layout (Layout) – このkwargを指定すると、作成された量子ビットの並べ替えに使用する特定のレイアウトを指定することができる。 Operator. これを指定すると、 circuit 入力に含まれるレイアウトの代わりに使用される。 指定された場合 Layout の仮想ビットが circuit 入力に存在しなければならない。
  • final_layout (Layout) – このkwargを指定すると、トランスパイラのルーティング段階でスワップが挿入されることによって生じる出力の並べ替えを表すことができる。

戻り値

入力回路を表す演算子

戻りの型

オペレーター

from_label

classmethod from_label(label)

GitHub

単一量子ビット演算子のテンソル積を返す。

パラメーター

label (string) – 単一量子ビット演算子文字列。

戻り値

N量子ビット演算子。

戻りの型

オペレーター

レイズ

QiskitError - ラベルに無効な文字が含まれているか、ラベルの長さが明示的に指定された num_qubits より大きい場合。

追加情報:

ラベルは、単一量子ビット行列に対応しています: 'I': [ [1, 0], [0, 1] ] 'X': [ [0, 1], [1, 0] ] 'Y': [ [0, -1j], [1j, 0] ] 'Z': [ [1, 0], [0, -1] ] 'H': [ [1, 1], [1, -1] ] / sqrt(2) 'S': [ [1, 0], [0, 1j] ] 'T': [ [1, 0], [0, ( 1+1j ) / sqrt(2)] ] '0': [ [1, 0], [0, 0] ] '1': [ [0, 0], [0, 1] ] '+': [ [0.5, 0.5], [0.5、 0.5] ] '-': [ [0.5、 -0.5]、 [-0.5、 0.5] ] 'r': [ [0.5、 -0.5j]、 [0.5j、 0.5] ] 'l': [ [0.5、 0.5j]、 [-0.5j、 0.5] ]

input_dims

input_dims(qargs=None)

GitHub

指定されたサブシステムの入力次元のタプルを返す。

is_unitary

is_unitary(atol=None, rtol=None)

GitHub

演算子がユニタリー行列であれば真を返す。

output_dims

output_dims(qargs=None)

GitHub

指定されたサブシステムの出力次元のタプルを返す。

power

power(n, branch_cut_rotation=3.141592653589793e-12, assume_unitary=False)

GitHub

演算子の行列のべき乗を返します。

複素位相が π\pi である固有値を持つ演算子の非整数乗は、複素平面上で分岐カットがあり、このカットの周りの主根の計算がBLAS実装の精度/違いの対象となる。 例えば、Pauli Yの平方根は、 -1 固有値が complex(-1, tiny) または complex(-1, -tiny) のどちらとして求められるかによって、 π/2\pi/2 または π/2-\pi/2 Y回転を返すことができる。 このような固有値は量子情報では本当によくあるものなので、この関数はまず入力行列を位相回転させ、分岐カットをはるかに一般的でない点にシフトさせる。 ある演算子がこの位相に近い固有値を持つ場合、ブランチカット点周辺の根本的な数値精度の問題が残る。 この回転の大きさは branch_cut_rotation

branch_cut_rotation の選択は、発見される主根に影響する。 例えば ZGateSGate または SdgGate と計算される:

from qiskit.circuit import library
from qiskit.quantum_info import Operator

z_op = Operator(library.ZGate())
assert z_op.power(0.5, branch_cut_rotation=1e-3) == Operator(library.SGate())
assert z_op.power(0.5, branch_cut_rotation=-1e-3) == Operator(library.SdgGate())

パラメーター

  • n (float) – マトリックスを引き上げる力
  • branch_cut_rotation (float) – 複素平面上のブランチカットに適用する回転角度。 これにより、切断された枝は、 1-1 の共通点から遠ざかるが、主根として別の根が選択される可能性がある。 回転は反時計回りで、複素位相の標準的な慣例に従っている。
  • assume_unitary (bool) – True の場合、演算子はユニタリーであると仮定される。 この場合、分数乗については、Schurの分解に基づくより高速な実装を採用する。

戻り値

その結果の演算子 O ** n

戻りの型

オペレーター

レイズ

QiskitError - 演算子の入力寸法と出力寸法が等しくない場合。

引数 assume_unitaryTrue に設定するのは、演算子がユニタリー(あるいはより一般的にはノーマル)である場合のみ安全である。 そうでない場合、この関数は不正な出力を返します。

reshape

reshape(input_dims=None, output_dims=None, num_qubits=None)

GitHub

入出力サブシステムの寸法を変更した浅いコピーを返す。

パラメーター

  • input_dims (None or tuple) – 新しいサブシステムの入力寸法。 None の場合、元の入力ディムが保持される [Default:なし]。
  • output_dims (None or tuple) – 新しいサブシステムの出力寸法。 None の場合、元の出力ディムが保持される [Default:なし]。
  • num_qubits (None or int) – N-qubit 演算子への整形[デフォルト:なし]。

戻り値

入出力寸法を整形した self を返す。

戻りの型

BaseOperator

レイズ

QiskitError - すべてのサブシステム入力次元またはサブシステム出力次元の合計サイズが一定でない場合。

reverse_qargs

reverse_qargs()

GitHub

サブシステムの順序を逆にした Operator を返します。

テンソル積演算子の場合、これはテンソル積部分系の順序を逆にすることと等価である。 演算子 A=An1...A0A = A_{n-1} \otimes ... \otimes A_0 の場合、返される演算子は A0...An1A_0 \otimes ... \otimes A_{n-1} となる。

戻り値

サブシステムの順序が逆になっている。

戻りの型

オペレーター

tensor

tensor(other)

GitHub

別の演算子とのテンソル積を返す。

パラメーター

other (Operator) – 演算子オブジェクト。

戻り値

テンソル積 aba \otimes baa

は現在のオペレーターであり、 bb はもう一方のオペレーターである。

戻りの型

オペレーター

テンソル積は、 ^ 二項演算子を用いて求めることができる。 したがって、 a.tensor(b)a ^ b と等価である。

to_instruction

to_instruction()

GitHub

UnitaryGate 命令に変換する。

to_matrix

to_matrix()

GitHub

演算子を NumPy 行列に変換する。

to_operator

to_operator()

GitHub

演算子を行列演算子クラスに変換

戻りの型

オペレーター

transpose

transpose()

GitHub

演算子の転置行列を返します。

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