Thuật toán của Grover được sử dụng, trong số những thứ khác, để tìm kiếm một mục trong danh sách các mục không có thứ tự chiều dài . Mặc dù có rất nhiều câu hỏi ở đây liên quan đến chủ đề này, tôi vẫn bỏ lỡ vấn đề.
Tìm kiếm trong một danh sách, cách cổ điển
Thông thường, tôi sẽ thiết kế một chức năng tìm kiếm theo cách này
Danh sách có độ dài là .
Phần tử mong muốn là . Tôi nên lấy . Mỗi thẻ có thể được mã hóa với bit, danh sách này có yếu tố vì vậy chúng tôi cần bit để mã hóa danh sách. Trong trường hợp này, oracle sẽ thực hiện chức năng:
Tuy nhiên, đầu vào của thuật toán Grover không phải là trạng thái qubit.
(NB: Hình ảnh của sàn được xáo trộn được lấy từ đây )
Grover và nhà tiên tri của nó
Một số nguồn (ví dụ ở đây - được giải thích bằng đồ họa) nói rằng đầu vào của thuật toán là khác nhau: đầu vào là trạng thái được lấy từ không gian tìm kiếm trong đó là số phần tử của danh sách. Mỗi số tương ứng với vị trí của một yếu tố trong danh sách.
Đầu vào của bây giờ là một vector qubit , mà cần phải có một sự chồng chất của tất cả các mục trong không gian tìm kiếm .
Chúng tôi biết
- tương ứng với ;
- tương ứng với ;
- tương ứng với ;
- tương ứng với đó là yếu tố truy nã;
- và như thế...
Trong trường hợp này chúng ta có
Xây dựng oracle đòi hỏi chúng ta phải biết rằng là ở vị trí 5. điểm để thực hiện thuật toán nếu chúng tôi đã tìm kiếm các yếu tố để xây dựng nhà tiên tri là gì?