Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Chapter 9 SEARCHING ALGORITHM Program Studi Ekstensi DTE FTUI Slides © 2007.

Presentasi serupa


Presentasi berjudul: "Chapter 9 SEARCHING ALGORITHM Program Studi Ekstensi DTE FTUI Slides © 2007."— Transcript presentasi:

1 Chapter 9 SEARCHING ALGORITHM Program Studi Ekstensi DTE FTUI Slides © 2007

2 Definisi (dari Wikipedia)  Dalam ilmu komputer, sebuah algoritma pencarian dijelaskan secara luas adalah sebuah algoritma yang menerima masukan berupa sebuah masalah dan menghasilkan sebuah solusi untuk masalah tersebut, yang biasanya didapat dari evaluasi beberapa kemungkinan solusi.ilmu komputermasukan  Sebagian besar algoritma yang dipelajari oleh ilmuwan komputer adalah algoritma pencarian.  Himpunan semua kemungkinan solusi dari sebuah masalah disebut ruang pencarian.ruang pencarian

3 #1 Sequential Search – Diketahui: larik l berisi data sebanyak n, apakah ada data x didalam larik l ; jika ada, catat indeks dimana x ditemukan

4 Pengembangan algoritma #1 Func CariBerturutan (x, l, n) i := 1 while i l[i] do i := i + 1 ewhile if i > n then return (0) else return (i) eif efunc

5 Pengembangan algoritma #1 Func CariBerturutan (x, l, n) i := 1 ketemu := false while not ketemu and i <= n do if x = l[i] then ketemu := true else i := i + 1 eif ewhile if ketemu then return (i) else return (0) eif efunc

6 #2 Searching with sentinel  Algoritma sebelumnya, jumlah pemeriksaan dilakukan sebanyak 2n (why?)  Bagaimana agar pemeriksaan hanya dilakukan sebanyak n saja?

7 Analisa algoritma  Sebelumnya setiap pemeriksaan apakah x=l[i], selalu didahului oleh pemeriksaan apakah i<=n  Pemeriksaan i<=n dapat dihilangkan, asal dijamin bahwa pasti ditemukan data x didalam larik l.  Untuk itu pada elemen larik ke n+1 dimasukkan x sebagai sentinel (sehingga i tidak melewati batas akhir larik)

8 Analisa algoritma  Jika data x ditemukan pada indeks n+1, berarti bahwa x tidak ada didalam larik l, dan jika x ditemukan pada indeks selain n+1, berarti x ditemukan

9 Pengembangan Algoritma Func CariSentinel (x, l, n) l[n+1] := x {pasang sentinel} i := 1 while x <> l[i] do i := i + 1 ewhile if i = n + 1 then return (0) {x tidak ditemukan} else return (i) eif efunc

10 #3. Dichotomy Search  Diterapkan pada data yang sudah terurut  Ide: – Periksa apakah x berada ditengah larik l. – Jika ada maka berhenti. – Jika x lebih kecil dari elemen tengah larik, maka pencarian bagi-dua dilakukan pada sebelah kiri elemen tengah. – Dianggap bahwa data terkecil ada disebelah kiri dan data terbesar ada di sebelah kanan.

11 #3. Dichotomy Search  Jika x lebih besar dari elemen tengah larik, maka pencarian bagi-dua dilakukan pada sebelah kanan elemen tengah.  Pencarian dilakukan terus sampai ditemukan x atau bagian larik yang akan dicari sudah habis.

12 Analisa  Perhatikan ilustrasi berikut ini  Mis. larik l terdiri dari 10 elemen dan data yang tersimpan telah terurut  Titik tengah larik dihitung berdasarkan : tengah := (kiri+kanan) div 2

13 Ilustrasi 25 x 10 15 20 25 30 35 40 45 50 55 1 2 3 4 5 6 7 8 9 10 kiritengahkanan 10 15 20 25 30 35 40 45 50 55 1 2 3 4 5 6 7 8 9 10 kirikanan

14 Ilustrasi 10 15 20 25 30 35 40 45 50 55 1 2 3 4 5 6 7 8 9 10 kiritengahkanan 10 15 20 25 30 35 40 45 50 55 1 2 3 4 5 6 7 8 9 10 kirikanan

15 Pengembangan Algoritma Func CariBagiDua (x, l, n) kiri := 1 {batas kiri pencarian} kanan := n {batas kanan pencarian} ketemu := false while not ketemu and kiri <= kanan do tengah := (kiri+kanan) div 2 if x = l[tengah] then ketemu := true else if x < l[tengah] then kanan := tengah-1 else kiri := tengah + 1 eif ewhile If ketemu then return (tengah) else return (0) eif efunc

16 Simulasi dan Program (Compiler: Pascal)

17 BINARY SEARCH BINARY SEARCH SEQUENTIAL SEARCH SEQUENTIAL SEARCH SENTINEL SEARCH SENTINEL SEARCH SEARCHING METHOD

18 SELESAI SEARCHING

19 Sequential Search Procedure Seqsearch( A[], X, N, IX) Var I : int; Begin I:=1 I:=1 While (I X) do While (I X) do I := I + 1; If (L[I] <> X) then IX := 0 If (L[I] <> X) then IX := 0 else IX := I; else IX := I;End; Simulation

20 Sentinel Search Procedure Sentsearch( L[], X, N, IX) Var I : int; Begin L[N+1] := X; L[N+1] := X; I:=1 I:=1 While (L[I] <> X) do While (L[I] <> X) do I := I + 1; If (I < N+1) then IX := I If (I < N+1) then IX := I else IX := 0; else IX := 0;End; Simulation

21 Binary Search Simulation Procedure Binsearch( L[], X, N, IX) Begin Ia:=1; Ib:=N; ketemu := False; Ia:=1; Ib:=N; ketemu := False; While (Not ketemu) and (Ia <= Ib) do While (Not ketemu) and (Ia <= Ib) do Begin Begin k := (Ia + Ib) div 2; k := (Ia + Ib) div 2; if (L[k] = X) then if (L[k] = X) then ketemu := true ketemu := true else else if (L[k] > X) then Ia := k + 1 if (L[k] > X) then Ia := k + 1 else Ib := k – 1; else Ib := k – 1; end; end; If (ketemu) then IX := k Else IX := 0; End;


Download ppt "Chapter 9 SEARCHING ALGORITHM Program Studi Ekstensi DTE FTUI Slides © 2007."

Presentasi serupa


Iklan oleh Google