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


9

Это продолжение квантового алгоритма для линейных систем уравнений (HHL09): Шаг 2 - Что такое|Ψ0⟩?


В статье: Квантовый алгоритм для линейных систем уравнений (Harrow, Hassidim & Lloyd, 2009) , детали фактической реализации алгоритма не приводятся. Как именно штаты|Ψ0⟩ а также |b⟩созданы, это своего рода « черный ящик » (см. стр. 2-3).

|Ψ0⟩=2T∑τ=0T−1sin⁡π(τ+12)T|τ⟩

а также

|b⟩=∑1Nbi|i⟩

где |Ψ0⟩ это начальное состояние регистра часов и |b⟩ является начальным состоянием входного регистра.

(Скажи) Я хочу выполнить их алгоритм на IBM16квантовый компьютер. И я хочу решить определенное уравнениеAx=b где A это 4×4 Эрмитова матрица с реальными записями и b это 4×1 вектор столбца с реальными записями.

Давайте возьмем пример:

A=[1234215635174671]

а также

b=[1234]

Учитывая размеры A а также bнам нужно ⌈log2⁡4⌉=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 Здесь «ошибка» относится к ошибке между идеальным состоянием и приближением при работе с совершенным квантовым компьютером (т.е. без декогеренции, без ошибки логического элемента).


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.
— Брэм
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.