Algoritma Grover: contoh kehidupan nyata?

13

Saya cukup bingung tentang bagaimana algoritma Grover dapat digunakan dalam praktek dan saya ingin meminta bantuan klarifikasi melalui contoh.

Mari kita asumsikan database elemen N=8 yang berisi warna Merah, Oranye, Kuning, Hijau, Cyan, Biru, Indigo dan Violet, dan tidak harus dalam urutan ini. Tujuan saya adalah menemukan Merah di basis data.

Input untuk algoritma Grover adalah qubit, di mana 3 qubit mengkodekan indeks dataset. Kebingungan saya datang ke sini (mungkin bingung tentang premisnya sehingga lebih tepatnya mengatakan kebingungan menyerang di sini) bahwa, seperti yang saya pahami, oracle sebenarnya mencari salah satu indeks dataset (diwakili oleh superposisi dari 3 qubit), dan lebih jauh lagi, oracle "hardcoded" untuk indeks mana yang harus dicari.n=log2(N=8)=3

Pertanyaan saya adalah:

  • Apa yang salah di sini?
  • Jika oracle benar-benar mencari salah satu indeks dari database, itu berarti kita sudah tahu indeks mana yang kita cari, jadi mengapa mencari?
  • Dengan kondisi di atas dengan warna, dapatkah seseorang menunjukkannya jika memungkinkan dengan Grover untuk mencari Red dalam dataset yang tidak terstruktur?

Ada implementasi untuk algoritma Grover dengan oracle untuk mencari | 111>, misalnya (atau lihat implementasi R dari oracle yang sama di bawah): /quantum//a/2205n=3Oracle untuk 111

Sekali lagi, kebingungan saya adalah, mengingat saya tidak tahu posisi elemen dalam dataset, algoritma mengharuskan saya untuk mencari string yang mengkodekan posisi elemen N. Bagaimana saya tahu posisi mana yang harus saya cari ketika dataset tidak terstruktur?NN

Kode R:

 #START
 a = TensorProd(TensorProd(Hadamard(I2),Hadamard(I2)),Hadamard(I2))
 # 1st CNOT
 a1= CNOT3_12(a)
 # 2nd composite
 # I x I x T1Gate
 b = TensorProd(TensorProd(I2,I2),T1Gate(I2)) 
 b1 = DotProduct(b,a1)
 c = CNOT3_02(b1)
 # 3rd composite
 # I x I x TGate
 d = TensorProd(TensorProd(I2,I2),TGate(I2))
 d1 = DotProduct(d,c)
 e = CNOT3_12(d1)
 # 4th composite
 # I x I x T1Gate
 f = TensorProd(TensorProd(I2,I2),T1Gate(I2))
 f1 = DotProduct(f,e)
 g = CNOT3_02(f1)
 #5th composite
 # I x T x T
 h = TensorProd(TensorProd(I2,TGate(I2)),TGate(I2))
 h1 = DotProduct(h,g)
 i = CNOT3_01(h1)
 #6th composite
 j = TensorProd(TensorProd(I2,T1Gate(I2)),I2)
 j1 = DotProduct(j,i)
 k = CNOT3_01(j1)
 #7th composite
 l = TensorProd(TensorProd(TGate(I2),I2),I2)
 l1 = DotProduct(l,k)
 #8th composite
 n = TensorProd(TensorProd(Hadamard(I2),Hadamard(I2)),Hadamard(I2))
 n1 = DotProduct(n,l1)
 n2 = TensorProd(TensorProd(PauliX(I2),PauliX(I2)),PauliX(I2))
 a = DotProduct(n2,n1)
 #repeat the same from 2st not gate
 a1= CNOT3_12(a)
 # 2nd composite
 # I x I x T1Gate
 b = TensorProd(TensorProd(I2,I2),T1Gate(I2))
 b1 = DotProduct(b,a1)
 c = CNOT3_02(b1)
 # 3rd composite
 # I x I x TGate
 d = TensorProd(TensorProd(I2,I2),TGate(I2))
 d1 = DotProduct(d,c)
 e = CNOT3_12(d1)
 # 4th composite
 # I x I x T1Gate
 f = TensorProd(TensorProd(I2,I2),T1Gate(I2))
 f1 = DotProduct(f,e)
 g = CNOT3_02(f1)
 #5th composite
 # I x T x T
 h = TensorProd(TensorProd(I2,TGate(I2)),TGate(I2))
 h1 = DotProduct(h,g)
 i = CNOT3_01(h1)
 #6th composite
 j = TensorProd(TensorProd(I2,T1Gate(I2)),I2)
 j1 = DotProduct(j,i)
 k = CNOT3_01(j1)
 #7th composite
 l = TensorProd(TensorProd(TGate(I2),I2),I2)
 l1 = DotProduct(l,k)
 #8th composite
 n = TensorProd(TensorProd(PauliX(I2),PauliX(I2)),PauliX(I2))
 n1 = DotProduct(n,l1)
 n2 = TensorProd(TensorProd(Hadamard(I2),Hadamard(I2)),Hadamard(I2))
 n3 = DotProduct(n2,n1)
 result=measurement(n3)
 plotMeasurement(result)

Gambar2

01000001
sumber
3
Kemungkinan duplikat dari algoritma Grover: di mana daftarnya?
DaftWullie

Jawaban:

5

|xaddress|0value|xaddress|load(x)0value=|xaddress|load(x)value.

Haddressn|0address|0value=12n/2x=02n1|xaddress|0value
apply load12n/2x=02n1|xaddress|load(x)value
O(N)x
|xaddress|load(x)value.

Mungkin masalah utama yang Anda miliki adalah memahami database bukan algoritma Grover. Anda dapat melihat penjelasan yang lebih terperinci di bab 6.5 Nielsen & Chuang untuk ini.

Saya juga berpikir bahwa aplikasi yang paling berguna dari algoritma Grover bukanlah aplikasi basis data, tetapi generalisasi sebagai amplifikasi amplitudo (lihat https://arxiv.org/abs/quant-ph/0005055 ) pada algoritma kuantum apa pun.

P), ini adalah persis kasus untuk subset dari masalah NP-complete (yang tidak memiliki metode perkiraan yang baik). Kita dapat membuat oracle, yang dapat memeriksa apakah suatu solusi benar dalam waktu polinomial, tetapi untuk membangun oracle, yang menemukan solusi yang tepat tampaknya tidak dapat dihitung secara efisien.

Alex Go
sumber
k|k|skksk=+1sk.
glS
4

Ini sudah sebagian dibahas dalam pertanyaan terkait ini , tetapi saya akan mencoba di sini untuk membahas lebih spesifik beberapa masalah yang Anda angkat.

|i(1)f(xi)|i,
ixii

f(xi)xixixiPP dapat berarti "merah".

fxiixi dengan itu, saya juga mendapatkan pengetahuan yang tidak digunakan untuk membangun oracle.

xi=ixi

Dalam kasus seperti itu, algoritme memang tidak terlalu berguna karena jawabannya harus di-hardcode ke dalam oracle, tetapi hal ini tidak harus terjadi secara umum.

glS
sumber
Terimakasih atas balasan anda! Mungkin mungkinkah untuk memberikan contoh kehidupan nyata di mana Grover's "berguna" diterapkan pada beberapa data nyata mengingat oracle yang disajikan? Misalnya bagaimana cara kerjanya dengan database 8 elemen dengan bilangan prima dan non bilangan prima?
01000001
1
@ 01000001 Saya yakin jawaban ini pada pertanyaan terkait di cstheory.SE bisa memenuhi syarat. Ini adalah contoh yang bagus dari Grover yang digunakan untuk nontrivialf. Dalam kasusnya,fmengkodifikasi apakah formula boolean yang diberikan dipenuhi oleh input. Dengan demikian, output dari algoritma adalahxmemuaskan formula boolean
glS