Квантовый алгоритм для линейных систем уравнений (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, потому что это предполагает выполнение действий в суперпозиции разных времен, но я не удивлюсь, если я ошибаюсь. @ Джеймс Woottoon может знать ответ лучше.
user1271772
@ user1271772 Я тоже так думал, но я немного скептически, потому что кто-то сказал мне в чате, что они симулировали HHL для4×4после этого на IBM.
Санчайан Датта
Что ж, возможно, вам понадобится рис. 4 из статьи Юдон Цао (которую вы связали).
user1271772
@ user1271772 Да, но, к сожалению, это будет работать только для этой конкретной матрицы. Я ищу общую технику, для которой я, вероятно, должен прочитать эту статью более тщательно.
Санчайан Датта
Как сказал Джон Уотроус в одном из своих комментариев на вопрос, где кто-то спрашивал об определенной схеме, «вы просите людей выполнять утомительную, но концептуально не интересную работу». Юдонг был студентом инженерного факультета, когда делал эти схемы. У него не было больше обучения, чем у вас (на самом деле, благодаря вашему быстрому прогрессу, вы, вероятно, знаете больше о квантовых вычислениях, чем он знал во время написания этой статьи). Если бы он мог сделать эту схему, вы сможете создать соответствующую схему для любого примера HHL, который появится перед вами.
user1271772

Ответы:

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) , в SDK QISKit Python реализован универсальный метод для инициализации произвольного квантового состояния.

Полезно для |Ψ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 Здесь «ошибка» относится к ошибке между идеальным состоянием и приближением при работе с совершенным квантовым компьютером (т.е. без декогеренции, без ошибки логического элемента).

Nelimee
источник
0

Алгоритм HHL с матрицей A 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.

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