Algoritma Pencarian (Searching)

Post on 16-Oct-2021

12 views 0 download

Transcript of Algoritma Pencarian (Searching)

Algoritma Pencarian (Searching)

ALGORITMA DAN PEMROGRAMAN [IS6110102]

Koordinator Mata Kuliah :Fathushahib, S.Kom., M.KomTim Dosen: Yudha Saintika, S.T., M.T.I

Sub-Capaian Pembelajaran MK

“Mahasiswa mampu menerapkan algoritma pencariandalam program.”

Peta Capaian Pembelajaran MK

We Are Here !!!

Mid Test

Agenda

•Pendahuluan

•Spesifikasi Persoalan Pencarian

•Algoritma Pencarian Beruntun

•Algoritma Pencarian BagiDua

PENDAHULUAN

• Pencarian (searching) merupakan proses yang fundamental dalampengolahan data. Proses pencarian adalah menemukan nilai (data)tertentu di dalam sekumpulan data yang bertipe sama (baik bertipedasar atau bertipe bentukan), Sebagai contoh, untuk mengubah(update) data tertentu, langkah pertama yang harus dilakukan adalahmencari keberadaan data tersebut didalam kumpulannya.

• Jika data yang dicari ditemukan, maka data tersebut dapat diubahnilainya dengan data yang baru. Aktivitas awal yang sama jugadilakukan pada proses penambahan (insert) data baru. Prosespenambahan data dimulai dengan mencari apakah data yang akanditambahkan sudah terdapat di dalam kumpulan. Jika sudah ada danmengasumsikan tidak boleh ada duplikasi data maka data tersebuttidak perlu ditambakan, tetapi jika belum ada, maka tambahkan.

SPESIFIKASI PERSOALAN PENCARIAN

• Hasil atau keluaran dari persoalan pencarian dapat bermacam-macam, bergantung pada spesifikasi rinci dari persoalan tersebut, misalnya:

SPESIFIKASI PERSOALAN PENCARIAN

if ketemu then

write(x,‘ditemukan’)

else

write(x,‘tidak ditemukan’)

end if

SPESIFIKASI PERSOALAN PENCARIAN

JENIS-JENIS ALGORITMA PENCARIAN

ALGORITMAPENCARIAN

Bagidua(binary search)

Beruntun(sequential search)

ALGORITMA PENCARIAN BERUNTUN

•Algoritma pencarian yang paling sederhana, yaitumetode pencarian beruntun (sequential search).Nama lain algoritma pencarian beruntun adalahpencarian lurus (linear search).

•Pada dasarnya, algoritma pencarian beruntunadalah proses membandingkan setiap elemen lariksatu per satu secara beruntun, mulai dari elemenpertama, sampal elemen yang dlcari ditemukan,atau seluruh elemen sudah diperiksa.

ALGORITMA PENCARIAN BERUNTUN

Misalkan nilai yang dicari adalah: x = 21Elemen yang dibandingkan (berturut-turut): 13, 16, 14, 21 (ditemukan!)Indeks larik yang dikemballkan: idx = 4

Misalkan nilai yang dicari adalah: x = 13Elemen yangdibandingkan (berturut-turut): 13 (ditemukan!)lndeks larik yang dikembah'kan: idx = 1

Misalkan nilai yang dicari adalah: x = 100Elemen yang dibandingkan (berturut-turut): 13, 16, 14, 21, 76, 15 (tidakditemukan!)Indeks larik yang dikemballkan: idx = -1

ALGORITMA PENCARIAN BERUNTUN (VERSI 1)

• Pada algoritma versi pertama, aksi pembandingan dilakukan di luarbadan pengulangan.

• Hasil pencarian 1: sebuah peubah Boolean yang bernilai true bila xditemukan atau bernilai false bila x tidak ditemukan.

PROSEDUR PENCARIAN BERUNTUN(HASIL PENCARIAN 1)

PEMANGGILAN PROSEDUR(HASIL PENCARIAN 1)

PROSEDUR BACA LARIK

PROSEDUR PENCARIAN BERUNTUN (HASIL PENCARIAN 2)

• Hasil pencarian 2: indeks elemen larik (idx) yang bernilai x. Jika x tidak ditemukan, maka nilai idx diisi dengan -1.

ALGORITMA PENCARIAN BERUNTUN (VERSI 2)

• Versi 1 agak sulit dipahami bagi orang yang belum mahir menulisalgoritma. Oleh Karena itu dibuatlah versi 2 yang lebih mudahdipahami. Pada versi 2 ini instruksi pembandingan dilakukandidalam badan pengulangan. Kita memerlukan sebuah peubahBoolean yang akan berfungsi untuk menyatakan apakah x sudahditemukan. Misalkan peuabah tersebut bernama ketemu.

• Hasil pencarian 1: sebuah peubah Boolean yang bernilai true jika xditemukan atau bernilai false jika x tidak ditemukan.

PROSEDUR PENCARIAN BERUNTUN (HASIL PENCARIAN 1)

METODE PENCARIAN BERUNTUN DENGAN SENTINEL

• Jika pencarian bertujuan untuk menambahkan elemen baru setelahelemen terakhir larik, maka terdapat sebuah varian dari metodepencarian beruntun yang handal.

ALGORITMA PENCARIAN BERUNTUN DENGAN SENTINEL

KINERJA ALGORITMA PENCARIAN BERUNTUN

• Secara umum, algoritma pencarian beruntun berjalan lambat.Waktu pencarian sebanding dengan jumlah elemen larik. Misalkanlarik berukuran 11 elemen. Maka, pada kasus di mana x tidakterdapat di dalam larik atau x ditemukan pada elemen yang terakhir,kita harus melakukan perbandingan dengan seluruh elemen larik,yang berarti jumlah perbandingan yang terjadi sebanyak n kali.

• Kita katakan bahwa waktu pencarian dengan algoritma pencarianberuntun sebanding dengan n. Bayangkan bila larik berukuran100.000 buah elemen, maka kita harus melakukan perbandingansebanyak 100.000 buah elemen. Andaikan satu operasiperbandingan elemen larik membutuhkan waktu 0.01 detik, makauntuk 100.000 buah perbandingan diperlukan waktu sebesar 1000detik atau 16,7 menit.

ALGORITMA PENCARIAN BAGIDUA

• Untuk kebutuhan pencarian dengan waktu yang lebih cepat makaterdapat sebuah algoritma yang handal. Algoritma ini disebut denganalgoritma pencarian bagidua atau pencarian biner.

• Sebenarnya dalam kehidupan sehari-hari kita sering menerapkanpencarian bagidua. Misalnya untuk mencari arti kata tertentudidalam kamus. Kita tidak perlu membuka kamus dari halaman awalsampai akhir. Namun kita mencarinya dengan cara membelah ataumembagi dua kamus tersebut.

ALGORITMA PENCARIAN BAGIDUA

ALGORITMA PENCARIAN BAGIDUA

PROSEDUR PENCARIAN BAGIDUA

PROSEDUR PENCARIAN BAGIDUA

PENCARIAN PADA LARIK TERSTRUKTUR

• Algoritma pencarian yang dibahas sebelumnya menggunakan larikdengan elemen-elemen yang bertipe sederhana. Pada sebagian besarkasus, elemen larik sering bertipe terstruktur.

• Contoh, misalkan M adalah sebuah larik yang elemennya menyatakannilai ujian seorang mahasiswa untuk suatu mata kuliah (MK) yang diaambil. Data setiap mahasiswa adalah NIM, nama mahasiswa, matakuliah yang diambil, dan nilai mata kuliah tersebut.

Struktur Lojik dari Larik M (TabMhs)

Solusi dengan Algoritma Pencarian Beruntun

Solusi dengan Algoritma Pencarian BagiDua

Kinerja Algoritma Pencarian BagiDua

Kita dapat melihat bahwa pada setiap kali proses pencarian, larikdibagi dua menjadi dua bagian yang berukuran sama. Pada kasusterburuk yaitu kasus x tidak terdapat di dalam larik atau x ditemukansetelah ukuran larik tinggal 1 elemen, larik akan dibagi sebanyak2log(n) kali, sehingga jumlah pembandingan yang dibutuhkan adalah2log(n) kali. Untuk 256 data misalnya, kasus menghasilkan pembagianlarik sebanyak 2log(256) = 8 kali. Bandingkan dengan metodepencarian beruntun yang pada kasus terburuk melakukanpembandingan sebanyak 256 kali.