Anda di halaman 1dari 63

Design and Analysis Algorithm

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

Pertemuan 08

Contents
1
3

Decrease and Conguer

Insertion and Selection Sort

DFS and BFS

Binary Search Tree

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

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
bervariasi dari satu iterasi ke iterasi lainnya).

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
Euclids algorithm
selection by partition
Nim-like games

Biasanya menggunakan algoritma rekursif.

Permasalahan eksponensial: Hitung xn

Brute Force:

n-1 multiplications

Divide and conquer:

T(n) = 2*T(n/2) + 1
= n-1

Decrease by one:

T(n) = T(n-1) + 1 = n-1


T(n) = T(n/a) + a-1

Decrease by
constant factor:
6

log a
log 2 n

= (a-1)

when a = 2

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 (nonrecursively)


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

Pseudo code Insertion sort

10

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(n1)+c(n2)+c(n3)+...+c2+T(1)
= c{ n + (n 1) + (n 2) + (n 3) + ... + 2 } + a
= c{ (n 1)(n + 2)/2 } + a
= cn2/2+cn/2 +(ac)
= O(n2)
11

Selection sort

12

13

Misalkan tabel A berisi elemen-elemen berikut:

Langkah-langkah pengurutan dengan Selection Sort:

14

Kompleksitas waktu algoritma:

Penyelesaian (seperti pada Insertion Sort):

15

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

Pseudo code DFS

17

Example: DFS traversal of undirected graph


a

DFS traversal stack:


a
ab
abf
abfe
abf
ab
abg
abgc
abgcd
abgcdh
abgcd

DFS tree:

e
f
g
4
3
5
Red edges are tree edges
and black edges are back
edges.
18

h
8

Notes on DFS
Time complexity of DFS is O(|V|). Why?
each edge (u, v) is explored exactly once,
All steps are constant time.

19

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)

20

Example of BFS traversal of undirected


graph
a

h
BFS tree:

BFS traversal queue:


a
bef
efg
fg
g
ch
hd
d

3
4
5
7
Red edges are tree edges and
black edges are cross edges.
21

Pseudo code BFS

22

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)/(b1)
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.
23

Breadth First Search (grafik berarah)


2

24

Breadth First Search


Shortest path
from s

1
2

Undiscovered

Discovered

Queue: s

Top of queue

Finished

25

Breadth First Search


1
2

Undiscovered

Discovered

Queue: s 2

Top of queue

Finished

26

Breadth First Search


1
2

Undiscovered

Discovered

Queue: s 2 3

Top of queue

Finished

27

Breadth First Search


1
2

Undiscovered

Discovered

Queue: s 2 3 5

Top of queue

Finished

28

Breadth First Search


1

2
2

Undiscovered

Discovered

Queue: 2 3 5

Top of queue

Finished

29

Breadth First Search


1

2
2

5 already discovered:
7
don't enqueue

Undiscovered

Discovered

Queue: 2 3 5 4

Top of queue

Finished

30

Breadth First Search


1

2
2

Undiscovered

Discovered

Queue: 2 3 5 4

Top of queue

Finished

31

Breadth First Search


1

2
2

Undiscovered

Discovered

Queue: 3 5 4

Top of queue

Finished

32

Breadth First Search


1

2
2

Undiscovered

Discovered

Queue: 3 5 4

Top of queue

Finished

33

Breadth First Search


1

2
2

Undiscovered

Discovered

Queue: 3 5 4 6

Top of queue

Finished

34

Breadth First Search


1

2
2

Undiscovered

Discovered

Queue: 5 4 6

Top of queue

Finished

35

Breadth First Search


1

2
2

Undiscovered

Discovered

Queue: 5 4 6

Top of queue

Finished

36

Breadth First Search


1

2
2

Undiscovered

Discovered

Queue: 4 6

Top of queue

Finished

37

Breadth First Search


1

2
2

3
4

Undiscovered

Discovered

Queue: 4 6

Top of queue

Finished

38

Breadth First Search


1

2
2

3
4

Undiscovered

Discovered

Queue: 4 6 8

Top of queue

Finished

39

Breadth First Search


1

2
2

3
4

Undiscovered

Discovered

Queue: 6 8

Top of queue

Finished

40

Breadth First Search


1

2
2

3
4

Undiscovered

Discovered

Queue: 6 8 7

Top of queue

Finished

41

Breadth First Search


1

2
2

3
4

Undiscovered

Discovered

Queue: 6 8 7 9

Top of queue

Finished

42

Breadth First Search


1

2
2

3
4

Undiscovered

Discovered

Queue: 8 7 9

Top of queue

Finished

43

Breadth First Search


1

2
2

3
4

Undiscovered

Discovered

Queue: 7 9

Top of queue

Finished

44

Breadth First Search


1

2
2

3
4

Undiscovered

Discovered

Queue: 7 9

Top of queue

Finished

45

Breadth First Search


1

2
2

3
4

Undiscovered

Discovered

Queue: 7 9

Top of queue

Finished

46

Breadth First Search


1

2
2

3
4

Undiscovered

Discovered

Queue: 7 9

Top of queue

Finished

47

Breadth First Search


1

2
2

3
4

Undiscovered

Discovered

Queue: 9

Top of queue

Finished

48

Breadth First Search


1

2
2

3
4

Undiscovered

Discovered

Queue: 9

Top of queue

Finished

49

Breadth First Search


1

2
2

3
4

Undiscovered

Discovered

Queue: 9

Top of queue

Finished

50

Breadth First Search


1

2
2

3
4

Undiscovered

Discovered

Queue:

Top of queue

Finished

51

Breadth First Search


1

2
2

3
4

Level Graph

52

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.

53

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

54

<k

>k

Binary Search Tree

Not a binary search tree

A binary search tree

55

56

Searching (Find)
Find X: return a pointer to the node that has key X, or
NULL if there is no such node
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
}

Time complexity: O(height of the tree)


57

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

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 halamanhalaman web, mengambil kata-kata penting di dalam
web, dan menyimpannya di dalam index. Query
dilakukan terhadap index, bukan terhadap website yang
aktual.
59

60

61

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

Click to edit subtitle style

Anda mungkin juga menyukai