Вы находитесь на странице: 1из 62

TREE

Pohon / Tree :

Connected undirected graph


(graph tak berarah yang terhubung
dan tidak berisi simple circuits
Contoh
a b a b a b

c d c d
c d

e f e f
e f
G1 G2 G3

• G1 & G2 adalah tree

• G3 bukan tree karena e,b,a,d,e adalah simple


circuit
Forest : undirected graph yang tidak
terhubung (beberapa pohon)
Rooted Tree (pohon berakar):

tree yang salah satu vertex-nya


dianggap sebagai akar (root)
Contoh:

Rooted Tree T Subtree dengan akar g


a
g

b f g
h i j
c h i j

d e k l m k l m

• b adalah parent (orang tua) dari c


• h,i,j adalah children (anak-anak) dari g
• i,j adalah siblings (saudara-saudara) dari h
• c,b,a adalah ancestor (nenek-moyang) dari e
• c,d,e adalah descendant (keturunan) dari b
• a,b,c,g,h & j adalah internal vertices (vertex-vertex
internal)
• d,e,f,i,k,l & m adalah leaves (daun-daun)
Teorema 1:

suatu undirected graph merupakan


sebuah pohon  terdapat
lintasan sederhana (simple path)
yang bersifat unik antara dua vertex
Definisi:
Suatu rooted tree disebut m-ary tree jika anak
dari setiap internal vertex-nya tidak lebih dari
m

Suatu rooted tree disebut full m-ary tree jika


anak setiap internal vertex-nya tepat m

Suatu m-ary tree dengan m = 2 disebut binary


tree (pohon biner)
T1 T2

T3

• T1 adalah binary tree karena setiap internal vertex mempunyai  2 anak

• T2 adalah full 3-ary tree, karena setiap internal vertex mempunyai 3 anak

• T3 bukan full 3-ary tree, karena ada internal vertex dengan 2 anak
Ordered rooted tree :
rooted tree di mana anak dari setiap internal vertex
punya urutan tertentu (dimulai dari kiri)

Ordered binary tree (binary tree) :


Jika ada internal vertex dengan 2 anak, maka
anak kiri (left child): anak pertama dari internal
vertex
anak kanan (right child): anak kedua dari internal
vertex
Level suatu vertex dalam rooted tree
adalah panjang lintasan unik dari root
Example 10
menuju vertex tersebut
Height dari tree adalah level tertinggi dari
a suatu vertex dalam tree
b j k

c e f l
• Level root a = 0
d g i m n • Level vertex b, j & k = 1
h
• Level vertex c, e, f & l = 2
• Level vertex d, g, i, m & n = 3
• Level vertex h = 4
• Height = 4 (maximum level)
T1 T2 T3

Rooted m-ary tree dengan Height h adalah seimbang jika


semua leaves terdapat pada level h atau h-1
Example 11

• T1 seimbang karena leaves ada pada level 3 & 4


• T2 tidak seimbang karena leaves ada pada level 2, 3 & 4
• T3 seimbang karena semual leaves ada pada level 3
Spanning Trees
Pohon / Tree :

Connected undirected graph

(graph tak berarah yang terhubung)

dan tidak berisi simple circuits


Definisi:
G = (V, E) adalah simple graph.

Spanning tree dari G adalah subgraph dari G


yang berupa pohon (tree) dan berisi semua
vertex dari G (semua anggota V).

Spanning Tree dari graph G dihasilkan dengan


cara menghapus edge(s) yang membentuk
simple circuit(s) pada graph G.
Contoh 1 Simple Graph G
a b c d

circuit circuit

e f g
circuit

a b c d a b c d a b c d

e f g e f g e f g

edge {a,e} dihapus edge {e, f} dihapus edge {c, g} dihapus

Spanning Tree dari graph G dibentuk dengan menghapus


edges yang membentuk simple circuit
Teorema 1
suatu simple graph G dikatakan
terhubung jika dan hanya jika G
mempunyai subgraph berupa spanning
tree

Ada 2 algoritma yang bisa digunakan untuk


mendapatkan spanning tree, yaitu :
- Depth-first Search (DFS)
- Breadth-first Search (BFS )
Algoritma 1 : Depth-first Search

procedure DFS (G: connected graph with vertices v1,


v2, …..,vn)

T := tree consisting only of the vertex v1


visit (v1)

procedure visit (v: vertex of G)

for each vertex w adjacent to v and not yet in T


begin
add vertex w and edge {v, w} to T
visit (w)
end
a d i j

c e f h k

b g
Algoritma 2: Breadth-first Search
procedure BFS (G: connected graph with vertices v1, v2, …..,vn)

T := tree consisting only of the vertex v1


L := empty list
put v1 in the list L of unprocessed vertices

while L is not empty


begin
remove the first vertex, v, from L
for each neighbor w of v
if w is not in L and not in T then
begin
add w to the end of the list L
add w and edge {v, w} to T
endif
endwhile
a b c l

d e f g

h i j

k m
Minimum Spanning Tree
Definisi 1:
Minimum spanning tree dari suatu connected
weighted graph adalah spanning tree yang
mempunyai jumlah bobot terkecil.

Definition 1:
A Minimum Spanning Tree in a connected
weighted graph is a spanning tree that has the
smallest possible sum of weights of its edges.
Ada 2 algoritma untuk membuat

Minimum Spanning Tree:


- Algoritma Prim

- Algoritma Kruskal
ALGORITMA Prim

procedure Prim (G: weighted connected undirected graph


with n vertices)

T: = a minimum-weighted edge

for i := 1 to n – 2
begin
e := an edge of minimum weight incident to a vertex in T
and not forming a simple circuit in T if added to T
T := T with e added
end { T is minimum spanning tree of G }
2000

Chicago 1000 New York


1200
San Fransisco
1600
2000
900 800
Denver
700
1400

2200 Atlanta
2000

Chicago 1000 3 New York


1200 2
San Fransisco 1
1600
2000
900 800
Denver 4
700
1400

5 Atlanta
2200

{2, 5} = 700 {1, 2} = 1200 {1, 3} = 2000


{3, 5} = 800 {4, 5} = 1400 {1, 5} = 2200
{1, 4} = 900 {3, 4} = 1600
{2, 3} = 1000 {2, 4} = 2000
2000

Chicago 1000 3 New York


1200 2
San Fransisco 1
1600
2000
900 800
Denver 4
700
1400

5 Atlanta
2200

T {2, 5} = 700#
i=1 {3, 5} = 800#
i=2 {1, 4} = 900#
{2, 3} = 1000
i=3 {1, 2} = 1200#
Contoh:
1 10 2
50
30 45 40 3
35
4
25
5
20 55
15

29
Algoritma Prim
Langkah 1: ambil sisi dari graf G yang berbobot minimum,
masukkan ke dalam T.

Langkah 2: pilih sisi (u, v) yang mempunyai bobot minimum dan


bersisian dengan simpul di T, tetapi (u, v) tidak
membentuk sirkuit di T. Masukkan (u, v) ke dalam T.

Langkah 3: ulangi langkah 2 sebanyak n – 2 kali.

30
L angkah S is i B obot P o h o n re n ta n g

1 10 2
1 (1, 2) 10

1 10 2

2 (2, 6) 25

25

6
1 10
3 (3, 6) 15
3

25

15

1 10 2
4 (4, 6) 20
3
4
25

20
15

1 10 2
5 (3, 5) 35
45 3
35
4
25
5
20 55
15

6
31
Pohon merentang minimum yang dihasilkan:
1 10 2

45 3
35
4
25
5
20 55
15

Bobot = 10 + 25 + 15 + 20 + 35 = 105

32
Pohon merentang yang dihasilkan tidak selalu unik
meskipun bobotnya tetap sama.

Hal ini terjadi jika ada beberapa sisi yang akan dipilih
berbobot sama.

33
Contoh:
a 3 b 4 c 2 d

4 2 3 6

5 f 4 g 4
e h

5 3 5 4

i 6 j 4 k 2 l

Tiga buah pohon merentang minimumnya:


a 3 b c 2 d a 3 b c 2 d a 3 b 4 c 2 d

4 2 3 4 2 3 4 2 3
f g h f h f g h
e e e
4 4 4
5 3 4 5 3 4 5 3 4

i j 4 k 2 l i j 4 k 2 l i j k 2 l

Bobotnya sama yaitu = 36


34
Algoritma Kruskal
( Langkah 0: sisi-sisi dari graf sudah diurut menaik berdasarkan
bobotnya – dari bobot kecil ke bobot besar)

Langkah 1: T masih kosong

Langkah 2: pilih sisi (u, v) dengan bobot minimum yang tidak


membentuk sirkuit di T. Tambahkan (u, v) ke dalam
T.

Langkah 3: ulangi langkah 2 sebanyak n – 1 kali.

35
procedure Kruskal(input G : graf, output T : pohon)
{ Membentuk pohon merentang minimum T dari graf terhubung –
berbobot G.
Masukan: graf-berbobot terhubung G = (V, E), dengan V= n
Keluaran: pohon rentang minimum T = (V, E’)
}
Deklarasi
i, p, q, u, v : integer

Algoritma
( Asumsi: sisi-sisi dari graf sudah diurut menaik
berdasarkan bobotnya – dari bobot kecil ke bobot
besar)
T  {}
while jumlah sisi T < n-1 do
Pilih sisi (u,v) dari E yang bobotnya terkecil
if (u,v) tidak membentuk siklus di T then
T  T  {(u,v)}
endif
endfor

36
Contoh:
1 10 2
50
30 45 40 3
35
4
25
5
20 55
15

37
S is i- s is i d iu r u t m e n a ik :

S is i ( 1 ,2 ) ( 3 ,6 ) ( 4 ,6 ) ( 2 ,6 ) ( 1 ,4 ) ( 3 ,5 ) ( 2 ,5 ) ( 1 ,5 ) ( 2 ,3 ) ( 5 ,6 )
B obot 10 15 20 25 30 35 40 45 50 55

L angkah S is i B obot H u ta n m e r e n ta n g

0 1 2 3 4 5 6

1 (1, 2) 10
1 2

2 (3, 6) 15
1 2 3 4 5

3 (4, 6) 20
1 2 3 5

4
6

4 (2, 6) 25
1 2 3 5

38
5 (1, 4) 30 ditolak

6 (3, 5) 35
1 2
3
5
4
6

Pohon merentang minimum yang dihasilkan:


1 10 2

45 3
35
4
25
4 (2, 6) 25 5
55 1 2 3 5
20
15
4
6

Bobot = 10 + 25 + 15 + 20 + 35 = 105
39
Definisi Tree Traversal
 Teknik menyusuri tiap node dalam sebuah tree
secara sistematis, sehingga semua node dapat
dan hanya satu kali saja dikunjungi
 Ada tiga cara traversal
 preorder
 inorder
 postorder
 Untuk tree yang kosong, traversal tidak perlu
dilakukan
Preorder
1. Visit the root A

2. Traverse the left subtree


3. Traverse the right subtree B H

C D

E F

A→B→C→D→E→G→F→H
Implementasi dalam bahasa C
struct node {
struct node *left;
struct node *right;
char label;
}

void preorder(struct node *p)


{
if (p==NULL) return; jika empty-tree, tidak perlu lakukan apa-
apa
printf(“visit %c ”, p->label); tampilkan label node yang dikunjungi
preorder(p->left); traverse the left subtree
preorder(p->right);      traverse the right subtree
}
Contoh: reading a document from beginning to end
Algorithm preOrder(v)
“visit” node v
preOrder(leftChild(v));
preOrder(rightChild(v));
Inorder
1. Traverse the left subtree A

2. Visit the root


3. Traverse the right subtree B H

C D

E F

C→B→G→E→D→F→A→H
Implementasi dalam bahasa C
struct node {
struct node *left;
struct node *right;
char label;
}

void inorder(struct node *p)


{
if (p==NULL) return; jika empty-tree, tidak perlu lakukan apa-
apa
inorder(p->left); traverse the left subtree
printf(“visit %c ”, p->label); tampilkan label node yang dikunjungi
inorder(p->right);      traverse the right subtree
}
Contoh: Urutan penulisan ekspresi aritmatika
Algorithm inOrder(v)
inOrder(leftChild(v))
“visit” node v
inOrder(rightChild(v))
Postorder
A
1. Traverse the left subtree
2. Traverse the right subtree
B H
3. Visit the root

C D

E F

C→G→E→F→D→B→H→A
Implementasi dalam bahasa C
struct node {
struct node *left;
struct node *right;
char label;
}

void postorder(struct node *p)


{
if (p==NULL) return; jika empty-tree, tidak perlu lakukan apa-apa
postorder(p->left); traverse the left subtree
postorder(p->right);      traverse the right subtree
printf(“visit %c ”, p->label); tampilkan label node yang dikunjungi
}
 Contoh: du (disk usage) command in Unix

Algorithm postOrder(v)
postOrder(leftChild(v));
postOrder(rightChild(v));
“visit” node v
Traversing Tree

Pre-Order Post-Order InOrder


Level-order Traversal
Kunjungi root diikuti oleh seluruh node pada sub tree
dari kiri ke kanan kemudian diikuti oleh node pada sub
tree-nya lagi.
Tree dikunjungi berdasarkan level.
Pada tree dibawah urutan kunjungan adalah: A - B - C
-D-E-F-G-H-I
Terapan Pohon Biner
1. Pohon Ekspresi

+ /

+
a b c

d e

Gambar Pohon ekspresi dari (a + b)*(c/(d + e))

daun  operand
simpul dalam  operator

53
2. Pohon Keputusan

a : b
a > b b > a

a : c b : c
a >c c > a b > c c > b

b : c c > a > b a : c c > b > a

b > c c > b a >c c > a

a > b > c a > c > b b > a > c b > c > a

Gambar Pohon keputusan untuk mengurutkan 3 buah elemen

54
3. Kode Awalan

0 1

0 1 0 1

01 10 11
0 1

000 001

Gambar Pohon biner dari kode prefiks { 000, 001, 01, 10, 11}

55
4. Kode Huffman

Tabel Kode ASCII

Simbol Kode ASCII

A 01000001
B 01000010
C 01000011
D 01000100

rangkaian bit untuk string ‘ABACCDA’:

01000001010000010010000010100000110100000110100010001000001

atau 7  8 = 56 bit (7 byte).

56
Tabel Tabel kekerapan (frekuensi) dan kode Huffman
untuk string ABACCDA

Simbol Kekerapan Peluang Kode Huffman


A 3 3/7 0
B 1 1/7 110
C 2 2/7 10
D 1 1/7 111

Dengan kode Hufman, rangkaian bit untuk ’ABACCDA’:

0110010101110

hanya 13 bit!

57
5. Pohon Pencarian Biner

Kunci( T 1) < Kunci( R )


Kunci( T 2) > Kunci( R )
T1 T2

58
Data: 50, 32, 18, 40, 60, 52, 5, 25, 70

50

32 50

18 40 52 70

5 25

59
soal
1 Tentukan hasil kunjungan preorder, inorder, dan postorder pada pohon 4-
ary berikut ini:

b c d

e f g h i j k l m

n o p q

60
3. Tentukan dan gambarkan spanning tree minimum dari graf di bawah ini

a 5 b 4 c

2 3 5 6 3
7 e 1
d f
6 8 3 4 4

g 4 h 2 i

61
4. Diberikan masukan berupa rangkaian karakter dengan urutan
sebagai berikut:

P, T, B, F, H, K, N, S, A, U, M, I, D, C, W, O

(a) Gambarkan pohon pencarian (search tree) yang terbentuk.


(b) Tentukan hasil penelusuran preorder, inorder, dan postorder,
dari pohon jawaban (a) di atas.

62

Вам также может понравиться