Skip to main content
IBM Quantum Platform

DAG 회로

class qiskit.dagcircuit.DAGCircuit

베이스: object

방향성 비순환 그래프로서의 양자 회로.

그래프에는 입력, 출력, 연산이라는 세 가지 유형의 노드가 있습니다. 노드는 큐비트와 비트에 해당하는 방향이 지정된 에지로 연결됩니다.


속성

clbits

등록된 Clbit 인스턴스의 현재 시퀀스를 리스트 형태로 반환합니다.

경고

이 목록을 직접 수정하지 마세요. 데이터 구조가 무효화됩니다 DAGCircuit 데이터 구조를 무효화합니다.

리턴

등록된 클릿의 현재 시퀀스입니다.

리턴 유형

list(Clbit)

cregs

회로에 ClassicalRegisters 이 포함된 딕셔너리를 반환합니다

duration

스케줄링 트랜스파일러 패스로 설정한 회로의 총 지속 시간을 반환합니다. 단위는 다음과 같이 지정됩니다 unit

키스킷 이후 사용 중단 1.3.0 키스킷에서 제거될 예정입니다 3.0.0

global_phase

회로의 전역 위상을 반환합니다.

input_map

metadata

회로 메타데이터

name

회로 이름. 일반적으로 이것은 DAG가 생성된 QuantumCircuit 의 이름에 해당합니다.

node_counter

Dag의 노드 수를 반환합니다.

num_captured_stretches

회로가 추적한 캡처된 스트레치 수입니다.

num_captured_vars

회로에서 추적한 캡처된 클래식 변수의 수입니다.

num_declared_stretches

서킷에서 추적한 선언된 로컬 스트레치 수입니다.

num_declared_vars

회로가 추적하는 선언된 로컬 클래식 변수의 수입니다.

num_input_vars

회로가 추적하는 입력 클래식 변수의 수입니다.

num_stretches

회로에서 추적한 총 스트레칭 횟수입니다.

num_vars

회로에서 추적하는 클래식 변수의 총 개수입니다.

output_map

qregs

회로에 QuantumRegisters 이 포함된 딕셔너리를 반환합니다

qubits

등록된 Qubit 인스턴스의 현재 시퀀스를 리스트 형태로 반환합니다.

경고

이 목록을 직접 수정하지 마세요. 데이터 구조가 무효화됩니다 DAGCircuit 데이터 구조를 무효화합니다.

리턴

등록된 큐비트의 현재 시퀀스입니다.

리턴 유형

list(Qubit)

unit

기간이 지정된 단위를 반환합니다.

키스킷 이후 사용 중단 1.3.0 키스킷에서 제거될 예정입니다 3.0.0

wires

전선 목록을 순서대로 반환합니다.


메소드

add_captured_stretch

add_captured_stretch(stretch)

캡처한 스트레치를 회로에 추가합니다.

매개변수

스트레치 - 추가할 스트레치입니다.

add_captured_var

add_captured_var(var)

캡처한 변수를 회로에 추가합니다.

매개변수

var - 추가할 변수입니다.

add_clbits

add_clbits(clbits)

개별 clbit 와이어를 추가합니다.

add_creg

add_creg(creg)

클래식 레지스터에 모든 전선을 추가합니다.

add_declared_stretch

add_declared_stretch(stretch)

선언된 스트레치를 회로에 추가합니다.

매개변수

스트레치 - 추가할 스트레치입니다.

add_declared_var

add_declared_var(var)

선언된 로컬 변수를 회로에 추가합니다.

매개변수

var - 추가할 변수입니다.

add_input_var

add_input_var(var)

회로에 입력 변수를 추가합니다.

매개변수

var - 추가할 변수입니다.

add_qreg

add_qreg(qreg)

양자 레지스터에 모든 와이어를 추가합니다.

add_qubits

add_qubits(qubits)

개별 큐비트 와이어를 추가합니다.

ancestors

ancestors(node)

노드의 조상 집합을 다음과 같이 반환합니다 DAGOpNodeDAGInNodes.

조상은 대상 노드에 도달할 수 있는 모든 노드의 집합입니다. 는 직전의 상위 항목만 포함하지만 DAGCircuit.predecessors() 는 직전의 상위 항목만 포함하지만, 상위 항목은 각 상위 항목의 상위 항목을 재귀적으로 포함합니다.

apply_operation_back

apply_operation_back(op, qargs=None, cargs=None, *, check=True)

회로의 출력에 연산을 적용합니다.

매개변수

  • op (qiskit.circuit.Operation) – dAG 노드와 관련된 연산
  • qargs (tuple[Qubit]) – 해당 연산이 적용될 큐비트
  • cargs (tuple[Clbit]) – 해당 연산이 적용될 cbits
  • Qubitcheck (bool) – (기본값)인 경우 True , 이 함수는 데이터 구조 불변 조건 DAGCircuit (모두 qargs \ s이고, 모두 DAG에 속해 있는 등)이 유지되도록 강제합니다. False이 경우, 호출자는 이러한 불변 조건을 스스로 준수해야 하지만, 여러 번의 검사 과정은 생략됩니다. 이는 정상으로 확인된 노드 집합을 기반으로 새로운 DAG를 구축할 때 가장 유용합니다.

리턴

에 추가된 연산에 대한 노드입니다

리턴 유형

DAGOpNode

레이즈

DAGCircuitError – 리프 노드가 여러 출력 노드에 연결되어 있는 경우

apply_operation_front

apply_operation_front(op, qargs=None, cargs=None, *, check=True)

회로의 입력에 연산을 적용합니다.

매개변수

  • op (qiskit.circuit.Operation) – dAG 노드와 관련된 연산
  • qargs (tuple[Qubit]) – 해당 연산이 적용될 큐비트
  • cargs (tuple[Clbit]) – 해당 연산이 적용될 cbits
  • Qubitcheck (bool) – (기본값)인 경우 True , 이 함수는 데이터 구조 불변 조건 DAGCircuit (모두 qargs \ s이고, 모두 DAG에 속해 있는 등)이 유지되도록 강제합니다. False이 경우, 호출자는 이러한 불변 조건을 스스로 준수해야 하지만, 여러 번의 검사 과정은 생략됩니다. 이는 정상으로 확인된 노드 집합을 기반으로 새로운 DAG를 구축할 때 가장 유용합니다.

리턴

에 추가된 연산에 대한 노드입니다

리턴 유형

DAGOpNode

레이즈

DAGCircuitError – 초기 노드가 여러 개의 출력 에지에 연결된 경우

bfs_successors

bfs_successors(node)

DAGNode 이 현재 노드이고 [DAGNodes] 이 BFS 순서대로 후계자 목록인 (DAGNode, [DAGNodes]) 의 튜플 이터레이터를 반환합니다.

classical_predecessors

classical_predecessors(node)

DAGOpNodes 및 DAGInNodes 과 같이 클래식 에지로 연결된 노드의 이전 노드의 이터레이터를 반환합니다.

classical_successors

classical_successors(node)

DAGOpNodes 및 DAGOutNodes 과 같이 클래식 에지로 연결된 노드의 후속 노드의 이터레이터를 반환합니다.

collect_1q_runs

collect_1q_runs()

1q "op" 노드의 비조건부 실행 집합을 반환합니다.

collect_2q_runs

collect_2q_runs()

2q "op" 노드의 비조건부 실행 집합을 반환합니다.

collect_runs

collect_runs(namelist)

주어진 이름을 가진 '연산' 노드의 비조건부 실행 집합을 반환합니다.

예를 들어, "... h [q0]; cx [q0], [q1]; cx [q0], [q1]; h [q1];..." 는 수집_runs( ["cx"] ) 호출에서 반환된 집합의 요소로 cx 노드의 튜플을 생성합니다. 대신 cx 노드가 "cx [q0], [q1]; cx [q1], [q0];"인 경우에도 메서드는 여전히 쌍을 튜플로 반환합니다. 네임리스트에는 서킷의 기초에 없는 이름을 포함할 수 있습니다.

노드에는 실행을 계속하려면 후임자가 한 명만 있어야 합니다.

compose

compose(other, qubits=None, clbits=None, front=False, inplace=True, *, inline_captures=False)

이 회로의 출력에 other 회로를 구성합니다.

other 의 입력 와이어 하위 집합이 이 회로의 출력 와이어 하위 집합에 매핑됩니다.

other 보다 좁거나 self 와 같은 너비일 수 있습니다.

매개변수

  • other (DAGCircuit) – 자체로 구성하는 회로
  • qubits (list[Qubit|int]) – 자아의 큐비트를 조합하여 만들어낼 수 있다.
  • clbits (list[Clbit|int]) – 작곡에 담을 나 자신의 조각들.
  • front (bool) – True인 경우, 프론트 컴포지션이 수행됩니다(아직 구현되지 않음)
  • inplace (bool) – True이면 개체를 수정합니다. 그렇지 않으면 구성된 회로를 반환합니다.
  • inline_captures (bool) – True other DAG에서 "캡처"로 표시된 변수는 self 에서 동일한 변수의 기존 사용처에 인라인 처리됩니다. False, other 의 모든 변수는 self 와 구별되어야 하며 self 에 추가됩니다.

리턴

를 반환합니다(inplace==True인 경우 None을 반환합니다).

리턴 유형

DAGCircuit

레이즈

DAGCircuitError – 가 더 넓거나 중복된 에지 매핑이 있는 경우 other .

control_flow_op_nodes

control_flow_op_nodes()

제어 흐름 지침이 포함된 dag의 "op" 노드 목록을 가져옵니다.

리턴

제어 흐름 작업이 포함된 dag 노드 목록입니다.

리턴 유형

목록 [ DAGOpNode ]

copy_empty_like

copy_empty_like(*, vars_mode=Ellipsis)

구조는 같지만 비어 있는 self의 복사본을 반환합니다.

이 구조에는 다음이 포함됩니다:

  • 이름 및 기타 메타데이터
  • 글로벌 단계
  • 지속 기간
  • 레지스터를 포함한 모든 큐비트와 클릿을 포함합니다.

리턴

자아의 빈 사본.

리턴 유형

DAGCircuit

count_ops

count_ops(*, recurse=True)

작업 이름의 발생 횟수를 계산합니다.

매개변수

recurse - True (기본값)이면 제어 흐름 연산으로 재귀합니다. 모든 경우에 가능한 모든 블록에서 연산이 나타나는 횟수만 계산하며, if-eles의 브랜치는 모두 계산되고 for- 및 while-루프 블록은 한 번만 계산됩니다.

리턴

작업 이름을 표시되는 횟수에 매핑합니다.

리턴 유형

매핑 [str, int ]

count_ops_longest_path

count_ops_longest_path()

가장 긴 경로에서 작업 이름의 발생 횟수를 계산합니다.

연산 이름에 키가 지정된 카운트 딕셔너리를 반환합니다.

depth

depth(*, recurse=False)

회로 깊이를 반환합니다. 제어 흐름이 존재하는 경우 전체 제어 흐름 경로를 정적으로 알 수 없으므로 이 수치는 추정치일 수 있습니다.

매개변수

재귀 – 만약 True~라면, 제어 흐름 연산으로 재귀를 수행한다. 길이가 알려진 반복자를 사용하는 for 루프는 마치 루프를 수동으로 전개한 것처럼( 즉, 루프 본문의 각 반복을 명시적으로 작성한 것처럼) 계산됩니다. if-else 블록은 두 분기 중 처리 시간이 더 긴 쪽을 선택합니다. while 루프는 루프 본문이 단 한 번만 실행되는 것으로 간주됩니다. 무의미한 숫자가 아무런 오류 메시지 없이 반환되는 것을 방지하기 위해, 제어 흐름이 존재할 경우 기본값으로 False 설정되며 를 발생시킵니다 DAGCircuitError .

리턴

회로 깊이

리턴 유형

int

레이즈

  • DAGCircuitError – 유향 비순환 그래프가 아닌 경우
  • DAGCircuitError – 재귀 호출에 알려지지 않은 제어 흐름이 포함되어 있거나, 비재귀 호출에 어떤 형태의 제어 흐름이든 포함되어 있는 경우.

descendants

descendants(node)

노드의 하위 노드 집합을 DAGOpNodeDAGOutNodes.

자손 노드란 대상 노드에서 도달할 수 있는 모든 노드의 집합을 말합니다. 이에 비해 는 DAGCircuit.successors() 바로 다음 후속 요소들을 순회하는 이터레이터인 반면, 이 메서드는 모든 후속 요소들의 다음 후속 요소들을 포함합니다.

draw

draw(scale=0.7, filename=None, style='color')

다그 회로를 그립니다.

이 기능을 사용하려면 Graphviz가 설치되어 있어야 합니다. Graphviz는 파이썬 패키지가 아니므로 pip 설치가 불가능합니다( PyPI 의 graphviz 패키지는 Graphviz용 Python 인터페이스 라이브러리이며 실제로 Graphviz를 설치하지는 않습니다). 설치 방법은 그래프 시각화 설명서를 참조하세요.

경고

이 함수는 사용자가 제어할 수 있는 문자열(게이트 레이블이나 레지스터 이름 등)이 포함된 파일에 대해 시스템의 Graphviz 도구를 호출합니다. 이 함수는 신뢰할 수 있는 입력에 대해서만 호출하는 것이 좋습니다.

매개변수

  • scale (float) – 스케일링 계수
  • filename (str) – 이미지를 저장할 파일 경로 (파일 이름에서 형식을 추론함)
  • style (str) – '일반': 흑백 그래프, '컬러'(기본값): 컬러 입력/출력/옵션 노드

리턴

주피터 노트북에 있고 파일에 저장하지 않은 경우, 그렇지 않으면 없음.

리턴 유형

Ipython.display.Image

edges

edges(nodes=None)

소스 및 대상 노드가 있는 에지 값에 대한 이터레이터입니다.

이는 지정된 노드에서 나가는 에지를 반환하는 방식으로 작동합니다. 노드를 지정하지 않으면 그래프의 모든 에지가 반환됩니다.

매개변수

nodes (DAGOpNode, DAGInNode, or DAGOutNode|list(DAGOpNode, DAGInNode, or DAGOutNode) – 노드 목록 또는 단일 입력 노드입니다. 아무것도 지정하지 않으면 그래프에서 모든 에지가 반환됩니다.

산출량

가장자리 -

형식의 튜플로 가장자리를 반환합니다

(소스 노드, 대상 노드, 에지 와이어)

find_bit

find_bit(bit)

큐비트와 Clbit를 위치 인덱스 BitLocations 에 매핑하여 회로에서 위치를 찾는 것은 다음과 같이 정의됩니다: BitLocations = namedtuple( “BitLocations”, ("index", "registers"))

매개변수

bit (Bit) – 찾아야 할 부분.

리턴

2-튜플입니다. 첫 번째 요소 (index)

에는 Bit 을 찾을 수 있는 인덱스가 포함되어 있습니다( qubits, clbits또는 유형에 따라 다름). 두 번째 요소(registers)는 (register, index) 쌍의 목록으로, 회로의 각 Register 항목에 Bit (및 해당 항목을 찾을 수 있는 Register )의 인덱스가 포함되어 있습니다.

리턴 유형

namedtuple(int, ListTuple ([Register, int] ))

올리다:

DAGCircuitError: 제공된 Bit 유형이 알 수 없는 유형인 경우. DAGCircuitError: 제공된 Bit 을 회로에서 찾을 수 없는 경우.

front_layer

front_layer()

이 데이터의 첫 번째 레이어에 있는 연산 노드 목록을 반환합니다.

gate_nodes

gate_nodes()

Dag의 게이트 노드 목록을 가져옵니다.

리턴

게이트를 나타내는 DAGOpNodes 목록입니다.

리턴 유형

목록 [ DAGOpNode ]

has_identifier

has_identifier(var)

이 식별자가 DAG에 있나요?

매개변수

var - 확인할 식별자 또는 이름입니다.

has_stretch

has_stretch(stretch)

DAG에 스트레칭이 있나요?

매개변수

var - 확인할 스트레치 또는 이름입니다.

has_var

has_var(var)

이 변수가 DAG의 실시간 변수인가요?

매개변수

var - 확인할 변수 또는 이름입니다.

idle_wires

idle_wires(ignore=None)

유휴 전선을 반환합니다.

매개변수

ignore (list(str)) – 무시할 노드 이름 목록입니다. 기본값입니다: []

산출량

비트 - 유휴 와이어의 비트입니다.

레이즈

DAGCircuitError – DAG가 유효하지 않은 경우

is_empty

is_empty()

그래프에 작업 노드가 존재하지 않으면 true를 반환합니다.

is_predecessor

is_predecessor(node, node_pred)

두 번째 노드가 노드의 이전 노드에 있는지 확인합니다.

is_successor

is_successor(node, node_succ)

두 번째 노드가 노드의 후속 노드에 있는지 확인합니다.

iter_captured_stretches

iter_captured_stretches()

회로가 추적한 캡처된 스트레치에 대해 반복할 수 있습니다.

iter_captured_vars

iter_captured_vars()

회로에서 추적한 캡처된 클래식 변수에 대해 반복 가능합니다.

iter_captures

iter_captures()

회로에서 추적한 모든 캡처된 식별자에 대해 반복할 수 있습니다.

iter_declared_stretches

iter_declared_stretches()

회로가 추적하는 선언된 스트레치에 대해 반복할 수 있습니다.

iter_declared_vars

iter_declared_vars()

회로가 추적하는 선언된 클래식 변수에 대해 이터러블합니다.

iter_input_vars

iter_input_vars()

회로가 추적하는 입력 클래식 변수에 대해 이터러블합니다.

iter_stretches

iter_stretches()

회로가 추적하는 모든 스트레치에서 반복할 수 있습니다.

iter_vars

iter_vars()

회로가 추적하는 모든 클래식 변수에 대해 반복할 수 있습니다.

layers

layers(*, vars_mode=Ellipsis)

이 DAGCircuit의 모든 레이어에 대한 얕은 뷰를 산출합니다.

레이어는 게이트가 분리된 큐비트에 작용하는 회로로, 즉 레이어의 깊이는 1입니다. 총 레이어 수는 회로 깊이 d와 같습니다. 레이어는 0에서 d-1 까지 인덱싱되며 가장 빠른 레이어가 인덱스 0에 있습니다. 레이어는 욕심 많은 알고리즘을 사용하여 구성됩니다. 반환된 각 레이어는 {“graph”: circuit graph, “partition”: list of qubit lists} 을 포함하는 딕셔너리입니다.

반환된 레이어에는 새로운(그러나 의미상 동등한) DAGOpNodes, DAGInNodes, 과 DAGOutNodes 이 포함됩니다. 이는 원래 dag의 노드와 동일하지는 않지만 DAGNode.semantic_eq ( node1, node2 )를 통해 동일하게 사용할 수 있습니다.

해야 할 일: 동일한 비트를 사용하는 게이트는 현재 구현된 대로 다른 레이어에 위치하게 됩니다. 이는 바람직한 행동이 아닐 수 있습니다.

longest_path

longest_path()

Dag에서 가장 긴 경로를 DAGOpNodes, DAGInNodes, 및 DAGOutNodes 의 목록으로 반환합니다.

make_physical

make_physical(num_qubits=None)

self 을 주어진 큐비트 수와 함께 표준 물리적 형식으로 입력합니다.

이것은 제자리에서 작동하며 DAG를 통과할 필요가 없습니다. DAG가 이미 물리적 회로를 나타내는 것으로 알려진 경우에 사용하기 위한 것으로, 표준 물리적 형식이라고 주장하기만 하면 됩니다.

이렇게 하면 가상 큐비트에 대한 정보가 모두 지워집니다 DAGCircuit의 가상 큐비트 정보를 지웁니다; 직접 사용하는 경우, 적절한 Layout. 사실상 가상 큐비트 0을 물리적 큐비트 0에 매핑하는 '사소한' 레이아웃을 적용하는 것입니다.

매개변수

숫자_큐비트 - 주어진 경우, 출력의 총 물리적 큐비트 수. 최소한 DAG의 큐비트 수만큼 커야 합니다. 지정하지 않으면 큐비트 수는 변경되지 않습니다.

multi_qubit_ops

multi_qubit_ops()

3개 이상의 큐비트 연산 목록을 가져옵니다. 스냅샷 및 장벽과 같은 지시어는 무시하세요.

multigraph_layers

multigraph_layers()

멀티그래프의 수익률 레이어.

named_nodes

named_nodes(*names)

주어진 이름을 가진 '연산' 노드 집합을 가져옵니다.

node

node(node_id)

Dag에서 노드를 가져옵니다.

매개변수

node_id (int) – 노드 식별자.

리턴

노드입니다.

리턴 유형

노드

nodes

nodes()

노드 값에 대한 이터레이터입니다.

산출량

노드 - 노드입니다.

nodes_on_wire

nodes_on_wire(wire, only_ops=False)

주어진 와이어에 영향을 미치는 노드에 대한 이터레이터입니다.

매개변수

  • wire (Bit) – 점검해야 할 전선.
  • only_ops (bool) – 운영 노드만 원하는 경우 참이고, 그렇지 않으면 모든 노드가 반환됩니다.

산출량

이터레이터 - 주어진 와이어의 연속 노드

레이즈

DAGCircuitError – 주어진 와이어가 DAG에 존재하지 않는 경우

num_blocks

num_blocks()

이 회로에 포함된 기본 블록의 개수를 반환하십시오.

num_clbits

num_clbits()

회로에서 사용한 클래식 비트의 총 개수를 반환합니다.

num_ops

num_ops()

DAG의 연산 노드 수를 가져옵니다.

num_qubits

num_qubits()

회로에서 사용한 총 큐비트 수를 반환합니다. num_qubits()는 이전의 width() 사용을 대체합니다. DAGCircuit.width ()는 이제 Circuit.width ()와의 일관성을 위해 큐비트 + 클럭비트를 반환합니다( [qiskit-terra #2564] ).

num_tensor_factors

num_tensor_factors()

회로가 몇 개의 구성 요소로 분해될 수 있는지 계산합니다.

op_nodes

op_nodes(op=None, include_directives=True)

Dag에서 "op" 노드 목록을 가져옵니다.

매개변수

  • op (Type) –qiskit.circuit.Operation 반환할 op 노드의 하위 클래스. None인 경우, 모든 연산 노드를 반환합니다.
  • include_directives (bool) – 배리어, 스냅샷 등을 포함합니다.

리턴

주어진 연산이 포함된 dag 노드 목록을 반환합니다.

리턴 유형

목록 [ DAGOpNode ]

op_predecessors

op_predecessors(node)

Dag에 있는 노드의 "op" 이전 노드의 이터레이터를 반환합니다.

op_successors

op_successors(node)

Dag에 있는 노드의 "연산" 후속 노드의 이터레이터를 반환합니다.

predecessors

predecessors(node)

노드의 이전 노드의 이터레이터를 다음과 같이 반환합니다 DAGOpNodeDAGInNodes.

properties

properties()

회로 속성 사전을 반환합니다.

quantum_causal_cone

quantum_causal_cone(qubit)

큐비트의 인과 원뿔을 반환합니다.

큐비트의 인과 콘은 다중 큐비트 게이트나 연산 등 상호작용을 통해 해당 큐비트의 출력에 영향을 줄 수 있는 큐비트의 집합입니다. 큐비트의 원인 콘을 알면 결함이 있는 회로를 디버깅할 때 문제를 일으킬 수 있는 와이어를 식별하는 데 도움이 되므로 유용할 수 있습니다.

이 방법은 인과 관계 원뿔을 구축하기 위해 DAGCircuit 에서 기존 데이터 종속성을 고려하지 않으며, 기존 비트 와이어는 무시됩니다.

매개변수

qubit (Qubit) – 인과 원뿔을 구하고자 하는 출력 큐비트.

리턴

상호작용이 영향을 미치는 큐비트 집합 qubit.

리턴 유형

Set[ 큐비트 ]

quantum_predecessors

quantum_predecessors(node)

퀀텀 에지로 연결된 노드의 이전 노드의 이터레이터를 DAGOpNodes 와 DAGInNodes 로 반환합니다.

quantum_successors

quantum_successors(node)

퀀텀 에지로 연결된 노드의 후속 노드의 이터레이터를 DAGOpNodes 와 DAGOutNodes 로 반환합니다.

remove_all_ops_named

remove_all_ops_named(opname)

지정된 이름을 가진 모든 작업 노드를 제거합니다.

remove_ancestors_of

remove_ancestors_of(node)

노드의 모든 조상 연산 노드를 제거합니다.

remove_clbits

remove_clbits(*clbits)

회로에서 클래식 비트를 제거합니다. 모든 비트는 유휴 상태여야 합니다. 지정된 비트 중 하나 이상에 대한 참조가 있는 모든 레지스터도 제거됩니다.

경고

이 방법은 비트 인덱스를 수정하기 위해 전체 DAG를 반복해야 하므로 다소 느립니다.

매개변수

clbits (List[Clbit]) – 제거해야 할 부분들.

레이즈

ClbitDAGCircuitError – 클비트가 아니거나, 회로에 속하지 않거나, 유휴 상태가 아닙니다.

remove_cregs

remove_cregs(*cregs)

기본 비트는 그대로 두고 회로에서 기존 레지스터를 제거합니다.

레이즈

  • DAGCircuitError – 크레그(creg)는 크레그-마이어-윌리엄스( ClassicalRegister, )가 아니거나, 그 범주에 속하지 않습니다
  • 회로. -

remove_descendants_of

remove_descendants_of(node)

노드의 모든 하위 작업 노드를 제거합니다.

remove_nonancestors_of

remove_nonancestors_of(node)

노드의 조상이 아닌 모든 작업 노드를 제거합니다.

remove_nondescendants_of

remove_nondescendants_of(node)

노드의 자손이 아닌 모든 작업 노드를 제거합니다.

remove_op_node

remove_op_node(node)

작업 노드 n을 제거합니다.

전임자에서 후임자에게 에지를 추가합니다.

remove_qregs

remove_qregs(*qregs)

회로에서 양자 레지스터를 제거하고 기본 비트는 그대로 둡니다.

레이즈

  • DAGCircuitError – qreg는 QuantumRegister, 가 아니거나, 해당 목록에 포함되어 있지 않습니다
  • 회로. -

remove_qubits

remove_qubits(*qubits)

회로에서 양자 비트를 제거합니다. 모든 비트는 유휴 상태여야 합니다. 지정된 비트 중 하나 이상에 대한 참조가 있는 모든 레지스터도 제거됩니다.

경고

이 방법은 비트 인덱스를 수정하기 위해 전체 DAG를 반복해야 하므로 다소 느립니다.

매개변수

qubits (List[Qubit]) – 제거해야 할 부분들.

레이즈

QubitDAGCircuitError – 큐비트가 아니거나, 회로에 포함되어 있지 않거나, 유휴 상태가 아니다.

replace_block_with_op

replace_block_with_op(node_block, op, wire_pos_map, cycle_check=True)

노드 블록을 단일 노드로 교체합니다.

이는 DAGOpNodes 블록을 단일 작업으로 통합하는 데 사용됩니다. 일반적인 예는 게이트 블록을 단일 행렬을 나타내는 단일 UnitaryGate 으로 통합하는 것입니다.

매개변수

  • node_block (List[DAGNode]) – 대체할 노드 블록을 나타내는 dag 노드 목록입니다
  • op (qiskit.circuit.Operation) – 블록을 다음으로 교체하는 작업은
  • qargswire_pos_map (Dict[Bit, int]) – 비트를 출력에서의 위치에 매핑하는 사전 또는 cargs. 이는 결합된 단일 연산 노드 내의 여러 게이트에 걸쳐 인자 순서를 재구성하기 위해 필요합니다. a가 Bit 사전(dictionary)에 없다면, args에 추가되지 않습니다. 이는 또는 target 필드에 condition 고유한 비트가 포함된 제어 흐름 연산을 다룰 때 유용할 수 있습니다.
  • cycle_check (bool) – True로 설정하면 이 메서드는 제공된 node_block 을 단일 노드로 대체하면 사이클이 발생하는지 확인하고( DAGCircuit 이 무효화됨), 사이클이 발생하면 DAGCircuitError 을 발생시킵니다. 이 검사에는 런타임 페널티가 있습니다. node_block 입력이 연속된 블록이고 단일 노드로 계약될 때 사이클이 발생하지 않는다는 것을 보장할 수 있다면 False 으로 설정하여 이 메서드의 런타임 성능을 개선할 수 있습니다.

레이즈

DAGCircuitError – 가 로 True 설정되어 있고, 지정된 블록을 대체하면 순환이 발생하거나, node_block 가 비어 있는 경우 cycle_check .

리턴

블록을 대체하는 연산 노드입니다.

리턴 유형

DAGOpNode

reverse_ops

reverse_ops()

self 회로에서 연산을 역으로 수행합니다.

리턴

반전된 다그.

리턴 유형

DAGCircuit

separable_circuits

separable_circuits(remove_idle_qubits=False, *, vars_mode=Ellipsis)

회로를 게이트가 연결되지 않은 큐비트 집합으로 분해합니다.

매개변수

remove_idle_qubits (bool) – 분리된 회로에서 유휴 큐비트를 제거할지 여부를 나타내는 플래그입니다. False 이면 각 출력 회로에는 self 과 동일한 수의 큐비트가 포함됩니다.

리턴

** self 을 세트로 분리한 결과의 회로**

연결이 끊긴 큐비트 수

리턴 유형

List [DAGCircuit ]

DAGCircuit 인스턴스에는 self 와 동일한 수의 클릿이 포함됩니다. self 의 전역 위상 정보는 이 메서드가 반환하는 하위 회로에서 유지되지 않습니다.

serial_layers

serial_layers(*, vars_mode=Ellipsis)

이 회로의 모든 게이트에 대한 레이어를 산출합니다.

직렬 레이어는 하나의 게이트가 있는 회로입니다. 레이어는 레이어()에서와 동일한 구조를 가집니다.

size

size(*, recurse=False)

작업 수를 반환합니다. 제어 흐름이 존재하는 경우 전체 제어 흐름 경로를 정적으로 알 수 없으므로 이 수치는 추정치일 수 있습니다.

매개변수

재귀 – 만약 True~라면, 제어 흐름 연산으로 재귀를 수행한다. 길이가 알려진 반복자를 사용하는 for 루프는 언롤된 형태로 계산됩니다. if-else 블록은 두 분기 모두의 결과를 합산합니다. while 루프는 루프 본문이 단 한 번만 실행되는 것으로 간주됩니다. 대부분의 경우 별 의미 없는 숫자가 아무런 오류 메시지 없이 반환되는 것을 방지하기 위해, 제어 흐름이 존재할 경우 기본값으로 False 설정되며 를 발생시킵니다 DAGCircuitError .

리턴

회로 크기

리턴 유형

int

레이즈

recurse=TrueDAGCircuitError – 와의 호출에 미지수가 ControlFlowOp 포함되어 있거나, 비재귀 호출에 제어 흐름이 포함된 경우.

structurally_equal

structurally_equal(other)

이 두 DAG는 구조적으로 동일한가요?

이 함수는 유효한 노드 인덱스, 에지 순서 등을 포함하여 그래프 구조가 서로 정확히 동일한 경우 참을 반환합니다. 이는 그래프 동등성보다 훨씬 더 엄격한 검사이며, 주로 두 개의 DAGCircuit 인스턴스가 정확히 동일한 방식으로 생성 및 조작되었는지 테스트할 때 유용합니다. 예를 들어, 이 방법을 사용하여 DAG의 일련의 조작이 결정론적인지 테스트할 수 있습니다.

이 방법은 다음과 같은 메타데이터 추적을 고려하지 않습니다 metadata 또는 name와 같은 메타데이터 추적을 고려하지 않지만, 회로의 의미를 변경하지 않는 내부 표현의 많은 하위 수준 구현 세부 사항을 고려합니다.

이 방법은 일반적으로 그래프 동등성 검사보다 훨씬 빠르지만 더 많은 상황에서 False 을 반환합니다. 그래프 동등성 검사가 False 을 반환할 때 이 메서드는 절대 True 을 반환해서는 안 됩니다.

참고

현재 제어 흐름의 내부 표현의 기술적 한계로 인해 제어 흐름을 처리하지 않으며, 제어 흐름 연산이 개별적으로 동일하더라도 존재하면 거짓을 반환합니다.

관련 참조

** == 운영자**

QuantumCircuitDAGCircuit 자신과 다른 DAGCircuit 인스턴스 간에 구현합니다 __eq__() (이 메서드는 의 동일성 검사 기능도 담당합니다). 이는 의미론적 데이터 흐름 동일성 검사를 구현한 것으로, 연산이 정의된 순서에 덜 민감합니다. 이는 일반적으로 사용자가 평등과 관련하여 중요하게 여기는 부분입니다.

substitute_node

substitute_node(node, op, inplace=False, propagate_condition=None)

DAGOpNode 을 한 번의 작업으로 바꿉니다. 교체할 노드에서 새 작업에 대한 QARG, 카고 및 조건을 유추합니다. 새 작업이 교체된 작업의 모양과 일치하는지 확인합니다.

매개변수

  • node (DAGOpNode) – 교체할 노드
  • op (qiskit.circuit.Operation) – DAG에 추가할 qiskit.circuit.Operation 인스턴스는 DAG에 추가할
  • inplace (bool) – 선택 사항, 기본값은 거짓입니다. True이면 기존 DAG 노드가 연산자를 포함하도록 수정됩니다. 그렇지 않으면 새 DAG 노드가 사용됩니다.
  • propagate_condition (bool) – 제어 흐름을 처리하는 동작을 제어하던 레거시 옵션을 비활성화했습니다. 더 이상 효과가 없으므로 이전 버전과의 호환성을 위해 그대로 둡니다. 키스킷에서 제거됩니다 3.0.

리턴

추가된 작업이 포함된 새 노드입니다.

리턴 유형

DAGOpNode

레이즈

  • DAGCircuitError – 교체 작업이 다음 사항과 호환되지 않는 경우
  • 대상 노드위치 ** –

substitute_node_with_dag

substitute_node_with_dag(node, input_dag, wires=None, propagate_condition=None)

노드 하나를 dag로 바꿉니다.

매개변수

  • node (DAGOpNode) – 노드를 대체할
  • input_dag (DAGCircuit) – 노드를 대체할 회로
  • wires (list[Bit] | Dict[Bit, Bit]) – 입력 회로에 (qu)비트에 대한 명령을 내립니다. input_dag리스트인 경우, 비트들은 해당 리스트 내의 요소들을 가리키며, 순서는 먼저 qargs, 다음으로 cargs, 그다음으로 conditions 순으로 노드 와이어와 매칭됩니다. 사전이라면, 내의 input_dag 비트들을 가 node 연산 대상으로 삼는 비트들에 매핑하는 것이다.
  • propagate_condition (bool) – 제어 흐름을 처리하는 동작을 제어하던 레거시 옵션을 비활성화했습니다. 더 이상 효과가 없으므로 이전 버전과의 호환성을 위해 그대로 둡니다. 키스킷에서 제거됩니다 3.0.

리턴

는 입력_dag의 노드 ID를 자체의 새 노드 화신에 매핑합니다.

리턴 유형

dict

레이즈

DAGCircuitError – 예상치 못한 전임자나 후임자를 만나게 될 경우

successors

successors(node)

노드의 후계자 이터레이터를 다음과 같이 반환합니다 DAGOpNodeDAGOutNodes.

swap_nodes

swap_nodes(node1, node2)

예를 들어 정류로 인해 연결된 노드를 교체합니다.

매개변수

  • node1 (OpNode) – 이전 노드
  • node2 (OpNode) – 후속 노드

레이즈

DAGCircuitError – 두 노드 중 하나라도 ‘ OpNode ’가 아니거나, 노드들이 연결되어 있지 않은 경우

to_circuit

to_circuit(*, copy_operations=True)

QuantumCircuit이 DAG를.로 변환하세요.

dag_to_circuit()이것은.을 감싸는 간단한 래퍼입니다.

매개변수

copy_operations – 개별 명령어를 깊이 복사할지 여부. 로 설정하면 연산 False비용은 낮아지지만, 회로 내 명령어에 대한 변이가 원래 회로에 영향을 미칩니다.

리턴

a QuantumCircuit 는 이 동일한 DAG를 나타냅니다.

topological_nodes

topological_nodes(key=None, reverse=False)

토폴로지 순서대로 노드를 산출합니다.

매개변수

  • key (Callable) – DAGNode 객체를 받아 문자열 정렬 키를 반환하는 콜러블입니다. 지정하지 않으면 노드의 비트 qargs와 cargs가 정렬에 사용됩니다.
  • reverse (bool) – 참이면, 역 토폴로지 순서로 노드를 반환한다.

리턴

노드를 토폴로지 순서대로

리턴 유형

생성기 (DAGOpNode, DAGInNode 또는 DAGOutNode )

topological_op_nodes

topological_op_nodes(key=None, reverse=False)

노드를 토폴로지 순서대로 산출합니다.

특정 키를 전달하여 상위 순서로 동점을 끊을 수 있습니다

매개변수

  • key (Callable) – DAGNode 객체를 받아 문자열 정렬 키를 반환하는 콜러블입니다. 지정하지 않으면 노드의 qargs 및 cargs가 정렬에 사용됩니다.
  • reverse (bool) – 참인 경우, 역 토폴로지 순서로 연산 노드를 반환합니다.

리턴

연산 노드를 토폴로지 순서로

리턴 유형

생성기( DAGOpNode )

two_qubit_ops

two_qubit_ops()

2쿼비트 연산 목록을 가져옵니다. 스냅샷 및 장벽과 같은 지시어는 무시하세요.

width

width()

회로에서 사용한 총 큐비트 + 클릿 수를 반환합니다. 이 함수는 이전에는 렌( self._wires ) - self.num_clbits () 계산을 통해 큐비트 수를 반환했지만, 이슈 #2564에서 이전 의미인 DAGCircuit.width ()을 대체하는 새로운 함수 DAGCircuit.num_qubits 를 사용하여 큐비트 수 + 클릿을 반환하도록 변경되었습니다.

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