Skip to main content
IBM Quantum Platform

LinearFunction

class qiskit.circuit.library.LinearFunction(linear, validate_input=False)

GitHub

베이스: Gate

N개의 큐비트로 구성된 선형 가역 회로.

내부적으로 n개의 큐비트에 작용하는 선형 함수는 널 배열 형식의 0s 및 1s 의 n x n 행렬로 표현됩니다.

선형 함수는 참고문헌 [1을] 바탕으로 구현된 synth_cnot_count_full_pmh() Patel–Markov–Hayes 알고리즘을 사용하여 CX 및 SWAP 게이트로 합성될 수 있다.

효율성을 위해 내부 n x n 행렬은 빅엔디안(리틀엔디안이 아닌) 비트 순서 규칙인 cnot_synth에서 예상하는 형식으로 저장됩니다.

예:

회로

q_0: ──■──
     ┌─┴─┐
q_1: ┤ X ├
     └───┘
q_2: ─────

은 3x3 선형 행렬로 표시됩니다

(100110001)\begin{pmatrix} 1 & 0 & 0 \\ 1 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix}

참조 자료:

[1] 케탄 N. 파텔, 이고르 L. 마르코프, 존 P. 헤이즈, 선형 가역 회로의 최적 합성, Quantum Inf. Comput. 8(3) (2008). 온라인 umich.edu 에서 확인하세요.

매개변수

  • linear (list[list[bool]] | np.ndarray[bool] | QuantumCircuit |LinearFunction |PermutationGate |Clifford) – 선형 함수를 구성할 수 있는 데이터. 이는 n×n 행렬(선형 변환을 나타내는), 순열(선형 함수의 특수한 경우), 다른 선형 함수, 클리포드 연산(선형 함수에 해당할 때), 또는 선형 게이트(CX 및 SWAP)와 중첩된 하위 회로를 포함하여 앞서 설명한 다른 객체들로 구성된 양자 회로일 수 있다.
  • validate_input (bool) – true이면 주어진 n x n 행렬이 반전 가능한지 확인하는 등 더 비싼 입력 유효성 검사를 수행합니다.

레이즈

CircuitError – 입력이 유효하지 않은 경우: 입력 행렬이 정사각 행렬이 아니거나 가역 행렬이 아닌 경우, 또는 입력 양자 회로에 비선형 객체(예: 하다마르 게이트나 선형 함수에 해당하지 않는 클리포드 게이트)가 포함된 경우.


속성

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 이 대부분의 상황에서 더 적합한 판별자가 될 것으로 예상됩니다.

decompositions

SessionEquivalenceLibrary 에서 인스트럭션의 분해를 가져옵니다.

definition

다른 기본 게이트의 관점에서 정의를 반환합니다.

label

반품 지침 라벨

linear

이 선형 함수를 나타내는 n x n 행렬을 반환합니다.

mutable

이 인스턴스가 변경 가능한 고유 인스턴스인지 여부입니다.

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

name

이름을 반환합니다.

num_clbits

클릿 수를 반환합니다.

num_qubits

큐비트 수를 반환합니다.

original_circuit

이 선형 함수를 구성하는 데 사용된 원래 회로를 반환합니다(회로에서 선형 함수를 구성하지 않은 경우 없음 포함).

params

이 매개변수 Instruction. 이상적으로는 게이트 각도입니다.


메소드

add_decomposition

add_decomposition(decomposition)

GitHub

SessionEquivalenceLibrary 에 명령의 분해를 추가합니다.

broadcast_arguments

broadcast_arguments(qargs, cargs)

GitHub

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

예를 들어 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)

GitHub

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

제어된 게이트는 일 annotatedControlledGateFalse구현되며, 일 annotatedAnnotatedOperationTrue구현된다.

2.3 버전부터 사용 중단됨

qiskit.circuit.gate.Gate.control()'s argument'는 Qiskit 2.3annotated 부터 사용을 권장하지 않습니다. 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)

GitHub

지침 사본.

매개변수

name (str) – 를 복사된 회로에 부여할 이름으로 지정합니다. None 인 경우 이름은 동일하게 유지됩니다.

리턴

현재 인스트럭션의 사본(이름이 제공된 경우 업데이트된 이름 포함)

리턴 유형

qiskit.circuit.Instruction

extend_with_identity

extend_with_identity(num_qubits, positions)

GitHub

선형 함수를 다른 서브시스템의 아이덴티티와 함께 nq 큐비트 이상의 선형 함수로 확장합니다.

매개변수

  • num_qubits (int) – 확장 함수의 큐비트 수입니다.
  • positions (list[int]) – 는 확장 함수의 큐비트에서 원래 큐비트의 위치를 설명합니다.

리턴

확장된 선형 함수.

리턴 유형

LinearFunction

function_str

function_str()

GitHub

선형 변환으로 표시된 선형 함수의 문자열 표현을 반환합니다.

inverse

inverse(annotated=False)

GitHub

이 선형 함수의 역함수를 반환합니다.

매개변수

GateTrueannotated (bool) – 로 설정된 경우, 이는 일반적으로 구체적인 값 대신 역 수식자가 설정된 값을 AnnotatedOperation 반환하는 데 사용됩니다. LinearFunction그러나 이 수업에서는 이 게이트의 역연산이 항상 a이므로, 이 주장은 무시됩니다.

리턴 유형

LinearFunction

is_parameterized

is_parameterized()

GitHub

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

is_permutation

is_permutation()

GitHub

이 선형 함수가 순열인지, 즉 n x n 행렬의 모든 행과 모든 열에 정확히 하나의 1이 있는지 여부를 반환합니다.

리턴 유형

부울

mat_str

mat_str()

GitHub

0/1 항목이 있는 행렬로 표시된 선형 함수의 문자열 표현을 반환합니다.

permutation_pattern

permutation_pattern()

GitHub

이 메서드는 먼저 선형 함수가 순열인지 확인하고 순열이 아닌 경우 qiskit.circuit.exceptions.CircuitError 을 반환합니다. 이 선형 함수가 순열인 경우 순열 패턴을 반환합니다.

power

power(exponent, annotated=False)

GitHub

이 게이트를 exponent 의 힘으로 올리십시오.

단일 게이트(참조. UnitaryGate) 또는 주석이 달린 연산으로(참조. AnnotatedOperation). 다음과 같은 여러 표준 게이트의 경우 RXGate와 같이 게이트의 전력을 직접 반환되는 다른 표준 게이트로 표현할 수 있는 경우.

매개변수

  • exponent (float) – 게이트를 올리는 힘
  • annotated (bool) – 는 파워 게이트를 주석 처리된 연산으로 구현할 수 있는지 여부를 나타냅니다. 다음과 같은 여러 표준 게이트의 경우 RXGate와 같이 여러 개의 표준 게이트가 있는 경우, 게이트의 전력을 다른 표준 게이트로 표현할 수 있는 경우 이 인수는 무시됩니다.

리턴

구현하는 작업 gate^exponent

레이즈

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

repeat

repeat(n)

GitHub

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

매개변수

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

리턴

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

리턴 유형

qiskit.circuit.Instruction

레이즈

CircuitError – n < 1인 경우.

reverse_ops

reverse_ops()

GitHub

복합 인스트럭션의 경우 하위 인스트럭션의 순서를 반대로 합니다.

이는 모든 하위 인스트럭션을 재귀적으로 반전하여 수행됩니다. 어떤 게이트도 반전시키지 않습니다.

리턴

를 포함하는 새 명령어

하위 지침이 반전되었습니다.

리턴 유형

qiskit.circuit.Instruction

soft_compare

soft_compare(other)

GitHub

게이트 간 소프트 비교. 이름, 큐비트 수, 클래식 비트 번호가 일치해야 합니다. 매개변수의 개수가 일치해야 합니다. 각 매개변수를 비교합니다. ParameterExpression 인 경우 고려되지 않습니다.

매개변수

other (instruction) – 다른 지침.

리턴

는 자체 및 기타 매개변수 표현식과 동일합니다.

리턴 유형

부울

synthesize

synthesize()

GitHub

선형 함수를 양자 회로로 합성합니다.

버전부터 사용되지 않음 2.1

qiskit.circuit.library.generalized_gates.linear_function.LinearFunction.synthesize() 메서드는 키스킷 2.1 에서 더 이상 사용되지 않습니다. 키스킷 3.0 에서 제거됩니다. 대신 LinearFunction.definition을 호출하거나 회로를 컴파일하세요.

리턴

진화를 구현하는 회로입니다.

리턴 유형

QuantumCircuit

to_matrix

to_matrix()

GitHub

게이트 유니타리 행렬에 대해 Numpy.array 을 반환합니다.

리턴

게이트 서브클래스에 행렬 정의가 있는 경우.

리턴 유형

np.ndarray

레이즈

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

to_mutable

to_mutable()

GitHub

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

이 메서드는 이 게이트 인스턴스의 변경 가능한 새 복사본을 반환합니다. 싱글톤 인스턴스가 사용 중인 경우 이는 변경 가능한 새 고유 인스턴스가 됩니다. 인스턴스가 이미 변경 가능한 경우 해당 인스턴스의 딥카피가 됩니다.

validate_parameter

validate_parameter(parameter)

GitHub

매개변수 유효성 검사

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