Skip to main content
IBM Quantum Platform

CNOT 이면각

class qiskit.quantum_info.CNOTDihedral(data=None, num_qubits=None, validate=True)

GitHub

Bases: BaseOperator, AdjointMixin

CNOT-이원체 그룹의 N-큐비트 연산자입니다.

CNOT-이원체 그룹은 양자 게이트에 의해 생성됩니다, CXGate, TGateXGate.

표현

NN -qubit CNOT-이원면체 연산자는 참조 [1, 2의] 규칙에 따라 아핀 함수와 위상 다항식으로 저장됩니다.

아핀 함수는 N×NN \times N 역방향 이진 행렬과 NN 이진 벡터로 구성됩니다.

위상 다항식은 최대 차수 3의 다항식으로, NN 변수에서 계수가 8개의 요소로 이루어진 Z_8 고리 안에 있는 다항식입니다.

from qiskit import QuantumCircuit
from qiskit.quantum_info import CNOTDihedral

circ = QuantumCircuit(3)
circ.cx(0, 1)
circ.x(2)
circ.t(1)
circ.t(1)
circ.t(1)
elem = CNOTDihedral(circ)

# Print the CNOTDihedral element
print(elem)
phase polynomial =
0 + 3*x_0 + 3*x_1 + 2*x_0*x_1
affine function =
 (x_0,x_0 + x_1,x_2 + 1)

회로 변환

QuantumCircuitCNOTDihedral 연산자는 다음 게이트들만 포함된 회로( IGate, XGate, YGate ZGate, TGate,, TdgGate SGate, SdgGate, CXGate CZGate, CSGate, CSdgGate, SwapGate, CCZGate, )를 통해 초기화할 수 있습니다. 이 연산자들은 각각 또는 to_instruction() 메서드를 to_circuit() 사용하여 또는 Gate 객체로 다시 변환할 수 있습니다. 단, 큐비트 수가 2개보다 많을 경우, 이 분해가 게이트 수 측면에서 반드시 최적인 것은 아니라는 점에 유의해야 합니다.

CNOTDihedral 연산자는 다음과 같이 변환할 수도 있습니다 Operator 객체로 변환할 수도 있습니다 to_operator() 메서드를 사용하여 객체로 변환할 수도 있습니다. 이는 회로로 분해한 다음 단일 연산자로 회로를 시뮬레이션하는 방식으로 수행됩니다.

참조 자료:

  1. 셸리 가리온과 앤드류 W. 크로스, 최적의 두 큐비트 게이트 수를 가진 CNOT-이차원 회로의 합성, 양자 4(369), 2020
  2. 앤드류 크로스, 이스와르 마게산, 레프 비숍, 존 스몰린, 제이 엠 감베타, 비클리포드 게이트의 확장 가능한 무작위 벤치마킹, npj Quantum Inf 2, 16012 (2016).

CNOTDihedral 연산자 객체를 초기화합니다.

매개변수

  • data (CNOTDihedral orQuantumCircuit orInstruction) – 초기화할 연산자.
  • num_qubits (int) – 빈 CNOTDihedral 연산자를 초기화합니다.
  • validate (bool) – true이면 CNOTDihedral 요소의 유효성을 검사합니다.

레이즈

  • QiskitError – 유형이 유효하지 않은 경우.
  • QiskitError – validate=True이고 CNOTDihedral 요소가 유효하지 않은 경우.

속성

dim

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

name

작업 유형에 대한 고유 문자열 식별자입니다.

num_clbits

클래식 비트 수입니다.

num_qubits

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

qargs

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


메소드

adjoint

adjoint()

GitHub

연산자의 부속자를 반환합니다.

compose

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

GitHub

연산자 구성을 다른 CNOTDihedral로 반환합니다.

매개변수

  • other (CNOTDihedral) – cNOT이원체 객체입니다.
  • qargs (list or None) – 다른 작업을 적용할 하위 시스템 위치 목록 모든 하위 시스템에 None이 적용되는 경우 (기본값: None).
  • front (bool) – True이면 왼쪽 곱셈 대신 오른쪽 연산자 곱셈을 사용하여 구성합니다. [기본값: False].

리턴

구성된 CNOT이원체.

리턴 유형

CNOT이원면체

레이즈

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

CNOTDihedral의 접합체를 반환합니다.

copy

copy()

GitHub

현재 운영자의 딥 카피를 만듭니다.

dot

dot(other, qargs=None)

GitHub

오른쪽 곱하기 연산자 self * other를 반환합니다.

매개변수

  • other (Operator) – 연산자 객체입니다.
  • qargs (list or None) – 다른 작업을 적용할 하위 시스템 위치 목록 모든 하위 시스템에 None이 적용되는 경우 (기본값: None).

리턴

오른쪽 행렬 곱하기 연산자.

리턴 유형

운영자

참고

점의 곱은 @ 이진 연산자를 사용하여 구할 수 있습니다. 따라서 a.dot(b)a @ b 과 동일합니다.

expand

expand(other)

GitHub

역차 텐서 곱을 다른 CNOTDihedral과 함께 반환합니다.

매개변수

other (CNOTDihedral) – cNOT이원체 객체입니다.

리턴

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

는 현재 CNOTDihedral이고 bb 는 다른 CNOTDihedral입니다.

리턴 유형

CNOT이원면체

input_dims

input_dims(qargs=None)

GitHub

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

output_dims

output_dims(qargs=None)

GitHub

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

power

power(n)

GitHub

연산자를 n번 자기 자신과 합성한 결과를 반환합니다.

매개변수

n (int) – 셀프 작성 횟수 ( n>0 ).

리턴

n-회 구성 연산자입니다.

리턴 유형

클리퍼드

레이즈

QiskitError – 연산자의 입력 및 출력 차원이 같지 않거나, 지수가 양의 정수가 아닌 경우.

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 – 모든 하위 시스템의 입력 차원 또는 출력 차원의 합이 일정하지 않은 경우.

tensor

tensor(other)

GitHub

텐서 곱을 다른 CNOTDihedral로 반환합니다.

매개변수

other (CNOTDihedral) – cNOT이원체 객체입니다.

리턴

텐서 곱 aba \otimes b, 여기서 aa

는 현재 CNOTDihedral이고 bb 는 다른 CNOTDihedral입니다.

리턴 유형

CNOT이원면체

참고

텐서 곱은 ^ 이진 연산자를 사용하여 구할 수 있습니다. 따라서 a.tensor(b)a ^ b 과 동일합니다.

to_circuit

to_circuit()

GitHub

CNOT-이원체 요소를 구현한 QuantumCircuit 을 반환합니다.

리턴

cNOTDihedral 객체의 회로 구현입니다.

리턴 유형

QuantumCircuit

참조

  1. 셸리 가리온과 앤드류 W. 크로스, 최적의 두 큐비트 게이트 수를 가진 CNOT-이차원 회로의 합성, 양자 4(369), 2020
  2. 앤드류 크로스, 이스와르 마게산, 레프 비숍, 존 스몰린, 제이 엠 감베타, 비클리포드 게이트의 확장 가능한 무작위 벤치마킹, npj Quantum Inf 2, 16012 (2016).

to_instruction

to_instruction()

GitHub

CNOTDihedral 객체를 구현하는 Gate 인스트럭션을 반환합니다.

to_matrix

to_matrix()

GitHub

연산자를 넘피 행렬로 변환합니다.

to_operator

to_operator()

GitHub

연산자 객체로 변환합니다.

리턴 유형

운영자

transpose

transpose()

GitHub

CNOTDihedral의 전치를 반환합니다.

이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.