Hàm chỉ đơn giản là một hàm boolean tùy ý của một chuỗi bit: . Đối với các ứng dụng phá mật mã, chẳng hạn như [1] , [2] hoặc [3] , đây thực sự không phải là một 'tra cứu cơ sở dữ liệu', mà sẽ cần phải lưu trữ toàn bộ cơ sở dữ liệu dưới dạng mạch lượng tử, mà là một chức năng nhưff: { 0 , 1 }n→ { 0 , 1 }
x ↦ { 1 ,0 ,nếu S H A - 256( x ) = y;nếu không thì,
đối cố định , không có cấu trúc, chúng ta có thể khai thác cho tìm kiếm cổ điển, không giống như chức năngy
x ↦ { 1 ,0 ,nếu 2x≡ y( mod22048- 1942289 ) ,cách khác ,
có cấu trúc có thể được khai thác để đảo ngược nó nhanh hơn ngay cả trên một máy tính cổ điển.
Câu hỏi về chi phí cụ thể nói chung không thể được trả lời bởi vì có thể là bất kỳ mạch nào. Đây chỉ là vấn đề tạo ra một mạch lượng tử ra khỏi mạch cổ điển . Nhưng thông thường, như trong ví dụ trên, hàm rất rẻ để đánh giá trên máy tính cổ điển, do đó, nó không gây gánh nặng đặc biệt cho máy tính lượng tử mà mọi thứ khác về thuật toán của Grover đều nằm trong ngân sách của bạn.fff
Chi phí chung duy nhất trên đầu là một cổng KHÔNG có điều kiện bổ sung trong đó là xor và một qubit phụ trợ cho nó. Cụ thể, nếu chúng ta có một mạch được tạo từ và mạch cho , sau đó nếu chúng ta áp dụng nó cho cùng với một qubit phụ trợ ban đầu ở trạng thái trong đófC: | một ⟩ | b ⟩ → | một ⟩ | một ⊕ b ⟩
⊕F: | x ⟩ | một ⟩ | rác ⟩ ↦ | x ⟩ | một ⊕ f( X ) ⟩ | rác'⟩
Cf| x ⟩| - ⟩ =H| 1 ⟩ =(1 / 2-√) ( | 0 ⟩ - | 1 ⟩ )H là một cổng Hadamard, sau đó chúng ta nhận được
F| x ⟩ | - ⟩ | rác⟩= 12-√( F| x ⟩ | 0 ⟩ | rác⟩-F| x ⟩ | 1 ⟩ | rác⟩ )= 12-√( |X⟩|f( X ) ⟩ | rác'⟩ - | x ⟩ | 1 ⊕ f( X ) ⟩ | rác'⟩ ) .
Nếu thì , do đó, bằng cách đơn giản hóa, chúng ta thu được trong khi nếu thì , vì vậy và nói chung làf( x ) = 01 ⊕ f( x ) = 1F| x ⟩ | - ⟩ | rác⟩= | x ⟩ | - ⟩ | rác'⟩ ,
f( x ) = 11 ⊕ f( x ) = 0F| x ⟩ | - ⟩ | rác⟩=- | x ⟩ | - ⟩ | rác'⟩ ,
F| x ⟩ | - ⟩ | rác⟩=(-1 )f( x )| x ⟩ | - ⟩ | rác'⟩ .