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)
베이스: 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() 함수는 기능적으로 동등한 회로를 구성하지만 더 빠릅니다.
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
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)
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 메서드가 없는 경우).
리턴 유형
assign_parameters
assign_parameters(parameters, inplace=False, **kwargs)
N-로컬 회로에 매개변수를 할당합니다.
이 메서드는 사전 대신 목록 전달도 지원합니다. 목록이 전달되는 경우 목록의 길이는 회로의 바인딩되지 않은 매개변수 수와 같아야 합니다. 매개 변수는 매개 변수의 순서대로 할당됩니다 ordered_parameters().
리턴
지정된 파라미터가 포함된 NLocal 회로의 복사본입니다.
레이즈
AttributeError - 매개변수가 목록으로 제공되고 매개변수 수와 일치하지 않는 경우.
매개변수
- parameters (Mapping[Parameter, ParameterExpression |float] | Sequence[ParameterExpression |float])
- inplace (bool)
리턴 유형
QuantumCircuit | 없음
get_entangler_map
get_entangler_map(rep_num, block_num, num_block_qubits)
반복 rep_num 및 블록 block_num 에 대한 인탱글러 맵을 가져옵니다.
현재 블록의 인탱글러 맵은 self.entanglement 의 값에서 파생됩니다. 아래에는 다양한 사례가 나열되어 있으며, i 및 j 은 각각 반복 횟수와 블록 번호를, 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 값을 해당 인탱글러 맵으로 캐스팅할 수 없는 경우.
리턴 유형