Label

Struktur Data (10) Data Mining (5) Etika Profesi (5) Nilai (3) PDK (2) SIM (2)

Senin, 15 Juli 2019

Searching


Searching
•      Pada suatu data seringkali dibutuhkan pembacaan kembali informasi (retrieval information) dengan cara searching.
•      Searching adalah pencarian data dengan cara menelusuri data-data tersebut. 
•      Tempat pencarian data dapat berupa array dalam memori, bisa juga pada file pada external storage.

Tehnik Searching
•      Sequential Search
•      Binary Search
•      Interpolation Search

Sequential Search
•      Adalah suatu teknik pencarian data dalam array ( 1 dimensi ) yang akan menelusuri semua elemen-elemen array dari awal sampai akhir, dimana data-data tidak perlu diurutkan terlebih dahulu.
•      Kemungkinan terbaik (best case) adalah jika data yang dicari terletak di indeks array terdepan (elemen array pertama) sehingga waktu yang dibutuhkan untuk pencarian data sangat sebentar (minimal).
•      Kemungkinan terburuk (worst case) adalah jika data yang dicari terletak di indeks array terakhir (elemen array terakhir) sehingga waktu yang dibutuhkan untuk pencarian data sangat lama (maksimal).

•      Misalnya terdapat array satu dimensi sebagai berikut:


•      Kemudian program akan meminta data yang akan dicari, misalnya 6.
•      Jika ada maka akan ditampilkan tulisan “ADA”, sedangkan jika tidak ada maka akan ditampilkan tulisan “TIDAK ADA”.
•      Pencarian = data + 1



Sequencial Search : Data tidak perlu diurut.
Jika data sama dengan data yang dicari maka pencarian stop atau berhenti.

Contoh :         

Data yang cari  = 7
Jawab :            A[0]                 = 3                   (“TIDAK ADA”), cari lagi    
                         A[0] + 1         = A[1}             = 7       (“ADA”), STOP

Data yang di cari = 4
Jawab :            A[0]                = 3                   (“TIDAK ADA”), cari lagi
                         A[0] + 1         = A[1]             = 7       (“TIDAK ADA”), cari lagi
                        A[1] + 1          = A[2]             = 1       (“TIDAK ADA”), cari lagi
                        A[2] + 1          = A[3]             = 4       (“ADA”), STOP

Note : setiap pencarian data selalu ditambah 1


Binary Search
•      Data yang ada harus diurutkan terlebih dahulu berdasarkan suatu urutan tertentu yang dijadikan kunci pencarian.
•      Adalah teknik pencarian data dengan cara membagi data menjadi dua bagian setiap kali terjadi proses pencarian.

•      Prinsip pencarian biner adalah:
–     Data diambil dari posisi 1 sampai posisi akhir N
–     Kemudian cari posisi data tengah dengan rumus: (posisi awal (A) + posisi akhir (C)) / 2
–     Kemudian data yang dicari dibandingkan dengan data yang di tengah (B), apakah sama atau lebih kecil, atau lebih besar?
–     Jika data yg dicari lebih besar dari B, maka proses pencarian dicari dengan posisi awal adalah posisi tengah + 1
–     Jika data yg dicari lebih lebih kecil dari B, maka proses pencarian dicari dengan posisi akhir adalah posisi tengah – 1
–     Jika data sama, berarti ketemu.

Contoh Data:
0                      1          2          3          4          5          6          7          8
3                      9          11        12        15        17        23        31        35

Cari data 17 ??

Awal (A)         = 0
Tengah (B) = (A + C) / 2        = (0 + 8) / 2     = 4
Akhir (C)         = 8

0                      1          2          3          4          5          6          7          8
3                      9          11        12        15        17        23        31        35
A                                                         B                                             C

0                      1          2          3          4          5          6          7          8
3                      9          11        12        15        17        23        31        35
A                                                         B                                             C

Karena data yang dicari > dari B,
maka:   awal     (A) = B + 1 = 4 + 1 = 5
                                                                                                           
0                      1          2          3          4          5          6          7          8
3                      9          11        12        15        17        23        31        35
                                                                        A         B                    C

0                      1          2          3          4          5          6          7          8
3                      9          11        12        15        17        23        31        35
                                                                        A         B                     C

Karena data yang dicari < dari B,
maka:   akhir     (C) = B - 1 = 6 - 1 = 5
0                      1          2          3          4          5          6          7          8
3                      9          11        12        15        17        23        31        35
                                                                  A=B=C

Karena 17 = 17 (data tengah), maka KETEMU!

Interpolation Search
•      Teknik ini dilakukan pada data yang sudah terurut berdasarkan kunci tertentu
•      Teknik searching ini dilakukan dengan perkiraan letak data.
•      Rumus posisi relatif kunci pencarian dihitung dengan rumus:
 

•      Jika data[posisi] > data yg dicari, high = pos – 1
•      Jika data[posisi] < data yg dicari, low = pos + 1

  

Cari kunci 088 dan 060??

•      Apakah terdapat kunci 088?
•      Kunci : 088
•      Low     : 0
•      High    : 7

                                 

•      Kunci [6] = 088, data ditemukan : Visual Basic 2005

•      Kunci : 060
•      Low     : 0
•      High    : 7
•      Posisi   = ((060 - 025) / (096 - 025)) * 7
                                    = (35 / 71) * 7
                                    = 0,49 * 7
                                    = 3,43
                                    = 3

•      Kunci [3] = 056 ( 056 < 060, data tidak ditemukan), maka teruskan
•      Low = 3 + 1 = 4
•      Ternyata Kunci[4] adalah 063 yang lebih besar daripada 060.
•      Berarti tidak ada kunci 060.