Lewati ke konten utama

Pencarian tak terstruktur

Ringkasan​

Kita akan mulai dengan deskripsi masalah yang diselesaikan algoritma Grover. Seperti biasa, kita akan menggunakan Σ={0,1}\Sigma = \{0,1\} untuk menunjukkan alfabet biner sepanjang diskusi ini.

Misalkan

f:Σn→Σf:\Sigma^n \rightarrow \Sigma

adalah fungsi dari string biner dengan panjang nn ke bit. Kita akan berasumsi bahwa kita bisa menghitung fungsi ini secara efisien, tapi selain itu fungsinya sembarang dan kita tidak bisa mengandalkannya memiliki struktur khusus atau implementasi tertentu yang sesuai dengan kebutuhan kita.

Yang dilakukan algoritma Grover adalah mencari string x∈Σnx\in\Sigma^n di mana f(x)=1.f(x) = 1. Kita akan menyebut string seperti ini sebagai solusi untuk masalah pencarian. Jika ada beberapa solusi, maka salah satu dari mereka dianggap sebagai output yang benar, dan jika tidak ada solusi, maka jawaban yang benar mengharuskan kita melaporkan bahwa tidak ada solusi.

Tugas ini disebut masalah pencarian tak terstruktur karena kita tidak bisa mengandalkan ff memiliki struktur tertentu untuk memudahkannya. Kita tidak mencari dalam daftar yang terurut, atau dalam struktur data yang dirancang khusus untuk memfasilitasi pencarian, kita pada dasarnya mencari jarum dalam tumpukan jerami.

Secara intuitif, kita mungkin membayangkan bahwa kita memiliki Circuit Boolean yang sangat rumit yang menghitung f,f, dan kita bisa dengan mudah menjalankan Circuit ini pada string input yang dipilih jika kita mau. Tapi karena Circuit-nya sangat rumit, kita tidak punya harapan untuk memahami Circuit tersebut dengan memeriksa (selain memiliki kemampuan untuk mengevaluasinya pada string input yang dipilih).

Salah satu cara untuk melakukan tugas pencarian ini secara klasik adalah dengan mengiterasi semua string x∈Σn,x\in\Sigma^n, mengevaluasi ff pada setiap satu untuk memeriksa apakah itu solusi atau bukan. Selanjutnya, mari kita tulis

N=2nN = 2^n

demi kenyamanan. Ada NN string dalam Σn,\Sigma^n, sehingga mengiterasi semua string tersebut memerlukan NN evaluasi dari f.f. Beroperasi di bawah asumsi bahwa kita terbatas hanya mengevaluasi ff pada input yang dipilih, ini adalah yang terbaik yang bisa kita lakukan dengan algoritma deterministik jika kita ingin menjamin keberhasilan. Dengan algoritma probabilistik, kita mungkin berharap menghemat waktu dengan memilih string input ke ff secara acak, tapi kita masih memerlukan O(N)O(N) evaluasi dari ff jika kita ingin metode ini berhasil dengan probabilitas tinggi.

Algoritma Grover menyelesaikan masalah pencarian ini dengan probabilitas tinggi hanya dengan O(N)O(\sqrt{N}) evaluasi dari f.f. Untuk memperjelas, evaluasi fungsi ini harus terjadi dalam superposisi, mirip dengan algoritma query yang dibahas di pelajaran Quantum query algorithms, termasuk algoritma Deutsch, algoritma Deutsch-Jozsa, dan algoritma Simon. Tidak seperti algoritma-algoritma itu, algoritma Grover mengambil pendekatan iteratif: mengevaluasi ff pada superposisi string input dan menyelingi evaluasi-evaluasi ini dengan operasi-operasi lain yang memiliki efek menciptakan pola interferensi, menghasilkan solusi dengan probabilitas tinggi (jika ada) setelah O(N)O(\sqrt{N}) iterasi.

Pernyataan masalah formal​

Kita akan memformalisasi masalah yang diselesaikan algoritma Grover menggunakan model query komputasi. Yaitu, kita akan mengasumsikan bahwa kita memiliki akses ke fungsi f:Σn→Σf:\Sigma^n\rightarrow\Sigma melalui Gate query yang didefinisikan dengan cara biasa:

Uf(∣a⟩∣x⟩)=∣a⊕f(x)⟩∣x⟩U_f \bigl( \vert a\rangle \vert x\rangle \bigr) = \vert a \oplus f(x) \rangle \vert x \rangle

untuk setiap x∈Σnx\in\Sigma^n dan a∈Σ.a\in\Sigma. Ini adalah aksi dari UfU_f pada state basis standar, dan aksinya secara umum ditentukan oleh linearitas.

Seperti yang dibahas di pelajaran Quantum algorithmic foundations, jika kita memiliki Circuit Boolean untuk menghitung f,f, kita bisa mengubah deskripsi Circuit Boolean tersebut menjadi Circuit kuantum yang mengimplementasikan UfU_f (menggunakan sejumlah qubit ruang kerja yang memulai dan mengakhiri komputasi dalam state ∣0⟩\vert 0\rangle). Jadi, meskipun kita menggunakan model query untuk memformalisasi masalah yang diselesaikan algoritma Grover, algoritma ini tidak terbatas pada model ini; kita bisa menjalankan algoritma Grover pada fungsi ff mana pun yang kita miliki Circuit Boolean-nya.

Berikut adalah pernyataan masalah yang tepat, yang diberi nama Search karena kita mencari solusi, maksudnya string xx yang menyebabkan ff mengevaluasi ke 1.1.

Search

Input: sebuah fungsi f:Σn→Σf:\Sigma^n\rightarrow\Sigma
Output: sebuah string x∈Σnx\in\Sigma^n yang memenuhi f(x)=1,f(x) = 1, atau "tidak ada solusi" jika tidak ada string xx seperti itu yang ada

Perhatikan bahwa ini bukan masalah promise — fungsi ff adalah sembarang. Namun, akan sangat membantu untuk mempertimbangkan varian promise berikut dari masalah, di mana kita dijamin bahwa ada tepat satu solusi. Masalah ini muncul sebagai contoh masalah promise di pelajaran Quantum query algorithms.

Unique search

Input: sebuah fungsi berbentuk f:Σn→Σf:\Sigma^n \rightarrow \Sigma
Promise: ada tepat satu string z∈Σnz\in\Sigma^n di mana f(z)=1,f(z) = 1, dengan f(x)=0f(x) = 0 untuk semua string x≠zx\neq z
Output: string zz

Perhatikan juga bahwa masalah Or yang disebutkan di pelajaran yang sama erat kaitannya dengan Search. Untuk masalah itu, tujuannya adalah sekadar menentukan apakah solusi ada atau tidak, sebagai lawan dari benar-benar menemukan solusinya.

Source: IBM Quantum docs — updated 15 Jan 2026
English version on doQumentation — updated 7 Mei 2026
This translation based on the English version of approx. 27 Mar 2026