Skip to main content
IBM Quantum Platform

FermionicGate

class FermionicGate(name, num_modes, /, params=None, *, label=None)

베이스: Gate

모든 페르미온 게이트의 기본 클래스입니다.

일관성을 보장하기 위해, 이 게이트 클래스의 하위 클래스만 인스턴스에 추가할 수 있습니다 FermionicCircuit. 따라서 이 클래스는 (대부분의 경우) (당분간) 타입의 역할을 합니다.

주의

이 클래스는 ~의 하위 클래스이므로, 해당 메서드에 대한 설명에는 Gate 큐비트가 언급될 수 있습니다. 이러한 언급은 이 하위 클래스의 인스턴스라는 맥락에서 페르미온을 가리키는 것으로 해석되어야 합니다.

또한 이러한 재해석으로 인해 상속받은 메서드 중 일부가 항상 타당하지 않을 수도 있습니다. 미리 경고해 두었습니다.

매개변수

  • name (str) – 그 문 이름.
  • num_qubits – 게이트가 작용하는 큐비트의 수.
  • params (list | None) – 매개변수 목록.
  • label (str | None) – 게이트에 붙일 수 있는 선택적 라벨입니다.
  • num_modes (int)

속성

num_modes

이 게이트가 작용하는 페르미온 모드의 개수.

상속된 속성(I)

base_class

이 명령어의 기본 클래스를 가져옵니다. 이것은 반드시 의 계보에 포함될 것입니다 self.

명령어의 “기본 클래스”란, 해당 객체가 _모든_ 회로 응용 분야에서 완전히 호환되는 것으로 간주되어야 하는 상속 트리 내의 가장 하위 클래스를 의미합니다. 이는 일반적으로 하위 클래스가 기저 클래스에 비해 프로그래머에게 일종의 편의성을 제공하기 위해 순전히 정의된 것이며, 행동적 관점에서 볼 때 기저 클래스가 “진정한” 클래스임을 의미합니다. 특히, 대체 측정 전략과 같이 하드웨어에 따라 다르게 구현될 명령어의 사용자 정의 버전을 정의하거나, 완전한 매개변수화 게이트와 Target 구별하기 위해 특정 매개변수 세트를 가진 매개변수화 게이트의 버전을 정의하는 경우에는 base_class 이 메서드를 재정의해서는 됩니다.

이는 표준 라이브러리 명령어의 단일 인스턴스인 경우를 제외하고는 대개 와 정확히 동일합니다 type(obj). 이러한 싱글톤 인스턴스는 해당 기본 클래스의 특수한 하위 클래스이며, 이 속성은 해당 기본 클래스를 반환합니다. 예를 들어,

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

일반적으로 명령어의 정확한 분류에 의존해서는 안 됩니다. 주어진 회로 내에서, 대부분의 상황에서는 가 더 적합한 판별 기준이 Instruction.name 될 것으로 예상됩니다.

decompositions

SessionEquivalenceLibrary 에서 해당 명령어의 분해 정보를 확인하세요.

definition

다른 기본 게이트를 이용하여 이 게이트의 정의를 도출하십시오.

label

반환 명령어 레이블

mutable

이 인스턴스는 변경 가능한 고유 인스턴스인가요, 아닌가요?

이 속성이 인 경우, 해당 False 게이트 인스턴스는 공유 싱글톤이며 변경할 수 없습니다.

name

이름을 반환합니다.

num_clbits

clbits의 개수를 반환합니다.

num_qubits

큐비트의 개수를 반환합니다.

params

Instruction.의 매개변수는 다음과 같습니다. 가급적이면 이 값들은 게이트 각도가 되어야 합니다.

프로토콜 방법

_apply_unitary_

_apply_unitary_(vec, norb, nelec, copy)

이 게이트를 ffsim 상태 벡터에 적용하여 ffsim 프로토콜을 구현합니다.

이것은 ffsim ffsim.SupportsApplyUnitary 프로토콜의 정체성 배치 진입점입니다(로컬에서는 로 미러링됨 SupportsApplyUnitary): 이 진입점은 게이트가 상태 벡터의 0..num_modes 모드에 작용한다고 가정하며, 모든 구체적인 페르미온 게이트가 구현하는 배치 인식 기능( _apply_unitary_placed_() 참조 SupportsApplyUnitaryPlaced)으로 위임합니다. ( vec``None 벡터가 허용되는지 여부를 포함하여), norb, nelec, 및 의 의미에 대해서는 해당 메서드를 참조하십시오 copy.

인상

NotImplementedError – 이 게이트가 (단순히 유형 표시자로만 FermionicGate 사용되는) (a) _apply_unitary_placed_ 를 구현하지 않아 상태 벡터에 적용할 수 없는 경우.

매개변수

리턴 유형

np.ndarray

상속된 메소드

add_decomposition

add_decomposition(decomposition)

SessionEquivalenceLibrary 에 해당 명령어의 분해 내용을 추가하십시오.

broadcast_arguments

broadcast_arguments(qargs, cargs)

인수의 유효성 검사 및 처리, 그리고 그 관계.

예를 들어, 는 를 의미합니다 cx([q[0],q[1]], q[2])``cx(q[0], q[2]); cx(q[1], q[2]) . 이 방법은 인수를 올바른 묶음 단위로 반환합니다. 주어진 예시에서:

in: [[q[0],q[1]], q[2]],[]
outs: [q[0], q[2]], []
      [q[1], q[2]], []

일반적인 방송 규칙은 다음과 같습니다:

  • len(qargs) == 1인 경우:

    [q[0], q[1]] -> [q[0]],[q[1]]
  • len(qargs) == 2인 경우:

    [[q[0], q[1]], [r[0], r[1]]] -> [q[0], r[0]], [q[1], r[1]]
    [[q[0]], [r[0], r[1]]]       -> [q[0], r[0]], [q[0], r[1]]
    [[q[0], q[1]], [r[0]]]       -> [q[0], r[0]], [q[1], r[0]]
  • len(qargs) >= 3인 경우:

    [q[0], q[1]], [r[0], r[1]],  ...] -> [q[0], r[0], ...], [q[1], r[1], ...]

매개변수

  • qargs (list) – 양자 비트 인수 목록.
  • cargs (list) – 고전적인 비트 논증 목록.

리턴

단일 인자를 갖는 튜플.

인상

CircuitError – 입력이 유효하지 않은 경우. 예를 들어, 인수의 개수가 게이트의 예상치와 일치하지 않습니다.

리턴 유형

Iterable [ tuple [ list, list ]]

control

control(num_ctrl_qubits=1, label=None, ctrl_state=None, annotated=None)

자신의 제어된 버전을 반환합니다.

제어 게이트는 annotatedControlledGate 때 로 False, 일 annotated AnnotatedOperation 때 로 구현됩니다 True.

2.3 버전부터 사용이 권장되지 않습니다

qiskit.circuit.gate.Gate.control()’의 인수는 Qiskit 2.3 버전부터 더 이상 사용되지 annotated 않습니다. Qiskit 3.0 에서 제거될 예정입니다. Gate.control () 메서드는 더 이상 annotated=None을 허용하지 않습니다. 새로운 기본값은 annotated=True이며, 이는 제어 게이트를 ‘ AnnotatedOperation ’로 표시합니다(이미 전용 제어 게이트 클래스가 존재하는 경우는 제외). 이전 동작을 유지하려면 annotated=False를 명시적으로 설정할 수 있습니다. 그러나 annotated=True를 사용하는 것이 권장됩니다. 이는 제어 회로의 생성을 트랜스파일러 단계로 미루어 주며, 나아가 추가적인 제어 게이트 최적화를 가능하게 하기 때문입니다(일반적으로 더 높은 품질의 회로를 생성합니다).

매개변수

  • num_ctrl_qubits (int) – 추가할 대조군의 수. 기본값은 1.입니다.
  • label (str | None) – 선택 사항인 게이트 라벨. 기본값은 None.입니다. 제어 게이트가 주석이 달린 연산으로 구현된 경우에는 무시됩니다.
  • ctrl_state (int |str | None) – 게이트의 제어 상태는 정수 또는 비트열(예: "110")로 지정됩니다. 인 경우 None, 기본값은 모든 비트가 1인 상태가 됩니다 2**num_ctrl_qubits - 1.
  • annotated (bool | None) – 제어 게이트를 제어 게이트로 구현할지, 아니면 주석이 달린 연산으로 구현할지 여부를 나타냅니다. 만약 None, 이면, 이를 로 간주한다 False.

리턴

이 게이트의 제어된 버전.

인상

QiskitError – 유효하지 않음 또는 num_ctrl_qubits ctrl_state.

copy

copy(name=None)

지침서 사본.

매개변수

name (str) – 복사된 회로에 부여할 이름입니다. 만약 라면 None 이름이 그대로 유지됩니다.

리턴

현재 지침의 사본으로, 이름이 제공된 경우 해당 이름이 업데이트된 것

리턴 유형

qiskit.circuit.Instruction

inverse

inverse(annotated=False)

이 명령을 반대로 하세요.

annotated가 False인 경우, 역연산 명령어는 재귀적으로 반전된 정의에 따라 새로운 명령어로 구현됩니다.

annotated가 True인 경우, 역 연산은 로 구현되며 AnnotatedOperation, 이는 “역 수정자”가 주어진 연산에 주석 처리된 것과 일치합니다.

Instruction 클래스에서 상속받은 특수 명령어는 자체적인 역함수를 구현할 수 있습니다(예: T 및 Tdg, Barrier 등) 특히, 사용자는 인수를 어떻게 처리할지 선택할 수 있으며, 여기에는 annotated 인수를 무시하고 역함수가 표준 게이트로 정의된 경우 항상 구체적인 게이트 클래스를 반환하는 방법도 포함될 수 있습니다.

매개변수

annotated (bool) – True로 설정하면 출력 역게이트가 로 반환됩니다 AnnotatedOperation.

리턴

역연산.

인상

CircuitError – 해당 명령어가 복합 명령어가 아니며, 이에 대한 역연산이 구현되지 않은 경우.

is_parameterized

is_parameterized()

컴파일 시 매개변수가 포함되어 Instruction 있는지 여부를 반환합니다.

power

power(exponent, annotated=False)

이 게이트를 의 제곱으로 올리세요 exponent.

단일 게이트로 구현되거나 (참조: UnitaryGate) 또는 주석이 달린 연산으로 (참조 AnnotatedOperation). RXGate, 등과 같은 여러 표준 게이트의 경우, 한 게이트의 전력이 직접 반환되는 다른 표준 게이트를 통해 표현될 수 있을 때.

매개변수

  • exponent (float) – 문을 들어 올릴 수 있는 힘
  • annotated (bool) – 파워 게이트를 주석이 달린 연산으로 구현할 수 있는지 여부를 나타냅니다. RXGate, 등과 같은 여러 표준 게이트의 경우, 게이트의 전력이 다른 표준 게이트로 표현될 수 있을 때는 이 인수가 무시됩니다.

리턴

다음 기능을 구현하는 연산 gate^exponent

인상

CircuitError – 게이트가 유니터리가 아닐 경우

repeat

repeat(n)

nn 번 반복되는 self 명령어를 생성합니다.

매개변수

n (int) – 지시를 반복할 횟수

리턴

정의가 포함되어 있습니다.

리턴 유형

qiskit.circuit.Instruction

인상

CircuitError – n < 1인 경우.

reverse_ops

reverse_ops()

복합 명령어의 경우, 하위 명령어의 순서를 반대로 바꾸십시오.

이는 모든 하위 명령어를 재귀적으로 역순으로 처리함으로써 이루어집니다. 어떤 게이트도 반전시키지 않습니다.

리턴

다음과 같은 새로운 명령어

하위 명령어가 역순으로 바뀌었습니다.

리턴 유형

qiskit.circuit.Instruction

soft_compare

soft_compare(other)

게이트 간의 부드러운 비교. 이들의 이름, 큐비트 수, 그리고 고전 비트 수는 일치해야 합니다. 매개변수의 개수가 일치해야 합니다. 각 매개변수가 비교됩니다. 만약 누군가가 ‘ ParameterExpression ’에 해당한다면, 이는 고려 대상이 되지 않습니다.

매개변수

other (instruction) – 기타 지침.

리턴

매개변수 표현식까지 ‘self’와 ‘other’는 동일합니다.

리턴 유형

부울

to_matrix

to_matrix()

게이트 유니터리 행렬에 대한 Numpy.array 를 반환합니다.

리턴

Gate 하위 클래스에 행렬 정의가 있는 경우.

리턴 유형

np.ndarray

인상

CircuitError – 게이트(Gate) 하위 클래스가 이 메서드를 구현하지 않은 경우, 이 기본 클래스 메서드가 호출되면 예외가 발생합니다.

to_mutable

to_mutable()

이 게이트의 변경 가능한 복사본을 반환합니다.

이 메서드는 이 게이트 인스턴스의 새로운 변경 가능한 복사본을 반환합니다. 싱글톤 인스턴스가 사용되고 있는 경우, 이는 변경이 가능한 새로운 고유 인스턴스가 됩니다. 인스턴스가 이미 변경 가능한 상태라면, 해당 인스턴스의 심층 복사본이 생성됩니다.

validate_parameter

validate_parameter(parameter)

게이트 매개변수는 int, float 또는 ParameterExpression 유형이어야 합니다

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