• Tidak ada hasil yang ditemukan

Design and Analysis Algorithm. Ahmad Afif Supianto, S.Si., M.Kom. Pertemuan 08

N/A
N/A
Protected

Academic year: 2021

Membagikan "Design and Analysis Algorithm. Ahmad Afif Supianto, S.Si., M.Kom. Pertemuan 08"

Copied!
63
0
0

Teks penuh

(1)

Design

and

Analysis

Algorithm

Ahmad Afif Supianto, S.Si., M.Kom

(2)

Contents

Insertion and Selection Sort 2

Decrease and Conguer 3

1

DFS and BFS 3 3

Binary Search Tree 4

(3)

Decrease and conquer

1.

Mengurangi permasalahan menjadi lebih kecil

pada permasalahan yang sama

2.

Selesaikan permasalahan yang lebih kecil

tersebut

3.

Kembangkan permasalahan yang lebih kecil

itu sehingga menyelesaikan permasalahan

sebenarnya

4.

Dapat dilakukan dengan dengan metode top

down atau bottom up

(4)

Variasi decrease and conquer

Decrease by a constant (Mengurangi secara

konstan atau tetap)

The size of a problem instance is reduced by

the same constant factor (usually two) on each

iteration of the algorithm (dikurangi secara

faktar konstan yang sama)

A size reduction pattern varies from one

iteration to another (Ukuran pengurangan

(5)

Decrease by a constant (usually by 1):

 insertion sort

 graph traversal algorithms (DFS and BFS)

 topological sorting

 algorithms for generating permutations, subsets

Decrease by a constant factor (usually by half)

 binary search and bisection method

 exponentiation by squaring  multiplication à la russe  Variable-size decrease  Euclid’s algorithm  selection by partition  Nim-like games

Biasanya menggunakan algoritma rekursif.

(6)

Permasalahan eksponensial: Hitung x

n

Brute Force:

Divide and conquer:

Decrease by one:

Decrease by

constant factor:

n-1 multiplications T(n) = 2*T(n/2) + 1 = n-1 T(n) = T(n-1) + 1 = n-1 T(n) = T(n/a) + a-1 = (a-1) n = when a = 2



log

a

n

2

log

6

(7)

Insertion sort

To sort array A[0..n-1], sort A[0..n-2] recursively

and then insert A[n-1] in its proper place among

the sorted A[0..n-2]

Usually implemented bottom up

(non-recursively)

Example: Sort 6, 4, 1, 8, 5

6 | 4 1 8 5

4 6 | 1 8 5

1 4 6 | 8 5

1 4 6 8 | 5

1 4 5 6 8

7

(8)
(9)
(10)
(11)

Kompleksitas waktu algoritma Insertion Sort: Penyelesaian: T(n) = cn + T(n – 1) = cn + { c (n – 1) + T(n – 2) } = cn + c(n – 1) + { c (n – 2) + T(n – 3) } = cn + c (n – 1) + c (n – 2) + {c(n – 3) + T(n – 4) } = ... = cn+c(n–1)+c(n–2)+c(n–3)+...+c2+T(1) = c{ n + (n – 1) + (n – 2) + (n – 3) + ... + 2 } + a = c{ (n – 1)(n + 2)/2 } + a = cn2/2+cn/2 +(a–c) = O(n2) 11

(12)
(13)
(14)

Misalkan tabel A berisi elemen-elemen berikut:

(15)

Kompleksitas waktu algoritma:

Penyelesaian (seperti pada Insertion Sort):

(16)

Depth-First Search (DFS)

Mengunjungi vertex-vertex pada grafik dengan selalu bergerak dari vertex yang terakhir dikunjungi ke vertex yang belum dikunjungi, lakukan backtrack apabila tidak ada vertex tetangga yang belum dikunjungi.

Rekursif atau menggunakan stack

 Vertex di-push ke stack ketika dicapai untuk pertama kalinya

 Sebuah vertex di-pop off atau dilepas dari stack ketika vertex tersebut merupakan vertex akhir (ketika tidak ada vertex tetangga yang belum dikunjungi)

“Redraws” atau gambar ulang grafik dalam bentuk seperti pohon (dengan edges pohon dan back edges untuk grafik tak berarah/undirected graph)

(17)

Pseudo code DFS

(18)

Example: DFS traversal of undirected graph

a b

e f

c d

g h

DFS traversal stack: DFS tree:

a b e f c d g h a ab abf abfe abf ab abg abgc abgcd abgcdh abgcd …

Red edges are tree edges and black edges are back edges. 1 2 5 4 6 3 7 8

(19)

Notes on DFS

Time complexity of DFS is O(|V|). Why?

each edge (u, v) is explored exactly once,

All steps are constant time.

(20)

Breadth-first search (BFS)

Mengunjungi vertex-vertex grafik dengan berpindah ke semua vertex tetangga dari vertex yang terakhir

dikunjungi

BFS menggunakan queue

Mirip dengan level ke level dari pohon merentang

“Redraws” atau gambar ulang grafik dalam bentuk

seperti pohon (dengan edges pohon dan back edges untuk grafik tak berarah/undirected graph)

(21)

Example of BFS traversal of undirected

graph

BFS traversal queue: a b e f c d g h BFS tree: a b e f c d g h a bef efg fg g ch hd d

Red edges are tree edges and black edges are cross edges.

1 3 2 6 4 5 7 8 21

(22)
(23)

Notes on BFS

Asumsi: setiap simpul dapat membangkitkan b buah simpul baru.

Misalkan solusi ditemukan pada aras ke-d

Jumlah maksimum seluruh simpul:

1+b+b2 +b3 +...+bd =(bd+1 –1)/(b–1)

T(n) = O(bd)

Kompleksitas ruang algoritma BFS = sama dengan

kompleksitas waktunya, karena semua simpul daun dari pohon harus disimpan di dalam memori selama proses pencarian.

(24)

Breadth First Search (grafik berarah)

s 2 5 4 7 8 3 6 9

(25)

Breadth First Search

s 2 5 4 7 8 3 6 9 0 Undiscovered Discovered Finished Queue: s Top of queue 2 1 Shortest path from s 25

(26)

Breadth First Search

s 2 5 4 7 8 3 6 9 0 Queue: s 2 3 1 1 Undiscovered Discovered Finished Top of queue

(27)

Breadth First Search

s 2 5 4 7 8 3 6 9 0 Queue: s 2 3 5 1 1 1 Undiscovered Discovered Finished Top of queue 27

(28)

Breadth First Search

s 5 7 8 3 6 9 0 Queue: s 2 3 5 1 1 1 Undiscovered Discovered Finished Top of queue 4 2

(29)

Breadth First Search

s 2 5 4 7 8 3 6 9 0 Queue: 2 3 5 4 1 1 1 2 Undiscovered Discovered Finished Top of queue 29

(30)

Breadth First Search

s 2 5 4 7 8 3 6 9 0 Queue: 2 3 5 4 1 1 1 2 5 already discovered: don't enqueue Undiscovered Discovered Finished Top of queue

(31)

Breadth First Search

s 2 5 4 7 8 3 6 9 0 Queue: 2 3 5 4 1 1 1 2 Undiscovered Discovered Finished Top of queue 31

(32)

Breadth First Search

s 2 5 4 7 8 3 6 9 0 Queue: 3 5 4 1 1 1 2 Undiscovered Discovered Finished Top of queue

(33)

Breadth First Search

s 2 5 4 7 8 3 6 9 0 Queue: 3 5 4 1 1 1 2 6 2 Undiscovered Discovered Finished Top of queue 33

(34)

Breadth First Search

s 2 5 4 7 8 3 6 9 0 Queue: 3 5 4 6 1 1 1 2 2 Undiscovered Discovered Finished Top of queue

(35)

Breadth First Search

s 2 5 4 7 8 3 6 9 0 Queue: 5 4 6 1 1 1 2 2 Undiscovered Discovered Finished Top of queue 35

(36)

Breadth First Search

s 2 5 4 7 8 3 6 9 0 Queue: 5 4 6 1 1 1 2 2 Undiscovered Discovered Finished Top of queue

(37)

Breadth First Search

s 2 5 4 7 8 3 6 9 0 Queue: 4 6 1 1 1 2 2 Undiscovered Discovered Finished Top of queue 37

(38)

Breadth First Search

s 2 5 4 7 8 3 6 9 0 Queue: 4 6 1 1 1 2 2 8 3 Undiscovered Discovered Finished Top of queue

(39)

Breadth First Search

s 2 5 4 7 8 3 6 9 0 Queue: 4 6 8 1 1 1 2 2 3 Undiscovered Discovered Finished Top of queue 39

(40)

Breadth First Search

s 2 5 4 7 8 3 6 9 0 Queue: 6 8 1 1 1 2 2 3 7 3 Undiscovered Discovered Finished Top of queue

(41)

Breadth First Search

s 2 5 4 7 8 3 6 9 0 Queue: 6 8 7 1 1 1 2 2 3 9 3 3 Undiscovered Discovered Finished Top of queue 41

(42)

Breadth First Search

s 2 5 4 7 8 3 6 9 0 Queue: 6 8 7 9 1 1 1 2 2 3 3 3 Undiscovered Discovered Finished Top of queue

(43)

Breadth First Search

s 2 5 4 7 8 3 6 9 0 Queue: 8 7 9 1 1 1 2 2 3 3 3 Undiscovered Discovered Finished Top of queue 43

(44)

Breadth First Search

s 2 5 4 7 8 3 6 9 0 Queue: 7 9 1 1 1 2 2 3 3 3 Undiscovered Discovered Finished Top of queue

(45)

Breadth First Search

s 2 5 4 7 8 3 6 9 0 Queue: 7 9 1 1 1 2 2 3 3 3 Undiscovered Discovered Finished Top of queue 45

(46)

Breadth First Search

s 2 5 4 7 8 3 6 9 0 Queue: 7 9 1 1 1 2 2 3 3 3 Undiscovered Discovered Finished Top of queue

(47)

Breadth First Search

s 2 5 4 7 8 3 6 9 0 Queue: 7 9 1 1 1 2 2 3 3 3 Undiscovered Discovered Finished Top of queue 47

(48)

Breadth First Search

s 2 5 4 7 8 3 6 9 0 Queue: 9 1 1 1 2 2 3 3 3 Undiscovered Discovered Finished Top of queue

(49)

Breadth First Search

s 2 5 4 7 8 3 6 9 0 Queue: 9 1 1 1 2 2 3 3 3 Undiscovered Discovered Finished Top of queue 49

(50)

Breadth First Search

s 2 5 4 7 8 3 6 9 0 Queue: 9 1 1 1 2 2 3 3 3 Undiscovered Discovered Finished Top of queue

(51)

Breadth First Search

s 2 5 4 7 8 3 6 9 0 Queue: 1 1 1 2 2 3 3 3 Undiscovered Discovered Finished Top of queue 51

(52)

Breadth First Search

s 2 5 4 7 8 3 6 9 0 Level Graph 1 1 1 2 2 3 3 3

(53)

Latihan: Gunakan algoritma BFS dan DFS untuk

menemukan pohon merentang (spanning tree) dari graf G di bawah ini jika traversalnya dimulai dari simpul e. Dalam menjawab soal ini, perlihatkan traversal

BFS/DFS sebagai pohon berakar dengan e sebagai akarnya.

(54)

Binary Search Tree

Several algorithms on BST

requires recursive processing of

just one of its subtrees, e.g.,

Searching

Insertion of a new key

Finding the smallest (or the

largest) key

k

(55)

Binary Search Tree

A binary search tree Not a binary search tree

(56)
(57)

Searching (Find)

Find X: return a pointer to the node that has key X, or NULL if there is no such node

Time complexity: O(height of the tree)

BinaryNode * BinarySearchTree::Find(const float &x, BinaryNode *t) const {

if (t == NULL) return NULL;

else if (x < t->element)

return Find(x, t->left); else if (t->element < x)

return Find(x, t->right); else

return t; // match }

(58)

Algorithm BST(x, v)

//Searches for node with key equal to v in BST rooted at node x

if x = NIL return -1

else if v = K(x) return x

else if v < K(x) return BST(left(x), v) else return BST(right(x), v)

Efficiency

worst case: C(n) = n

average case: C(n) ≈ 2ln n ≈ 1.39log2 n, if the BST was built from n random keys and v is chosen randomly.

(59)

Aplikasi DFS dan BFS

Search Engine (google, yahoo, altavista).Komponen search engine:

 Web Spider : program penjelajah web (web surfer)

 Index: basisdata yang menyimpan kata-kata penting pada setiap halaman web

 Query: pencarian berdasarkan string yang dimasukkan oleh pengguna (end- user)

Secara periodik (setiap jam atau setiap hari), spider menjejalahi internet untuk mengunjungi

halaman-halaman web, mengambil kata-kata penting di dalam web, dan menyimpannya di dalam index. Query

dilakukan terhadap index, bukan terhadap website yang aktual.

(60)
(61)
(62)

Bagaimana spider menjelajahi (surfing) web?

Halaman web dimodelkan sebagai graf berarah

Simpul menyatakan halaman web (web page)

Sisi menyatakan link ke halaman web

Bagaimana teknik menjelajahi web? Secara

DFS atau BFS

Dimulai dari web page awal, lalu setiap link

ditelusuri secara DFS sampai setiap web page

tidak mengandung link.

Pada setiap halaman web, informasi di

dalamnya dianalisis dan disimpan di dalam

basisdata index.

(63)

Referensi

Dokumen terkait