• Tidak ada hasil yang ditemukan

Sejarah dan Tingkatan Bahasa Pemrograman

N/A
N/A
Rifqi Hidayat

Academic year: 2024

Membagikan "Sejarah dan Tingkatan Bahasa Pemrograman"

Copied!
120
0
0

Teks penuh

(1)

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)

(2)

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.

(3)

Pendahuluan

Program adalah sekumpulan instruksi untuk menyelesaikan masalah

Bahasa pemrograman adalah bahasa

komputer yang digunakan untuk menyusun suatu program

(4)

Tingkatan Bahasa Pemrograman

• Bahasa tingkat rendah

• Bahasa tingkat menengah

• Bahasa tingkat tinggi

(5)

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

(6)

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)

(7)

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.

(8)

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

(9)

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).

(10)

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.

(11)

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.

(12)

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

(13)

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

(14)

 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”

(15)

Contoh

a. Siapa nama mahasiswa dengan NIM 13102056 ? single match

b. Siapa saja yang mendapat nilai algoritma ≥ 85 ? multiple matches

(16)

 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)

(17)

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

(18)

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

(19)

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.

(20)

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.

(21)

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

(22)

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).

(23)

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

(24)

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

(25)

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.

(26)

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

(27)

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

(28)

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.

(29)

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

(30)

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).

(31)

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.

(32)

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.

(33)

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.

(34)

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)

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).

(36)

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)

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)

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)

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)

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)

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)

42

• Kasus terburuk: m(n – m + 1) = O(mn)

• Teks:

aaaaaaaaaaaaaaaaaaaaaaaaaaaaab

• Pattern: aaaab

(43)

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)

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)

45

123456789…

Teks: bimbingan belajar atau bimbel Pattern: bimbel

j = 5

123456789…

Teks: bimbingan belajar atau bimbel Pattern: bimbel

j = 2

(46)

46

Definisi:

Misalkan A adalah alfabet dan x = x1x2xk 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 = x1x2xj – 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)

47

• Akhiran (suffix) dari x adalah upa-string (substring) u dengan

u = xjb xjb + 1xk , 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)

48

Pinggiran (border) dari x adalah upa-string r sedemikian sehingga

r = x1x2xj – 1 dan u = xjb xjb + 1xj ,

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)

49

Fungsi Pinggiran (Border Function)

(50)

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

(51)

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

(52)

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)

53

Kompleksitas Waktu Algoritma KMP

• Menghitung fungsi pinggiran : O(m),

• Pencarian string : O(n)

• Kompleksitas waktu algoritma KMP adalah O(m+n).

(54)

Algoritma Pencarian Blind

Breadth First Search Depth First Search

(55)

Deskripsi

• Merupakan algoritma untuk mencari kemungkinan penyelesaian

• Sering dijumpai oleh peneliti di bidang Al

(56)

Mendefinisikan permasalahan

• Mendefinisikan suatu state (ruang keadaan)

• Menerapkan satu atau lebih state awal

• Menetapkan satu atau lebih state tujuan

• Menetapkan rules (kumpulan aturan)

(57)

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.

(58)

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.

(59)

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)

(60)

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)

(61)

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

(62)

(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

(63)

1 4 3

7 6

5 8 2

1 4 3

7 6 2

5 8

Contoh 2 - Eight Puzzle

(64)

State space of the 8-puzzle generated by

''move blank'' operations

(65)

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.

(66)

State space of the 8-puzzle (repeated)

(67)

''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

(68)

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

(69)

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")

(70)

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

(71)

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.

(72)

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)

(73)

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

(74)

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.

(75)

Kelemahan DFS

Memungkinkan tidak ditemukan tujuan yang diharapkan

Hanya akan mendapatkan 1 solusi pada setiap pencar1an

(76)

Implementasi Algoritma Pencarian (Search Engine)

(77)

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.

(78)

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.

(79)

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.

(80)

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.

(81)

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

(82)

Cara Kerja Search Engine - lanjt

Ada 3 fungsi utama di dalam search engine:

pengumpulan informasi

pembuatan database,

pencarian database.

(83)

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.

(84)

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.

(85)

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.

(86)

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

(87)

Fitur Umum Search Engine - lanjt

• Boolean Searching - lanjt

e-commerce AND business e-commerce OR business

e-commerce business

e-commerce business ,

(88)

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"

(89)

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.

(90)

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).

(91)

Part 1

0

DIJKSTRA ALGORITHM

(92)

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.

(93)

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.

(94)

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

(95)

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

(96)

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

(97)

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

(98)

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.

(99)

Part 11

°

FLOYD-WARSHALL

ALGORITHM

(100)

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

(101)

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

(102)

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

(103)

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

(104)

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

(105)

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) X2

C 74 90 00 74 B

E 00 56 00 26 F

G 00 94 89 89 I-I

(106)

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).

(107)

Part Ill

0

BELLMAN-FORD

ALGORITHM

(108)

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.

(109)

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.

(110)

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.

(111)

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.

(112)

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

(113)

Menghitung Algoritma Bellman Ford

Disini kita akan menghitung jarak (shortest path) terpendek dari atas hingga bawah.

(114)

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.

(115)

Menghitung Algoritma Bellman Ford

7 4 °

- 3 3

< v-

; 3

9 -8 5

/i \ 3

2

99

99 <

Referensi

Dokumen terkait

Proses tersebut tentu tidak ditemukan begitu saja, pasti terdapat sejarah dari bahasa pemrograman sehingga dapat berevolusi menjadi bahasa tingkat tinggi yang kita

Melahirkan idea yang berasas tentang sejarah kerajaan Alam Melayu.. KSSM SEJARAH

pemrograman sesuai dengan program yang akan dibuat, berikut adalah jenis jenis bahasa. pemrograman yang paling sering

Dokumen ini membahas tentang terminologi dan proses

Makalah ini membahas tentang pengertian dan sejarah ejaan bahasa

Dokumen ini membahas tentang sejarah, fungsi, dan edukasi Bahasa

Dokumen ini membahas tentangTingkatan Perbandingan dalam Bahasa Inggris, yaitu Comparison

KOMPETENSI DASAR 3.2 Memahami Perangkat Lunak Bahasa Pemrograman 3.2 Memahami Perangkat Lunak Bahasa Pemrograman 4.2 Melakukan Instalasi Perangkat Lunak Bahasa Pemrograman 4.2