Anda di halaman 1dari 20

Search Algorithm

Definisi
• Algoritma search adalah suatu prosedur atau langkah-langkah
sistematis untuk mencari data atau informasi dalam kumpulan data
dengan tujuan untuk menemukan nilai yang dicari.
Jenis algoritma search [1]
1. Linear Search: digunakan pada struktur data linear seperti array,
linked list, atau string.
2. Binary Search: digunakan pada struktur data yang terurut, seperti
array atau linked list terurut.
3. Boyer-Moore Algorithm: digunakan pada struktur data linear
seperti string.
4. Fibonacci Search: Algoritma ini membandingkan elemen yang dicari
dengan elemen pada indeks yang ditentukan oleh deret Fibonacci.
Jenis algoritma search [2]
5. Depth First Search (DFS): digunakan pada struktur data non-linear
seperti graf atau tree.
6. Breadth First Search (BFS): digunakan pada struktur data non-linear
seperti graf atau tree.
7. A* Search Algorithm: digunakan pada struktur data non-linear
seperti graf.
8. Dijkstra's Algorithm: digunakan pada struktur data non-linear
seperti graf terbobot.
Faktor Kinerja Algoritma Search [1]
1.Ukuran Data: Faktor yang memengaruhi kinerja algoritma pencarian
adalah ukuran data. Semakin besar jumlah data yang dicari, semakin lama
waktu yang dibutuhkan oleh algoritma. Kinerja algoritma akan dipengaruhi
oleh kompleksitas waktu yang meningkat seiring dengan ukuran data.
2.Struktur Data: Jenis struktur data yang digunakan juga berperan dalam
kinerja algoritma pencarian. Beberapa struktur data seperti array terurut
atau struktur data terurut dapat memberikan keuntungan dalam pencarian
dengan mengurangi langkah-langkah yang diperlukan.
3.Keadaan Data: Keadaan data merujuk pada distribusi data dan apakah
data sudah terurut atau acak. Algoritma pencarian yang efisien pada data
terurut mungkin tidak seefisien pada data acak. Jika data sudah terurut,
algoritma pencarian seperti binary search dapat meningkatkan kinerja.
Faktor Kinerja Algoritma Search [2]
• Algoritma Pencarian yang Digunakan: Kinerja algoritma pencarian
juga dipengaruhi oleh jenis algoritma yang digunakan. Setiap
algoritma memiliki kompleksitas waktu yang berbeda. Sebagai
contoh, linear search memiliki kompleksitas waktu O(n) sedangkan
binary search memiliki kompleksitas waktu O(log n) pada data
terurut.
• Hardware dan Lingkungan Eksekusi: Kinerja algoritma pencarian juga
tergantung pada faktor eksternal seperti kecepatan prosesor, jumlah
memori yang tersedia, dan lingkungan eksekusi yang digunakan.
Linear search
• Linear search adalah metode
pencarian data secara berurutan dari
elemen pertama sampai elemen
terakhir dalam sekumpulan data.
• Ini adalah algoritma search sederhana
dan efisiensinya bergantung pada
ukuran dari sekumpulan data yang
dicari.
• Linear search cocok digunakan untuk
sekumpulan data yang kecil atau data
mencari buku di rak buku yang tidak terurut. Anda memeriksa
yang tidak terurut. setiap buku satu per satu sampai menemukan buku yang Anda
cari
• Kompleksitas waktu dari linear search
adalah O(n)
Cara Kerja Linear Search
1.Tentukan elemen pertama dalam sekumpulan data.
2.Bandingkan elemen pertama dengan item yang dicari.
3.Jika elemen pertama sama dengan item yang dicari, kembalikan
posisi elemen pertama.
4.Jika elemen pertama tidak sama dengan item yang dicari, periksa
elemen berikutnya dalam sekumpulan data.
5.Ulangi langkah 3 dan 4 sampai item yang dicari ditemukan atau
sampai semua elemen sudah diperiksa.
6.Jika item yang dicari ditemukan, kembalikan posisinya. Jika tidak
ditemukan, kembalikan nilai output bahwa item tidak ditemukan.
Binary Search
• Binary search adalah metode
pencarian data pada sekumpulan
data yang terurut dengan cara
membagi setiap segmen data
menjadi dua bagian dan memilih
bagian yang memiliki elemen yang
dicari.
• Binary search biasanya digunakan
pada sekumpulan data yang besar
dan terurut. membagi rak buku menjadi 2 bagian dan memeriksa bagian
yang berisi buku yang mungkin Anda cari. terus membagi
• Kompleksitas waktu dari binary bagian ini menjadi setengah sampai menemukan buku yang
dicari.
search adalah O(log n)
Cara Kerja Binary Search
1. Temukan elemen tengah dari kumpulan data yang terurut
2. Bandingkan elemen tengah dengan item yang dicari
3. Jika elemen tengah sama dengan item yang dicari, kembalikan posisi elemen
tengah
4. Jika elemen tengah lebih besar dari item yang dicari, cari elemen pada bagian
kiri dari elemen tengah
5. Jika elemen tengah lebih kecil dari item yang dicari, cari elemen pada bagian
kanan dari elemen tengah
6. Ulangi langkah 2 sampai 5 sampai item yang dicari ditemukan atau tidak ada
lagi bagian yang dapat dibagi
7. Jika item yang dicari ditemukan, kembalikan posisinya
8. Jika tidak ditemukan, kembalikan nilai yang menunjukkan bahwa item tidak
ditemukan.
Algoritma Dijkstra
• Algoritma yang digunakan untuk mencari jarak terpendek antara
satu node (atau vertex) dan node lain dalam suatu graf terbobot.
• Algoritma Dijkstra menggabungkan konsep graf dan priority queue
dalam mencari jarak terpendek dari satu node ke node lain dalam
graf terbobot
• Graf digunakan untuk merepresentasikan hubungan antar node dan
bobot jalur antar vertex.
• Priority queue digunakan untuk menentukan vertex mana yang
harus diproses berikutnya berdasarkan jarak dari vertex awal.
Cara Kerja Dijkstra
1. Inisialisasi: Tentukan node awal dan beri nilai jarak dari node awal ke
semua node lain sebagai tak terbatas.
2. Pemilihan node yang akan dikunjungi: Pilih node dengan jarak terpendek
dari node awal dan masukkan ke dalam set node yang sudah dikunjungi.
3. Perbarui jarak: Perbarui jarak dari node yang baru dikunjungi ke semua
node yang belum dikunjungi. Jika ada jarak baru yang lebih pendek dari
jarak sebelumnya, simpan jarak baru tersebut.
4. Periksa node tujuan: Periksa apakah node yang baru dikunjungi
merupakan node tujuan. Jika iya, hentikan algoritma dan kembalikan jarak
terpendek dari node awal ke node tujuan.
5. Ulangi langkah 2-4: Terus ulangi langkah 2-4 sampai node tujuan
ditemukan atau semua node sudah dikunjungi.
Contoh pengaplikasian (wakjek)
• Algoritma Dijkstra dapat digunakan dalam aplikasi seperti wakjek
untuk membantu dalam menentukan rute terpendek antara dua
lokasi.
• Tujuan dari algoritma ini bertujuan untuk memastikan bahwa
pengemudi dan penumpang mencapai tujuan mereka dengan waktu
yang minimal.
• Algoritma djikstra dapat dimanafaatkan untuk menentukan jarak
dengan mempertimbangkan faktor seperti jalan raya, jalan yang
sibuk, atau hambatan lalu lintas.
LATIHAN #1
• Bagaimana cara kerja proses pencarian nilai 14 dalam list berikut ini
dengan menggunakan linear search:

10 4 2 31 90 54 11 14 43 22 25
JAWAB
1. Mulai dari indeks pertama dalam list, yaitu indeks 0.
2. Periksa apakah angka pada indeks tersebut sama dengan angka yang dicari
(yaitu angka 14). Jika ya, maka proses pencarian selesai dan kembalikan
indeks tersebut.
3. Jika tidak, periksa angka pada indeks berikutnya (indeks 1) dan periksa
kembali apakah sama dengan angka yang dicari. Jika ya, proses pencarian
selesai dan kembalikan indeks tersebut.
4. Ulangi langkah 3 sampai angka ditemukan atau sampai mencapai akhir list.
5. Jika angka tidak ditemukan, kembalikan nilai -1 sebagai penanda bahwa
angka tidak ditemukan dalam list.
LATIHAN #2
• Bagaimana cara kerja proses pencarian nilai 14 dalam list berikut ini
dengan menggunakan binary search:

10 4 2 31 90 54 11 14 43 22 25
JAWAB
1. Tentukan batas bawah (left) dan batas atas (right) dari range pencarian.
Pada awalnya, left = 0 dan right = len(arr) - 1, yaitu left = 0 dan right = 10.
2. Hitung indeks tengah (mid) dari range pencarian, yaitu mid = (left + right) // 2 = 5.
3. Periksa apakah angka pada indeks mid sama dengan angka yang dicari (yaitu angka 14). Karena angka
pada indeks mid lebih kecil dari angka 14, artinya angka 14 berada di sebelah kanan indeks mid.
4. Perbarui batas bawah menjadi mid + 1, yaitu left = mid + 1 = 6.
5. Hitung kembali indeks tengah dari range pencarian yang baru, yaitu mid = (left + right) // 2 = 8.
6. Periksa apakah angka pada indeks mid sama dengan angka yang dicari (yaitu angka 14). Karena angka
pada indeks mid lebih besar dari angka 14, artinya angka 14 berada di sebelah kiri indeks mid.
7. Perbarui batas atas menjadi mid - 1, yaitu right = mid - 1 = 7.
8. Hitung kembali indeks tengah dari range pencarian yang baru, yaitu mid = (left + right) // 2 = 6.
9. Periksa apakah angka pada indeks mid sama dengan angka yang dicari (yaitu angka 14). Karena angka
pada indeks mid sama dengan angka 14, proses pencarian selesai dan kembalikan indeks tersebut,
yaitu 4.
Kaitan dengan Struktur Data
• Struktur data dan algoritma searching saling berkaitan erat dalam
pengolahan data. Struktur data adalah cara penyimpanan dan
pengorganisasian data dalam komputer, sedangkan algoritma
searching adalah teknik pencarian data tertentu di dalam struktur
data tersebut.
• Jika struktur data yang digunakan tidak sesuai dengan algoritma
searching yang dipilih, maka pencarian data dapat memakan waktu
yang lebih lama dan menghasilkan kinerja yang buruk.
Contoh Studi Kasus
• Sebagai contoh studi kasus, misalkan kita memiliki data siswa yang
tersimpan dalam struktur data tree dengan informasi seperti nama,
usia, dan nilai ujian. Kita ingin mencari siswa dengan nilai ujian
tertentu untuk memberikan penghargaan. Dalam hal ini, kita dapat
menggunakan algoritma pencarian dalam binary tree seperti in-order
traversal, pre-order traversal, atau post-order traversal untuk mencari
siswa dengan nilai ujian tertentu.
• Sebalknya, jika data siswa disimpan dalam bentuk array atau list, kita
dapat menggunakan algoritma linear search atau binary search untuk
mencari siswa dengan nilai ujian tertentu dalam array tersebut.
Terima Kasih

Anda mungkin juga menyukai