Skip to main content
IBM Quantum Platform

WeightedAdder

class qiskit.circuit.library.WeightedAdder(num_state_qubits=None, weights=None, name='adder')

GitHub

베이스: BlueprintCircuit

큐비트 레지스터의 가중치 합계를 계산하는 회로입니다.

nn 큐비트 기저 상태 q0,,qn1{0,1}q_0, \ldots, q_{n-1} \in \{0, 1\} 와 음수가 아닌 정수 가중치 λ0,,λn1\lambda_0, \ldots, \lambda_{n-1} 가 주어지면 이 회로는 다음과 같은 연산을 수행합니다

q0qn10sq0qn1j=0n1λjqjs|q_0 \ldots q_{n-1}\rangle |0\rangle_s \mapsto |q_0 \ldots q_{n-1}\rangle |\sum_{j=0}^{n-1} \lambda_j q_j\rangle_s

여기서 ss 은 필요한 합계 큐비트 수입니다. 이는 다음과 같이 계산할 수 있습니다

s=1+log2(j=0n1λj)s = 1 + \left\lfloor \log_2\left( \sum_{j=0}^{n-1} \lambda_j \right) \right\rfloor

또는 가중치의 합이 0인 경우 s=1s = 1 (로그의 표현식이 유효하지 않음)를 입력합니다.

회로 다이어그램에서 큐비트의 경우, 첫 번째 가중치는 가장 위쪽에 있는 큐비트에 적용됩니다. 4개의 큐비트 상태를 합계 레지스터에 추가하는 예제의 경우 회로는 다음과 같이 개략적으로 그릴 수 있습니다

           ┌────────┐
  state_0: ┤0       ├ | state_0 * weights[0]
           │        │ |
  state_1: ┤1       ├ | + state_1 * weights[1]
           │        │ |
  state_2: ┤2       ├ | + state_2 * weights[2]
           │        │ |
  state_3: ┤3       ├ | + state_3 * weights[3]
           │        │
    sum_0: ┤4       ├ |
           │  Adder │ |
    sum_1: ┤5       ├ | = sum_0 * 2^0 + sum_1 * 2^1 + sum_2 * 2^2
           │        │ |
    sum_2: ┤6       ├ |
           │        │
  carry_0: ┤7       ├
           │        │
  carry_1: ┤8       ├
           │        │
control_0: ┤9       ├
           └────────┘

매개변수

  • num_state_qubits (int | None) – 상태 큐비트의 개수.
  • weights (list[int] | None) – 각 상태 큐비트마다 하나씩인 가중치 목록. 지정된 값이 없으면 모든 큐비트에 대해 기본값은 1로 설정됩니다.
  • name (str) – 서킷의 이름입니다.

속성

num_carry_qubits

합계를 계산하는 데 필요한 캐리 큐비트 수입니다.

이는 반드시 안실라 큐비트 수와 같지는 않으며, num_ancilla_qubits 를 사용하여 조회할 수 있습니다.

리턴

합계를 계산하는 데 필요한 캐리 큐비트 수입니다.

num_control_qubits

필요한 추가 제어 큐비트 수입니다.

총 안실라 큐비트 수는 num_ancilla_qubits 메서드를 호출하여 얻을 수 있습니다.

리턴

필요한 추가 제어 큐비트 수(0 또는 1)입니다.

num_state_qubits

합산할 큐비트 수입니다.

리턴

상태 큐비트 수입니다.

num_sum_qubits

회로의 합계 큐비트 수입니다.

리턴

큐비트의 가중치 합계를 나타내는 데 필요한 큐비트 수입니다.

weights

큐비트 상태에 대한 가중치입니다.

리턴

큐비트 상태의 가중치입니다.

name

유형: str

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

예제

from qiskit import QuantumCircuit

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