DECISION SUPPORT SYSTEM [MKB3493] - sisil.dosen.ittelkom...

35
Searching (Pencarian) ALGORITMA DAN PEMROGRAMAN [IS6110102] Dosen: Yudha Saintika, S.T., M.T.I

Transcript of DECISION SUPPORT SYSTEM [MKB3493] - sisil.dosen.ittelkom...

Searching (Pencarian)

ALGORITMA DAN PEMROGRAMAN [IS6110102]

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 penambahun (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

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 = 15Elemen yang dibandingkan (berturut-turut): 13, 16, 14, 21, 76, 21 (tidakditemukan!)Indeks larik yang dikemballkan: idx = -1

ALGORITMA PENCARIAN BERUNTUN (VERSI 1)

• Pada algoritma versi pertama, aksi pembandingan dilakukan didalamkondisi pengulangan.

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

ALGORITMA PENCARIAN BERUNTUN(HASIL PENCARIAN 1)

FUNGSI PENCARIAN BERUNTUN (HASIL PENCARIAN 1)

PROSEDUR BACA LARIK

PEMANGGILAN PROSEDUR(HASIL PENCARIAN 1)

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.

FUNGSI PENCARIAN BERUNTUN (HASIL PENCARIAN 2)

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 dilakukan didalambadan pengulangan. Kita memerlukan sebuah peubah Boolean yangakan berfungsi untuk menyatakan apakah x sudah ditemukan.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)

FUNGSI PENCARIAN BERUNTUN (HASIL PENCARIAN 2)

KINERJA ALGORITMA PENCARIAN BERUNTUN

• Secara umum, algoritma pencarian beruntun berjalan lambat. Waktupencarian sebanding dengan jumlah elemen larik. Misalkan larikberukuran 11 elemen. Maka, pada kasus di mana x tidak terdapat di dalam larik atau x ditemukan pada elemen yang terakhir, kita harusmelakukan perbandingan dengan seluruh elemen larik, yang berartijumlah 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 operasi perbandinganelemen larik membutuhkan waktu 0.01 detik, maka untuk 100.000 buah perbandingan diperlukan waktu sebesar 1000 detik atau 16,7 menit.

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

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 kasusterbruk 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 misalnya, kasus menghasilkan pembagian lariksebanyak 2log(256) = 8 kali. Bandingkan dengan metode pencarianberuntun yang pada kasus terburuk melakukan pembandingansebanyak 256 kali.