Doğrusal denklem sistemleri için kuantum algoritması (HHL09): Adım 2 - Başlangıç ​​durumlarının hazırlanması


9

Bu doğrusal denklem sistemleri (HHL09) için Kuantum algoritmasının devamıdır : Adım 2 - Nedir|Ψ0?


Makalede: Doğrusal denklem sistemleri için kuantum algoritması (Harrow, Hassidim ve Lloyd, 2009) , algoritmanın gerçek uygulamasının ayrıntıları verilmemiştir. Devletler tam olarak nasıl|Ψ0 ve |boluşturulur, bir çeşit " kara kutu " dır (bakınız sayfa 2-3).

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

ve

|b=1Nbi|i

nerede |Ψ0 saat kaydının başlangıç ​​durumudur ve |b Giriş kaydının başlangıç ​​durumudur.

(Say) algoritmalarını IBM üzerinde gerçekleştirmek istiyorum16- kuantum bilgisayar. Ve belirli bir denklemi çözmek istiyorumAx=b nerede A bir 4×4 Hermitian matrisi ile gerçek girişler ve b bir 4×1 sütun vektör gerçek girişleri ile.

Bir örnek verelim:

A=[1234215635174671]

ve

b=[1234]

Verilen boyutları A ve b, ihtiyacımız var log24=2 giriş yazmacı ve diğeri için kübitler 6 Özdeğerlerin temsil edilmesini istediğimizi varsayarak saat yazmacı için kübitler 90% doğruluk ve 3özdeğerler için bit hassasiyeti (bu daha önce burada tartışılmıştır ). Toplam2+6+1=9 bu amaç için kübitler gerekli olacaktır (ekstra 1 kübit ancilladır).

Sorular:

  1. Bu bilgileri kullanarak , başlangıç ​​durumlarını oluşturmak mümkün müdür?|Ψ0 ve |b IBM'de 16 qubit sürümü?

  2. Eğer düşünürsen 4×4IBM kuantum bilgisayarlarda uygulanacak çok büyük olduğu hatta bir gösterebilirim örnek a için ilk devlet hazırlık2×2 Hermityen matrisi A (veya böyle bir örneğe bir referans veriniz).

IBM 16-qubit kuantum bilgisayarında bunun yapıp yapamayacağı (yani mümkün olup olmadığı) ve bunun için kapıların gerekli olacağı hakkında genel bir fikir edinmek istiyorum . IBM 16-qubit kuantum bilgisayarı değilse, QISKit simülatörü, aşağıdakilerin ilk durum hazırlığını yeniden oluşturmak için kullanılabilir mi?|Ψ0 ve |bHHL algoritmasında? Bununla ilgili daha iyi bir alternatif var mı?


1
Bildiğim kadarıyla IBM HHL yapamaz çünkü farklı zamanların üst üste binmesinde bir şeyler yapmayı içerir, ancak yanılıyorsam şaşırmam. @ James Woottoon cevabı daha iyi bilebilir.
user1271772

@ user1271772 Ben de öyle düşündüm, ama biraz şüpheliyim çünkü biri bana sohbet ederken HHL'yi simüle ettiklerini söyledi4×4Aşağıdaki bu IBM üzerinde.
Sanchayan Dutta

Belki de Yudong Cao'nun kağıdına (bağladığınız) Şekil 4 o zaman ihtiyacınız olan tek şey.
user1271772

@ user1271772 Evet, ancak maalesef bu yalnızca söz konusu matris için işe yarar . Genel bir teknik arıyorum, bunun için muhtemelen bu makaleyi daha ayrıntılı olarak okumalıyım.
Sanchayan Dutta

John Watrous, birisinin belirli bir devre için sorduğu bir soruya yaptığı yorumlardan birinde belirttiği gibi, "insanlardan sıkıcı ama kavramsal olarak ilginç olmayan işler yapmasını istiyorsun". Yudong bu devreleri yaparken lisans mühendisliği öğrencisiydi. Senden daha fazla eğitimi yoktu (aslında hızlı ilerlemenize dayanarak, muhtemelen kuantum hesaplama hakkında o yazıyı yazarken olduğundan daha fazla şey biliyorsunuzdur). Bu devreyi yapabiliyorsa, önünüzde gelen herhangi bir HHL örneği için ilgili devreyi yapabilmelisiniz.
user1271772

Yanıtlar:


3

İlk durumları oluşturmak mümkün değildir |Ψ0 ve |bIBM 16 qubits sürümünde. Öte yandan, IBM yongaları tarafından uygulanan kapılar bu olasılığı sunduğundan, keyfi olarak düşük bir hata 1 ile yaklaşık olarak tahmin etmek mümkündür .

Burada 2 farklı kuantum durumu istersiniz:

  1. |bhiç kısıtlanmamıştır. Eyalet|b bir vektör ile temsil edilir N herhangi bir şey olabilen karmaşık sayılar (vektör üniter norm olduğu sürece).
  2. |Ψ0 özel bir durum olarak görülebilir |b, katsayılar nerede bi daha kısıtlı.

Bu analizle, oluşturmak için kullanılabilecek herhangi bir yöntem |b oluşturmak için de kullanılabilir |Ψ0. Öte yandan,|Ψ0 daha kısıtlıysa, üretmek için daha verimli algoritmalar olduğunu umabiliriz |Ψ0.

İçin yararlı |b ve |Ψ0: Kuantum Mantık Devrelerinin Sentezine (Shende, Bullock ve Markov, 2006) dayanarak, QISKit Python SDK, keyfi bir kuantum durumunu başlatmak için genel bir yöntem uygular.

İçin yararlı |Ψ0: Etkili bir şekilde bütünleştirilebilir olasılık dağılımlarına karşılık gelen üst üste diziler oluşturmak (Grover ve Rudolph, 2002) , genlikleri bazı kısıtlamalara saygı gösteren bir olasılık dağılımını temsil eden bir durumu başlatmak için hızlı bir algoritma sunar. Bu kısıtlamalara|Ψ0doğrusal denklem sistemlerinin çözümü için Kuantum algoritmasına göre (Harrow, Hassidim ve Lloyd, 2009) , son sayfa 5.

QISKit üzerinde uygulama için, belirli bir kuantum durumunu başlatmak için bir örnek:

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 Burada "hata", mükemmel bir kuantum bilgisayarı ile uğraşırken ideal durum ile yaklaşık değer arasındaki hatayı ifade eder (yani, özürlülük yok, geçit hatası yok).


0

4 x 4 A matrisine sahip HHL algoritması, IBM bilgisayarı için büyük olabilir. ArXiv 1302.1210 link'e göre algoritmanın daha küçük bir oyuncak versiyonunu denedim Doğrusal denklem sistemlerinin çözümü

Stackexchange'teki bu devre hakkında biraz açıkladım: /cs/76525/could-a-quantum-computer-perform-linear-algebra-faster-than-a-classical-computer/ 77036 # 77036

Ne yazık ki, A = 2 x 2 matrisi olan sadece 1 qubit bir giriştir, cevapta IBM devresine bir bağlantı verilir.


4x4 HHL uygulaması ile ilgili problem, kubit sayısı (7 kubit gereklidir) değil, kuantum kapıları hata oranları ve kod çözme süreleridir. QISKit kullanan bir 4x4 sisteminin uygulanması burada mevcuttur . Uygulama arxiv.org/abs/1110.2232v2'yi takip ediyor .
Nelimee

4 x 4 HHL'nin mükemmel uygulaması.
Bram
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.