Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
Diterbitkan olehRhiya Ramdani Telah diubah "9 tahun yang lalu
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;
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.