Algoritma Pencarian
Kelompok 8:
1. Ahmad Zaky Humami (50422138)
2. Muhammad Raihan Zhafran (51422127) 3. Pratama Rizky Aditya (51422299)
4. Rifqi Ramadhani Hidayat (51422445)
5. Yoga Ardiansyah (51422643)
Pendahuluan
• Komputer sebagai sebuah mesin "pintar" yang sudah terlanjur dipercaya orang mampu mengerjakan perintah apa saja yang diberikanoleh manusia.
• Komputer merupakan alat bantu dalam menyelesaikan masalah.
Pendahuluan
• Program adalah sekumpulan instruksi untuk menyelesaikan masalah
• Bahasa pemrograman adalah bahasa
komputer yang digunakan untuk menyusun suatu program
Tingkatan Bahasa Pemrograman
• Bahasa tingkat rendah
• Bahasa tingkat menengah
• Bahasa tingkat tinggi
Sejarah Algoritma
• Pada mulanya orang hanya menemukan kata algorism yang berarti menghitung dengan
angka arab.
• Kata algorism berasal dari nama penulis buku Arab yang terkenal, yaitu Arab Ja'far
Muhammad ibnu Musa al-Kuwarizmi dan disebut orang barat menjadi algorism
Sejarah Algoritma
• AI-Khuwarizmi menulis buku yang berjudul kitab al jabar wal-muqalaba, yang artinya
"Buku pemugaran dan pengurangan"
• Dari buku tersebut diperoleh asal kata
"aljabat" (algebra)
Sejarah Algoritma
• Perubahan dari kata algorism menjadi algorithm
muncul karena kata algorism sering kelirukan dengan arithmatic, sehingga ahiran -sm berubah menjadi - thm
• Karena perhitungan dengan angka Arab sudah
menjadi hal yang biasa/lumrah, maka lambat laun kata algorithm berangsur-angsur dipakai sebagai metode perhitungan (komputasi) secara umum, sehingga kehilangan makna aslinya.
• Dalam bahasa Indonesia, kata algorithm diserapmenjadi a/goritma.
Definis i
• Algoritma adalah urutan langkah-langkah logis penyelesaian masalah disusun secara sistematis.
• Dalam Kamus Besar Bahasa Indonesia terbitan Balai Pustaka 1988, algoritma adalah urutan logis pengambilan keputusan untuk pemecahan masalah
ALGORITMA
''A/goritma ado/ah urutan langkah-langkah logis penye/esaian masa/ah yang disusun secara sistematis don logis'
sistematis donlogis artinya, Langkah-langkah dalam Algoritma, harus dapat ditentukan bernilai salah atau benar.
Ciri penting algoritma :
•Algoritma harus berhenti setelah mengerjakan sejumlah langkah terbatas.
• Setiap langkah harus didefinisikan dengan tepat
• Algoritma memiliki nol atau lebih masukkan.
• Algoritma memiliki nol atau lebih keluaran.
•Algoritma harus efektif (setiap langkah harus sederhana sehingga dapat dikerjakan dalam waktu yang masuk akal).
Sifat-sifat Algoritma
1. Banyaknya langkah instruksi yang hingga;
Banyaknya instruksi haruslah berhingga, jika tidak demikian, proses yang dilakukan akan memerlukan waktu yang relatif lama dan diperoleh hasil yang tidak diperlukan. Bahkan akan memungkinkan proses berlangsung terus walaupun solusi yang diharapkan sudah diperoleh.
2. Harus jelas;
Penulisan dari setiap langkah dalam sebuah algoritma harus memiliki arti yang khusus dan spesifik.
3. Batasan dari rangkaian proses;
Rangkaian proses yang berisi langkah-langkah dari suatu algoritma yang akan dilaksanakan harus ditetapkan dengan pasti.
Lanjutan ...
4. Batasan dari input dan output;
Input merupakan data yang dimasukkan ke dalam algoritma.
Output merupakan hasil yang dikeluarkan oleh komputer sebagai hasil dari pelaksanaan program.
5. Efektivitas;
lnstruksi dari sebuah algoritma dapat memerintahkan komputer agar melaksanakan penugasan yang mampu dilaksanakannya saja.
6. Batasan ruang lingkup;
Sebuah algoritma adalah diperuntukkan bagi suatu masalah tertentu.
Introduction Algorithm Search
Pencarian (Searching) merupakan tindakan untuk mendapatkan suatu data dalam
kumpulan data
Searching adalah proses mendapatkan (retrieve) informasi berdasarkan kunci
tertentu dari sejumlah informasi yang telah disimpan
Contoh implementasi pencarian dalam kehidupan sehari-hari :
a. Menemukan nomor telepon seseorang pada buku telepon
b. Mencari istilah dalam kamus
Contoh implementasi pencarian pada aplikasi komputer :
a. Untuk mendapatkan data dari seseorang mahasiswa (NIM, Nama, IPK)
b. Mencari informasi suatu kata dalam kamus digital
Untuk keperluan mencari data
terdapat beragam Algoritma Pencarian (Search Algorithma)
Yang dimaksud Algoritma Pencarian adalah
"algoritma yang menerima sebuah argumen a dan mencoba untuk
menemukan sebuah rekaman yang memilki kunci a”
Contoh
a. Siapa nama mahasiswa dengan NIM 13102056 ? single match
b. Siapa saja yang mendapat nilai algoritma ≥ 85 ? multiple matches
Pencarian yang dilakukan terhadap data, dapat dikelompokan sebagai berikut :
a. Pencarian Internal
Pencarian yang dilakukan terhadap data yang berada dalam memori komputer
b. Pencarian Eksternal
Pencarian yang dilakukan terhadap data
yang berada dalam penyimpanan eksternal (hardisk)
Macam – Macam Algoritma Pencarian Pencarian Linear
Pencarian Linear didefinisikan sebagai algoritma pencarian berurutan yang dimulai dari satu ujung dan melewati setiap elemen dari daftar sampai elemen yang diinginkan ditemukan, jika tidak, pencarian berlanjut sampai akhir
kumpulan data. Ini adalah algoritma pencarian yang paling mudah
Linear Search Iterative :
Iterate from 0 to N-1 and compare the value of every index with x if they match return index Follow the given steps to solve the problem:
• Start from the leftmost element of arr[] and one by one compare x with each element of arr[]
• If x matches with an element, return the index.
• If x doesn’t match with any of the elements, return -1.
Output
Element is present at index 3
Linear Search Recursive Approach:
Follow the given steps to solve the problem:
• If the size of the array is zero then, return -1, representing that the element is not found. This can also be treated as the base condition of a recursion call.
• Otherwise, check if the element at the current index in the array is equal to the key or not i.e, arr[size – 1] == key
• If equal, then return the index of the found
Output key.
The element 4 is found at 4 index of the given array.
Macam – Macam Algoritma Pencarian Pencarian Sentinel Linear
Pencarian Sentinel Linear seperti namanya adalah jenis Pencarian Linier di mana jumlah perbandingan dikurangi dibandingkan dengan pencarian linier
tradisional. Ketika pencarian linear dilakukan pada array ukuran N maka dalam kasus terburuk, total N perbandingan dilakukan ketika elemen yang akan dicari dibandingkan dengan semua elemen array dan (N + 1) perbandingan dilakukan untuk indeks elemen yang akan dibandingkan sehingga indeks tidak keluar dari batas array yang dapat direduksi dalam Pencarian Linear Sentinel.
Sentinel Linear Search:
In this search, the last element of the array is
replaced with the element to be searched and then the linear search is performed on the array without checking whether the current index is inside the index range of the array or not because the
element to be searched will definitely be found inside the array even if it was not present in the original array since the last element got replaced with it. So, the index to be checked will never be out of bounds of the array. The number of
comparisons in the worst case here will be (N + 2).
Output
180 is present at index 2
Macam – Macam Algoritma Pencarian Pencarian Binary
Pencarian Binary adalah algoritma pencarian yang digunakan dalam array terurut dengan berulang kali membagi interval pencarian menjadi dua. Ide
pencarian biner adalah menggunakan informasi bahwa array telah diurutkan dan mengurangi kompleksitas waktu menjadi O(Log n).
Binary Search Iterative :
The basic steps to perform Binary Search are:
• Begin with the mid element of the whole array as a search key.
• If the value of the search key is equal to the item then return an index of the search key.
• Or if the value of the search key is less than the item in the middle of the interval, narrow the interval to the lower half.
• Otherwise, narrow it to the upper half.
• Repeatedly check from the second point until the value is found or the interval is empty.
Output
Element is present at index 3
Binary Search Recursive Approach:
We basically ignore half of the elements just after one comparison.
1.Compare x with the middle element.
2.If x matches with the middle element, we return the mid index.
3.Else If x is greater than the mid element, then x can only lie in the right half subarray after the mid element. So we recur for the right half.
4.Else (x is smaller) recur for the left half.
Output
Element is present at index 3
Macam – Macam Algoritma Pencarian Pencarian Tenary
Pencarian Tenary adalah algoritma penurunan (dengan konstanta) dan susunan hirarki yang dapat digunakan untuk menemukan sebuah elemen dalam sebuah array. Algoritma ini mirip dengan pencarian biner di mana kita membagi array menjadi dua bagian, namun dalam algoritma ini, kita membagi array yang
diberikan menjadi tiga bagian dan menentukan bagian mana yang memiliki kunci (elemen yang dicari). Kita dapat membagi array menjadi tiga bagian
dengan mengambil mid1 dan mid2 yang dapat dihitung seperti gambar di bawah ini. Pada awalnya, l dan r akan bernilai 0 dan n-1, di mana n adalah panjang
larik.
Tenary Search Recursive Approach :
Note: Array needs to be sorted to perform ternary search on it.
Steps to perform Ternary Search:
1.First, we compare the key with the element at mid1. If found equal, we return mid1.
2.If not, then we compare the key with the element at mid2. If found equal, we return mid2.
3.If not, then we check whether the key is less than the element at mid1. If yes, then recur to the first part.
4.If not, then we check whether the key is greater than the element at mid2. If yes, then recur to the third part.
5.If not, then we recur to the second (middle) part.
Output
Index of 5 is 4
Tenary Search Iterative :
Note: Array needs to be sorted to perform ternary search on it.
Steps to perform Ternary Search:
1.First, we compare the key with the element at mid1. If found equal, we return mid1.
2.If not, then we compare the key with the element at mid2. If found equal, we return mid2.
3.If not, then we check whether the key is less than the element at mid1. If yes, then recur to the first part.
4.If not, then we check whether the key is greater than the element at mid2. If yes, then recur to the third part.
5.If not, then we recur to the second (middle) part.
Output
Index of 5 is 4
Macam – Macam Algoritma Pencarian Pencarian Jump
Seperti Pencarian Binary, Pencarian Jump adalah sebuah algoritma pencarian untuk array terurut. Ide dasarnya adalah memeriksa lebih sedikit elemen
(dibandingkan pencarian linier) dengan melompat ke depan dengan langkah- langkah tetap atau melewatkan beberapa elemen sebagai pengganti pencarian semua elemen.
Sebagai contoh, misalkan kita memiliki sebuah array arr[] dengan ukuran n dan sebuah blok (yang akan dilompati) dengan ukuran m. Kemudian kita mencari di indeks arr[0], arr[m], arr[2m]...arr[km] dan seterusnya. Setelah kita
menemukan interval (arr[km] < x < arr[(k+1)m]), kita melakukan operasi pencarian linear dari indeks km untuk menemukan elemen x.
Jump Search :
Let’s consider the following array: (0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610).
The length of the array is 16. The Jump search will find the value of 55 with the following steps
assuming that the block size to be jumped is 4.
STEP 1: Jump from index 0 to index 4;
STEP 2: Jump from index 4 to index 8;
STEP 3: Jump from index 8 to index 12;
STEP 4: Since the element at index 12 is greater than 55, we will jump back a step to come to index 8.
STEP 5: Perform a linear search from index 8 to get the element 55.
Output
Number 55 is at index 10
Macam – Macam Algoritma Pencarian Pencarian Interpolation
Diberikan sebuah array terurut dari n nilai yang terdistribusi secara seragam arr[], tuliskan sebuah fungsi untuk mencari sebuah elemen tertentu x di dalam array tersebut.
Pencarian Linier menemukan elemen tersebut dalam waktu O(n), Pencarian Jump membutuhkan waktu O(√ n) dan Pencarian Biner membutuhkan waktu O(log n).
Macam – Macam Algoritma Pencarian Pencarian Interpolation
Pencarian Interpolation adalah peningkatan dari Binary Search untuk contoh, di mana nilai dalam array yang diurutkan terdistribusi secara seragam. Interpolasi membuat titik-titik data baru dalam rentang sekumpulan titik data yang
diketahui. Pencarian Biner selalu pergi ke elemen tengah untuk diperiksa. Di sisi lain, pencarian interpolasi dapat menuju ke lokasi yang berbeda sesuai dengan nilai kunci yang dicari. Sebagai contoh, jika nilai kunci lebih dekat ke elemen terakhir, pencarian interpolasi kemungkinan akan memulai pencarian ke sisi akhir. Untuk menemukan posisi yang akan dicari, digunakan rumus berikut.
Macam – Macam Algoritma Pencarian Pencarian Ubiquitous Binary Search
Kita mengetahui algoritma pencarian biner. Pencarian biner adalah algoritma yang paling mudah untuk dilakukan dengan benar. Saya menyajikan beberapa masalah menarik yang saya kumpulkan pada pencarian biner. Ada beberapa permintaan tentang pencarian biner. Saya meminta Anda untuk menghormati kode, "Saya dengan tulus berusaha menyelesaikan masalah dan memastikan tidak ada kasus sudut". Setelah membaca setiap masalah, perkecil browser dan coba selesaikan. Pernyataan Masalah: Diberikan sebuah array terurut dengan N elemen yang berbeda, temukan sebuah kunci dalam array tersebut dengan
menggunakan jumlah perbandingan yang paling sedikit. (Menurut Anda, apakah pencarian biner optimal untuk mencari kunci dalam larik terurut?) Tanpa banyak teori, berikut ini adalah algoritma pencarian biner pada umumnya.
Macam – Macam Algoritma Pencarian Pencarian Unbounded Binary Search
Diberikan sebuah fungsi 'int f(unsigned int x)' yang mengambil sebuah bilangan bulat non-negatif 'x' sebagai masukan dan mengembalikan sebuah bilangan bulat sebagai keluaran. Fungsi ini meningkat secara monoton terhadap nilai x, yaitu nilai f(x+1) lebih besar daripada f(x) untuk setiap masukan x. Temukan nilai 'n' di mana f() menjadi positif untuk pertama kalinya. Karena f() meningkat secara monoton, nilai dari f(n+1), f(n+2), ... haruslah positif dan nilai dari f(n-2), f(n- 3), ... haruslah negatif.
Cari n dalam waktu O(logn), Anda dapat mengasumsikan bahwa f(x) dapat dievaluasi dalam waktu O(1) untuk setiap input x.
Konsep Dasar Database
• Database (basis data) adalah: sistem penyimpanan beragam jenis data dalam sebuah entitas yang besar untuk diolah sedemikian rupa agar mudah dipergunakan kembali.
• Dengan menggunakan komputer, konsep pengolahan database
tradisional dapat diotomasi sehingga memudahkan pekerjaan. Data yang disimpan bisa sangat variatif (angka, teks, gambar, suara, dan jenis data multi-media lainnya).
34
35
Konsep Basis Data
1. TABLE: Tempat data mentah disimpan. Data disusun membentuk baris (disebut record) dan kolom (disebut field)
2. FORM: Lembaran elektronik yang memudahkan pemakai untuk memasukkan, menampilkan, dan menganalisis data. Form biasanya terkait langsung dengan Table.
3. QUERY: Proses pemilihan atau penyaringan data sehingga hanya data yang diinginkan yang akan ditampilkan/dicetak
4. REPORT: Tampilan data dalam bentuk tercetak/tertulis. Dasar pembuatan Report adalah Table atau Query, dengan format yang disesuaikan keinginan pengguna.
5. MACRO: Kumpulan beberapa perintah yang dapat dilakukan secara sekaligus dalam database.
Digunakan untuk mengotomasi tugas-tugas yang sering dilakukan.
6. MODUL: Sebuah unit pemrograman berbasis Visual Basic yang disesuaikan dengan sistem aplikasi Microsoft Access. Modul dibuat sebagai sebuah program buatan untuk keperluan khusus (taylor- made).
DATABASE RELASIONAL
Aplikasi manajemen database mengenal dua macam bentuk database:
1. flat-file: semua record tersimpan dalam satu tabel;
2. database relasional: memiliki banyak tabel yang saling terkait, dengan sebuah unsur data yg berfungsi sebagai pengait (disebut primary key).
Dengan semakin banyaknya data yang dikelola, hampir tidak mungkin bahwa semua rekaman (record) disimpan dalau satu tabel. Manfaat database relasional adalah membuat sistem pengolahan data menjadi lebih efisien dan tabel data dapat dipilahkan dengan kategori yang berbeda. Fungsi primary key sangat penting dalam menemukan relasi dan logika kaitan antar tabel.
36
37
Persoalan pencarian string
Diberikan:
1. teks (text), yaitu (long) string yang panjangnya n karakter
2. pattern, yaitu string dengan panjang m karakter (m < n) yang akan dicari di dalam teks.
Carilah (find atau locate) lokasi pertama di dalam teks yang bersesuaian dengan pattern.
38
Contoh 1:
• Pattern: hari
• Teks: kami pulang hari kamis target
Contoh 2:
• Pattern: not
• Teks: nobody noticed him target
Contoh 3:
• Pattern: apa
• Teks: Siapa yang menjemput Papa dari kota Balikpapan?
39
Algoritma Brute Force
Contoh 4:
Teks: nobody noticed him Pattern: not
nobody noticed him s=0 not
s=1 not s=2 not s=3 not s=4 not s=5 not s=6 not s=7 not
40
Contoh 5:
Teks: 10010101001011110101010001 Pattern: 001011
10010101001011110101010001 s=0 001011
s=1 001011 s=2 001011 s=3 001011 s=4 001011 s=5 001011 s=6 001011 s=7 001011 s=8 001011
41
Kompleksitas algoritma brute-force:
• Kompleksitas kasus terbaik adalah O(n).
• Kasus terbaik terjadi jika yaitu bila karakter pertama pattern P tidak pernah sama dengan karakter teks T yang dicocokkan
• Pada kasus ini, jumlah perbandingan yang dilakukan paling banyak n kali misalnya:
• Teks: String ini berakhir dengan zz
• Pattern: zz
42
• Kasus terburuk: m(n – m + 1) = O(mn)
• Teks:
aaaaaaaaaaaaaaaaaaaaaaaaaaaaab
• Pattern: aaaab
43
Algoritma Knuth-Morris-Pratt (KMP)
• Dikembangkan oleh D. E. Knuth, bersama-sama dengan J.
H. Morris dan V. R. Pratt.
• Pada algoritma brute force, setiap kali ditemukan
ketidakcocokan pattern dengan teks, maka pattern digeser
satu karakter ke kanan.
44
• Sedangkan pada algoritma KMP, kita memelihara informasi yang digunakan untuk melakukan jumlah pergeseran.
• Algoritma KMP menggunakan informasi tersebut untuk
membuat pergeseran yang lebih jauh, tidak hanya satu
karakter seperti pada algoritma brute force.
45
123456789…
Teks: bimbingan belajar atau bimbel Pattern: bimbel
j = 5
123456789…
Teks: bimbingan belajar atau bimbel Pattern: bimbel
j = 2
46
Definisi:
• Misalkan A adalah alfabet dan x = x1x2…xk adalah
string yang panjangnya k yang dibentuk dari karakter- karakter di dalam alfabet A.
• Awalan (prefix) dari x adalah upa-string (substring) u dengan
u = x1x2…xj – 1 , j {1, 2, …, k } dengan kata lain, x diawali dengan u.
• Contoh 6. Misalkan x = abacab. Awalan dari x adalah:
, a, ab, aba, abac, abaca
47
• Akhiran (suffix) dari x adalah upa-string (substring) u dengan
u = xj – b xj – b + 1 …xk , j {1, 2, …, k}
dengan kata lain, x di akhiri dengan v.
• Contoh 7. Misalkan x = abacab. Akhiran dari x adalah
, b, ab, cab, acab, bacab
Akhiran mempunyai panjang 0, ab mempunyai panjang 2, dan seterusnya.
48
• Pinggiran (border) dari x adalah upa-string r sedemikian sehingga
r = x1x2…xj – 1 dan u = xj – b xj – b + 1 …xj ,
j {1, 2, …, k}
• dengan kata lain, pinggiran dari x adalah upa-string yang keduanya awalan dan juga akhiran sebenarnya dari x.
Contoh 8. Misalkan x = abacab. Pinggiran dari x adalah: , ab
49
Fungsi Pinggiran (Border Function)
• Contoh 7: T = ‘ababbabaaba’ dan P = ‘ababaa’
Iterasi 1: ababbabaaba ababaa
upastring yang cocok = abab, panjangnya = 4
pinggiran terpanjangnya = ab, panjangnya = 2 = b(4) jumlah pergeseran = 4 – 2 = 2
Iterasi 2: ababbabaaba’ ababaa
50
j 1 2 3 4 5 6
P[j] a b a b a a b(j) 0 0 1 2 3 1
October 2003 Sanath Jayasena
7-51
Contoh 8:
b a c b a b a b a a b c b a a b a b a c a
b a c b a b a b a a b c b a a b a b a c a
T s P
s’
T P
q
k a b a b a
a b a
Pq Pk
Longest prefix of Pq that is also a suffix of P5 is P3; so b[5]= 3
October 2003
Sanath Jayasena 7-52
Border Function
i 1 2 3 4 5 6 7 8 9 10
P [i] a b a b a b a b c a
b[i] 0 0 1 2 3 4 5 6 0 1
53
Kompleksitas Waktu Algoritma KMP
• Menghitung fungsi pinggiran : O(m),
• Pencarian string : O(n)
• Kompleksitas waktu algoritma KMP adalah O(m+n).
Algoritma Pencarian Blind
Breadth First Search Depth First Search
Deskripsi
• Merupakan algoritma untuk mencari kemungkinan penyelesaian
• Sering dijumpai oleh peneliti di bidang Al
Mendefinisikan permasalahan
• Mendefinisikan suatu state (ruang keadaan)
• Menerapkan satu atau lebih state awal
• Menetapkan satu atau lebih state tujuan
• Menetapkan rules (kumpulan aturan)
A unifying view (Newell and Simon)
• Ruang masalah terdiri dari:
• state space adalah himpunan state yang mungkin dari suatu permasalahan
• Himpunan operators digunakan untuk berpindah dari satu state ke state yang lain.
• Ruang masalah dapat digambarkan dengan graph, himpunan state dinyatakan dengan node dan link (arcs) menyatakan operator.
Contoh
Seorang petani ingin memindah dirinya sendiri,
1
seekor serigala, seekor angsa gemuk, dan seikat padi yang berisi menyeberangi sungai. Sayangnya,
perahunya sangat terbatas; dia hanya dapat
membawa satu objek dalam satu penyeberangan.
Dan lagi, dia tidak bisa meninggalkan serigala dan angsa dalam satu tempat, karena serigala akan memangsa angsa. Demikian pula dia tidak bisa meninggalkan angsa dengan padi dalam satu tempat.
State (ruang keadaan)
• State (Serigala, Angsa, Padi, Petani)
• Daerah asal ketika hanya ada serigala dan padi, dapat direpresentasikan dengan state (1, 0, 1, 0), sedangkan daerah tujuan adalah (0, 1, 0, 1)
State awal dan tujuan
• State awal
- Daerah asal - Darah tujuan
(1, 1, 1, 1) (0, 0, 0, 0)
• State tujuan
- Daerah asal - Darah tujuan
(0, 0, 0, 0) (1, 1, 1, 1)
1 Angsa menyeberang bersama petani 2 Padi menyeberang bersama petani
3 Serigala menyeberang bersama petani
4 Angsa kembali bersama petani 5 Padi kembali bersama petani
6 Serigala kembali bersama petani 7 Petani kembali
Rule
s
(1, 1, 1, 1) (0, 0, 0, 0) 1
(1, 0, 1, 0) (0, 1, 0, 1) 7
(1, 0, 1, 1) (0, 1, 0, 0) 3
(0, 0, 1, 0) (1, 1, 0, 1) 4
(0, 1, 1, 1) (1, 0, 0, 0) 2
(0, 1, 0, 0) (1, 0, 1, 1) 7
(0, 1, 0, 1) (1, 0, 1, 0) 1
(0, 0, 0, 0) (1, 1, 1, 1) solusi
Contoh solusi
1 4 3
7 6
5 8 2
1 4 3
7 6 2
5 8
Contoh 2 - Eight Puzzle
State space of the 8-puzzle generated by
''move blank'' operations
The 8-puzzle problem as state space search
• State
• Operator : posisi board yang legal : up, left, down, right
• Initial state (state awal) telah ditentukan
: posisi board yang
• Goal state (state akhir) telah ditentukan
: posisi board yang
Catatan :
Yang ditekankan disini bukan solusi dari 8-puzzle, tapi lintasan/path dari state awal ke state tujuan.
State space of the 8-puzzle (repeated)
''Blind search''
• BFS dan DFS disebut "Blind search" dalam arti bahwa metode ini tidak memiliki pengetahuan tentang masalah sama sekali selain ruang
permasalahan
• Metode BFS dan DFS disebut juga brute-force search, uninformed search, atau weak method
• Dengan metode ini tidak dapat berharap terlalu banyak, tapi metode ini memberikan:
- Worst-case scenarios
- dasar dari algoritma berikutnya
Search strategies
• A searc.h strategy is defined by picking the order of node expansion
• Strategies are evaluated along the following dimensions:
completeness: does it always find a solution if one exists?
time complexity: number of nodes generated
space complexity: maximum number of nodes in memory optimality: does it always find a least-cost solution?
• Time and space complexity are measured in terms of
b: maximum branching factor of the search tree
d is the depth of the solution
m is the maximum depth of the tree
14 Jan 2004 CS 3243 • Blind Search 44
Properties of BFS dan DFS
• Completeness : (Does it always find a solution?)
• Time complexity : (How long does it take?)
• Space complexity: (How much memory does it take?)
• Optimality : (Does it always insure the "best")
Properties of breadth-first search
• Completeness: Yes, if b is finite
• Time complexity: O(b dj, i.e., exponential in d (Rem: bis no. of branches)
O(b dj, keeps every node in memory
• Space complexity:
• Optimality: Yes, if cost= 1 per step; not optimal in general
• where b is the branching factor, d is the depth of the solution
Kelebihan BFS
• Tidak akan menemui jalan buntu
• Jika ada satu solusi, maka BFS akan
menemukannya. Dan jika ada lebih dari satu solusi, maka solusi minimum akan ditemukan.
Kelemahan BFS
• Membutuhkan memori yang cukup banyak, karena menyimpan semua node dalam satu pohon.
• Membutuhkan waktu yang cukup lama, karena akan menguji n level untuk
mendapatkan solusi pada level ke-(n+l)
Properties of depth-first search
• Completeness:
• Time
complexity:
No, fails in infinite state- space
O(bm)
terrible if m is much larger than d
but if solutions are dense, may be much faster than breadth- first
• Space complexity: O(bm)
• Optimality: No
where b is the branching factor, m is the maximum depth of the tree
Kelebihan DFS
• Membutuhkan memori yang relatif kecil,
karena hanya node-node pada lintasan yang aktif saja yang disimpan.
• Secara kebetulan, metode DFS akan
menemukan solusi tanpa harus menguji lebih banyak lagi dalam ruang keadaan.
Kelemahan DFS
• Memungkinkan tidak ditemukan tujuan yang diharapkan
• Hanya akan mendapatkan 1 solusi pada setiap pencar1• an
Implementasi Algoritma Pencarian (Search Engine)
Cara Kerja Search Engine
Archie
• Archie mengumpulkan daftar situs FTP ke dalam suatu database, dan pengguna dapat melakukan permintaan (query) terhadap database ini.
• Archie menyediakan ekspresi teks yang cocok di dalam nama file yang diinginkan pengguna
dengan daftar file yang ada dalam database.
• Ketika kecocokan ditemukan, pengguna akan diberikan nama file yang lengkap, ukuran, dan alamatnya.
Cara Kerja Search Engine - lanjt
Veronica
• Veronica adalah sistem pencarian dokumen di Ghoper.
• Ghoper adalah suatu sistem dokumen teks di internet (tidak mengandung image)
• Dokumen yang tersedia dalam ghoper bisa di download
oleh pengguna.
• Veronica akan mencari dokumen teks untuk query atau string yang diinginkan pengguna.
Cara Kerja Search Engine - lanjt
Wanderer
• Wanderer bisa disebut sebagai search engine yang pertama di www, yang membuat database URL.
• Wanderer memicu untuk dibuatnya suatu program
pencarian yang lebih akurat yang disebut dengan Spider.
Cara Kerja Search Engine - lanjt
Spider
• Spider dimulai pada situs yang populer pada halaman awal kemudian bergerak ke halaman lain mengikuti hyper/ink.
• Spider akan mengirimkan informasi tentang judul dan header suatu halaman web.
• lnformasinya kemudian dikompilasi kedalam
database yang dapat dicari melalui string query.
Cara Kerja Search Engine - lanjt
• Search Engine
Wob Po.goo
Wob Pagos
D
- - -
- - - , ■
User I n d e Server Spider Server
Web Page Web Sites
Cara Kerja Search Engine - lanjt
• Ada 3 fungsi utama di dalam search engine:
• pengumpulan informasi
• pembuatan database,
• pencarian database.
Cara Kerja Search Engine - lanjt
Information Gathering
• Proses pengumpulan informasi dilakukan oleh web crawler yang berfungsi mengunjungi /
merayapi setiap situs yang tersimpan di internet.
• Tugasnya menjelajah ke banyak situs yang ada di internet untuk mengumpulkan informasi.
Cara Kerja Search Engine - lanjt
Indexing
• Setelah web crawler selesai menjelajahi sebuah situs, maka ada server yang bertugas membuat indeks apa saja yang ada dalam situs itu.
• lndeks ini akan menjadi bagian yang sangat penting, sebab di dalamnya berisi data yang
mengatakan bahwa kata yang kita cari ada di dalam situs tertentu.
• Setelah diindeks, semua halaman situs disimpan didalam sebuah server yang memiliki ruang yang
sangat luas, karena data yang disimpan dalam server ini akan terus bertambah besar.
Cara Kerja Search Engine - lanjt
Searching
• Ketika pengguna memasukkan frasa atau kata, search engine bergeser melalui indeks dan
memanggil URL dimana kata-kata atau frasa ini terjadi.
• Sekali daftar URL ini dibuat, search engine
akan mengurutkannya berdasarkan relevansinya.
• Semakin relevan URL akan ditampilkan pada urutan yang tertinggi di dalam daftar.
Fitur Umum Search Engine
• Boolean Searching
• Pencarian secara boolean merupakan metode yang paling umum dari suatu search enginee.
• Operator boolean menggunakan AND, OR dan NOT.
• Operator AND digunakan ketika semua kata kunci diperlukan di dalam suatu dokumen
• Operator OR digunakan ketika hanya salah satu kata kunci yang diperlukan di dalam suatu dokumen
Fitur Umum Search Engine - lanjt
• Boolean Searching - lanjt
e-commerce AND business e-commerce OR business
e-commerce business
e-commerce business ,
Fitur Umum Search Engine - lanjt
• Boolean Searching - lanjt
• Operator NOT digunakan dalam kasus polisemi, sebagai contoh kata kunci adalah "stars'' yang mempunyai makna di dalam astronomi.
• Sehingga halaman-halaman dalam hal movie/film tidak perlu ditampilkan, maka ekspresi pencariannya adalah "star AND NOT Hollywood"
Strategi Fleksibel Search Engine
• Search engine bekerja dengan baik apabila pengguna mengikuti suatu strategi.
1. Menentukan frasa dari proses pencarian.
2. Memilih search engine yang paling cocok.
• Pencarian dengan spesifikasi tinggi, sebaiknya
menggunakan pencarian database seperti Google dan Yahoo, yang mempunyai presisi yang tinggi
3. Membangun ekstraksi / query pencarian.
Permasalahan Pencarian Rute Terpendek
• Masalah rute terpendek berkaitan dengan penentuan busur-busur yang hubungkan dalam sebuah jaringan yang secara bersama-sama membentuk jarak terdekat diantara sumber dan tujuan. Sehingga ada beberapa macam persoalan rute terpendek yang dapat dicari:
1.Lintasan terpendek antara dua buah simpul tertentu (a pair shortest path).
2.Lintasan terpendek antara semua pasangan simpul (a// pairs shortest path).
3.Lintasan terpendek dari simpul tertentu ke
semua simpul yang lain (single-source shortest path).
4.Lintasan terpendek antara dua buah simpul yang melalui beberapa simpul tertentu
(intermediate shortest path).
Part 1
0
DIJKSTRA ALGORITHM
Introduction Dijkstra's Algorithm
• Ditemukan oleh Edger Dikstra.
• Algoritma pencarian dimulai dari titik awak ke titik lainnya pada sebuah directed graph dengan bobot-bobot sisi yang bernilai positif.
• Menurut Chamero, 2006:
"algoritma Dijkstra merupakan alogoritma yang paling sering digunakan
pencarian rute terpendek, dalam dengan menggunakan simpul-simpul sederhana pada jaringan jalan yang tidak rumit.
Cont.
.
• Algoritma Dijkstra menggunakan pnns1p
mencari solusi optimum
greedy dalam mencari solusi
pada yaitu setiap langkah yang dilalui.
• Cara kerja algoritma ini hampir sama dengan algoritma BFS dengan antrian priority queue, jadi hanya simpul prioritas tinggi yang ditelusuri.
• Algoritma ini membandingkan setiap nilai dari simpul pada satu level, dan akan dibandingkan lagi untuk rute yang baru.
Detail and complexity of Dijkstra Algorithm
• Secara umum urutan logika algoritma ini adalah sebagai berikut:
1. Beri nilai bobot Uarak) untuk setiap titik ke titik lainnya, lalu set nilai O pada node awal dan nilai tak hingga terhadap node lain (yang belum terisi).
2.Set semua node "Belum terjamah" dan set node awal sebagai "Node keberangkatan'.
3. Dari node keberangkatan, pertimbangkan node tetangga yang belum terjamah dan hitung jaraknya dari titik keberangkatan.
4. Setelah selesai mempertimbangkan setiap jarak terhadap node tetangga, tandai node yang telah terjamah sebagai
"Node terjamah". Node terjamah tidak akan pernah di eek
kembali, jarak yang disimpan adalah jarak terakhir dan yang paling minimal bobotnya.
5. Set "Node belum terjamah" dengan jarak terkecil (dari node keberangkatan) sebagai "Node Keberangkatan"
selanjutnya dan lanjutkan dengan kembali ke step 3
Cont.
.
• Kompleksitas algoritma Dijkstra adalah O(n2), dengan n adalah jumlah simpul pada graf. Kompleksitas ini bisa diperbaiki dengan penggunaan struktur data senarai ketetanggaan (adjacency list) atau antrian prioritas (priority queue) untuk memperoleh kompleksitas O((m+n) log n
•
Sample case studi with Dijkstra Algorithm
• Menentukan rute terpendek untuk perjalanan antar kota. Pada graph di bawah dengan menggunakan Dijkstra dapat dicari rute terpendek antara kota Ake kota C:
r4k 17km
41km
" ® - - 3 3 k - - '
26km
) r - - - 6 4 6 4 k , , . , -..-:G::--.1
55km 30km
>--34km-
0Y
Cont.
.
•Tahapan penulusuran jalur dengan Dijkstra Tahap 1:
Dari kota A, orang lersebul akan memilih kola F dengan bobol minimum dari kola A (30 km).
Tahap 2:
Dari kota F, orang lersebut kemudian memilih kota
E
yang memiliki bobot minimum dari kota F (26 km).
Tahap 3:
lerhubung) Tahap 4:
Dari kola D, orang perjalanan dan sampai ke kola C.
perjalanan ke kota D
Dari kola E, orang lersebul akan
(salu-satunya lersebul
melanjulkan simpul yang
lalu melanjulkan
Cont.
.
• Total jarak yang ditempuh oleh orang tersebut adalah = 97 km dengan jalur (A - F - E D C).Dalam representasi graf, warna merah pada sisi graf menunjuk ke jalur terpendekmenurut algoritma Dijkstra.
-...,-{HY
55km• Kelemahan algoritma ini adalah semakin banyak titik akan semakin memakan waktu proses.
• Jumlah titik menentukan tingkat efektifitas dari algoritma djikstra.
Part 11
°
FLOYD-WARSHALL
ALGORITHM
INTRODUCTION FLOYD-WARSHALL ALGORITHM
• Algoritma Floyd Warshall adalah salah satu cabang dari ilmu
matematika yang salah satu fungsinya adalafi untuk
menyelesaikan masalah lintasan terpendek.
• Dalam Algoritma Floyd terdapat
fungsi (G=V E) dengan G = graf yang merupakan kumpulan simpul (nodes) yang dihubungkan satu sama lain
melalui sisi/busur (edges).
0
CONT..
• Suatu Graf G terdiri dari dua
h!mpunan _yaitu himpunan V dan
h1mpunan E.
Verteks (simpul) : V = himpunan
simpul yang terbatas dan t1dak kosong.
Edge (sisi/busur): E =
himpunan
busuryang_menghubungkan sepasang s1mpuT.
• Notasi graf: G(V,E) artinya graf G memilil<1 V simpul clan E busur.
0
•Algoritma Floyd membandingkan CffllUJl'_kemungkinan lintasan pada
-graT1.n:m.1k setiap sisi dari semua simpul.
• Hal tersebut bisa terjadi karena adanya perkiraan pengambilan keputusan (pemilihan Jalur
terper:idek). P. da setiap ahap antara dua s1mpul, h1ngga perk1raan
tersebut diketaliu1 sebagai nilai optimal.
• Algoritma Floyd y ang men rapkan pemrograman d1nam1s leb1h
menjamin keberhasilan penemuan solusi optimum untuk kasus
penentuan lintasan terpendek (single pair shortest path)
• Algqritma ini berjalan dengan waktu 0(V").
0
SAMPLE CASE STUDI WITH FLOYD-WARSHALL
ALGORITHM
Misalkan terdapat suatu graf berbobot yang merepresentasikan kondisi
keterhubungan antarkota di suatu daerah, dengan ilustrasi sebagai berikut. Misalkan seseorang al<an melakukan perjalanan dari T<ota A ke kota C.
0
s Solusi optimum
Ii (s) x,
B 33 A
F 30 A
H 34 A
•Basis
•Rekurens: h.(s) = min XL {crks+h.-1(-"k)}. k = 2. 3. 4
•Tabap I:
• /, (s) = CX1S
CONT.
0
Tahap 2: fi (s)
=
min s2 {cx2s +/i(x2)
X2
s h (x2. s)
-
CX2S +/i(x2)
Solusi optimum
B F H
Ii
(s) X2C 74 90 00 74 B
E 00 56 00 26 F
G 00 94 89 89 I-I
CONT..
0
Dari hasil pencarian jalur terpendek dari A ke C menggunakan algoritma Floyd Warshall (pemrograman dinamis),
ditemukan bahwa jarak terpendek dari A ke C adalah 74km dengan jalur (A - B - C).
Part Ill
0
BELLMAN-FORD
ALGORITHM
Introduction Of Bellman-Ford Algorithm
• Dikembangkan Oleh Richard Bellman dan Lester Ford
• Algoritma ini mirip dengan algoritma
Djikstra tetapi Algoritma ini mampu
menghitung path yang memiliki bobot
negatif, namun waktu yang dibutuhkan
oleh algoritma ini lebih lama dari pada
algoritma Djikstra.
Bellman-Ford Algorithm
Algoritma Belman-Ford Algoritma yang digunakan
Yaitu untuk menghitung jarak terpendek (shortest path) dari suatu graf berarah.
Algoritma Bellman-ford sangat efisien
digunakan jika ada sisi yang berbobot
negatif.
Bellman-Ford Algorithm
• Cara kerja algoritma ini dalam mencari jarak terpendek adalah dengan menghitung setiap kemungkinan node yang mengarah ke node tujuan tersebut.
• algoritma Bellman-Ford mengembalikan sebuah nilai Boolean yang mengindikasikan apakah terdapat siklus berbobot negatif yang dapat dilalui oleh simpul awal atau tidak. Jika terdapat siklus negatif algoritma akam mengindikasikan bahwa tidak terdapat solusi shortest path dan jika tidak, maka algoritma akan menghasilkan shortest path beserta bobotnya.
• Algoritma ini melakukan iterasi dalam setiap langkahnya sebanyak n-1, dimana adalah n jumlah node yang terdapat dalam graf. Dengan demikian kompleksitas algoritma ini cukup tinggi.
Bellman-Ford Algorithm
• Kompleksitas waktu dari Algoritma
Bellman-Ford ini dapat dinyatakan
dengan notasi Big O(V.E), V adalah
banyaknya s1s1 dan E adalah
banyaknya titik.
Pseudocode Bellman-Ford Algorithm
Be//Jnan-Ford(G. H'. s)
Ini1iali=e-Si11gle-Source(G.s) for/ I t IoV [ G J l - 1
do for. etiap sisi (u. v) c E[G]
do Relax (u•, . w )
do
if
d[,j > d[u} + H•(zt, ,•)tl,en rerurn FALSE I.
2.
3.
4.
5 . for setiap sisi (u. v) c E[G}
6.
7.
8. Return TRUE
Menghitung Algoritma Bellman Ford
• Disini kita akan menghitung jarak (shortest path) terpendek dari atas hingga bawah.
Menghitung Algoritma Bellman Ford
• Langkah Pertama . terdapat tiga pilihan yaitu jalur 6, 4 dan 8.
disini meskipun yang terkecil adalah 4, tetapi dalam Bellman Ford memperhatikan juga solusi totalnya dan memperhatikan jalur negatif yang akan dilalui, jalur 6 dipilih
karena kemudian hasilnya akan lebih sedikit dibandingkan jalur 4.
Menghitung Algoritma Bellman Ford
7 4 °
- 3 3
< v-
; 3
9 -8 5
/i \ 3
2
99
99 <