Anda di halaman 1dari 138

Modul ke:

Review
15 Fakultas
FASILKOM YUWAN JUMARYADI, S.Kom., MM

Program Studi
SISTEM
INFORMASI
Quick Sort & Heap Sort

2
Kemampuan Akhir Yang Diharapkan
1. Quick sort.
 Menjelaskan cara kerja Quick sort.
 Membuat algoritma dan penerapannya kedalam bahasa
pemrograman.
2. Heap sort.
 Menjelaskan cara kerja heap sort.
 Membuat algoritma dan penerapannya kedalam bahasa
pemrograman.
Quicksort
 Bekerja dengan memartisi data menjadi 2 bagian sehingga
a[kiri], a[kiri+1], … , a[i-1] ≤ a[i]
a[i] berada pada posisi yang tepat
a[i+1], a[i+2], … , a[kanan] ≥ a[i]
 Kompleksitas algoritma O(n log n)

4
Quicksort
Quicksort (0,5)

5
Quicksort
 Quicksort (2,5)

 Quicksort (2,3)

6
Quicksort
 Skema pelaksanaan sorting

7
Heapsort
 Tree (pohon) adalah struktur data dengan sifat satu elemen
data (satu node) berhubungan dengan beberapa elemen data
lain pada level berikutnya

 Binary tree adalah tree dengan sifat satu node dihubungkan


dengan maksimum dua node anak (left child dan right child)

8
Heapsort
 Complete binary tree adalah binary tree dengan jumlah
level minimum dan child pada level terendah berada pada
posisi kiri

9
 Heap adalah complete binary tree yang nilai suatu node
lebih kecil dari nilai node kedua anaknya
 Untuk keperluan heapsort, heap disusun sehingga nilai suatu
node lebih besar dari nilai kedua anaknya
 Implementasi dengan menggunakan array dengan elemen [0]
dikosongkan, sehingga a[i] > a[2*i] dan a[i] > a[2*i+1]

10
 Algoritma heapsort
 Bentuk heap
 Ulangi untuk i dari n sampai 2
 Tukar arr[1] dan arr[i] sehingga nilai pada [i] adalah yang
paling besar saat itu
 Rekonstruksi heap
 Kompleksitas algoritma O(n log n)

11
12
Membentuk Heap

13
Ambil nilai terbesar dari rekonstruksi
heap

14
Ambil nilai terbesar dari rekonstruksi
heap

15
General tree & Binary tree

16
Kemampuan Akhir Yang Diharapkan
1. General tree : mengenal/mengetahui pengertian dasar tree.
2. Binary tree : representasi dari binary tree dan traversalnya.
General Tree
 Tree merupakan struktur hirarki pada item koleksi .
Contoh Tree yang umun seperti silsilah dan bagan
organisasi. Tree digunakan untuk membantu menganalisis
rangkaian listrik dan untuk mewakili struktur rumus-
rumus matematika. Tree juga muncul secara alami di
berbagai bidang ilmu komputer. Misalnya, Tree yang
digunakan untuk mengatur informasi dalam sistem
database dan untuk mewakili struktur sintaksis dari
sumber program dalam kompiler.

18
Terminologi Dasar
 Sebuah Tree adalah kumpulan elemen yang disebut node, salah
satunya adalah dibedakan sebagai root, bersama dengan hubungan
(“parenthood") yang menempatkan struktur hirarkis pada node.
Simpul, seperti elemen unsur daftar, bisa dari jenis apa pun yang kita
inginkan. Kita sering menggambarkan node sebagai surat huruf, string,
atau nomor dengan lingkaran di sekitarnya. Secara formal, Tree dapat
didefinisikan secara rekursif dengan cara berikut.
 Sebuah node tunggal dengan pohon. Node ini juga merupakan akar
pohon.
 Misalkan n adalah node dan T1, T2,. . . , Tk adalah pohon dengan akar
n1, n2,. . . , Nk, masing-masing. Kita bisa membangun pohon baru
dengan membuat n menjadi induk dari node n1, n2,. . . , Nk. Dalam
pohon ini n adalah akar dan T1, T2,. . . , Tk adalah sub pohon dari akar.
Node n1, n2,. . . , Nk yang disebut anak-anak simpul n.

19
Binary Tree
 Merupakan tipe data abstrak yang mempunyai hubungan
antar elemen: One to Two. Hubungan One to Two
meliputi hubungan One to One dan One to Zero
 Binary Tree adalah bentuk khusus dari Tree dimana setiap
node hanya diperbolehkan memiliki maksimum dua anak

20
Binary Tree
 Bentuk Umum Binary Tree

21
Karakteristik Binary Tree
 Terdapat satu node yang unik, yang tidak memiliki
predecessor. Node ini disebut ROOT.
 Terdapat satu atau beberapa node yang tidak memiliki
successor. Node-node tersebut disebut LEAF
 Setiap node kecuali ROOT, pasti memiliki satu
predecessot yang unik
 Setiap node kecuali leaf, pasti memiliki satu atau dua
successor

22
Hubungan Parent-Child
 PARENT adalah predecessor langsung dari suatu node
 CHILD adalah successor langsung dari suatu node
 Node-node yang memiliki Parent yang sama disebut
SIBLING

23
1. Root Node : A
2. Leaf Node : D, E, H, I, G
3. Node A adalah parent dari
node B, C
4. Node H, I adalah children
dari node F
5. Node G adalah sibling dari
Node F

24
Hubungan Ancestor-Descendant
 Ancestor adalah semua node yang berada diatas suatu
node pada path yang sama
 Descendant adalah semua node yang berada dibawah
suatu node
1. Node A, C, F adalah ancestor dari node H dan juga ancestor
dari node I
2. Node G, G, H, dan I adalah descendant dari node C

Tree Path Length


Path Length yang terpanjang, diukur dari root hingga leaf.
Pada contoh tree diatas, Tree Path Length = 3.

25
Tree Height
 Level tertinggi dari suatu tree. Pada contoh tree diatas,
Tree Height = 4

Bentuk-bentuk Khusus Binary Tree


1. Full Binary Tree
semua node kecuali leaf mempunyai 2 anak dan memiliki
path length yang sama

26
2. Complete Binary Tree
Semua node kecuali leaf
mempunyai 2 anak atau
tidak punya anak sama sekali

3. Skewed Binary Tree


Bila semua node kecuali leaf,
hanya memiliki satu anak

27
Rekursive Pada Binary Tree
1. Suatu binary tree dapat berupa tree kosong
2. Bila tree tidak kosong, tree memiliki satu node – disebut
Root Node – beserta subtree kiri dan subtree kanan
3. Subtree kiri dan subtree kanan dapat berupa tree kosong
4. Bila subtree tidak kosong, subtree memiliki satu node –
disebut root node – beserta subtree kiri dan subtree kanan

28
Tree Traversal
 Akses pada suatu node pada tree tidak semudah seperti
pada linked list, karena sejak masuk ke root node, ada dua
jalur yang harus dipilih: left child atau right child.
 Tiga macam traversal yang dapat digunakan untuk
mengakses node-node didalam binary tree:
1. INORDER
Urutan : Left – Root - Right
2. PREORDER
Urutan : Root - Left –Right
3. POSTORDER
Urutan : Left - Right – Root

29
 Traversal Order :C – B – D –A - F – E – G
 Traversal PreOrder :A – B – C - D – F – E – G
 Traversal PostOrder : C –D – B – F – G - E – A
30
Operasi-operasi Pada Binary Tree
1. Create()
Menciptakan binary tree baru dalam keadaan kosong
2. Insert(elemen_type e, relative_pos r, bool fail)
Menambahkan satu elemen ke dalam binary tree pada posisi
relatif terhadap current pointer. Posisi current pindah ke node
baru.

Relative Posistion:
Root : Insert node baru sebagai root
Left : Insert node baru sebagai Left Child
Right : Insert node baru sebagai Right Child
Parent : Insert node baru sebagai Parent
31
3. DeleteSub()
Subtree yang ditunjuk oleh current akan dihapus, posisi current
pindah ke parent dari node yang dihapus
4. FIND(relative_pos rel, bool fail)
Memindahkan Current ke posisi rel
5. Empty()
Memeriksa apakah binary tree kosong
6. Clear()
Menghapus seluruh binary tree
7. Update(elemen_type e)
Isi node yang ditunjuk oleh current akan diganti oleh isi dari e

32
8. Retrieve(elemen type *e)
Menyalin isi node yang ditunjuk oleh current ke variabal e
9. Traversal(order ord)
Melaksanakan traversal sesuai dengan ord, yaitu: Inorder,
Preorder, atau Postorder. Posisi current tidak berubah

33
Implementasi Binary Tree dengan Array
 Indeks pada array menyatakan nomor node
 Indeks 0 adalah Root node
 Indeks Left Child dari node P adalah 2P + 1
 Indeks Right Child dari node P adalah 2P + 2
 Indeks Parent dari node P adalah (P - 1)/2

34
Implementasi Binary Tree dengan Array
 Contoh :

 Posisi node dalam array

35
Balancing Binary Search Tree
Height and Bound Balanced Tree

36
Kemampuan Akhir Yang Diharapkan
 Mengetahui Balancing binary search tree.
 Height dan Bound balanced tree : mengetahui apa yang
dimaksud dengan height balanced tree (AVL Tree) dan bound
balanced tree, dan contohnya.
AVL trees were invented by Adelson-Velskii and Landis in 1962. An AVL tree
is a balanced binary search tree where every node in the tree satisfies the
following invariant: the height difference between its left and right children is
at most 1. Hence, all sub-trees of an AVL tree are themselves AVL. The height
difference between children is referred to as the balance factor of the node.
http://www.cs.cornell.edu/courses/cs312/2007sp/lectures/lec15.html

weight-balanced binary trees (WBTs) are a type of self-balancing binary


search trees that can be used to implement dynamic sets, dictionaries (maps)
and sequences. These trees were introduced by Nievergelt and Reingold in
the 1970s as trees of bounded balance, or BB[α] trees.
http://en.wikipedia.org/wiki/Weight-balanced_tree

38
Binary Search Tree
Binary Search Tree adalah binary tree dengan ketentuan
sebagai berikut:
1. Semua left child harus lebih kecil dari parent dan right
child
2. Semua right child harus lebih besar dari Parent dan Left
Child
3. Parent harus lebih besar dari Left Subtree dan harus
lebih kecil dari Right Subtree
4. Tidak boleh ada node yang mempunyai nilai yang sama,
dengan kata lain tidak boleh terjadi duplikasi data

39
Binary Search Tree – Target Node
Karena ketentuan diatas, maka Binary Search Tree dapat
digunakan untuk tempat penyimpanan data secara terurut,
sehingga pencarian data (searching) bisa lebih efisien. Untuk
itu dapat ditentukan suatu target node yang berisi data yang
akan dicari.
Contoh Binary Search Tree

40
Operasi-operasi Binary Search Tree
 Semua operasi pada Binary Tree dapat digunakan pada
Binary Search Tree, kecuali:
 Insert
 Update
 Deletsub
 Perlu perubahan pada operasi Insert dan delete sehingga
urutan data didalam tree dapat dipertahankan

41
1. Insert(element_type e)
insert selalu dimulai dari root node
Bila tree kosong, maka node baru sebagai root node
a.
b. Bila tidak kosong nilai e dibandingkan dengan nilai root
c. Bila lebih kecil insert ke subtree kiri
d. Bila lebih besar insert ke subtree kanan
Contoh

42
Insert 48

Insert 40

43
2. Delete( ) Jika yang di delete adalah leaf
Semua proses delete akan node, maka tidak perlu
dimulai dari Binary Search perubahan pada posisi tree.
Tree berikut: Contoh:
Delete(4)

44
Jika yang di delete adalah node Jika yang di delete adalah node
yang memiliki satu anak, maka yang memiliki 2 anak, maka
anak tersebut menggantikan pengganti posisi parent dapat
posisi parent. dipilih.
Contoh: Delete(5)
a. Node terbesar dari subtree
kiri, atau
b. Node terkecil dari subtree
kanan
Contoh:
Delete(20)

45
Dari subtree kiri: 3. Update(elemen_tipe e)
Pada dasarnya operasi
update () merupakan
gambaran dari operasi:
Delete dan Insert. Operasi
ini sebetulnya kurang
bermakna.
Contoh:
Dari subtree kanan: Update(34)
Delete node yang ditunjuk
oleh current kemudian
insert(34)

46
AVL (Height-Balanced) Tree
 Kelemahan yang dialami oleh Binary Search Tree adalah
kemungkinan bentuk tree yang didapat adalah bentuk
skewed (Binary Tree miring) sehingga pencarian menjadi
sekuensial.
 Untuk menghindari hal tersebut, digunakan AVL Tree,
dimana karakteristik dari Tree tersebut adalah:
 Perbedaan ketinggian antara subtree kiri dengan subtree kanan
tidak lebih dari 1

47
 Keseimbangan subtree kiri dan kanan, dijaga dengan suatu
mekanisme rotasi, untuk itu perlu diterapkan beberapa
ketentuan sebagai berikut:
1. Tanda keseimbangan subtree:
a. Tanda parent diberi tanda 0, bila ketinggian subtree kiri =
subtree kanan
b. Node parent diberi tanda +, bila ketinggian subtree kiri <
subtree kanan
c. Node parent diberi tanda -, bila ketinggian subtree kiri >
subtree kanan

48
Contoh:

Catatan:
meskipun tidak selalu
ditulis, semua leaf node
mempunyai tanda 0, karena
dianggap seimbang

49
2. Search Path
path dimana node baru akan melaluinya untuk sampai
pada node insert
contoh: insert(17)

50
3. Pivot Node
Pivot node adalah node yang:
a. Berada di search-Path
b. Bertanda + atau –
c. Paling dekat dengan node baru

Pivot node merupakan sumbu putar, bila regenerasi tree


diperlukan

51
Contoh

52
 Node 16 adalah pivot node, bila node baru =
 Node 65 adalah pivot node, bila node baru =
 Node 50 adalah pivot node, bila node baru =
 Node 20 adalah pivot node, bila node baru =

53
Operasi Insert
 Kasus 1
Tidak terdapat pivot node, maka node baru langsung masuk tanpa
harus melihat keseimbangan subtree
 Kasus 2
Terdapa pivot node, periksa keseimbangan subtree, bila node baru
tidak menyebabkan perbedaan ketinggian subtree > 1 maka node
dapat masuk tanpa regenerasi tree
Keseimbangan subtree dilihat dari pivot node
 Kasus 3
Terdapat pivot node, periksa keseimbangan subtree, bila node
baru menyebabkan perbedaan ketinggian subtree >1 maka node
masuk dengan regenerasi tree

54
Regenerasi tree
1. Rotasi tunggal (Single Rotation)
Rotasi kiri atau rotasi kanan
2. Rotasi ganda (Double Rotation)
Rotasi kiri kemudian rotasi kanan atau
Rotasi kanan kemudian rotasi kiri

Contoh kasus 1:

55
 Insert dengan nilai node berapa pun, langsung masuk,
misalkan Insert(54)

 Contoh kasus 2:

56
 Insert (70), pivot node adalah node 65

 Contoh kasus 2:
Insert(72), pivot node adalah
node 50

57
 Regenerasi Tree (Rotasi Kiri)

 Gambar parent, anak kiri dan kanan

58
Rotasi ganda (Double Rotation)
 Insert(10); insert(30) dan insert(20); akan menghasilkan
tree:

 Seandainya dilakukan rotasi tunggal menurut langkah-


langkah yang telah dijelaskan pada pertemuan yang lalu,
maka didapat hasil sebagai berikut:

59
 Hasil tersebut tentu bukan yang diharapkan, oleh karena
itu kasus seperti diatas harus diselesaikan dengan rotasi
ganda

60
Hasil dari rotasi pertama

Hasil dari rotasi kedua

Sesuai dengan yang diharapkan

61
 Contoh lain: insert(53)

Hasil rotasi pertama Hasil rotasi kedua

62
Rotasi ganda:
Rotasi kiri kemudian rotasi kanan
Insert(21)

63
Hasil rotasi pertama

64
Hasil rotasi kedua

65
Operasi Delete
Pada operasi delete, tidak ada pivot node, karena tidak
ada node baru yang akan masuk. Sebagai acuan bila operasi
delete menyebabkan tree harus regenerasi, digunakan
pemeriksaan secara berjenjang mulai dari anak node yang
dihapus dimana node pengganti berada, dilanjutkan ke posisi
node yang dihapus, kemudian terus naik hingga ke root
node.
Selama pemeriksaan dapat terjadi beberapa rotasi baik
rotasi tunggal maupun rotasi ganda, dengan demikian
operasi delete merupakan operasi yang sangat kompleks,
lebih sulit dari operasi insert.

66
 Contoh: Delete node 16 dari AVL Tree berikut

Konfigurasi tree diambil dari buku:


Data Structures & Program Design By Robert L. Kruse (1987) Prentice Hall

67
 Menurut aturan Binary Search Tree, pengganti node 16
dapat diambil dari subtree kiri (node 15) atau dari subtree
kanan (node 17). Dalam contoh ini, pengganti diambil dari
subtree kiri

68
 Pemeriksaan
1. Node 14, sebagai anak kiri node 15 adalah leaf node (bertanda
0, meskipun tidak ditulis)
2. Node 15, sebagai pengganti node 16 yang dihapus, memiliki
subtree kiri dan subtree kanan dengan selisih ketinggian > 1,
sehingga harus dilakukan regenerasi
3. Karena node 15 mempunya tanda + sama dengan tanda node
18, maka dilakukan rotasi tunggal
4. Setelah rotasi selesai, node 18 menggantikan node 15
5. Node 13 sebagai parent dari Node 18, memiliki subtree kiri
dan subtree kanan dengan selisih >1, sehingga harus dilakukan
regenerasi

69
6. Karena Node 13 mempunya tanda (-) sedangkan anak sebelah
kiri, yaitu node 5 mempunyai tanda (+), oleh karena itu harus
dilakukan rotasi ganda
7. Node 13 adalah root node, dengan demikian bila rotasi telah
dilaksanakan, maka seluruh proses pemeriksaan selesai, dan
hasilnya akan berupa AVL Tree.

70
Hasil rotasi pada node 18. Berikutnya adalah rotasi pada
node 5, sebagai rotasi pertama, dari rotasi ganda yang harus
diselesaikan.

71
Hasil rotasi pada node 5 (rotasi pertama). Berikutnya adalah
rotasi pada node 13, sebagai rotasi kedua dari rotasi ganda
yang harus diselesaikan.

72
Hasil rotasi pada node 13 (rotasi kedua).
Proses delete selesai

73
Sequential Search & Binary Search Tree

74
Kemampuan Akhir Yang Diharapkan
 Sequential search.
 Mengerti bagaimana melakukan search terhadap suatu struktur data
dengan cara sequential.
 Binary search tree.
 Mengerti bagaimana melakukan search terhadap suatu struktur data
dengan cara binary search tree.
Searching
 Searching adalah proses mendapatkan (retrieve) informasi
berdasarkan kunci tertentu dari sejumlah informasi yang
telah disimpan
 Single match
 Multiple matches
 Siapa nama mahasiswa dengan NIM 0900798566? Single match
 Siapa saja yang mendapatkan nilai Algoritma ≥ 8? Multiple matches
 Sequential Search
 Pencarian data secara urut mulai dari data pertama sampai kunci
yang dicari ditemukan atau sampai seluruh data telah dicari dan
tidak ditemukan
 Dilakukan pada data yang tidak terurut

76
Sequential Search

 Kunci pencarian? 0700400539


 NIM[0] == kunci?  tidak
 NIM[1] == kunci?  tidak
 NIM[2] == kunci?  ya Fadli Dahlan, 2.78
77
Sequential Search
typedef char tkey[11];
struct trecord{
tkey key;

}
int sequential search (trecord *a, int n, tkey key){
int i;
for (i=0; i<n; i++)
if(strcmp(key), a[i].key == 0) return i;
return -1;
}
78
Binary Search
 Pencarian data dimulai dari pertengahan data yang telah
terurut
 Jika kunci pencarian lebih kecil dari pada kunci posisi
tengah maka kurangi lingkup pencarian pada separuh data
yang pertama (firs half)

79
Binary Search
Int binarysearch(trecord *arr, int n, tkey
key){
int mid, low, high;
low=0; high=n-1;
while(low<=high){
mid=(low+high)/2
if(strcmp(key,arr[mid].key==0)
return mid;
if(strcmp(key,arr[mid].key<0)
high= mid-1;
else low=mid+1;
} return -1
}
80
Binary Search Tree
 Binary search tree adalah binary tree dengan ketentuan
sebagai berikut:
1. Semua Left Child harus lebih kecil dari Parent dan Right Child
2. Semua Right Child harus lebih besar dari Parent dan Left Child
3. Parent harus lebih besar dari Left Subtree dan harus lebih kecil
dari Right Subtree
4. Tidak boleh ada node yang mempunyai nilai yang sama, dengan
kata lain tidak boleh terjadi duplikasi data

81
Binary Search Tree
 Terget node
karena ketentuan diatas, maka Binary Search Tree dapat
digunakan untuk tempat penyimpanan data secara terurut,
sehingga pencarian data (searching) bisa lebih efisien. Untuk itu
dapat ditentukan suatu target node yaitu suatu node yang berisi
data yang akan dicari.
Contoh Binary Search Tree

82
 Operasi-operasi pada Binary Search Tree
 Semua operasi pada binary tree dapat digunakan pada binary
search tree, kecuali:
 Insert
 Update
 Deletsub
 Perlu perubahan pada operasi Insert dan Delete sehingga
urutan data didalam tree dapat dipertahankan

83
1. Insert(elemen_type e)
Insert selalu dimulai dari root node
a. Bila tree kosong, maka node baru sebagai root node
b. Bila tidak kosong nilai e dibandingkan dengan nilai root
c. Bila lebih kecil insert ke subtree kiri
d. Bila lebih besar insert ke subtree kanan

84
Binary Search Tree
 Contoh:
Insert(34)

Insert(15)

85
Binary Search Tree
Insert(48)

Insert(40)

86
Binary Search Tree
2. Delete()
Semua proses delete akan dimulai dari Binary Search Tree
berikut:

87
Binary Search Tree
 Jika yang di delete adalah Leaf node, maka tidak perlu
perubahan posisi pada tree
Contoh:
Delete(4)

88
 Jika yang di delete adalah node yang memiliki satu anak, maka
anak tersebut menggantikan posisi parent
 Contoh: delete(5)

89
Binary Search Tree
 Jika yang di delete adalah node yang memiliki dua anak, maka
pengganti posisi parent dapat dipilih:
a. Node terbesar dari subtree kiri, atau
b. Node terkecil dari subtree kanan
 Contoh: delete(20)

90
Binary Search Tree
 Dari subtree kiri:

 Dari subtree kanan:

91
Binary Search Tree
3. Update(elemen_tipe e)
pada dasarnya operasi update() merupakan gabungan
dari operasi: Delete dan Insert. Operasi ini sebetulnya
kurang bermakna.
Contoh:
update(34)
delete node yang ditunjuk oleh current kemudian
insert(34)

92
Dasar Graph dan Graph Berarah
Representasi matriks adjacency
Representasi linked list

93
Kemampuan Akhir Yang Diharapkan
 Definisi dasar graph dan graph berarah : memahami apa yang
dimaksud dengan graph dan jenis-jenisnya.
 Representasi matriks adjacency dan representasi linked list.
Graph
 Merupakan struktur data yang mempunyai hubungan antar
elemen: many to many

Notasi Graph
Graph terdiri dari:
 Node atau vertice
 Arc atau edge
G = (V,E)

95
Tipe Graph
 Undirected Graph

 Directed Graph

 Weighted Graph

96
Representasi Graph

1. Adjacency Matrix

97
2. Adjacency List
Node Edge List
A BCD
B F  E  C A
C B  E A
D AE
E DCBF
F EB

98
Representasi Graph dalam bentuk
Matrix
a. Adjacency matrix graph tak berarah (Undirected Graph)

Data yang terdapat baik dalam row maupun column, dapat menyatakan
degree sebuah simpul
99
Representasi Graph dalam bentuk
Matrix
b. Adjacency Matrix Graph Berarah (directed Graph)

Data yang terdapat dalam suatu row, dapat menyatakan outdegree simpul
yang bersangkutan
100
Representasi Graph dalam bentuk
Matrix
c. Inverse Adjacency Matrix Graph Berarah (Directed Graph)

Perbedaan pokok dengan adjacency matrix adalah :


1. Data yang ada dalam suatu row, menyatakan indegree
2. Data yang ada dalam column, menyatakan outdegree

101
Representasi Graph dalam bentuk
Matrix
d. Adjacency Matrix Graph Berbobot Tak Berarah
(Weighted Undirected Graph)

Dua buah simpul yang tidak berhubungan langsung atau tidak dihubungkan
langsung oleh sebuah busur, maka dianggap dihubungkan oleh sebuah
busur yang nilai bobotnya tidak terhingga.
102
Representasi Graph dalam bentuk
Matrix
e. Incidence Matrix Graph Tak Berarah

Matrix n * m
n = jumlah simpul ; m = jumlah busur
103
Representasi Graph dalam bentuk
Matrix
e. Incidence Matrix Graph Tak Berarah

104
Representasi Graph dalam bentuk
Matrix
f. Vector Matrix Graph Tak Berarah

105
Representasi Graph dalam bentuk
Linked-List
a. Adjacency List Graph Tak Berarah

106
Representasi Graph dalam bentuk
Linked-List
b. Adjacency List Graph Berbobot Tak Berarah

107
Representasi Graph dalam bentuk
Linked-List
c. Adjacency List Graph Berbobot dan Berarah

108
Representasi Graph dalam bentuk
Linked-List
d. Inverse Adjacency List Graph Berbobot dan Berarah

109
Penelusuran Graph (Graph Traversal)
Penelusuran Graph maksudnya mengunjungi (visit) atau membaca
Graph menurut arah tertentu, simpul per simpul, mulai dari
simpul tertentu sampai semua simpul dikunjungi tanpa ada simpul
yang dikunjungi atau dibaca lebih dari satu kali.

Ada 2 macam penelusuran :


1. Depth First Search (DFS), penelusuran dengan mendahulukan
arah kedalaman
2. Breadth First Serch (BFS), penelusuran dengan mendahlukan
arah melebar

110
Penelusuran Graph (Graph Traversal)
1. Depth First Search
Depth First Search (DFS), penelusuran graph yang arah
penelusurannya mendahulukan ke arah kedalaman graph tersebut.

111
Penelusuran Graph (Graph Traversal)
1. Depth First Search
Depth First Search (DFS), penelusuran graph yang arah
penelusurannya mendahulukan ke arah kedalaman graph tersebut.

112
Penelusuran Graph (Graph Traversal)
1. Depth First Search

Dalam proses penelusuran, akan terlihat nanti pada suatu titik, 'terpaksa'
dilakukan langkah kembali ke simpul sebelumnya. Dalam pemrograman,
untuk dapat kembali ke posisi sebelumnya, biasanya diperlukan stack. Pada
penelusuran, kita menggunakan stack S, dengan jumlah elemen tidak
kurang dari jumlah simpul graph yang ditelusuri.

Awal penelusuran:
1. Misal penelusuran dimulai dari simpul A.
Ambil A. Simpan (Push) A ke Stack S.

2. A berhubungan dengan B dan C. Ambil B


dan simpan B ke stack. Simpul B
dinyatakan lebih dulu dari simpul C.

113
2. Breadth First Search
Breadth First Search (BFS), penelusuran graph yang arah
penelusurannya mendahulukan ke arah 'lebar' graph tersebut.

114
2. Breadth First Search
Breadth First Search (BFS), penelusuran graph yang arah
penelusurannya mendahulukan ke arah 'lebar' graph tersebut.

115
2. Breadth First Search
Proses penelusuran:
Diperlukan sebuah array untuk antrian (Queue) yang diberi
nama Q yang jumlah elemenya tidak kurang dari jumlah simpul.

Awal penelusuran:
1. Misal penelusuran dimulai dari simpul
A. Simpan A ke antrian Q. Pointer F
dan R menunjuk ke A.

2. A berhubungan dengan B dan C.


Ambil dan kunjungi semuanya.
Simpan B dan C ke dalam antrian. R
menunjuk yang terakhir yaitu C.
116
Graph tranvesal, path terpendek dan
spanning tree

117
Kemampuan Akhir Yang Diharapkan
 Memahami Graph tranvesal, path terpendek dan spanning tree.
dan contohnya.
Graph
Merupakan struktur data yang mempunyai hubungan antar
elemen: Many to Many.
Notasi Graph:
Graph terdiri dari:
 Node atau vertice
 Arc atau Edge
 G = (V,E)

119
Tipe Graph
 Undirected Graph

 Directed Graph (Digraph)

 Weighted Graph

120
Representasi Graph

1. Adjacency Matrix
A B C D E F
A 0 1 1 1 0 0
B 1 0 1 0 1 1
C 1 1 0 0 1 0
D 1 0 0 0 1 0
E 0 1 1 1 0 1
F 0 1 0 0 1 0

121
Graph Traversal
Breadth First Traversal (BFT)
Algoritma BFT:
Traversal dimulai dari node A
1. Set semua node dengan status siap dikunjungi (status = 1)
2. Enqueue(Node Awal), ubah status node awal menjadi menunggu (status =
2)
3. Dequeue(&Node_N), ubah status Node_N menjadi telah diproses (status
= 3)
4. Enqueue semua node yang adjacent dengan node_N dan memiliki status
= 1, ubah status mereka menjadi = 2
5. Ulangi 3 s/d 4 hingga queue kosong

Contoh Graph:

122
Adjacency List:
Node Edge List
A BCD
B E  F  C A
C ABF
D AFGH
E FB
F DCBEG
G DF
H D

123
Proses BFT
 A = 1, B = 1, C = 1, D = 1, E = 1, F = 1, G = 1, H = 1
 Enqueue(Node Awal);

 A = 2, B = 1, C = 1, D = 1, E = 1, F = 1, G = 1, H = 1

124
Dequeue(&Node_N), A=3;
Enqueue semua node yang adjacent dengan A dan yang memiliki
status = 1.

A = 3, B = 2, C = 2, D = 2, E = 1, F = 1, G = 1, H = 1

Dequeue(&Node_N), B=3;
Enqueue semua node yang adjacent dengan B dan yang memiliki
status = 1.

A = 3, B = 3, C = 2, D = 2, E = 2, F = 2, G = 1, H = 1

125
Dequeue(&Node_N), C=3;
Enqueue semua node yang adjacent dengan C dan yang memiliki
status = 1.

A = 3, B = 3, C = 2, D = 2, E = 2, F = 2, G = 1, H = 1

Dequeue(&Node_N), D=3;
Enqueue semua node yang adjacent dengan B dan yang memiliki
status = 1.

A = 3, B = 3, C = 3, D = 3, E = 2, F = 2, G = 2, H = 2

126
Dequeue(&Node_N), E=3;
Enqueue semua node yang adjacent dengan E dan yang memiliki
status = 1.

Dequeue(&Node_N), F=3;
Enqueue semua node yang adjacent dengan B dan yang memiliki
status = 1.

Dequeue(&Node_N), G=3;
Enqueue semua node yang adjacent dengan G dan yang memiliki
status = 1.

127
Dequeue (&Node_N), H = 3;
Queue kosong, selesai.
Hasil Traversal:
A – B – C – D – E – F- G - H

128
Depth First Traversal
 Algoritma DFT:
 Traversal dimulai dari node A
1. Set semua node dengan status siap dikunjungi (status = 1)
2. Push(Node Awal), ubah status Node Awal menjadi menunggu
(status = 2)
3. Pop(&Node_N), ubah status Node_N menjadi telah diproses
(status = 3)
4. Push semua node yang adjacent dengan Node_N dan memiliki
status = 1, ubah status mereka menjadi = 2
5. Ulangi 3 s/d 4 hungga stack kososng

129
Depth First Traversal
 Proses DFT
A = 1, B = 1, C = 1, D = 1, E = 1, F = 1, G = 1, H =1
Push(Node Awal);
Top  A
A = 2, B = 1, C = 1, D = 1, E = 1, F = 1, G = 1, H =1

Pop(&Node_N); A=3
Push semua node yang adjacent dengan A dan yang memiliki status = 1
Top  D
C
B

A = 3, B = 2, C = 2, D = 2, E = 1, F = 1, G = 1, H =1

130
Depth First Traversal
Pop(&Node_N); D=3
Push semua node yang adjacent dengan D dan yang memiliki status = 1
Top H
G
F
C
B

A = 3, B = 2, C = 2, D = 3, E = 1, F = 2, G = 2, H = 2

Pop(&Node_N); H=3
Push semua node yang adjacent dengan A dan yang memiliki status = 1
Top  G
F
C
B

A = 3, B = 2, C = 2, D = 3, E = 1, F = 2, G = 2, H = 3

131
Depth First Traversal
Pop(&Node_N); G=3
Push semua node yang adjacent dengan H dan yang memiliki status = 1
Top F
C
B

A = 3, B = 2, C = 2, D = 3, E = 1, F = 2, G = 3, H = 3

Pop(&Node_N); F=3
Push semua node yang adjacent dengan H dan yang memiliki status = 1
Top  E
C
B

A = 3, B = 2, C = 2, D = 3, E = 1, F = 3, G = 3, H = 3

132
Depth First Traversal
Pop(&Node_N); E=3
Push semua node yang adjacent dengan H dan yang memiliki status = 1
Top C
B

A = 3, B = 2, C = 2, D = 3, E = 3, F = 3, G = 3, H = 3

Pop(&Node_N); C=3
Push semua node yang adjacent dengan H dan yang memiliki status = 1
Top  B

Pop(&Node_N); B=3

Stack Kosong, Selesai

Hasil Traversal:
A- D – H – G – F – E – C – B

133
Aplikasi Graph
 Aplikasi Graph cukup banyak diantaranya adalah:
1. Minimun Spanning Tree
2. Single Source Shortest Path
3. Map Coloring

134
Minimum Spanning Tree (MST)
Dari graph berikut ini akan dibuat beberapa contoh
kemungkinan spanning tree

Tiga dari banyak kemungkinan Spanning Tree

135
Minimum Spanning Tree (MST) (cont.)
Bila edge diberi bobot atau cost (weighted graph), maka spanning
tree dengan cost termurah disebut MST
Contoh:

MST:
Dengan Total Cost
= 5 + 6 + 11 + 16 + 8
= 56

136
Single Source Shortest Path (S3P)
 Mencari jalur terpendek (cost termurah) dari node 1 ke semua
node

 Algoritma Djikstra digunakan untuk S3P, untuk contoh digraph


diatas, diperoleh hasil:
 1 – 2 = 10, yaitu mengikuti jalur: 1 – 2
 1 – 3 = 50, yaitu mengikuti jalur: 1 – 4 - 3
 1 – 4 = 30, yaitu mengikuti jalur: 1 – 4
 1 – 5 = 60, yaitu mengikuti jalur: 1 – 4 – 3 – 5
137
Terima Kasih
YUWAN JUMARYADI, S.Kom., MM

Anda mungkin juga menyukai