You are on page 1of 60

Design and Analysis Algorithm

Imam Cholissodin, S.Si., M.Kom

Pertemuan 11
Contents

3
1 Decrease and Conquer

2 Insertion and Selection Sort

3 DFS and BFS

4 Binary Search Tree

2
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

3
Permasalahan eksponensial: Hitung xn

 Brute Force: n-1 multiplications

T(n) = 2*T(n/2) + 1
 Divide and Conquer: = n-1

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


 Decrease by one:
T(n) = T(n/a) + a-1

 Decrease by = (a-1) log a n

constant factor:
= log 2 n when a = 2
4
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 Exercise :
1 4 6|8 5
1 4 6 8|5
1 4 5 6 8
5
Pseudo code Insertion sort

6
7
8
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)

9
Selection Sort
 Algoritma sorting
 Sorting perbandingan pada element
 Terbagi menjadi 2 :
 Sorted list
 Sisa himpunan yang belum tersorting

10
Selection sort

11
12
• Misalkan tabel A berisi elemen-elemen berikut:

• Langkah-langkah pengurutan dengan Selection Sort:

13
 Kompleksitas waktu algoritma:

 Penyelesaian (seperti pada Insertion Sort):

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

15
Pseudo code DFS

16
Example: DFS traversal of undirected graph

a b c d

e f g h

DFS traversal stack: DFS tree:


a
ab
abf
1 2 6 7
abfe
abf a b c d
ab
abg
abgc e f g h
abgcd
4 3 5 8
abgcdh Red edges are tree edges and
abgcd black edges are cross edges.

17
1

2 3

4 5 6 7

8
1

2 3

4 5 6 7

8
1

2 3 4

5 6 7

8 9
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)

22
Example of BFS traversal of undirected
graph

a b c d

e f g h

BFS traversal queue: BFS tree:


a
bef
efg
fg 1 2 6 8
g a b c d
ch
hd
d e f g h
3 4 5 7
Red edges are tree edges and
black edges are cross edges.
23
Breadth First Search (grafik berarah)
2 4 8

s 5 7

3 6 9

26
Breadth First Search
1
Shortest path
2 4 8
from s

0 s 5 7

3 6 9

Undiscovered
Discovered Queue: s

Top of queue
Finished
27
Breadth First Search
1
2 4 8

0 s 5 7

3 6 9

Undiscovered
Discovered Queue: s 2

Top of queue
Finished
28
Breadth First Search
1
2 4 8

0 s 5 7
1

3 6 9

Undiscovered
Discovered Queue: s 2 3

Top of queue
Finished
29
Breadth First Search
1
2 4 8

0 s 5 7
1

3 6 9

Undiscovered
Discovered Queue: s 2 3 5

Top of queue
Finished
30
Breadth First Search
1 2
2 4 8

0 s 5 7
1

3 6 9

Undiscovered
Discovered Queue: 2 3 5

Top of queue
Finished
31
Breadth First Search
1 2
2 4 8

5 already discovered:
0 s 5 7
don't enqueue
1

3 6 9

Undiscovered
Discovered Queue: 2 3 5 4

Top of queue
Finished
32
Breadth First Search
1 2
2 4 8

0 s 5 7
1

3 6 9

Undiscovered
Discovered Queue: 2 3 5 4

Top of queue
Finished
33
Breadth First Search
1 2
2 4 8

0 s 5 7
1

3 6 9

Undiscovered
Discovered Queue: 3 5 4

Top of queue
Finished
34
Breadth First Search
1 2
2 4 8

0 s 5 7
1

3 6 9

1 2

Undiscovered
Discovered Queue: 3 5 4

Top of queue
Finished
35
Breadth First Search
1 2
2 4 8

0 s 5 7
1

3 6 9

1 2

Undiscovered
Discovered Queue: 3 5 4 6

Top of queue
Finished
36
Breadth First Search
1 2
2 4 8

0 s 5 7
1

3 6 9

1 2

Undiscovered
Discovered Queue: 5 4 6

Top of queue
Finished
37
Breadth First Search
1 2
2 4 8

0 s 5 7
1

3 6 9

1 2

Undiscovered
Discovered Queue: 5 4 6

Top of queue
Finished
38
Breadth First Search
1 2
2 4 8

0 s 5 7
1

3 6 9

1 2

Undiscovered
Discovered Queue: 4 6

Top of queue
Finished
39
Breadth First Search
1 2 3
2 4 8

0 s 5 7
1

3 6 9

1 2

Undiscovered
Discovered Queue: 4 6

Top of queue
Finished
40
Breadth First Search
1 2 3
2 4 8

0 s 5 7
1

3 6 9

1 2

Undiscovered
Discovered Queue: 4 6 8

Top of queue
Finished
41
Breadth First Search
1 2 3
2 4 8

0 s 5 7
1 3

3 6 9

1 2

Undiscovered
Discovered Queue: 6 8

Top of queue
Finished
42
Breadth First Search
1 2 3
2 4 8

0 s 5 7
1 3

3 6 9

1 2 3

Undiscovered
Discovered Queue: 6 8 7

Top of queue
Finished
43
Breadth First Search
1 2 3
2 4 8

0 s 5 7
1 3

3 6 9

1 2 3

Undiscovered
Discovered Queue: 6 8 7 9

Top of queue
Finished
44
Breadth First Search
1 2 3
2 4 8

0 s 5 7
1 3

3 6 9

1 2 3

Undiscovered
Discovered Queue: 8 7 9

Top of queue
Finished
45
Breadth First Search
1 2 3
2 4 8

0 s 5 7
1 3

3 6 9

1 2 3

Undiscovered
Discovered Queue: 7 9

Top of queue
Finished
46
Breadth First Search
1 2 3
2 4 8

0 s 5 7
1 3

3 6 9

1 2 3

Undiscovered
Discovered Queue: 7 9

Top of queue
Finished
47
Breadth First Search
1 2 3
2 4 8

0 s 5 7
1 3

3 6 9

1 2 3

Undiscovered
Discovered Queue: 7 9

Top of queue
Finished
48
Breadth First Search
1 2 3
2 4 8

0 s 5 7
1 3

3 6 9

1 2 3

Undiscovered
Discovered Queue: 7 9

Top of queue
Finished
49
Breadth First Search
1 2 3
2 4 8

0 s 5 7
1 3

3 6 9

1 2 3

Undiscovered
Discovered Queue: 9

Top of queue
Finished
50
Breadth First Search
1 2 3
2 4 8

0 s 5 7
1 3

3 6 9

1 2 3

Undiscovered
Discovered Queue: 9

Top of queue
Finished
51
Breadth First Search
1 2 3
2 4 8

0 s 5 7
1 3

3 6 9

1 2 3

Undiscovered
Discovered Queue: 9

Top of queue
Finished
52
Breadth First Search
1 2 3
2 4 8

0 s 5 7
1 3

3 6 9

1 2 3

Undiscovered
Discovered Queue:

Top of queue
Finished
53
Breadth First Search
1 2 3
2 4 8

0 s 5 7
1 3

3 6 9

1 2 3

Level Graph

54
55
 Latihan: Gunakan algoritma BFS dan DFS untuk
menemukan pohon merentang (spanning tree) dari graf
G di bawah ini jika traversalnya dimulai dari simpul k.
Dalam menjawab soal ini, perlihatkan traversal
BFS/DFS sebagai pohon berakar dengan e sebagai
akarnya.

56
Binary Search Tree

Several algorithms on BST


requires recursive processing of
k
just one of its subtrees, e.g.,
 Searching
 Insertion of a new key
 Finding the smallest (or the <k >k

largest) key

57
Binary Search Tree

Not a binary search tree


A binary search tree

58
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
basis data index.
62
Click to edit subtitle style

You might also like