Pertemuan 08
Contents
1
3
Brute Force:
n-1 multiplications
T(n) = 2*T(n/2) + 1
= n-1
Decrease by one:
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]
10
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
14
15
17
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
20
h
BFS tree:
3
4
5
7
Red edges are tree edges and
black edges are cross edges.
21
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
24
1
2
Undiscovered
Discovered
Queue: s
Top of queue
Finished
25
Undiscovered
Discovered
Queue: s 2
Top of queue
Finished
26
Undiscovered
Discovered
Queue: s 2 3
Top of queue
Finished
27
Undiscovered
Discovered
Queue: s 2 3 5
Top of queue
Finished
28
2
2
Undiscovered
Discovered
Queue: 2 3 5
Top of queue
Finished
29
2
2
5 already discovered:
7
don't enqueue
Undiscovered
Discovered
Queue: 2 3 5 4
Top of queue
Finished
30
2
2
Undiscovered
Discovered
Queue: 2 3 5 4
Top of queue
Finished
31
2
2
Undiscovered
Discovered
Queue: 3 5 4
Top of queue
Finished
32
2
2
Undiscovered
Discovered
Queue: 3 5 4
Top of queue
Finished
33
2
2
Undiscovered
Discovered
Queue: 3 5 4 6
Top of queue
Finished
34
2
2
Undiscovered
Discovered
Queue: 5 4 6
Top of queue
Finished
35
2
2
Undiscovered
Discovered
Queue: 5 4 6
Top of queue
Finished
36
2
2
Undiscovered
Discovered
Queue: 4 6
Top of queue
Finished
37
2
2
3
4
Undiscovered
Discovered
Queue: 4 6
Top of queue
Finished
38
2
2
3
4
Undiscovered
Discovered
Queue: 4 6 8
Top of queue
Finished
39
2
2
3
4
Undiscovered
Discovered
Queue: 6 8
Top of queue
Finished
40
2
2
3
4
Undiscovered
Discovered
Queue: 6 8 7
Top of queue
Finished
41
2
2
3
4
Undiscovered
Discovered
Queue: 6 8 7 9
Top of queue
Finished
42
2
2
3
4
Undiscovered
Discovered
Queue: 8 7 9
Top of queue
Finished
43
2
2
3
4
Undiscovered
Discovered
Queue: 7 9
Top of queue
Finished
44
2
2
3
4
Undiscovered
Discovered
Queue: 7 9
Top of queue
Finished
45
2
2
3
4
Undiscovered
Discovered
Queue: 7 9
Top of queue
Finished
46
2
2
3
4
Undiscovered
Discovered
Queue: 7 9
Top of queue
Finished
47
2
2
3
4
Undiscovered
Discovered
Queue: 9
Top of queue
Finished
48
2
2
3
4
Undiscovered
Discovered
Queue: 9
Top of queue
Finished
49
2
2
3
4
Undiscovered
Discovered
Queue: 9
Top of queue
Finished
50
2
2
3
4
Undiscovered
Discovered
Queue:
Top of queue
Finished
51
2
2
3
4
Level Graph
52
53
Searching
Insertion of a new key
Finding the smallest (or the
largest) key
54
<k
>k
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
}
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
60
61