Skip to main content
IBM Quantum Platform

NLocal

class qiskit.circuit.library.NLocal(num_qubits=None, rotation_blocks=None, entanglement_blocks=None, entanglement=None, reps=1, insert_barriers=False, parameter_prefix='θ', overwrite_block_parameters=True, skip_final_rotation_layer=False, skip_unentangled_qubits=False, initial_state=None, name='nlocal', flatten=None)

GitHub

베이스: BlueprintCircuit

N-로컬 서킷 클래스입니다.

N-로컬 회로의 구조는 회전과 얽힘 층을 번갈아 가며 구성합니다. 두 계층 모두에서 매개변수화된 회로 블록은 정의된 방식으로 회로에 작용합니다. 회전 레이어에서는 블록이 서로 겹쳐서 적용되고, 얽힘 레이어에서는 entanglement 전략에 따라 블록이 겹쳐서 적용됩니다. 회로 블록은 임의의 크기(회로의 큐비트 수만큼 작음)를 가질 수 있습니다. 각 레이어는 reps 번 반복되며 기본적으로 최종 회전 레이어가 추가됩니다.

예를 들어, 2 큐비트의 회전 블록과 'linear' 얽힘을 사용하는 4 큐비트의 얽힘 블록은 다음과 같은 회로를 생성합니다.

┌──────┐ ░ ┌──────┐                      ░ ┌──────┐
┤0     ├─░─┤0     ├──────────────── ... ─░─┤0     ├
│  Rot │ ░ │      │┌──────┐              ░ │  Rot │
┤1     ├─░─┤1     ├┤0     ├──────── ... ─░─┤1     ├
├──────┤ ░ │  Ent ││      │┌──────┐      ░ ├──────┤
┤0     ├─░─┤2     ├┤1     ├┤0     ├ ... ─░─┤0     ├
│  Rot │ ░ │      ││  Ent ││      │      ░ │  Rot │
┤1     ├─░─┤3     ├┤2     ├┤1     ├ ... ─░─┤1     ├
├──────┤ ░ └──────┘│      ││  Ent │      ░ ├──────┤
┤0     ├─░─────────┤3     ├┤2     ├ ... ─░─┤0     ├
│  Rot │ ░         └──────┘│      │      ░ │  Rot │
┤1     ├─░─────────────────┤3     ├ ... ─░─┤1     ├
└──────┘ ░                 └──────┘      ░ └──────┘

|                                 |
+---------------------------------+
       repeated reps times

지정한 경우 모든 블록 사이에 배리어를 삽입할 수 있습니다. 초기 상태 객체가 제공되면 NLocal 앞에 추가됩니다.

관련 참조

함수는 n_local() 함수는 기능적으로 동등한 회로를 구성하지만 더 빠릅니다.

버전부터 사용되지 않음 2.1

qiskit.circuit.library.n_local.n_local.NLocal 클래스는 키스킷 2.1 에서 더 이상 사용되지 않습니다. 키스킷 3.0 에서 제거됩니다. 이는 NLocal 서브클래스에도 적용됩니다. 대신 qiskit.circuit.library.n_local 모듈의 해당 기능을 사용하세요.

매개변수

  • num_qubits (int | None) – 회로의 큐비트 수입니다.
  • rotation_blocks (QuantumCircuit |list[QuantumCircuit] | qiskit.circuit.Instruction |list[qiskit.circuit.Instruction] | None) – 회전 레이어에 사용되는 블록들. 여러 개가 전달된 경우, 이들은 차례대로 적용됩니다(새로운 하위 레이어처럼).
  • entanglement_blocks (QuantumCircuit |list[QuantumCircuit] | qiskit.circuit.Instruction |list[qiskit.circuit.Instruction] | None) – 얽힘 계층에 사용되는 블록들. 여러 개가 전달된 경우, 이들은 차례대로 적용됩니다. get_entangler_map()하위 레이어에 서로 다른 얽힘을 사용하려면 다음을 참조하십시오.
  • entanglement (list[int] | list[list[int]] | None) – 입력 블록이 작동하는 큐비트를 지정하는 인덱스입니다. None 인 경우 얽힘 블록이 회로의 상단에 적용됩니다.
  • reps (int) – 회전 블록과 얽힘 블록을 반복하는 빈도를 지정합니다.
  • insert_barriers (bool) – True 인 경우 각 레이어 사이에 장벽이 삽입됩니다. False 인 경우 장벽이 삽입되지 않습니다.
  • parameter_prefix (str) – 기본 매개변수가 생성되는 경우 사용되는 접두사입니다.
  • overwrite_block_parameters (bool |list[list[Parameter]]) – 추가된 블록의 매개변수를 덮어써야 하는 경우. False 인 경우 블록의 매개변수는 변경되지 않습니다.
  • skip_final_rotation_layer (bool) – 회로에 최종 회전 레이어를 추가할지 여부입니다.
  • skip_unentangled_qubits (bool) – True 이면 회전 게이트는 얽혀 있는 큐비트에만 작동합니다. False 이면 회전 게이트가 모든 큐비트에 작용합니다.
  • initial_state (QuantumCircuit | None) – NLocal 회로 앞에 추가되는 초기 상태를 설명하는 데 사용할 수 있는 객체입니다 QuantumCircuit .
  • name (str) – 회로의 이름.
  • flatten (bool | None) – 여러 개의 게이트 오브젝트 레이어 안에 중첩하는 대신 평면 회로를 출력하려면 True 로 설정합니다. 현재 기본적으로 출력 회로의 내용은 보다 깔끔한 시각화를 위해 중첩된 객체로 래핑됩니다. 그러나 시각화 이외의 다른 용도로 이 회로를 사용하는 경우 매개변수 바인딩으로 인한 성능 오버헤드가 크지 않도록 이 플래그를 True 로 설정하는 것이 좋습니다.

레이즈

  • ValueError - reps 매개변수가 0보다 작거나 같을 경우.
  • TypeError - reps 매개변수가 int 값이 아닌 경우.

속성

entanglement

얽힘 전략을 확인하세요.

리턴

얽힘 전략에 대한 자세한 내용은 get_entangler_map() 형식을 해석하는 방법에 대한 자세한 내용은 를 참조하세요.

entanglement_blocks

얽힘 레이어의 블록입니다.

리턴

얽힘 레이어의 블록입니다.

flatten

회로가 중첩된 게이트/인스트럭션으로 래핑되었는지 또는 평평하게 래핑되었는지를 반환합니다.

initial_state

N-로컬 회로 앞에 추가된 초기 상태를 반환합니다.

리턴

초기 상태입니다.

insert_barriers

레이어 사이에 장벽이 삽입되어 있는지 여부.

리턴

True레이어 사이에 장벽이 삽입된 경우 False .

num_layers

N-로컬 회로의 레이어 수를 반환합니다.

리턴

회로의 레이어 수입니다.

num_parameters_settable

고유 값으로 설정할 수 있는 총 매개변수 수입니다.

이는 매개변수가 바인딩되거나 동일한 매개변수로 교환될 때 변경되지 않으므로 현재 회로의 고유 개체 수를 계산하는 num_parameters 와는 다릅니다 Parameter 객체의 수를 계산하는 와 다릅니다.

리턴

원래 회로에서 사용할 수 있는 파라미터의 수입니다.

참고

이 수량은 아직 회로를 구축할 필요가 없습니다.

num_qubits

이 회로의 큐비트 수를 반환합니다.

리턴

큐비트 수입니다.

ordered_parameters

기본 회로에 사용되는 매개변수입니다.

여기에는 부동 소수점 값과 중복이 포함됩니다.

예제

>>> # prepare circuit ...
>>> print(nlocal)
     ┌───────┐┌──────────┐┌──────────┐┌──────────┐
q_0:Ry(1) ├┤ Ry(θ[1]) ├┤ Ry(θ[1]) ├┤ Ry(θ[3])
     └───────┘└──────────┘└──────────┘└──────────┘
>>> nlocal.parameters
{Parameter(θ[1]), Parameter(θ[3])}
>>> nlocal.ordered_parameters
[1, Parameter(θ[1]), Parameter(θ[1]), Parameter(θ[3])]

리턴

회로에 사용된 파라미터 객체입니다.

parameter_bounds

회로에서 바인딩되지 않은 매개변수에 대한 매개변수 바운드입니다.

리턴

(아래, 위)와 같이 경계를 나타내는 쌍의 목록입니다. 없음은 해당 방향에 바인딩되지 않은 매개변수를 나타냅니다. None 이 반환되면 문제가 완전히 해결된 것입니다.

preferred_init_points

매개 변수의 초기 포인트입니다. 최적화를 위한 초기 추측으로 저장할 수 있습니다.

리턴

매개 변수의 초기 값 또는 설정된 값이 없는 경우 없음입니다.

reps

회전 및 얽힘 블록이 반복되는 횟수입니다.

리턴

반복 횟수입니다.

rotation_blocks

회전 레이어의 블록입니다.

리턴

회전 레이어의 블록입니다.

name

유형: str

사람이 읽을 수 있는 회로의 이름입니다.

예제

from qiskit import QuantumCircuit

qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)
my_circuit

메소드

add_layer

add_layer(other, entanglement=None, front=False)

GitHub

NLocal에 다른 레이어를 추가합니다.

매개변수

  • other (QuantumCircuit |qiskit.circuit.Instruction) – 구성할 레이어는 다른 NLocal, Instruction 또는 Gate, 혹은 QuantumCircuit 일 수 있습니다.
  • entanglement (list[int] | str |list[list[int]] | None) – 얽힘 또는 큐비트 인덱스입니다.
  • front (bool) – True이면 other 가 앞에 추가되고, 그렇지 않으면 뒤에 추가됩니다.

리턴

를 사용하여 연쇄적인 컴포지션이 가능합니다.

레이즈

TypeError - 기타가 호환되지 않는 경우(즉, 인스트럭션이 없고 to_instruction 메서드가 없는 경우).

리턴 유형

NLocal

assign_parameters

assign_parameters(parameters, inplace=False, **kwargs)

GitHub

N-로컬 회로에 매개변수를 할당합니다.

이 메서드는 사전 대신 목록 전달도 지원합니다. 목록이 전달되는 경우 목록의 길이는 회로의 바인딩되지 않은 매개변수 수와 같아야 합니다. 매개 변수는 매개 변수의 순서대로 할당됩니다 ordered_parameters().

리턴

지정된 파라미터가 포함된 NLocal 회로의 복사본입니다.

레이즈

AttributeError - 매개변수가 목록으로 제공되고 매개변수 수와 일치하지 않는 경우.

매개변수

리턴 유형

QuantumCircuit | 없음

get_entangler_map

get_entangler_map(rep_num, block_num, num_block_qubits)

GitHub

반복 rep_num 및 블록 block_num 에 대한 인탱글러 맵을 가져옵니다.

현재 블록의 인탱글러 맵은 self.entanglement 의 값에서 파생됩니다. 아래에는 다양한 사례가 나열되어 있으며, ij 은 각각 반복 횟수와 블록 번호를, n 은 블록의 큐비트 수를 나타냅니다.

얽힘 유형
인탱글러 맵
None[[0, ..., n - 1]]
str (예: 'full')큐비트에 n 대한 지정된 연결성
List[int][entanglement]
List[List[int]]entanglement
List[List[List[int]]]entanglement[i]
List[List[List[List[int]]]]entanglement[i][j]
List[str]다음에 명시된 연결성 entanglement[i]
List[List[str]]다음에 명시된 연결성 entanglement[i][j]
Callable[int, str]Same as List[str]
Callable[int, List[List[int]]]Same as List[List[List[int]]]

모든 인덱스는 작동하는 배열의 길이를 모듈로 취해야 합니다. 즉, 범위를 벗어난 인덱스 오류는 발생하지 않지만 목록의 시작 부분부터 다시 반복합니다.

매개변수

  • rep_num (int) – 현재 반복되는 상황입니다.
  • block_num (int) – 얽힘 레이어 내의 블록 번호입니다.
  • num_block_qubits (int) – 블록의 큐비트 수입니다.

리턴

현재 리피트에서 현재 블록에 대한 인탱글러 맵입니다.

레이즈

ValueError - entanglement 값을 해당 인탱글러 맵으로 캐스팅할 수 없는 경우.

리턴 유형

시퀀스 [ 시퀀스 [ int ]]

get_unentangled_qubits

get_unentangled_qubits()

GitHub

집합에서 얽히지 않은 큐비트의 인덱스를 가져옵니다.

리턴

얽히지 않은 큐비트.

리턴 유형

set[ int ]

print_settings()

GitHub

설정에 대한 정보를 반환합니다.

리턴

클래스 이름과 인스턴스의 속성/파라미터를 str 로 설정합니다.

리턴 유형

str

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