Skip to main content
IBM Quantum Platform

VBERippleCarryAdder

class qiskit.circuit.library.VBERippleCarryAdder(num_state_qubits, kind='full', name='VBERippleCarryAdder')

GitHub

베이스: Adder

VBE 리플 캐리 가산기 [1].

이 회로는 동일한 크기의 양자 레지스터 두 개를 제자리에서 더합니다. 예를 들어, 2쿼비트 크기의 레지스터 2개에서 전체 덧셈을 수행하는(즉, 캐리인 비트 포함) 고전적인 가산기 회로는 다음과 같습니다:

          ┌────────┐                       ┌───────────┐┌──────┐
   cin_0: ┤0       ├───────────────────────┤0          ├┤0     ├
          │        │                       │           ││      │
     a_0: ┤1       ├───────────────────────┤1          ├┤1     ├
          │        │┌────────┐     ┌──────┐│           ││  Sum │
     a_1: ┤        ├┤1       ├──■──┤1     ├┤           ├┤      ├
          │        ││        │  │  │      ││           ││      │
     b_0: ┤2 Carry ├┤        ├──┼──┤      ├┤2 Carry_dg ├┤2     ├
          │        ││        │┌─┴─┐│      ││           │└──────┘
     b_1: ┤        ├┤2 Carry ├┤ X ├┤2 Sum ├┤           ├────────
          │        ││        │└───┘│      ││           │
  cout_0: ┤        ├┤3       ├─────┤      ├┤           ├────────
          │        ││        │     │      ││           │
helper_0: ┤3       ├┤0       ├─────┤0     ├┤3          ├────────
          └────────┘└────────┘     └──────┘└───────────┘

여기서 캐리(Carry) 게이트와 썸(Sum) 게이트는 [1절] 에서 소개된 게이트에 해당합니다. Carry_dg는 Carry 게이트의 역게이트에 해당합니다. 이 구현 방식에서는 입력 레지스터의 큐비트가 첫 번째 입력 레지스터의 모든 큐비트가 먼저 오고, 그 다음에 두 번째 입력 레지스터의 모든 큐비트가 오는 순서로 배열된다는 점에 유의하십시오. 이는 [1] 번의 그림 2와 순서가 다르기 때문에 회로도가 다르게 그려집니다.

관련 참조

다음 일반 게이트 객체는 이 회로 클래스와 같이 추가를 수행하지만 컴파일러가 컨텍스트에 따라 최적의 분해를 선택할 수 있도록 합니다. 구체적인 구현은 HLSConfig를 통해 설정할 수 있습니다(예: 이 회로는 Adder=["ripple_v95"] 에서 선택할 수 있습니다).

ModularAdderGate: 일반 인플레이스 가산기, 모듈로 2n2^n. 이

kind="fixed" 와 기능적으로 동일합니다.

AdderGate: 일반적인 인플레이스 가산기입니다. 이것 역시

kind="half" 와 기능적으로 동일합니다.

FullAdderGate: 캐리 인 비트가 있는 일반 인플레이스 가산기입니다. 이것 역시

kind="full" 와 기능적으로 동일합니다.

참조 자료:

[1] 베드랄 외., 초등 산술 연산을 위한 양자 네트워크, 1995. arXiv:quant-ph/9511018

매개변수

  • num_state_qubits (int) – 레지스터의 크기입니다.
  • kind (str) – 가산기의 종류는 전체 가산기의 경우 'full' , 절반 가산기의 경우 'half' , 고정 크기 가산기의 경우 'fixed' 으로 지정할 수 있습니다. 전체 가산기는 반입과 반출을 모두 포함하며, 절반 가산기는 반출만 포함하며, 고정 크기 가산기는 반입과 반출을 모두 포함하지 않습니다.
  • name (str) – 서킷의 이름입니다.

레이즈

ValueError - num_state_qubits 이 1보다 작으면


속성

name

유형: str

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

예제

from qiskit import QuantumCircuit

qc = QuantumCircuit(2, 2, name="my_circuit")
print(qc.name)
my_circuit
이 페이지가 도움이 되었습니까?
GitHub에서 버그, 오타를 보고하거나 컨텐츠를 요청하십시오.