Tôi khá bối rối về cách thuật toán của Grover có thể được sử dụng trong thực tế và tôi muốn yêu cầu trợ giúp làm rõ thông qua một ví dụ.
Giả sử cơ sở dữ liệu phần tử có chứa các màu Đỏ, Cam, Vàng, Xanh lục, Lục lam, Xanh lam, Chàm và Tím và không nhất thiết phải theo thứ tự này. Mục tiêu của tôi là tìm Red trong cơ sở dữ liệu.
Đầu vào cho thuật toán của Grover là qubit, trong đó 3 qubit mã hóa các chỉ số của tập dữ liệu. Sự nhầm lẫn của tôi xuất hiện ở đây (có thể bị nhầm lẫn về các cơ sở nên nói rằng sự nhầm lẫn xảy ra ở đây) rằng, theo tôi hiểu, nhà tiên tri thực sự tìm kiếm một trong các chỉ số của tập dữ liệu (đại diện bởi sự chồng chất của 3 qubit), và hơn nữa, nhà tiên tri là "mã hóa cứng" cho chỉ số nào cần tìm.
Câu hỏi của tôi là:
- Làm gì ở đây?
- Nếu nhà tiên tri thực sự đang tìm kiếm một trong những chỉ số của cơ sở dữ liệu, điều đó có nghĩa là chúng ta đã biết chúng ta đang tìm kiếm chỉ mục nào, vậy tại sao lại tìm kiếm?
- Với các điều kiện trên với màu sắc, ai đó có thể chỉ ra nếu Grover có thể tìm kiếm Red trong một tập dữ liệu không có cấu trúc không?
Có các triển khai cho thuật toán của Grover với một orest cho tìm kiếm | 111>, ví dụ (hoặc xem triển khai R của cùng một orory bên dưới): /quantum//a/2205
Một lần nữa, sự nhầm lẫn của tôi là, do tôi không biết vị trí của các phần tử trong tập dữ liệu, thuật toán yêu cầu tôi tìm kiếm một chuỗi mã hóa vị trí của các phần tửLàm cách nào để biết vị trí nào tôi cần tìm khi tập dữ liệu không có cấu trúc?
Mã 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)