Skip to main content
IBM Quantum Platform

移動

class Move(label=None)

GitHub

ベース: Instruction

第2量子ビットのリセットとスワップを表す2量子ビット命令。

回路記号:

     ┌───────┐
q_0:0      ├       q_0: ──────X─
     │  Move │   =
q_1:1      ├       q_1:|0>──X─
     └───────┘

この命令の目的は、典型的には、第1の量子ビットの状態を第2の量子ビットに移動させることである。 これが期待通りに機能するためには、2番目の量子ビットはシステムの残りの部分とエンタングルメントを共有していない必要がある。 この量子ビットがエンタングルされている場合、リセット操作を行うと、その量子ビットがエンタングルされている他の量子ビットに量子チャンネルが実装され、その結果、それらの量子ビットが部分的に崩壊する。

番目の(つまり目的地の)量子ビットがシステムの残りの部分ともつれを共有しないことを保証する最も簡単な方法は、初期化以来使われていない新しい量子ビットを使うことである。

もう一つの有効な方法は、直前の演算のソース(つまり最初の)量子ビットとして使用された量子ビットを、デシネーション量子ビットとして使用することである。 Move 演算のソース(最初の)量子ビットとして使用することです。

次の回路は、前述の各ケースに対応する2つの操作を含んでいる。 Move 演算が含まれている:

import numpy as np
from qiskit import QuantumCircuit
from qiskit_addon_cutting.instructions import Move

qc = QuantumCircuit(4)
qc.ryy(np.pi / 4, 0, 1)
qc.rx(np.pi / 4, 3)
qc.append(Move(), [1, 2])
qc.rz(np.pi / 4, 0)
qc.ryy(np.pi / 4, 2, 3)
qc.append(Move(), [2, 1])
qc.ryy(np.pi / 4, 0, 1)
qc.rx(np.pi / 4, 3)
qc.draw("mpl")
前のコードからの出力。

その完全なデモンストレーションは Move インストラクションは、 ワイヤー・カットの入門チュートリアルにあります。

を作成する。 Move インストラクションを作成します。


属性

パラメーター

label (str | None)

base_class

この命令の基本クラスを取得します。 これは self の継承ツリーにあることが保証されている。

命令の "基本クラス "とは、そのオブジェクトが回路アプリケーションのために完全 に互換性があると考えるべき、継承ツリーで最も低いクラスのことである。 これは通常、サブクラスが純粋にベースクラスよりもプログラマーの利便性を向上させるために定義され、ベースクラスが動作の観点から「真の」クラスであることを意味する。 特に、上書きしないでください base_class 代替測定戦略や、特定のパラメータセットを持つパラメータ化されたゲートのバージョンなど、ハードウェアによって異なる方法で実装される命令のカスタムバージョンを定義する場合、 Target 完全にパラメータ化されたゲートから。

これは、標準ライブラリ命令のシングルトン・インスタンスの場合を除き、 type(obj) と正確に等価であることが多い。 これらのシングルトン・インスタンスはベース・クラスの特別なサブクラスであり、このプロパティはそのベースを返す。 例:

>>> isinstance(XGate(), XGate)
True
>>> type(XGate()) is XGate
False
>>> XGate().base_class is XGate
True

一般的に、命令の正確なクラスは当てにすべきではない。与えられた回路内では、ほとんどの状況で Instruction.name

condition

指示に関する古典的な条件。

バージョンから非推奨 1.3.0

プロパティ qiskit.circuit.instruction.Instruction.condition は qiskit 1.3.0 で非推奨となりました。 2.0.0。

condition_bits

Clbitsのコンディションを整える。

バージョンから非推奨 1.3.0

プロパティ qiskit.circuit.instruction.Instruction.condition_bits は qiskit 1.3.0 で非推奨となりました。 2.0.0。

decompositions

SessionEquivalenceLibrary から命令の分解を取得する。

definition

他の基本ゲートの観点から定義を返す。

duration

期間を取得する。

バージョンから非推奨 1.3.0

プロパティ qiskit.circuit.instruction.Instruction.duration は qiskit 1.3.0 で非推奨となりました。 Qiskit 2.0.0 で削除されます。

label

返品指示ラベル

mutable

このインスタンスはミュータブルなユニークインスタンスかどうか。

この属性が False である場合、ゲートのインスタンスは共有シングルトンであり、ミュータブルではありません。

name

名前を返す。

num_clbits

clbits の数を返す。

num_qubits

量子ビットの数を返す。

params

この Instruction のパラメーターは以下の通りである。 理想はゲートアングルだ。

unit

持続時間の時間単位を取得する。

バージョンから非推奨 1.3.0

プロパティ qiskit.circuit.instruction.Instruction.unit は qiskit 1.3.0 で非推奨となりました。 Qiskit 2.0.0 で削除されます。


方法

add_decomposition

add_decomposition(decomposition)

SessionEquivalenceLibrary に命令の分解を追加する。

assemble

assemble()

を組み立てる。 QasmQobjInstruction

バージョンから非推奨 1.2

メソッド qiskit.circuit.instruction.Instruction.assemble() は qiskit 1.2 で非推奨となりました。 2.0 リリースでは削除される予定です。 Qobjクラスと関連する機能は、廃止された BackendV1 ワークフローの一部であり、 BackendV2 にはもはや必要ありません。 ユーザーワークフローがQobjを必要とする場合、非推奨の機能に依存している可能性が高いため、 BackendV2 を使用するように更新する必要があります。

broadcast_arguments

broadcast_arguments(qargs, cargs)

引数の検証。

パラメーター

  • qargs (List) – 量子ビット引数のリスト。
  • cargs (List) – 古典的なビット引数のリスト。

生成数

Tuple(List, List) - 単一の引数を持つタプル。

レイズ

CircuitError - 入力が有効でない場合。 例えば、引数の数がゲートの予想と一致しない。

c_if

c_if(classical, val)

この命令で、レジスタまたはcビット classical と値 val との間に古典的な等号条件を設定する。

これはセッターメソッドであり、加算メソッドではない。 スタックしない。

バージョンから非推奨 1.3.0

メソッド qiskit.circuit.instruction.Instruction.c_if() は qiskit 1.3.0 で非推奨となりました。 2.0.0。

copy

copy(name=None)

インストラクションのコピー

パラメーター

name (str) – コピーされた回路に与えられる名前。 None の場合、名前はそのまま。

戻り値

現在の命令のコピーで、名前が与えられていればそれを更新する

戻りの型

qiskit.circuit.Instruction

inverse

inverse(annotated=False)

この指示を反転させる。

注釈付きが偽の場合、逆命令は、再帰的に反転された定義を持つ新しい命令として実装される。

annotatedがTrueの場合、逆命令は AnnotatedOperation として実装され、「inverse修飾子」でアノテーションされた与えられた命令に対応する。

インストラクションを継承する特殊な命令は、それ自身の逆数を実装できる(例:TとTdg、バリアなど) 特に、引数 annotated をどのように扱うかを選択することができる。これには、無視することや、逆ゲートが標準ゲートとして定義されている場合は常に具象ゲートクラスを返すことなどが含まれる。

パラメーター

annotated (bool) – をTrueに設定すると、出力の逆ゲートが AnnotatedOperation として返される。

戻り値

逆の操作。

レイズ

CircuitError - 命令が複合命令でなく、その逆数が実装されていない場合。

is_parameterized

is_parameterized()

Instructionコンパイル時パラメータが含まれているかどうかを返す。

repeat

repeat(n)

mathn`` 回繰り返される self` の命令を作成する。

複合定義内の命令は、Qiskitのデータモデル内のレジスタを条件とすることはできません。 つまり、繰り返し命令を、その条件下で書き込みと読み出しの両方を行うclbitに適用することは無効である。

パラメーター

n (int) – 命令を繰り返す回数

戻り値

定義を含む。

戻りの型

qiskit.circuit.Instruction

レイズ

CircuitError - もしn<1なら。

reverse_ops

reverse_ops()

複合命令の場合は、サブ命令の順序を逆にする。

これは、すべてのサブ命令を再帰的に反転させることによって行われる。 ゲートを反転させることはない。

戻り値

を持つ新しい命令である。

サブ・インストラクションが逆。

戻りの型

qiskit.circuit.Instruction

soft_compare

soft_compare(other)

ゲート間のソフトな比較。 それらの名前、量子ビット数、古典的なビット番号は一致していなければならない。 パラメータの数は一致しなければならない。 各パラメーターが比較される。 ParameterExpression、それは考慮されない。

パラメーター

other (instruction) – その他の指導

戻り値

はパラメータ式まで自己と他者が等しい。

戻りの型

bool

to_mutable

to_mutable()

このゲートの変更可能なコピーを返す。

このメソッドは、このゲート・インスタンスの新しい変更可能なコピーを返す。 シングルトンインスタンスが使用されている場合、これは新しいユニークなインスタンスとなり、変異させることができる。 インスタンスがすでにミュータブルであれば、そのインスタンスのディープコピーとなる。

validate_parameter

validate_parameter(parameter)

インストラクションのパラメータは、検証も正規化もされていない。

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