운영자 유틸리티
qiskit_addon_obp.utils.operations
연산자 역전파를 위한 유틸리티 기능.
apply_op_to
apply_op_to(op1, op1_qargs, op2, op2_qargs, *, apply_as_transform=False)
op2 연산자를 op1 연산자에 적용합니다.
이러한 연산자는 더 큰 시스템에서 작동한다고 가정하기 때문에 반드시 동일한 수의 큐비트에서 작동할 필요는 없습니다. 각 운영자의 시스템 내 위치는 해당 qargs 에 의해 정의됩니다. 출력 연산자는 union(op1_qargs, op2_qargs) 에 정의됩니다.
기본적으로 이 함수는 op1 을 op2 에 다음과 같은 방식으로 적용합니다:
op2 @ op1
apply_as_transform=True 을 설정하면 다음과 같은 방식으로 op1 을 op2 에 적용합니다:
op2.adjoint() @ op1 @ op2
매개변수
- op1 (SparsePauliOp) –
op2이 적용될 운영자입니다. - op1_qargs (list[int]) –
op1에 대한 큐비트 인덱스입니다. - op2 (SparsePauliOp) – 신청할 운영자는
op1. - op2_qargs (list[int]) –
op2에 대한 큐비트 인덱스입니다. - apply_as_transform (bool) –
op2을op1으로 변환할지 여부.
리턴
튜플 (op, qargs) 여기서 op 은 op2 이 왼쪽으로 적용된 op1 입력이고 qargs 은 새 연산자 op 에 대한 큐비트 인덱스 목록입니다. 출력 op 의 큐비트 ID는 qargs 의 동일한 인덱스에 있는 글로벌 큐비트 ID에 해당합니다.
예를 들어, op 출력이 SparsePauliOp("YX") 이고 qargs 가 [3, 4인] 경우 연산자의 큐비트 0의 X 항은 글로벌 큐비트 ID 3에 해당합니다.
레이즈
ValueError - 고유 연산자 qarg의 수는 해당 연산자의 큐비트 수와 일치해야 합니다.
리턴 유형
tuple [*SparsePauliOp*, list[ int ]]
apply_reset_to
apply_reset_to(op, qubit_id, inplace=False)
폴리 연산자에 재설정 작업을 적용합니다.
이 기능은 다음과 같은 방법으로 op 에 재설정 작업을 적용합니다:
<0|op|0>
Qubit-qubit_id 에서 폴리 X 또는 Y 용어가 포함된 용어는 0.0 로 무게가 줄어듭니다. qubit_id 에서 폴리 Z가 포함된 약관은 폴리 Z를 아이덴티티로 대체합니다.
매개변수
- op (SparsePauliOp) – 재설정이 적용될 운영자입니다.
- qubit_id (int) – 재설정을 적용할 큐비트의 인덱스입니다.
- inplace (bool) – 운영자를 제자리에서 수정할지 여부.
리턴
변환된 연산자
리턴 유형
to_global_op
to_global_op(op, qargs, n_qubits)
사용하지 않는 큐비트에 ID를 삽입하여 로컬 연산자를 글로벌 연산자로 변환합니다.
매개변수
- op (SparsePauliOp) – 현지 운영자가 확장합니다.
- qargs (list[int]) – 로컬 운영자를 위한 큐비트 인덱스.
- n_qubits (int) – 글로벌 시스템의 큐비트 수입니다.
리턴
n_qubits 운영자의 쿼비트
레이즈
ValueError - 큐비트 ID가 범위를 벗어남
리턴 유형
reduce_op
reduce_op(global_op)
글로벌 폴리 연산자의 간결한 표현을 만듭니다.
이 함수는 입력 연산자의 린 표현을 반환하여 폴리-I 항과만 관련된 모든 큐비트가 제거되도록 합니다. 린 연산자가 어떤 큐비트에서 작동하는지를 나타내는 인덱스 목록도 반환됩니다.
예를 들면, 다음과 같습니다.
>>> global_op = SparsePauliOp(["IXI", "IIZ"])
>>> reduced_op, qargs = reduce_op(global_op)
>>> reduced_op
SparsePauliOp(['XI', 'IZ'],
coeffs=[1.+0.j, 1.+0.j])
>>> qargs
[0, 1]매개변수
global_op (SparsePauliOp) – 린 표현을 생성할 글로벌 운영자
리턴
- 신원 조건과만 연관된 큐비트가 제거된 입력 연산자의 간결한 표현입니다.
- 린 연산자가 작동하는 큐비트를 지정하는 인덱스 목록입니다.
레이즈
ValueError - 입력 연산자가 ID 연산자가 아닐 수 있습니다.
리턴 유형
tuple [*SparsePauliOp*, list[ int ]]