Lompat ke isi

Algoritma pencarian: Perbedaan antara revisi

Dari Wikipedia bahasa Indonesia, ensiklopedia bebas
Konten dihapus Konten ditambahkan
Ibrahimf (bicara | kontrib)
Tidak ada ringkasan suntingan
Ibrahimf (bicara | kontrib)
Tidak ada ringkasan suntingan
Baris 1: Baris 1:
Dalam [[ilmu komputer]], sebuah [[algoritma]] pencarian dijelaskan secara luas adalah sebuah algoritma yang menerima [[masukan]] berupa sebuah masalah dan menghasilkan sebuah solusi untuk masalah tersebut, yang biasanya didapat dari evaluasi beberapa kemungkinan solusi. Sebagian besar algoritma yang dipelajari oleh ilmuwan komputer adalah algoritma pencarian. Himpunan semua kemungkinan solusi dari sebuah masalah disebut [[ruang pencarian]]. Algortima pencarian [[brute-force]] atau pencarian naif/''uninformed'' menggunakan metode yang sederhana dan sangat [[intuitif]] pada ruang pencarian, sedangkan algoritma pencarian ''informed'' menggunakan [[heuristik]] untuk menerapkan pengetahuan tentang struktur dari ruang pencarian untuk berusaha mengurangi banyaknya waktu yang dipakai dalam pencarian.
Dalam [[ilmu komputer]], sebuah [[algoritma]] pencarian dijelaskan secara luas adalah sebuah
algoritma yang menerima [[masukan]] berupa sebuah masalah dan menghasilkan sebuah solusi untuk
masalah tersebut, yang biasanya didapat dari evaluasi beberapa kemungkinan solusi. Sebagian
besar algoritma yang dipelajari oleh ilmuwan komputer adalah algoritma pencarian. Himpunan
semua kemungkinan solusi dari sebuah masalah disebut [[ruang pencarian]]. Algortima pencarian
[[brute-force]] atau pencarian naif/''uninformed'' menggunakan metode yang sederhana dan sangat [[intuitif]]
pada ruang pencarian, sedangkan algoritma pencarian ''informed'' menggunakan [[heuristik]] untuk
menerapkan pengetahuan tentang struktur dari ruang pencarian untuk berusaha mengurangi banyaknya
waktu yang dipakai dalam pencarian.


== Pencarian ''uninformed'' ==
== Pencarian ''uninformed'' ==
Sebuah algoritma pencarian ''uninformed'' adalah algoritma yang tidak mempertimbangkan sifat alami dari permasalahan. Oleh karena itu algoritma tersebut dapat diimplementasikan secara umum, sehingga dengan implementasi yang sama dapat digunakan pada lingkup permasalahan yang luas, hal ini berkat [[Abstraksi (ilmu komputer)|abstraksi]]. Kekurangannya adalah sebagian besar [[ruang pencarian]] adalah sanat besar, dan sebuah pencarian ''uninformed'' (khususnya untuk pohon) membutuhkan banyak waktu walaupun hanya untuk contoh yang kecil. Sehingga untuk mempercepat proses, kadang-kadang hanya pencarian ''informed'' yang dapat melakukannya.
Sebuah algoritma pencarian ''uninformed'' adalah algoritma yang tidak mempertimbangkan sifat alami dari permasalahan.
Oleh karena itu algoritma tersebut dapat diimplementasikan secara umum, sehingga dengan implementasi
yang sama dapat digunakan pada lingkup permasalahan yang luas, hal ini berkat [[Abstraksi (ilmu komputer)|abstraksi]].
Kekurangannya adalah sebagian besar [[ruang pencarian]] adalah sanat besar, dan sebuah pencarian ''uninformed''
(khususnya untuk pohon) membutuhkan banyak waktu walaupun hanya untuk contoh yang kecil.
Sehingga untuk mempercepat proses, kadang-kadang hanya pencarian ''informed'' yang dapat melakukannya.



=== Pencarian List ===
=== Pencarian List ===
Algoritma pencarian list mungkin adalah algoritma pencarian paling dasar. Tujuannya adalah mencari sebuah elemen dari sebuah himpunan dengan suatu kunci (kemungkinan memuat informasi yang terkait dengan kunci). Oleh karena hal ini adalah masalah yang lazim dalam [[ilmu komputer]], [[kompleksitas komputasi]] algoritma-algoritma tersebuh telah dipelajri dengan baik. Algoritma paling sederhana adalah [[pencarian linear]], yang secara sederhana melihat setiap elemen dari list secara berurutan. [[Waktu pengerjaan]] algoritma ini adalah [[notasi O besar|O]](''n''), dimana ''n'' adalah banyaknya elemen dalam list, dan dapat digunakan langsung pada list yang belum diproses. Algoritma pencarian list yang lebih canggih adalah [[pencarian biner]]; waktu pengerjaannya adalah [[notasi O besar|O]](log ''n''). Waktu pengerjaannya jauh lebih baik daripada [[pencarian linear]] untuk list yang memiliki data banyak, tetapi sebelum dilakukan pencarian list terlebih dahulu harus terurut (lihat [[algoritma pengurutan]]) dan juga harus dapat diakses secara acak ([[pengaksesan acak]]). [[Pencarian interpolasi]] adalah lebih baik dari pencarian biner untuk list terurut yang sangat besar dan terdistribusi merata. [[Algoritma Grover]] adalah sebuah [[komputer kuantum|algoritma kuantum]] yang menawarkan percepatan kuadrat dibandingkan pencarian linear klasik untuk list tak terurut.
Algoritma pencarian list mungkin adalah algoritma pencarian paling dasar.
Tujuannya adalah mencari sebuah elemen dari sebuah himpunan dengan suatu kunci (kemungkinan
memuat informasi yang terkait dengan kunci). Oleh karena hal ini adalah masalah yang lazim dalam
[[ilmu komputer]], [[kompleksitas komputasi]] algoritma-algoritma tersebuh telah dipelajri dengan baik.
Algoritma paling sederhana adalah [[pencarian linear]], yang secara sederhana melihat setiap elemen
dari list secara berurutan. [[Waktu pengerjaan]] algoritma ini adalah [[notasi O besar|O]](''n''), dimana
''n'' adalah banyaknya elemen dalam list, dan dapat digunakan langsung pada list yang belum diproses.
Algoritma pencarian list yang lebih canggih adalah [[pencarian biner]]; waktu pengerjaannya adalah
[[notasi O besar|O]](log ''n''). Waktu pengerjaannya jauh lebih baik daripada [[pencarian linear]] untuk
list yang memiliki data banyak, tetapi sebelum dilakukan pencarian list terlebih dahulu harus terurut
(lihat [[algoritma pengurutan]]) dan juga harus dapat diakses secara acak ([[pengaksesan acak]]).
[[Pencarian interpolasi]] adalah lebih baik dari pencarian biner untuk list terurut yang sangat besar dan
terdistribusi merata. [[Algoritma Grover]] adalah sebuah [[komputer kuantum|algoritma kuantum]] yang
menawarkan percepatan kuadrat dibandingkan pencarian linear klasik untuk list tak terurut.

[[Tabel ''hash'']] juga digunakan untuk pencarian list, hanya memerlukan waktu yang konstan untuk
mencari pada kasus rata-rata, tetapi memiliki ''overhead'' ruang yang lebih dan pada kasus terburuk
waktu pengerjaannya adalah O(''n''). Pencarian lain yang berdasarkan struktur data khusus, menggunakan
pohon pencarian biner yang ''self-balancing'' ([[self-balancing binary search tree]]) dan membutuhkan
waktu pencarian O(log ''n''); hal ini dapat dipandang sebagai pengembangan dari ide utama pencarian biner
untuk memungkinkan penyisipan dan penghapusan yang cepat. Lihat [[array asosiatif]] untuk diskusi lanjut
dari struktur data pencarian list.

Sebaian besar algoritma pencarian, seperti pencarian linear, pencarian biner dan pohon pencarian biner
yang ''self-balancing'', dapat dikembangkan dengan sedikit tambahan ''cost''untuk menemukan
semua nilai yang kurang dari atau lebih dari sebuah kunci, operasi ini disebut ''pencarian jangkauan''
(''range search''). Pengecualin ada pada tabel hash, yang tidak dapat melakukan pencarian tersebut
secara efisien.


[[Tabel hash]] juga digunakan untuk pencarian list, hanya memerlukan waktu yang konstan untuk mencari pada kasus rata-rata, tetapi memiliki ''overhead'' ruang yang lebih dan pada kasus terburuk waktu pengerjaannya adalah O(''n''). Pencarian lain yang berdasarkan struktur data khusus, menggunakan pohon pencarian biner yang ''self-balancing'' ([[self-balancing binary search tree]]) dan membutuhkan waktu pencarian O(log ''n''); hal ini dapat dipandang sebagai pengembangan dari ide utama pencarian biner untuk memungkinkan penyisipan dan penghapusan yang cepat. Lihat [[array asosiatif]] untuk diskusi lanjut dari struktur data pencarian list.


Sebagian besar algoritma pencarian, seperti pencarian linear, pencarian biner dan pohon pencarian biner yang ''self-balancing'', dapat dikembangkan dengan sedikit tambahan ''cost''untuk menemukan semua nilai yang kurang dari atau lebih dari sebuah kunci, operasi ini disebut ''pencarian jangkauan'' (''range search''). Pengecualin ada pada tabel hash, yang tidak dapat melakukan pencarian tersebut secara efisien.


== Jenis Lain ==
== Jenis Lain ==

Revisi per 4 Mei 2006 04.03

Dalam ilmu komputer, sebuah algoritma pencarian dijelaskan secara luas adalah sebuah algoritma yang menerima masukan berupa sebuah masalah dan menghasilkan sebuah solusi untuk masalah tersebut, yang biasanya didapat dari evaluasi beberapa kemungkinan solusi. Sebagian besar algoritma yang dipelajari oleh ilmuwan komputer adalah algoritma pencarian. Himpunan semua kemungkinan solusi dari sebuah masalah disebut ruang pencarian. Algortima pencarian brute-force atau pencarian naif/uninformed menggunakan metode yang sederhana dan sangat intuitif pada ruang pencarian, sedangkan algoritma pencarian informed menggunakan heuristik untuk menerapkan pengetahuan tentang struktur dari ruang pencarian untuk berusaha mengurangi banyaknya waktu yang dipakai dalam pencarian.

Pencarian uninformed

Sebuah algoritma pencarian uninformed adalah algoritma yang tidak mempertimbangkan sifat alami dari permasalahan. Oleh karena itu algoritma tersebut dapat diimplementasikan secara umum, sehingga dengan implementasi yang sama dapat digunakan pada lingkup permasalahan yang luas, hal ini berkat abstraksi. Kekurangannya adalah sebagian besar ruang pencarian adalah sanat besar, dan sebuah pencarian uninformed (khususnya untuk pohon) membutuhkan banyak waktu walaupun hanya untuk contoh yang kecil. Sehingga untuk mempercepat proses, kadang-kadang hanya pencarian informed yang dapat melakukannya.

Pencarian List

Algoritma pencarian list mungkin adalah algoritma pencarian paling dasar. Tujuannya adalah mencari sebuah elemen dari sebuah himpunan dengan suatu kunci (kemungkinan memuat informasi yang terkait dengan kunci). Oleh karena hal ini adalah masalah yang lazim dalam ilmu komputer, kompleksitas komputasi algoritma-algoritma tersebuh telah dipelajri dengan baik. Algoritma paling sederhana adalah pencarian linear, yang secara sederhana melihat setiap elemen dari list secara berurutan. Waktu pengerjaan algoritma ini adalah O(n), dimana n adalah banyaknya elemen dalam list, dan dapat digunakan langsung pada list yang belum diproses. Algoritma pencarian list yang lebih canggih adalah pencarian biner; waktu pengerjaannya adalah O(log n). Waktu pengerjaannya jauh lebih baik daripada pencarian linear untuk list yang memiliki data banyak, tetapi sebelum dilakukan pencarian list terlebih dahulu harus terurut (lihat algoritma pengurutan) dan juga harus dapat diakses secara acak (pengaksesan acak). Pencarian interpolasi adalah lebih baik dari pencarian biner untuk list terurut yang sangat besar dan terdistribusi merata. Algoritma Grover adalah sebuah algoritma kuantum yang menawarkan percepatan kuadrat dibandingkan pencarian linear klasik untuk list tak terurut.

Tabel hash juga digunakan untuk pencarian list, hanya memerlukan waktu yang konstan untuk mencari pada kasus rata-rata, tetapi memiliki overhead ruang yang lebih dan pada kasus terburuk waktu pengerjaannya adalah O(n). Pencarian lain yang berdasarkan struktur data khusus, menggunakan pohon pencarian biner yang self-balancing (self-balancing binary search tree) dan membutuhkan waktu pencarian O(log n); hal ini dapat dipandang sebagai pengembangan dari ide utama pencarian biner untuk memungkinkan penyisipan dan penghapusan yang cepat. Lihat array asosiatif untuk diskusi lanjut dari struktur data pencarian list.

Sebagian besar algoritma pencarian, seperti pencarian linear, pencarian biner dan pohon pencarian biner yang self-balancing, dapat dikembangkan dengan sedikit tambahan costuntuk menemukan semua nilai yang kurang dari atau lebih dari sebuah kunci, operasi ini disebut pencarian jangkauan (range search). Pengecualin ada pada tabel hash, yang tidak dapat melakukan pencarian tersebut secara efisien.

Jenis Lain

Lihat juga