Skip to main content
IBM Quantum Platform

연산자

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

GitHub

베이스: LinearOp

행렬 연산자 클래스

이것은 행렬 연산자 MM 를 나타냅니다 evolve() a Statevector ψ|\psi\rangle 를 행렬-벡터 곱셈으로

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

그리고 evolve() a DensityMatrix ρ\rho 를 왼쪽 및 오른쪽 곱셈으로

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

예를 들어 다음 연산자 M=XM = X 를 0 상태 ψ=0(ρ=00)|\psi\rangle=|0\rangle (\rho = |0\rangle\langle 0|) 에 적용하면 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 – 입력 데이터를 연산자로 초기화할 수 없는 경우.

추가 정보:

입력 또는 출력 차원이 없음인 경우 입력 데이터에서 자동으로 결정됩니다. 입력 데이터가 Numpy 형태의 배열인 경우 ( 2**N, 2**N ) 큐비트 시스템이 사용됩니다. 입력 연산자가 N-큐비트 연산자가 아닌 경우, 입력의 모양에 따라 지정된 치수를 가진 단일 서브시스템을 할당합니다. 이 방법을 통해 초기화된 두 연산자는 표준 큐비트 순서(또는: 순열)와 일치하는 경우에만 동등한 것으로 간주됩니다. 를 참조하세요 Operator.from_circuit() 를 사용하여 다른 큐비트 순열을 지정할 수 있습니다.


속성

atol

기본값: 1e-08

data

기본 Numpy 배열입니다.

dim

튜플(입력_셰이프, 출력_셰이프)을 반환합니다.

num_qubits

N-큐비트 연산자인 경우 큐비트 수를 반환하고, 그렇지 않으면 None을 반환합니다.

qargs

연산자에 대한 qarg를 반환합니다.

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

연산자 구성을 다른 연산자와 함께 반환합니다.

매개변수

  • 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 : 상태의 문자열 __repr__.

텍스트 : 콘솔에서 인쇄할 수 있는 ASCII TextMatrix.

라텍스 : 주피터 노트북에 표시하기 위한 IPython 라텍스 객체입니다.

latex_source : LaTeX 을 사용하여 배열을 생성하기 위한 컴파일되지 않은 원시 ASCII 소스입니다.

매개변수

  • output (str) – 상태를 그리는 데 사용할 출력 방법을 선택합니다. 유효한 선택지는 repr, 텍스트, 라텍스, 라텍스_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

연산자가 전역 단계까지 동등하면 True를 반환합니다.

매개변수

  • other (Operator) – 연산자 객체입니다.
  • rtol (float) – 비교를 위한 상대적인 허용 오차 값입니다.
  • atol (float) – 비교를 위한 절대 허용 오차 값입니다.

리턴

연산자가 글로벌 단계까지 동등한 경우 참입니다.

리턴 유형

부울

expand

expand(other)

GitHub

다른 연산자를 사용하여 역순 텐서 곱을 반환합니다.

매개변수

other (Operator) – 연산자 객체입니다.

리턴

텐서 곱 bab \otimes a, 여기서 aa

는 현재 연산자이고 bb 는 다른 연산자입니다.

리턴 유형

운영자

from_circuit

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

GitHub

다음에서 새로운 Operator 객체를 생성합니다. QuantumCircuit

Operator객체를 QuantumCircuit 클래스 생성자에 직접 인수로 data 전달할 수는 있지만, 이 경우 회로를 사용하여 객체를 생성하는 방식에 대한 선택권은 제공되지 않습니다. 이 생성자 메서드를 사용하면 객체가 Operator 생성되는 방식을 제어할 수 있으므로, 특정 사용 사례에 맞게 조정할 수 있습니다.

기본적으로 이 생성자 메서드는 구성된 초기 레이아웃(즉, 트랜스파일링된 후)을 기반으로 큐비트를 퍼미팅합니다. 또한 수동으로 직접 객체를 제공하는 옵션도 제공합니다 Layout 객체를 직접 제공하는 옵션도 제공합니다.

매개변수

  • circuit (QuantumCircuit) –...를 기반으로 Operator 객체를 생성하기 위한 것입니다 QuantumCircuit .
  • 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

연산자가 단일 행렬이면 True를 반환합니다.

output_dims

output_dims(qargs=None)

GitHub

지정된 하위 시스템에 대한 출력 차원의 튜플을 반환합니다.

power

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

GitHub

연산자의 행렬 제곱을 반환합니다.

복소 위상이 π\pi 인 고유값을 가진 정수가 아닌 연산자의 거듭제곱은 복소 평면에서 분기 절단이 있으므로 이 절단 주변의 주근 계산은 BLAS 구현의 정밀도 / 차이에 따라 달라질 수 있습니다. 예를 들어, 폴리 Y의 제곱근은 -1 고유값이 complex(-1, tiny) 또는 complex(-1, -tiny) 로 발견되는지 여부에 따라 π/2\pi/2 또는 π/2-\pi/2 Y 회전을 반환할 수 있습니다. 이러한 고유값은 양자 정보에서 매우 일반적이므로 이 함수는 먼저 입력 행렬을 위상 회전하여 분기 컷을 훨씬 덜 일반적인 지점으로 이동합니다. 연산자가 이 단계에 가까운 고유값을 갖는 경우 분기 절단점 주변의 기본 수치 정밀도 문제가 남아 있습니다. 이 회전의 크기는 branch_cut_rotation 파라미터로 제어할 수 있습니다.

branch_cut_rotation 을 선택하면 발견되는 주 루트에 영향을 줍니다. 예를 들어, 제곱근의 ZGate 의 제곱근은 SGate 또는 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 인 경우 연산자는 단일 연산자로 간주됩니다. 이 경우 분수의 경우 슈어의 분해에 기반한 더 빠른 구현을 사용합니다.

리턴

결과 연산자 O ** n.

리턴 유형

운영자

레이즈

QiskitError – 연산자의 입력 차원과 출력 차원이 같지 않은 경우.

참고

연산자가 단일(또는 더 일반적으로 일반)일 때만 assume_unitary 인수를 True 으로 설정하는 것이 안전합니다. 그렇지 않으면 함수가 잘못된 출력을 반환합니다.

reshape

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

GitHub

입력 및 출력 하위 시스템 치수가 재구성된 얕은 복사본을 반환합니다.

매개변수

  • input_dims (None or tuple) – 새로운 하위 시스템 입력 차원. None인 경우 원래 입력이 희미하게 유지됩니다. [기본값: None].
  • output_dims (None or tuple) – 새로운 하위 시스템 출력 차원. None인 경우 원래 출력이 흐려집니다. [기본값: None].
  • num_qubits (None or int) – n-큐비트 연산자로 재형성 [기본값입니다: 없음].

리턴

는 입력 및 출력 치수가 재형성된 자기를 반환합니다.

리턴 유형

BaseOperator

레이즈

QiskitError – 모든 하위 시스템의 입력 차원 또는 출력 차원의 합이 일정하지 않은 경우.

reverse_qargs

reverse_qargs()

GitHub

서브시스템 순서가 반전된 연산자를 반환합니다.

텐서 곱 연산자의 경우 이는 텐서 곱 하위 시스템의 순서를 뒤집는 것과 같습니다. 연산자 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 b, 여기서 aa

는 현재 연산자이고 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에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.