선형 방정식 시스템 (HHL09)에 대한 양자 알고리즘 : 2 단계-초기 상태 준비 및


9

이것은 선형 방정식 시스템 (HHL09)에 대한 양자 알고리즘 의 연속입니다 . 2 단계- 은 무엇입니까 ?|Ψ0


논문 : 선형 방정식 시스템에 대한 양자 알고리즘 (Harrow, Hassidim & Lloyd, 2009) 에서 실제 알고리즘 구현에 대한 세부 사항은 제공되지 않습니다. 어떻게 정확히 상태 및 만든, 일종의는 "중 하나입니다 블랙 박스 "(페이지 2-3 참조).|Ψ0|b

|Ψ0=2Tτ=0T1sinπ(τ+12)T|τ

|b=1Nbi|i

여기서 |Ψ0 은 클럭 레지스터의 초기 상태이고 |b 은 입력 레지스터의 초기 상태입니다.

(Say) IBM qubit quantum 컴퓨터 에서 알고리즘을 수행하고 싶습니다 . 16그리고 특정 방정식 를 풀고 싶습니다. 여기서 는 실수 입력 값을 가진 Hermitian 행렬이고 는 실수 입력 값을 가진 열 벡터입니다.Ax=bA4×4b4×1

예를 들어 보자.

A=[1234215635174671]

b=[1234]

의 차원을 감안 및 , 우리는해야한다 입력 레지스터 큐빗 다른 클럭 용 큐빗 우리 고유 값이 원하는 가정 레지스터 고유 값에 대해 정확도 및 최대 비트 정밀도로 표현됩니다 (이것은 앞에서 논의 했습니다 ). 따라서이 목적을 위해 총 큐 비트가 필요합니다 (추가 큐비 트는 ancilla입니다).Ablog24=2690%32+6+1=91

질문 :

  1. 이 정보를 사용 하여 IBM qubit 버전 에서 초기 상태 및 을 작성할 있습니까?|Ψ0|b16

  2. 가 IBM quantum 컴퓨터에서 구현하기에는 너무 크다고 생각한다면 Hermitian matrix 대한 초기 상태 준비 의 를 보여줄 수도 있습니다 . 예).4×42×2A

IBM 16 큐 비트 양자 컴퓨터에서 이것이 가능할 수 있는지 (가능한지), 그리고 게이트가 필요한지에 대한 일반적인 아이디어 를 얻고 싶습니다 . IBM 16 큐 비트 양자 컴퓨터가 아닌 경우, QISKit 시뮬레이터 는 HHL 알고리즘에서 및 의 초기 상태 준비를 재 작성하는 데 사용할 수 있습니까? 이것에 대해 더 좋은 대안이 있습니까?|Ψ0|b


1
내가 아는 한, IBM은 HHL이 다른 시간의 중첩에서 일을하기 때문에 HHL을 수행 할 수 없지만 잘못해도 놀라지 않을 것입니다. @James Woottoon이 답을 더 잘 알고있을 것입니다.
user1271772

@ user1271772 나도 그렇게 생각했지만 누군가가 채팅 에서 HHL을 시뮬레이션 했다고 말했기 때문에 약간 회의적 입니다.4×4다음 IBM에.
Sanchayan Dutta

아마도 Yudong Cao의 논문 (연결 한 논문)의 그림 4 만 있으면됩니다.
user1271772

@ user1271772 네, 그러나 불행히도, 그것은 특정 매트릭스 에서만 작동합니다 . 나는 일반적인 기술을 찾고 있는데, 아마도 그 논문을 더 철저히 읽어야 할 것이다.
Sanchayan Dutta 2016

John Watrous가 누군가가 특정 회로를 요구하고있는 질문에 대해 "당신은 사람들이 지루하면서도 개념적으로 흥미롭지 않은 작업을하도록 요구하고 있습니다." Yudong은 이러한 회로를 만들 때 학부 공학 학생이었습니다. 그는 당신보다 더 많은 훈련을받지 못했습니다 (사실 빠른 진행에 따라, 당신은 아마도 그 논문을 쓸 때보 다 양자 컴퓨팅에 대해 더 많이 알고있을 것입니다). 그가이 회로를 만들 수 있다면, 앞에 오는 HHL 예제에 해당하는 회로를 만들 수 있어야합니다.
user1271772

답변:


3

초기 상태를 만들 수 없습니다 |Ψ0|bIBM 16 qubits 버전에서. 반면 에, IBM 칩에 의해 구현 된 게이트가 이러한 가능성을 제공함에 따라 임의로 낮은 오류 1 로이 를 근사화 할 수 있습니다.

여기 당신은 두 가지 양자 상태를 요구합니다 :

  1. |b전혀 제한되지 않습니다. 상태|b 의 벡터로 표현된다 N (벡터가 단일 규범을 갖는 한) 모든 것이 될 수있는 복소수.
  2. |Ψ0 특별한 경우로 볼 수 있습니다 |b여기서 계수 bi 더 제한적입니다.

이 분석을 통해 생성에 사용할 수있는 모든 방법 |b 또한 만들 수 있습니다 |Ψ0. 반면에|Ψ0 더 제한적이며 더 효율적인 알고리즘이 생성되기를 바랍니다. |Ψ0.

에 유용한 |b|Ψ0: 양자 논리 회로의 합성에 기초하여 (Shende, Bullock & Markov, 2006) QISKit Python SDK는 임의의 양자 상태를 초기화하는 일반적인 방법을 구현합니다.

에 유용한 |Ψ0: 효율적으로 통합 가능한 확률 분포에 해당하는 중첩을 생성하면 (Grover & Rudolph, 2002) 진폭이 일부 제약 조건에 대한 확률 분포를 나타내는 상태를 초기화하는 알고리즘을 신속하게 제시합니다. 이러한 제약은|Ψ0선형 방정식 시스템을 풀기위한 Quantum 알고리즘 에 따르면 (Harrow, Hassidim & Lloyd, 2009) , 마지막 페이지 5 행.

QISKit에서의 구현을 위해 주어진 양자 상태를 초기화하는 샘플이 있습니다 :

import qiskit

statevector_backend = qiskit.get_backend('local_statevector_simulator')

###############################################################
# Make a quantum program for state initialization.
###############################################################
qubit_number = 5
Q_SPECS = {
    "name": "StatePreparation",
    "circuits": [
        {
            "name": "initializerCirc",
            "quantum_registers": [{
                "name": "qr",
                "size": qubit_number
            }],
            "classical_registers": [{
                "name": "cr",
                "size": qubit_number
            }]},
    ],
}
Q_program = qiskit.QuantumProgram(specs=Q_SPECS)

## State preparation
import numpy as np
from qiskit.extensions.quantum_initializer import _initializer

def psi_0_coefficients(qubit_number: int):
    T = 2**qubit_number
    tau = np.arange(T)
    return np.sqrt(2 / T) * np.sin(np.pi * (tau + 1/2) / T)

def get_coeffs(qubit_number: int):
    # Can be changed to anything, the initialize function will take
    # care of the initialisation.
    return np.ones((2**qubit_number,)) / np.sqrt(2**qubit_number)
    #return psi_0_coefficients(qubit_number)

circuit_prep = Q_program.get_circuit("initializerCirc")
qr = Q_program.get_quantum_register("qr")
cr = Q_program.get_classical_register('cr')
coeffs = get_coeffs(qubit_number)
_initializer.initialize(circuit_prep, coeffs, [qr[i] for i in range(len(qr))])

res = qiskit.execute(circuit_prep, statevector_backend).result()
statevector = res.get_statevector("initializerCirc")
print(statevector)

(1) 여기서 "오류"는 완벽한 양자 컴퓨터 다루는 이상적인 상태와 근사값과의 오차 (즉 결 어긋남 없음 없음 게이트 오차)를 지칭한다.


0

4 x 4 매트릭스 A를 사용하는 HHL 알고리즘은 IBM 컴퓨터에 비해 클 수 있습니다. I는 arXiv 1302.1210 링크에 따른 알고리즘의 작은 장난감 버전을 시도 선형 방정식을 해결 시스템

내가 stackexchange 여기이 회로에 대해 조금 설명 : /cs/76525/could-a-quantum-computer-perform-linear-algebra-faster-than-a-classical-computer/ 77036 # 77036

불행히도 A = 2 x 2 매트릭스를 가진 1 큐 비트 입력일뿐입니다. 대답에 IBM 회로에 대한 링크가 제공됩니다.


4x4 HHL 구현의 문제점은 큐 비트 수 (7 큐 비트 필요)가 아니라 양자 게이트 오류율과 디코 히 런스 시간입니다. QISKit을 사용한 4x4 시스템 구현은 여기에서 제공 됩니다 . 구현은 arxiv.org/abs/1110.2232v2를 따릅니다 .
Nelimee

4 x 4 HHL의 훌륭한 구현.
Bram
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.