Algoritma Struktur Data
3 sks
Materi
Materi
Pengantar Struktur Data
Abstract Data Type (ADT)
Rekursif : Fibonacci
Sorting (Selection, Insertion, Bubble, Shell, Merge, Quick)
Struktur Data Linier (Linked List, Stack, Queu)
Struktur Data Hirarki (Tree, Graph, Hash Tables)
Lit erat ur :
1. H.M Deit el, P.J Deit el, Small J ava How t o Program-sixt h
Edit ion, Pear son Pr ent ice Hall, 2005
2. Elliot B. Kof f man, Paul A.T. Wolf gang, Obj ect s, Abst ract ion,
Dat a St ruct ures and Design Using J ava, J ohn Wiley & Sons.I nc, 2005
3. Mar k Allen Weiss, Dat a St ruct ures & Algorit hm Analysis in
J ava, Addison-Wesley, 1999
4. Moh.Sj ukani, Algorit ma & St rukt ur Dat a dengan C, C++ dan Yogyakar t a, 2001
9. Wir t h, Niklaus, Algorit hmic + Dat a St ruct ures Programs, Pr ent ice-Hall, 1976
10. Thompson Susabda Ngoen , Algorit ma dan St rukt ur Dat a
Bahasa C, Mit r a Wacana Media, 2009
ALGORI TMA
TREE - POHON
TREE - POHON
•
Tree merupakan salah sat u bent uk
st rukt ur data yang non linear/ t idak
linear yang menggambarkan hubungan
yang bersifat hirarki (hubungan one t o
many) antara elemen-elemen
•
Tree dapat juga didefinisikan sebagai
kumpulan simpul/ node dengan sat u
elemen khusus yang disebut ROOT dan
node yang lainnya t erbagi menjadi
Istilah Umum Dalam TREE
1.
Tree (pohon) dan Graph (Graf)
2.
Simpul (Vert ex, Node) dan Busur
(Edge, Arc)
3.
Superordinat dan subordinat , fat her
dan son, parent dan children
4.
Root (akar) dan Leaf (daun)
5.
Level (t ingkat ) dan Dept h (kedalaman)
6.
Degree (derajat ) simpul dan degree
pohon
1. Tree/ Pohon & Graph/ Graf
•
Tree (pohon)
merupakan bagian
dari graph
•
Dengan simbol
matemat ik
pernyataan Tree
dapat dit uliskan
sebagai berikut :
2. Simpul & Busur
•
Pohon merupakan
kumplan dari simpul dan
busur, dimana salah sat u
simpul merupakan akar
(root ) dan simpul-simpul
lain membent uk suat u sub
pohon / sub t ree yang
dapat dit uliskan sbb:
T = (V, E)
2. Simpul & Busur
•
Simpul/ Node/ Tit ik/ Vert ex
–
Tree t erdiri dari 14 buah simpul (n=14)
simpul A s.d. N at au v0 s.d. v13V = {v0, v1, v2... , v13)
•
Busur/ Edge
–
Tree t erdiri dari 13 buah busur (m=12)
e0 s.d. e123. Superordinat & Subordinat
• Superordinatdiist ilahkan
dengan fat her/ bapak/ parent sedangkan subordinat
diist ilahkan dengan son/ anak/ child
• Contoh:
– Simpul B merupakan
superordinat simpul E dan F
– Simpul E dan F merupakan
subordinat simpul B
– Simpul B mempunyai
superordinat yait u simpul E (left child) dan F (right child)
• Parent : predecessor sat u level di atas suat u node
4. Root/ Akar & Leaf/ Daun
• Root (akar) adalah simpul yang t idak mempunyai superordinat .
– Unt uk pohon yang dicont ohkan
disamping, maka akar adalah simpul A
– Root : Sat u-sat unya node khusus dalam t ree yang tak punya
predecessor
• Leaf/ daun adalah simpul yang t idak mempunyai subordinat
– Unt uk pohon yang dicont ohkan
disamping, maka daun adalah simpul C, E, G, I, J, K, L, M , N
5. Level & Depth/ Kedalaman
• Level (t ingkat ) akar
dinyatakan berada pada level 0, set iap t urunan sat u
subordinat , level bertambah 1
• Dept h (kedalaman) sat u
pohon yang mempunyai level teratas atau level tert inggi = k, maka disebut
kedalamannya = k
– Unt uk pohon yang
dicontohkan disamping,
karena level tert inggi adalah 3 maka dept h =3
• Height : Banyaknya
6. Degree sebuah simpul
•
Degree merupakan
sebuah simpul yang
menyatakan jumlah
simpul subordinat dari
simpul t ersebut
–
Unt uk pohon disamping :• Sim pul A : degree = 3
• Sim pul B : degree = 2
• Sim pul C : degree = 0
istilah-istilah umum dalam tree
•
Predecessor: node yang berada di atas node
tertent u
istilah-istilah umum dalam tree
•
Ancestor
: seluruh node yang terletak
sebelum node tertent u dan terletak pada
jalur yang sama
•
Descendant
: seluruh node yang terletak
sesudah node tertent u dan terletak pada
jalur yang sama
•
Sibling
: node-node yang memiliki parent
yang sama dengan suat u node
Root / Akar = …..
Superordinat / Parent = ….
7a. M -ary Tree
•
M atau K menyatakan derajat pohon
•
Cont oh : sebuah simpul pohon M -ary
dimana M =3 digambarkan dengan
Linked-List
INFO
7b. Binary Tree
•
M atau K menyatakan derajat pohon
•
Cont oh : sebuah simpul pohon Binary Tree /
Pohon Biner dimana M =2 digambarkan
dengan Linked-List
INFO
Contoh Pohon Biner
A
B C
D E F G
8. Link, Null-Link dan Bukan Null-Link
•
Link
–
Point er yang digunakan unt uk menunjuk simpul subordinat–
Unt uk cont oh pohon biner adalah set iapsimpul mempynyai 2 link, sehingga jumlah link = n* 2•
Null-Link
–
Link yang bernilai Null, yait u link yang t idak menunjuk simpul subordinat•
Bukan Null-Link
–
Link yang menunjuk simpul subordinat at au link yangContoh Soal : M -ary
•
Sebuah pohon M -ary dengan 10 buah
simpul. Apabila M =3, Hit ung berapa jumlah
Null-Link nya?
Pohon dengan M = 3 Jumlah simpul 10,
Contoh Soal : Pohon Biner
•
Sebuah pohon biner dengan 10 buah simpul.
Apabila M =2, Hit ung berapa jumlah Null-Link
nya?
Pohon dengan M = 2 Jumlah simpul 10,
POHON BINER / BINARY TREE
•
Sebuah pohon biner/ binary t ree adalah merupakan
himpunan t erbat as yang
–
M ungkin kosong–
Terdiri dari sebuah simpul yang disebut sebagai akar dan dua buah himpunan lain yang saling asing–
Dia humpunan yang saling asing t ersebut adalah pohon biner pada sub pohon kiri (left ) dan sub pohon kanan (right )POHON BINER / BINARY TREE
•
M erupakan pohon M -ary dimana M =2, yang art inya
set iap simpul paling banyak memiliki 2 simpul
subordinat yang biasa disebut subordinat kiri (left
-child) dan subordinat kanan (right --child)
INFO
Left Right
INFO
POHON BINER / BINARY TREE
•
St rict ly Binary Tree merupakan pohon biner yang
semua simpulnya, (kecuali simpul leaf/ daun)
mempunyai lengkap simpul subordinat kiri dan
subordinat kanan
•
Sebuah pohon biner st rict lybinary t ree, apabila
mempunyai n buah daun, maka akan mempunyai
(2n-1) buah simpul
A
B C
D E F G
H I
Jumlah daun/ leaf = 5
COM PLETE BINARY TREE/ FULL BINARY TREE/
ALM OST COM PLETE BINARY TREE
•
Complet e Binary Tree dengan kedalaman = d,
merupakan pohon biner st rict ly binary t reedimana
semua daun hanya berada pada level d
•
Pada pohon complet e binary t ree/ full binary
t ree/ almost complet e binary t ree berlaku :
–
Pada leve k jumlah simpul
n=2^ k–
Unt uk pohon dengan kedalaman d, maka jumlah seluruh simpul
n = 2^ (d+1)-1COM PLETE BINARY TREE/ FULL BINARY TREE/
ALM OST COM PLETE BINARY TREE
•
Pada pohon complet e binary t ree/ full binary
t ree/ almost complet e binary t ree berlaku :
–
Unt uk pohon dengan kedalaman d, maka jumlah simpul bukan daun
n = (2^ d)-1–
Bila jumlah seluruh simpul = n, maka kedalaman pohon adalah
d = log2(n+1)-1–
Set iap simpul yang berada dibaw ah level d-1, mempunyai dua subordinat–
Bila pada level d-1 sub pohon kanan ada simpul yangCOM PLETE BINARY TREE/ FULL BINARY TREE/
ALM OST COM PLETE BINARY TREE
Almost Complete Binary Tree dan Bukan Strictly Binary Tree karena simpul G hanya punya sat u anak
A
B C
D E F G
J K
H I L M N
Almost Complete
COM PLETE BINARY TREE/ FULL BINARY TREE/
ALM OST COM PLETE BINARY TREE
Bukan Almost Complete Binary Tree
karena simpul Chanya punya sat u anak
A
B C
D E F
J K
H I
Bukan Almost Complete Binary Tree
A
B C
D E F G
H
Almost Complete Binary Tree dan tapi bukan Strictly Binary Tree
A
B C
D E F G
POHON BINER SEIM BANG - AVL
•
AVL diambil dari nama
G.M . Adelson-Velskii dan E.M .
Landis, 2 orang ahli mat emat ika Rusia yang pertama
kali (1962) memperkenalkan met ode unt uk membuat
pohon biner selalu seimbang
•
Pohon Biner Seimbang / Berimbang adalah pohon
biner yang ket inggian subpohon kiri dan subpohon
kanan unt uk set iap simpul superordinat , paling banyak
berselisih 1
•
Jadi pohon biner complet e dan almost complet e adalah
pohon biner berimbang
CONTOH : BALANCED BINARY TREE
UNBALANCED BINARY TREE
Unbalanced Binary Tree
A
B C
D E F G
J K
H I L M N
Balanced Binary Tree
A
B C
D E F G
J K
PENOM ORAN SIM PUL POHON BINER
•
Berdasarkan konversi dapat disepakat i cara
penomoran set iap simpul dalam pohon biner, yait u:
–
Bila sebuah simpul bernomor n, maka subordinat kiri bernomor 2n dan subordiat kanan bernomor 2n+1–
Simpul akar, diberi nomor 1PENOM ORAN SIM PUL POHON BINER
Level (k)
M aksimum jumlah simpul pada level
2^k
M aksimum jumlah seluruh simpul sampai dengan level
2^(k+1)-1
BINARY TREE/ POHON BINER
•
Proses Pohon Biner (Binary Tree), adalah
1.
M endeklarasikan st rukt ur simpul
2.
Inisialisasi
3.
Pembuatan sebuah simpul
4.
Pembuatan simpul akar
5.
Penambahan/ melakukan insert simpul
baru kedalam sebuah pohon
BINARY TREE/ POHON BINER
•
Proses Pohon Biner (Binary Tree), adalah
1.
Deklarasi st rukt ur simpul
2.
Inisialisasi
BINARY TREE/ POHON BINER
•
Proses Pohon Biner (Binary Tree), adalah
BINARY TREE/ POHON BINER
•
Proses Pohon Biner (Binary Tree), adalah
BINARY TREE/
POHON BINER
•
Proses Pohon
Biner (Binary
Tree), adalah
5.
Penambahan
/ melakukan
insert simpul
baru kedalam
sebuah
BINARY TREE/ POHON BINER
•
Proses Pohon Biner
(Binary Tree),
adalah
6.
Pembacaan/ pene
HEAP & B-TREE
HEAP TREE
Heap adalah t ree yang mempunyai persamaan
sebagai berikut :
R[i] < r[2i]
dan
R[i] < r[2i+1]
Heap Tree disebut juga
Complete Binary Tree
,
jika suat u node mempunyai child, maka jumlah
childnya harus selalu dua
M inimum Heap
, apabila parent nya lebih kecil
daripada kedua childnya
Contoh HEAP TREE
9
12 25
22 55
Contoh HEAP TREE
63
55 25
22 9
HEAP-TREE
•
Operasi dalam Heap Tree)
1.
Penambahan/ melakukan insert simpul
HEAP-TREE
•
Operasi dalam Heap Tree)
Insertion
•
Insert 14
14
13
21 16
24 31 19 68
Insertion
•
Insert 14
31 13
21 16
24 14 19 68
Insertion
•
Insert 14
31 13
14 16
24 21 19 68
HEAP-TREE
•
Operasi dalam Heap Tree)
0 1 43 3 3 2 65 58 40
-1
42 4
0 1 2 3 4 5 6 7 8 9 10 11 12 13
-1
0 1
43 3 3 2
65 58 40 42 4
14
Delete M inimum
0 1 43 3 3 2 65 58 40
4
42
0 1 2 3 4 5 6 7 8 9 10 11 12 13
4
0 1
43 3 3 2
65 58 40 42
14
3 1 43 4 3 2 65 58 40
0
42
0 1 2 3 4 5 6 7 8 9 10 11 12 13
0
3 1
43 4 3 2
65 58 40 42
14
13
14 16
19 21 19 68
65 26 32 31
14 16
19 21 19 68
65 26 32 31
Delete M in (Alternative)
Delete M in (Alternative)
14
16
19 21 19 68
14
19 16
21 19 68
65 26 32 31
Delete M in (Alternative)
14
19 16
26 21 19 68
Delete M in (Alternative)
14
19 16
26 21 19 68
B-TREE
B-Tree adalah t ree yang set iap nodenya dapat
berisi lebih daripada sat u elemen
Jumlah elemen dalam 1 node t ergant ung kepada
order B-Tree t ersebut
Jumlah minimum elemen dalam set iap node
(kecuali ROOT) adalah d, dan jumlah maksimum
elemen di ROOT adalah sat u dan jumlah
maksimumnya adalah 2d
Jumlah minimum child suat u node di dalam
B-TREE
•
Operasi dalam Pohon B (B- Tree)
1.
Penambahan/ melakukan insert simpul
B-TREE
•
Operasi dalam Pohon B (B- Tree)
1.
Insert
Apabila node/ simpul belum penuh (jumlahelemen < 2d), maka elemen dapat langsung diinsert
Jika node/ simpul sudah penuh, maka lakukanNODE SPLIT dengan langkah sebagai berikut
Split node/ simpul menjadi 2
25 37 40
Akan menginsert elemen 27
Let akkan d elemen t erkecil di node/ simpul kiri
Let akkan d elemen t erkecil di node/ simpul kananB-TREE
• Operasi dalam Pohon B (B- Tree)
2. Delete
Jika target node/ simpul yang akan dihapus berisi elemen lebih dari d, maka target elemen dapat langsung dihapus, tanpa harus di regenerate
Contoh : Split node/ simpul 10 Root
5 6 7 15 16 18 delete 6 5 7 15 16 18
Jika target node/ simpul yang akan dihapus berisi d node/ simpul, penghapusan akan menyebabkan underflow, maka regenerate dilakukan dengan meminjam elemen yang berada di node/ sim;ul kiri atau kanan (yang memiliki elemen lebih dari d).
Parent / separator akan berubah
Contoh : Split node/ simpul
10 20 Root
5 7 9 15 16 25 26 delete 15
9 20 Root
B-TREE
•
Operasi dalam Pohon B (B- Tree)
2. Delet e
Jika node/ simpul kiri maupun kanan yang akandilakukan peminjaman t ernyat a mempunyai elemen kurang dari d, jika dilakukan peminjaman node/ simpul t ersebut akan t erjadi underflow, maka regenerat e akan dilakukan dengan menggabung node/ simpul yang akan dihapus dengan node/ simpul kiri yang akan dihapus dengan node/ simpul di kiri/ kanan
Contoh : Split node/ simpul
9 20 Root
5 7 15 16 25 27 delete 15
20 Root
Heap Sort
Seperti metode struktur
organisasi,
Heap Sort -
M ax/ DescendingA: [ 23,17,14,6,13,10,1,5,7, 12]
2 3
1 7 1 4
6 1 3 1 0 1
Heap Sort -
M ax/ DescendingA: [ 23,17,14,6,13,10,1,5,7, 12]
2 3
1 7 1 4
6 1 3 1 0 1
5 7 1 2
i=5
Heap Sort -
M ax/ DescendingA: [ 23,17,14,6,13,10,1,5,7, 12]
2 3
1 7 1 4
7 1 3 1 0 1
5 6 1 2
i=4
Heap Sort -
M ax/ DescendingA: [ 23,17,14,6,13,10,1,5,7, 12]
2 3
1 7 1 4
7 1 3 1 0 1
5 6 1 2
i=3
Heap Sort -
M ax/ DescendingA: [ 23,17,14,6,13,10,1,5,7, 12]
2 3
1 7 1 4
7 1 3 1 0 1
5 6 1 2
i=2
Heap Sort -
M ax/ DescendingA: [ 23,17,14,6,13,10,1,5,7, 12]
2 3
1 7 1 4
7 1 3 1 0 1
5 6 1 2
Heap Sort -
M ax/ DescendingA: [ 23,17,14,6,13,10,1,5,7, 12]
1 7
1 3 1 4
7 1 2 1 0 1
Heap Sort -
M ax/ DescendingA: [ 23,17,14,6,13,10,1,5,7, 12]
1 4
1 3 1 0
7 1 2 6 1
Heap Sort -
M ax/ DescendingA: [ 23,17,14,6,13,10,1,5,7, 12]
1 3
1 2 1 0
7 5 6 1
Heap Sort -
M ax/ DescendingA: [ 23,17,14,6,13,10,1,5,7, 12]
1 2
7 1 0
1 5 6 1 3
Heap Sort -
M ax/ DescendingA: [ 23,17,14,6,13,10,1,5,7, 12]
1 0
7 6
1 5 1 2 1 3
Heap Sort -
M ax/ DescendingA: [ 23,17,14,6,13,10,1,5,7, 12]
7
5 6
1 1 0 1 2 1 3
Heap Sort -
M ax/ DescendingA: [ 23,17,14,6,13,10,1,5,7, 12]
6
5 1
7 1 0 1 2 1 3
Heap Sort -
M ax/ DescendingA: [ 23,17,14,6,13,10,1,5,7, 12]
1
5 6
7 1 0 1 2 1 3
Heap Sort -
M ax/ DescendingA: [ 23,17,14,6,13,10,1,5,7, 12]
1
5 6
7 1 0 1 2 1 3
Heap Sort -
M in/ AscendingA: [ 8,17,14,6,13,10,1,5,7, 12]
8
1 7 1 4
6 1 3 1 0 1
Heap Sort -
M in/ AscendingA: [ 8,17,14,6,13,10,1,5,7, 12]
8
1 7 1 4
6 1 3 1 0 1
5 7 1 2
i=5
Heap Sort -
M in/ AscendingA: [ 8,17,14,6,13,10,1,5,7, 12]
8
1 7 1 4
6 1 2 1 0 1
5 7 1 3
i=4
Heap Sort -
M in/ AscendingA: [ 8,17,14,6,13,10,1,5,7, 12]
8
1 7 1 4
5 1 2 1 0 1
6 7 1 3
i=3
Heap Sort -
M in/ AscendingA: [ 8,17,14,6,13,10,1,5,7, 12]
8
1 7 1
5 1 2 1 0 1 4
6 7 1 3
i=2
Heap Sort -
M in/ AscendingA: [ 8,17,14,6,13,10,1,5,7, 12]
8
5 1
1 7 1 2 1 0 1 4
6 7 1 3
Heap Sort -
M in/ AscendingA: [ 8,17,14,6,13,10,1,5,7, 12]
1
5 8
1 7 1 2 1 0 1 4
Heap Sort -
M in/ AscendingA: [ 8,17,14,6,13,10,1,5,7, 12]
5
1 2 8
1 7 1 3 1 0 1 4
Heap Sort -
M in/ AscendingA: [ 8,17,14,6,13,10,1,5,7, 12]
5
1 2 8
1 7 1 3 1 0 1 4
Heap Sort -
M in/ AscendingA: [ 8,17,14,6,13,10,1,5,7, 12]
7
1 2 8
1 7 1 3 1 0 1 4
Heap Sort -
M in/ AscendingA: [ 8,17,14,6,13,10,1,5,7, 12]
7
1 2 8
1 7 1 3 1 0 1 4
Heap Sort -
M in/ AscendingA: [ 8,17,14,6,13,10,1,5,7, 12]
8
1 2 1 4
1 7 1 3 1 0 7
Heap Sort-
M in/ AscendingA: [ 8,17,14,6,13,10,1,5,7, 12]
1 0
1 2 1 4
1 7 1 3 8 7
Heap Sort -
M in/ AscendingA: [ 8,17,14,6,13,10,1,5,7, 12]
1 2
1 3 1 4
1 7 1 0 8 7
Heap Sort-
M in/ AscendingA: [ 8,17,14,6,13,10,1,5,7, 12]
1 3
1 7 1 4
1 2 1 0 8 7
Heap Sort -
M in/ AscendingA: [ 8,17,14,6,13,10,1,5,7, 12]
1 4
1 7 1 3
1 2 1 0 8 7
Heap Sort-
M in/ AscendingA: [ 8,17,14,6,13,10,1,5,7, 12]
1 7
1 4 1 3
1 2 1 0 8 7