Квантовий алгоритм для лінійних систем рівнянь (HHL09): Крок 2 - Підготовка початкових станів


9

Це продовження квантового алгоритму для лінійних систем рівнянь (HHL09): Крок 2 - Що таке|Ψ0?


У статті: Квантовий алгоритм для лінійних систем рівнянь (Harrow, Hassidim & Lloyd, 2009) деталі фактичної реалізації алгоритму не наводяться. Як саме держави|Ψ0 і |bстворені, є свого роду " чорною скринькою " (див. сторінки 2-3).

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

і

|b=1Nbi|i

де |Ψ0 - початковий стан тактового регістра та |b - початковий стан реєстру введення.

(Скажіть) Я хочу провести їх алгоритм на IBM16-квітовий квантовий комп'ютер. І я хочу розв’язати певне рівнянняAx=b де A є 4×4 Ермітова матриця з реальними записами та b є 4×1 вектор стовпців з реальними записами.

Візьмемо приклад:

A=[1234215635174671]

і

b=[1234]

З огляду на розміри A і b, нам потрібно log24=2 кубіти для вхідного регістра та іншого 6 кубіти для реєстрації годин, припускаючи, що ми хочемо представити власні значення 90% точність і до 3-бітовая точність для власних (це вже обговорювалося тут раніше). Так тотально2+6+1=9 Для цього знадобляться кубіти (додатково 1 кубіт - це ацилла).

Запитання:

  1. Використовуючи цю інформацію, чи можливо створити початкові стани|Ψ0 і |b на IBM 16 версія кубіта?

  2. Якщо ти думаєш 4×4занадто великий, щоб його можна було реалізувати на квантових комп'ютерах IBM, щоб ви навіть могли показати приклад початкової підготовки до стану2×2 Ермітова матриця A (або просто дайте посилання на такий приклад).

Я просто хочу отримати загальне уявлення про те, чи можна це зробити (тобто чи можливо) на квантовому комп'ютері IBM 16-кубітним, і для того, які ворота знадобляться. Якщо не 16-кубітний квантовий комп'ютер IBM, чи може симулятор QISKit, який використовується для відтворення початкового стану підготовки|Ψ0 і |bв алгоритмі HHL? Чи є якась інша краща альтернатива для вирішення цього питання?


1
Наскільки я знаю, IBM не може займатися HHL, оскільки це передбачає робити речі в суперпозиції різних часів, але я не здивуюсь, якщо я помиляюся. @James Woottoon може краще знати відповідь.
користувач1271772

@ user1271772 Я теж думав, але я трохи скептичний, тому що хтось сказав мені в чаті, що вони імітували HHL для4×4слідуючи цьому , на IBM.
Санчаян Дутта

Ну, можливо, рис. 4 з паперу Юдун Као (тієї, яку ви зв'язали) - це все, що вам потрібно.
користувач1271772

@ user1271772 Так, але, на жаль, це працювало б лише для цієї конкретної матриці. Я шукаю загальну техніку, для якої, мабуть, я повинен прочитати цей документ більш ретельно.
Санчаян Дутта

Оскільки Джон Ветроус виклав це в одному зі своїх коментарів до питання, де хтось запитував певну схему, "ви просите людей робити копітку, але концептуально нецікаву роботу". Юдун був студентом інженерних наук, коли робив ці схеми. Він не мав більше навчань, ніж ви (адже виходячи з вашого швидкого прогресу, ви, мабуть, знаєте більше про квантові обчислення, ніж він робив під час написання цього документу). Якщо він міг би скласти цю схему, ви повинні мати змогу скласти відповідну схему для будь-якого прикладу HHL, що йде перед вами.
користувач1271772

Відповіді:


3

Неможливо створити початкові стани |Ψ0 і |bна версії IBM 16 кубітів. З іншого боку, можна наблизити їх довільно низькою помилкою 1, оскільки ворота, реалізовані мікросхемами IBM, пропонують таку можливість.

Тут ви запитуєте про 2 різних квантових станах:

  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згідно з квантовим алгоритмом розв’язування лінійних систем рівнянь (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

Алгоритм HHL з матрицею 4 x 4 може бути великим для комп'ютера IBM. Я спробував меншу іграшкову версію алгоритму за посиланням arXiv 1302.1210 Розв’язування систем лінійних рівнянь

Я трохи пояснив цю схему тут на stackexchange: /cs/76525/could-a-quantum-computer-perform-linear-algebra-faster-than-a-classical-computer/ 77036 # 77036

На жаль, це лише 1 кубітний вхід з матрицею A = 2 x 2, у відповіді наведено посилання на ланцюг IBM.


Проблема з реалізацією HHL 4x4 полягає не в кількості кубітів (потрібно 7 кубітів), а в квантових показниках помилок і часі декогерентності. Впровадження системи 4x4 з використанням QISKit є тут . Реалізація слідує за arxiv.org/abs/1110.2232v2 .
Неліме

Чудова реалізація 4 х 4 HHL.
Брем
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.