Searching

Diposting oleh i gede agus harya purnama , Jumat, 26 Juni 2009 04.06

Searching(pencariaan)
Proses pencarian adalah menemukan harga (data) tertentu di dalam sekumpulan harga yang bertipe sama (tipe dasar atau tipe bentukan).
Contoh:
Untuk menghapus (mengubah) harga tertentu di dalam kumpulannya, langkah pertama yang dilakukan adalah mencari apakah harga tersebut terdapat di dalam kumpulan yang dimaksud. Jika ada, harga tersebut dapat dihapus atau diubah nilainya. Dengan cara yang sama untuk penyisipan, jika data sudah ada, dan mempertahankan tidak ada duplikasi data, maka data tersebut tidak disisipkan, dan jika belum ada disisipkan.


Pencarian sebenarnya ada 3 metode antara lain:
1. Pencarian Beruntun (Sequential Search);
2. Pencarian Beruntun dengan Sentinel;
3. Pencarian Bagidua (Binary Search).
Nah diatas kan udah disebutin tuh metodenya, sekarang yang kita bahas disini cuma Sequential Search dan Binary Search.
Jadi kita mulai aja neh nyebutin penjelasannya atu-atu.


Pencarian data sering juga disebut table look-up atau storage and retrieval
information adalah suatu proses untuk mengumpulkan sejumlah informasi di dalam
pengingat komputer dan kemudian mencari kembali informasi yang diperlukan secepat
mungkin.

Algoritma pencarian (searching algorithm) adalah algoritma yang menerima
sebuah argumen kunci dan dengan langkah-langkah tertentu akan mencari rekaman
dengan kunci tersebut. Setelah proses pencarian dilaksanakan, akan diperoleh salah
satu dari dua kemungkinan, yaitu data yang dicari ditemukan (successful) atau tidak
ditemukan (unsuccessful).
Metode pencarian data dapat dilakukan dengan dua cara yaitu pencarian internal
(internal searching) dan pencarian eksternal (external searching). Pada pencarian
internal, semua rekaman yang diketahui berada dalam pengingat komputer sedangakan
pada pencarian eksternal, tidak semua rekaman yang diketahui berada dalam pengingat
komputer, tetapi ada sejumlah rekaman yang tersimpan dalam penyimpan luar misalnya
pita atau cakram magnetis.

Selain itu metode pencarian data juga dapat dikelompokka menjadi pencarian
statis (static searching) dan pencarian dinamis (dynamic searching). Pada pencarian
statis, banyaknya rekaman yang diketahui dianggap tetap, pada pencarian dinamis,
banyaknya rekaman yang diketahui bisa berubah-ubah yang disebabkan oleh
penambahan atau penghapusan suatu rekaman.
Ada dua macam teknik pencarian yaitu pencarian sekuensial dan pencarian biner.
Perbedaan dari dua teknik ini terletak pada keadaan data. Pencarian sekuensial
digunakan apabila data dalam keadaan acak atau tidak terurut. Sebaliknya, pencarian
biner digunakan pada data yang sudah dalam keadaan urut.

Pencarian Berurutan (Sequential Searching)
Pencarian berurutan sering disebut pencarian linear merupakan metode pencarian
yang paling sederhana. Pencarian berurutan menggunakan prinsip sebagai berikut : data
yang ada dibandingkan satu per satu secara berurutan dengan yang dicari sampai data
tersebut ditemukan atau tidak ditemukan.
Pada dasarnya, pencarian ini hanya melakukan pengulangan dari 1 sampai
dengan jumlah data. Pada setiap pengulangan, dibandingkan data ke-i dengan yang
dicari. Apabila sama, berarti data telah ditemukan. Sebaliknya apabila sampai akhir
pengulangan tidak ada data yang sama, berarti data tidak ada. Pada kasus yang paling
buruk, untuk N elemen data harus dilakukan pencarian sebanyak N kali pula.
Algoritma pencarian berurutan dapat dituliskan sebagai berikut :
1 i ← 0
2 ketemu ← false
3 Selama (tidak ketemu) dan (i <= N) kerjakan baris 4 4 Jika (Data[i] = x) maka ketemu ← true, jika tidak i ← i + 1 5 Jika (ketemu) maka i adalah indeks dari data yang dicari, jika tidak data tidak ditemukan Di bawah ini merupakan fungsi untuk mencari data menggunakan pencarian sekuensial. int SequentialSearch(int x) { int i = 0; bool ketemu = false; while ((!ketemu) && (i < ketemu =" true;" style="font-weight: bold;">Fungsi untuk Mencari Data dengan Metode Sekuensial
Fungsi diatas akan mengembalikan indeks dari data yang dicari. Apabila data
tidak ditemukan maka fungsi diatas akan mengembalikan nilai –1.

Pencarian Biner (Binary Search)
Salah satu syarat agar pencarian biner dapat dilakukan adalah data sudah dalam
keadaan urut. Dengan kata lain, apabila data belum dalam keadaan urut, pencarian biner
tidak dapat dilakukan. Dalam kehidupan sehari-hari, sebenarnya kita juga sering
menggunakan pencarian biner. Misalnya saat ingin mencari suatu kata dalam kamus
Prinsip dari pencarian biner dapat dijelaskan sebagai berikut :mula-mula diambil
posisi awal 0 dan posisi akhir = N - 1, kemudian dicari posisi data tengah dengan rumus
(posisi awal + posisi akhir) / 2. Kemudian data yang dicari dibandingkan dengan data
tengah. Jika lebih kecil, proses dilakukan kembali tetapi posisi akhir dianggap sama
dengan posisi tengah –1. Jika lebih besar, porses dilakukan kembali tetapi posisi awal
dianggap sama dengan posisi tengah + 1. Demikian seterusnya sampai data tengah
sama dengan yang dicari.
Untuk lebih jelasnya perhatikan contoh berikut. Misalnya ingin mencari data 17
pada sekumpulan data berikut :




awal tengah akhir
Mula-mula dicari data tengah, dengan rumus (0 + 9) / 2 = 4. Berarti data tengah
adalah data ke-4, yaitu 15. Data yang dicari, yaitu 17, dibandingkan dengan data tengah
ini. Karena 17 > 15, berarti proses dilanjutkan tetapi kali ini posisi awal dianggap sama
dengan posisi tengah + 1 atau 5.




awal tengah akhir
Data tengah yang baru didapat dengan rumus (5 + 9) / 2 = 7. Berarti data tengah
yang baru adalah data ke-7, yaitu 23. Data yang dicari yaitu 17 dibandingkan dengan
data tenah ini. Karena 17 < onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjK-IcyhYQBqEVwL1CcF6C0j_O4eQ_b7VLM4n3djAuqIohUqBu1hs-GKBjrm-Fluq6hIi1Hdj86qccjLlAnr3zn7Eqw_Ui6Q14Zm4W7E8yfI432SrN0AhxqyGN2Svrs2mbuI2qLTjPnhyphenhyphenA/s1600-h/3.bmp">

awal=tengah akhir
Data tengah yang baru didapat dengan rumus (5 + 6) / 2 = 5. Berarti data tengah
yang baru adalah data ke-5, yaitu 17. data yang dicari dibandingkan dengan data tengah
ini dan ternyata sama. Jadi data ditemukan pada indeks ke-5.
Pencarian biner ini akan berakhir jika data ditemukan atau posisi awal lebih besar
daripada posisi akhir. Jika posisi sudah lebih besar daripada posisi akhir berarti data
tidak ditemukan.
Untuk lebih jelasnya perhatikan contoh pencarian data 16 pada data diatas.
Prosesnya hampir sama dengan pencarian data 17. Tetapi setelah posisi awal 5 dan
posisi akhir 6, data tidak ditemukan dan 16 < atau =" 4" awal =" 5."> Data[m]) maka L ← m + 1
9 Jika (ketemu) maka m adalah indeks dari data yang dicari, jika tidak data tidak
ditemukan
Di bawah ini merupakan fungsi untuk mencari data menggunakan pencarian biner.
int BinarySearch(int x)
{
int L = 0, R = Max-1, m;
bool ketemu = false;
while((L <= R) && (!ketemu)) { m = (L + R) / 2; if(Data[m] == x) ketemu = true; else if (x < r =" m" l =" m" style="font-weight: bold;">Fungsi Pencarian Data dengan Metode Biner
Fungsi diatas akan mengembalikan indeks dari data yang dicari. Apabila data
tidak ditemukan maka fungsi diatas akan mengembalikan nilai –1.
Jumlah pembandingan minimum pada pencarian biner adalah 1 kali, yaitu apabila
data yang dicari tepat berada di tengah-tengah. Jumlah pembandingan maksimum yang
dilakukan dengan pencarian biner dapat dicari menggunakan rumus logaritma, yaitu :
C = 2log(N)

Kesimpulan
1. Algoritma pencarian berurutan digunakan untuk mencari data pada
sekumpulan data atau rekaman yang masih acak
2. Algoritma pencarian biner digunakan untuk mencari data pada sekumpulan
data atau rekaman yang sudah dalam keadaan terurut.

PENCAHARIAN SEKUENSIAL


Pencaharian sekuensial (atau disebut juga pencaharian linear ) merupakan model pencaharian yang paling sederhana yang dilakukan terhadap suatu kumpulan data.

Secara konsep, penjelasannya adalah sebagai berikut :

Terdapat L yang merupakan larik yang berisi n buah data ( L[0],L[1]…….L[n-1]) dan k adalah data yang akan dicari. Pencaharian dilakukan untuk menemukan L[i] = k dengan i adalah bilangan indeks terkecil yang memenuhi kondisi 0<= k <=n-1. Tentu saja bahwa data yang di cari tidak ditemukan.

Contoh :

Seperti program yang telah dipostingkan sebelumnya

L = {8,10,6,-2,10,7,1,100}

Dimanakah posisi 10 yang pertama ?

Dalam hal ini k adalah 10 dan k ditemukan berupa indeks 2.

PENCAHARIAN TERHADAP DATA URUT ( BINARY SEARCH)


Apabila kumpulan data sudah dalam keadaan urut, pencaharian data dengan menggunakan pencaharian sekuensial akan memakan waktu yang lama jika jumlah data dalam kumpulan data tersebut sangat banyak. Untuk mengatasi masalah ini terdapat algoritma yang dirancang agar pencaharian data dilakukan secara efesien. Metode yang digunakan dikenal dengan sebutan pencaharian biner (binary search).

Pencaharian biner dilakukan dengan membagi larik menjadi dua bagian dengan jumlah yang sama besar atau berbeda 1 jika jumlah data semula ganjil. Data yang dicari kemudian dibandingkan dengan data terakhir pada bagian pertama. Dalam hal ini ada tiga kemungkinan yang terjadi yaitu :

1. Data yang dicari sama dengan elemen terakhir pada bagian pertama dalam larik. Jika kondisi ini terpenuhi, data yang dicari berarti ditemukan.
2. Data yang dicari bernilai kurang dari nilai elemen terakhir pada bagian pertama dalam lari. Pada keadaan ini, pencaharian diteruskan pada bagian pertama.
3. Data yang dicari bernilai lebih dari nilai elemen terakhir pada bagian pertama dalam larik. Pada keadaan ini, pencaharian diteruskan pada bagian kedua.

0 Response to "Searching"

Posting Komentar