Thuật toán Grover

Thuật toán tìm kiếm Grover là một thuật toán lượng tử dùng trong việc tìm kiếm trên một cơ sở dữ liệu chưa sắp xếp gồm N phần tử trong độ phức tạp về thời gian là O(N1/2) và sử dụng O(log N) không gian lưu trữ. Thuật toán được trình bày bởi Lov Grover vào năm 1996. Giống như nhiều thuật toán lượng tử khác, thuật toán lượng tử cho kết quả có xác suất chính xác cao. Xác suất thất bại có thể được giảm đi bằng cách thực hiện nhiều lần thuật toán. Thuật toán Grover có thể được dùng để giải ngược phương trình. Nói cách khác, nếu có 1 phương trình y=f(x) có thể tính toán được trên 1 máy tính lượng tử, ta có thể dùng thuật toán Grover để tính được x với y cho trước. "Giải ngược phương trình" có thể được liên hệ với việc tìm kiếm trong 1 cơ sở dữ liệu vì ta có thể tạo ra 1 phương trình sao cho phương trình đó tạo ra một số y duy nhất nếu x trùng với 1 giá trị ở trong cơ sở dữ liệu. Thuật toán Grover cũng có thể dùng để tính toán số trung bình và số trung vị trong 1 tập số. Thuật toán cũng có thể được tối ưu hóa nếu như có nhiều hơn 1 kết quả tìm kiếm hoặc số kết quả tìm kiếm đã được biết trước. Giả sử ta có 1 cơ sở dữ liệu gồm N phần tử. Thuật toán cần có 1 không gian N chiều, dùng n=log2N qubits. Ta cần xác định chỉ số của phần tử thỏa mãn những điều kiện tìm kiếm. Cho f là phương trình sao cho f cho giá trị 0 hoặc 1, f(ω)=1 khi và chỉ khi ω thỏa mãn những điều kiện tìm kiếm. Ta sử dụng toán tử Uω: U ω | ω ⟩ = − | ω ⟩ {\displaystyle U_{\omega }|\omega \rangle =-|\omega \rangle } U ω | x ⟩ = | x ⟩ for all   x ≠ ω {\displaystyle U_{\omega }|x\rangle =|x\rangle \qquad {\mbox{for all}}\ x\neq \omega } Mục tiêu của ta là tìm ra chỉ số của | ω ⟩ {\displaystyle |\omega \rangle } Các bước của thuật toán được thực hiện như sau. Cho | s ⟩ {\displaystyle |s\rangle } là chồng chập của các trạng thái: | s ⟩ = 1 N ∑ x = 1 N | x ⟩ {\displaystyle |s\rangle ={\frac {1}{\sqrt {N}}}\sum _{x=1}^{N}|x\rangle } . Toán tử U s = 2 | s ⟩ ⟨ s | − I {\displaystyle U_{s}=2\left|s\right\rangle \left\langle s\right|-I} là toán tử truyền thông tin (diffusion operator). Thuật toán gồm các bước: Khởi tạo hệ thống ở trạng thái: | s ⟩ = 1 N ∑ x = 1 N | x ⟩ {\displaystyle |s\rangle ={\frac {1}{\sqrt {N}}}\sum _{x=1}^{N}|x\rangle } Thực hiện "Vòng lặp Grover" r(N) lần. Hàm r(N), có độ phức tạp O(N½), được miêu tả như sau. Thực hiện toán tử U ω {\displaystyle U_{\omega }} . Thực hiện toán tử U s {\displaystyle U_{s}} . Thực hiện phép đo Ω. Kết quả của phép đo sẽ là λω với xác suất tiến tới 1 khi N≫1. Từ λω, ta có thể tìm thấy ω. Từ định nghĩa, ta có bước khởi tạo U s = 2 | s ⟩ ⟨ s | − I {\displaystyle U_{s}=2\left|s\right\rangle \left\langle s\right|-I} , Uω có thể được biểu diễn theo cách: U ω = I − 2 | ω ⟩ ⟨ ω | {\displaystyle U_{\omega }=I-2\left|\omega \right\rangle \left\langle \omega \right|} . Các bước sau cho thấy những gì xảy ra trong vòng lặp đầu tiên: ⟨ ω | s ⟩ = ⟨ s | ω ⟩ = 1 N {\displaystyle \langle \omega |s\rangle =\langle s|\omega \rangle ={\frac {1}{\sqrt {N}}}} . ⟨ s | s ⟩ = N 1 N ⋅ 1 N = 1 {\displaystyle \langle s|s\rangle =N{\frac {1}{\sqrt {N}}}\cdot {\frac {1}{\sqrt {N}}}=1} . U ω | s ⟩ = ( I − 2 | ω ⟩ ⟨ ω | ) | s ⟩ = | s ⟩ − 2 | ω ⟩ ⟨ ω | s ⟩ = | s ⟩ − 2 N | ω ⟩ {\displaystyle U_{\omega }|s\rangle =(I-2|\omega \rangle \langle \omega |)|s\rangle =|s\rangle -2|\omega \rangle \langle \omega |s\rangle =|s\rangle -{\frac {2}{\sqrt {N}}}|\omega \rangle } . U s ( | s ⟩ − 2 N | ω ⟩ ) = ( 2 | s ⟩ ⟨ s | − I ) ( | s ⟩ − 2 N | ω ⟩ ) = 2 | s ⟩ ⟨ s | s ⟩ − | s ⟩ − 4 N | s ⟩ ⟨ s | ω ⟩ + 2 N | ω ⟩ = {\displaystyle U_{s}(|s\rangle -{\frac {2}{\sqrt {N}}}|\omega \rangle )=(2|s\rangle \langle s|-I)(|s\rangle -{\frac {2}{\sqrt {N}}}|\omega \rangle )=2|s\rangle \langle s|s\rangle -|s\rangle -{\frac {4}{\sqrt {N}}}|s\rangle \langle s|\omega \rangle +{\frac {2}{\sqrt {N}}}|\omega \rangle =} = 2 | s ⟩ − | s ⟩ − 4 N ⋅ 1 N | s ⟩ + 2 N | ω ⟩ = | s ⟩ − 4 N | s ⟩ + 2 N | ω ⟩ = N − 4 N | s ⟩ + 2 N | ω ⟩ {\displaystyle =2|s\rangle -|s\rangle -{\frac {4}{\sqrt {N}}}\cdot {\frac {1}{\sqrt {N}}}|s\rangle +{\frac {2}{\sqrt {N}}}|\omega \rangle =|s\rangle -{\frac {4}{N}}|s\rangle +{\frac {2}{\sqrt {N}}}|\omega \rangle ={\frac {N-4}{N}}|s\rangle +{\frac {2}{\sqrt {N}}}|\omega \rangle } . Sau khi 2 toán tử ( U ω {\displaystyle U_{\omega }} and U s {\displaystyle U_{s}} ) được sử dụng, giá trị cần tìm đã tăng từ | ⟨ ω | s ⟩ | 2 = 1 / N {\displaystyle \left|\langle \omega |s\rangle \right|^{2}=1/N} đến | ⟨ ω | U s U ω s ⟩ | 2 ≈ 9 / N {\displaystyle \left|\langle \omega |U_{s}U_{\omega }s\rangle \right|^{2}\approx 9/N} . Reinhold, Blumel (2009). “Foundations of Quantum Mechanics: From Photons to Quantum Computers”. Chú thích journal cần |journal= (trợ giúp)