Anda di halaman 1dari 9

algoritma dan

struktur data
Armin Lawi
Teknik Informatika, Universitas Hasanuddin

Masalah Pencarian Data

Searching Problem

Input: Barisan n bilangan asli (a1, a2, , an) dalam larik A dan
sebuah bilangan key yang ingin dicari.
Output: Lokasi key dalam A. Jika key tidak ditemukan dalam A,
tambahkan key sebagai unsur terakhir.
Contoh:
Input barisan bilangan: A = (31, 41, 59, 26, 41, 58) dan key = 26
Algoritma pencarian (searching algorithm) mengembalikan
Output menghasilkan posisi key adalah 4.

Pencarian Berulang
Loop-Search(A, key)

cost

times

1 ada False

c1

2 for i 1 to length[A]

c2

n+1

c3

if A[i] = key then

posisi i

ada True

c4
c5

6 if not(ada) then
7

posisi length[A] + 1

A[posisi] data

T ( n) 2n 2

c6

c7

c8

ti (2s 3)
i 1

i 1 ti
n
i 1 ti
n

Pencarian Berulang (Lanjt.)

Kasus Terburuk: Semua unsur dalam larik A sama


n
dengan key. (Dalam hal ini, i 1 ti n dan s = 0)
T ( n) 2n 2

ti (2s 3) 4n 3
i 1

Kasus Terbaik: Terdapat tepat satu unsur dalam


larik A sama dengan key. (Dalam hal ini, in1 ti 1 dan
s = 0)
T ( n) 2n 2

ti (2s 3) 2n 5
i 1

Improvisasi Algoritma

Pencarian Biseksi (Bagidua)


Bisection-Search(A, key)

cost

times

1 ada False

c1

2 for i 1 to length[A] /2

c2

n+1

c3

4
5
6
7

if A[i] = key then


posisi i

c4

ada True

c6

posisi n i + 1
ada True

if not(ada) then

n
2

c5

if A[n i + 1] = key then

i 1 ti
i 1 ti
n
2

i 1 pi
i 1 pi
n
2

c7

n
2

c8

10

posisi length[A] + 1

c9

11

A[posisi] data

c10

c11n

T (n) 32 n 2

n
2

t 2
i 1 i

i 1 pi (2s 3)
2

Pencarian Biseksi (Lanjt.)

Kasus Terburuk: Semua unsur dalam larik A sama dengan


key. (Dalam hal ini,
T ( n) n 2
3
2

n
2

i 1 ti , i 1 pi n2
n
2

t 2
i 1 i

n
2

n
2

dan s = 0)

n
2

7
p

(
2
s

3
)

n3
2
i 1 i

Kasus Terbaik: Terdapat tepat satu unsur dalam larik A sama


dengan key. (Dalam hal ini,

T ( n) n 2
3
2

n
2

t 1 atau
i 1 i

dan s = 0)
p

1
i 1 i
n
2

i 1 ti 2i 1 pi (2s 3) 32 n 5
n
2

n
2

Ada pengurangan sebesar n.. Lumayan!!

Other ideas!??

Ada ide lain yang membuat waktu komputasi


(running time) pencarian data menjadi lebih
cepat!!

Pengembangan alamiah: Pencarian dipecah


beberapa bagian lagi; , 1/8, 1/16, dst.
Ide dengan metode dynamic programming
(akan dibahas pada materi strategi algoritmik)

Namun pengembangan alamiah hanya


mengurangi , , 1/8, 1/16 dari jumlah data
n.
Adakah metode lain yang membuat running
time berkurang secara drastis!??

Binary Search Tree (BST)

Struktur Data: Prosedur penyimpanan


data dalam bentuk tertentu sedemikian
sehingga operasi dasar pada algoritma
menjadi lebih efisien atau optimal
Contoh untuk masalah pencarian
Binary Search Tree (BST): Struktur data
yang memenuhi sifat
kiri(i) akar(i)
kanan(i) > akar(i)

Anda mungkin juga menyukai