Không, không.
"Lời tiên tri " trong thuật toán của Grover là một hàm, với bất kỳ phần tử nào , kiểm tra xem có phải là phần tử mà chúng ta đang tìm kiếm hay không, giả sử . Để làm điều này, nhà tiên tri không cần bất kỳ kiến thức nào về tất cả các yếu tố khác có trong cơ sở dữ liệu .x k x mục tiêu x jxkxkxtargetxj
Nó có thể giúp xem xét một ví dụ cụ thể hơn. Giả sử bạn có cơ sở dữ liệu gồm số điện thoại gồm bốn chữ số, với biểu thị phần tử thứ trong cơ sở dữ liệu này. Bạn muốn biết vị trí nào trong cơ sở dữ liệu tương ứng với phần tử . Chúng ta hãy giả sử rằng phần tử 10000 của cơ sở dữ liệu là phần tử duy nhất như vậy, nghĩa là, và cho tất cả .x k k 1234 x 10000 = 1234 x k ≠ 1234 k ≠ 1000020000xkk1234x10000=1234xk≠1234k≠10000
Trong trường hợp cổ điển, là cơ sở dữ liệu chưa được sắp xếp, không có cách nào tốt hơn là đi qua từng phần tử trong cơ sở dữ liệu, kiểm tra từng phần tử so với mục tiêu . Để làm điều này, bạn chỉ cần có một thuật toán, với , trả về nếu và nếu không. Một cách tương đương để nêu vấn đề này là nói rằng chúng tôi muốn một thuật toán, đưa ra danh sách các cặp , trả về cặp sao cho là những gì chúng ta muốn. Do đó, trong trường hợp của chúng tôi, chúng tôi muốn một thuật toán đưa ra trả vềx k có x k = 1234 không { ( k , x k ) } 20000 k = 1 x k { ( k , x k ) } 20000 k = 1 ( 10000 , x 10000 = 1234 ) x k1234xkyesxk=1234no{(k,xk)}20000k=1xk{(k,xk)}20000k=1(10000,x10000=1234). Lưu ý rằng điều này có nghĩa là chức năng kiểm tra từng cặp chỉ kiểm tra các tính năng của một phần của trạng thái , cụ thể là phần . Thật vậy, nếu đây không phải là trường hợp, toàn bộ điều này sẽ là vô nghĩa vì chúng tôi sẽ không khôi phục bất kỳ thông tin nào.xk
Cái khung cuối cùng của vấn đề này là cái mà người ta nên ghi nhớ trong khi nghĩ về thuật toán của Grover.
Trong trường hợp lượng tử, các cặp trở thành trạng thái lượng tử (hoặc chỉ cách chúng thường được ký hiệu) và hàm oracular chỉ kiểm tra phần thông tin được lưu trữ trong phù hợp với mục tiêu . Đầu ra của thủ tục là trạng thái . Bây giờ, một phần của trạng thái này mà chúng ta đã biết , bởi vì nó đã được mã hóa cứng trong nhà tiên tri: chúng ta biết rằng phần thứ hai của thông tin được mã hóa trong là(k,xk)|ψk⟩|k⟩|ψk⟩|ψ10000⟩|ψ10000⟩1234, bởi vì đó là những gì chúng tôi đang tìm kiếm ở nơi đầu tiên, và là thông tin được mã hóa vào chính lời sấm.
Tuy nhiên , trạng thái cũng mang thông tin bổ sung , cụ thể là vị trí trong cơ sở dữ liệu: .
Thông tin này không được sử dụng để xây dựng nhà tiên tri và là thông tin mà chúng tôi có được bằng cách chạy thuật toán.|ψ10000⟩ 10000
Cuối cùng, lưu ý rằng nhà tiên tri không biết gì về nội dung của cơ sở dữ liệu đầy đủ. Nó chỉ thực hiện một cách mạch lạc một chức năng kiểm tra một trạng thái duy nhất so với mục tiêu của nó. Tuy nhiên, thực tế là cổng này hoạt động mạch lạc có nghĩa là người ta có thể nhập vào trình kiểm tra này chức năng chồng chất của nhiều phần tử (có thể là tất cả) của cơ sở dữ liệu và có được một đầu ra chứa một số thông tin toàn cầu về tất cả các phần tử trong cơ sở dữ liệu.|ψk⟩