Anda di halaman 1dari 46

TUGAS KELOMPOK

STRUKTUR DATA

BINARY TREE &GRAPH

Disusun oleh :
(

DR. SOETOMO UNIVERSITY


Jl. Semolowaru No. 84, Sukolilo, Surabaya, Jawa Timur
2016

KATA PENGANTAR

Puji Syukur khadirat Allah Yang Maha Kuasa karena atas Rahmat dan
Hidayah-Nyalah kami dapat menyelesaikan Tugas Akhir Semester ini.
Makalah ini merupkan salah satu bagian dalam Tugas kami yang berjudul
BINARY TREE &GRAPH. Terima kasih juga kepada Bapak ..................
selaku dosen Mata Kulia Struktur Data di kelas kami.
Makalah ini berisi tentang Pembelajaran mengenai BINARY TREE
GRAPH di dalam Struktur Data. Tentunya kami sangat berharap Makalah ini
dapat berguna bagi siapapun yang membacanya.
Masih banyak kekurangan dalam makalah ini .Selain itu dalam
penyusunan tugas atau materi ini, tidak sedikit hambatan yang penulis
hadapi. Namun penulis menyadari bahwa kelancaran dalam penyusunan
materi ini tidak lain berkat bantuan, dorongan dan bimbingan teman-teman,
sehingga kendala-kendala yang penulis hadapi teratasi

Surabaya, 19 Juli2016

Tim Penyusun

DAFTAR ISI

KATA PENGANTAR ...........................................................................................


DAFTAR ISI ........................................................................................................
I. PENDAHULUAN ..............................................................................................
II. TEORI BINARY TREE ....................................................................................
A. Definisi Binary Tree ..................................................................................
B. Jenis-Jenis Binary Tree ............................................................................
C. Operasi-operasi Pada Binary Tree ...........................................................
a. Binary Search Tree ..............................................................................
b. Traversal Dalam Binary Tree ..............................................................
III. TEORI GRAPH ..............................................................................................
A. Definisi Graph ..........................................................................................
B. Istilah dalam Graph ..................................................................................
C. Jenis jenis Graph ..................................................................................
D. Konektivitas Tiap Jenis Graph..................................................................
E. Metode Pencarian Vertex .........................................................................
a. Depth First Search (DFS) .....................................................................
b. Breadth First Search (BFS) ..................................................................
F. Shortest Path ...........................................................................................
a. Graph Berbobot (Weighted Graph) ......................................................
b. Algoritma Dijkstras ..............................................................................
c. Dinamic Programming ..........................................................................
G. Minimum Spanning Tree ..........................................................................
H. Algoritma Menentukan Minimum Spanning Tree (MST) ..........................
IV. Review Program Ascending & Descending ...................................................
V. Review Program Double Lingked List.............................................................
VI. DAFTAR PUSTAKA ......................................................................................

I. PENDAHULUAN

Dalam

istilah

ilmu

komputer,

sebuah

struktur

data

adalah

carapenyimpanan, pengorganisasian dan pengaturan data di dalammedia


penyimpanan komputer sehingga data tersebut dapatdigunakan secara
efisien. Dalam tehnik pemrograman, strukturdata berarti tata letak data yang
berisi kolom-kolom data, baik itu kolomyang tampak oleh pengguna (user)
ataupun kolom yang hanya digunakan untuk keperluan pemrograman yang
tiadak tampak oleh pengguna.
Tree merupakan salah satu bentuk struktur data tidak linear yang
menggambarkan hubungan yang bersifat hirarkis (hubungan one to many)
antara elemen-elemen. Tree bisa didefinisikan sebagai kumpulan simpul/node
dengan satu elemen khusus yang disebut Root dan node lainnya terbagi
menjadi himpunan-himpeunan yang saling tak berhubungan satu sama
lainnya (disebut subtree).Tree juga adalah suatu graph yang acyclic, simple,
connected yang tidak mengandung loop.
Sebuah binary search tree (bst) adalah sebuah pohon biner yang boleh
kosong, dan setiap nodenya harus memiliki identifier/value. value pada
semua node subpohon sebelah kiri adalah selalu lebih kecil dari value dari
root, sedangkan value subpohon di sebelah kanan adalah sama atau lebih
besar dari value pada root, masing masing subpohon tersebut (kiri&kanan)
itu sendiri adalah juga bst.
Struktur data bst sangat penting dalam struktur pencarian, misalkan,
dalam kasus pencarian dalam sebuah list, jika list sudah dalam keadaan
terurut maka proses pencarian akan sangat cepat, jika kita menggunanan list
contigue dan melakukan pencarian biner. akan tetapi, jika kita ingin
melakukan perubahan isi list (insert atau delete), menggunakan list contigue
akan sangat lambat, karena proses insert dan delete dalam list contigue
butuh memindahkan banyak elemen setiap saat. mungkin kita bisa juga
menggunakan linked-list, yang untuk operasi insert atau delete tinggal
mengatur atur pointer, akan tetapi pada n-linked list, kita tidak bisa

melakukan pointer sembarangan setiap saat, kecuali hanya satu kali dengan
kata lain hanya secara sequential
Sedangkan graph merupakan struktur data yang paling umum. Jika
struktur linear memungkinkan pendefinisian keterhubungan sikuensial antara
entitas data, struktur data tree memungkinkan pendefinisian keterhubungan
hirarkis, maka struktur graph memungkinkan pendefinisian keterhubungan tak
terbatas antara entitas data.
Banyak entitas-entitas data dalam masalah-masalah nyata secara
alamiah memiliki keterhubungan langsung (adjacency) secara tak terbatas
demikian. Contoh: informasi topologi dan jarak antar kota-kota di pulau Jawa.
Dalam masalah ini kota x bisa berhubungan langsung dengan hanya satu
atau lima kota lainnya. Untuk memeriksa keterhubungan dan jarak tidak
langsung antara dua kota dapat diperoleh berdasarkan data keterhubunganketerhubungan langsung dari kota-kota lainnya yang memperantarainya.
Representasi data dengan struktur data linear ataupun hirarkis pada
masalah ini masih bisa digunakan namun akan membutuhkan pencarianpencarian yang kurang efisien. Struktur data graph secara eksplisit
menyatakan

keterhubungan

ini

sehingga

pencariannya

langsung

(straightforward) dilakukan pada strukturnya sendiri.


Graf adalah salah satu jenis struktur data yang terdiri dari titik(vertex)
dan garis(edge), dimana dalam graf tersebut, vertex - vertex yang ada
dihubungkan oleh edge, hingga menjadi suatu kesatuan yang disebut
graf. Sebagai contoh dari pemodelan graf adalah peta kota kota, dimana kota
disini sebagai vertex dan jalur yang menghubungkannya berlaku sebagai
edge.
Agar lebih jelas perhatikan gambar dibawah ini :

Dalam gambar tersebut, terdapat beberapa kota yang berada dipulau


jawa dimana kota - kota tersebut dihubungkan oleh beberapa jalur jalur yang
ada. Untuk contoh diatas kita bisa menganggap bawah kota-kota yang ada
merupakan vertex, dan jalur-jalur yang menghubungkan kota-kota tersebut
sebagai edge. Sehingga secara keseluruhan peta diatas dapat dibuat
pemodelannya sebagai sebuah graf.
Ada terdapat beberapa jenis graf yang bisa kita gunakan, yaitu
beberapa diantaranya adalah sebagai berikut :
Graf Berarah : adalah graf yang edge-nya memiliki arah, sebagai contoh
edge AB menghubungkan vertex A ke B, dimana hubungan vertex B ke A,
harus diperoleh dari edge lain, yaitu edge BA, dan jika edge BA tidak ada,
maka vertex B ke A tidak memiliki hubungan, meski vertex A ke B memiliki
hubungan
Graf Tak Berarah : adalah graf yang edge-nya tidak memiliki arah, sehingga
jika edge AB menghubungkan vertex A ke B, maka secara otomatis juga
menghubungkan vertex B ke A.
Graf Berbobot : adalah suatu graf dimana edge dari graf tersebut memiliki
bobot atau nilai tertentu.
Graf Tidak Berbobot : adalah suatu graf dimana edge dari graf tersebut tidak
memiliki bobot atau nilai. Untuk merepresentasikannya dalam pemrograman
komputer, graf dapat disusun dari LinkedList yang berada dalam LinkedList.

II. TEORI BINARY TREE


A. Difinisi Binary Tree
Binary tree merupakan salah satu bentuk struktur data tidak linear
yang menggambarkan hubungan yang bersifat hirarkis (hubungan one to
many) antara elemen-elemen. Tree bisa didefinisikan sebagai kumpulan
simpul/node dengan satu elemen khusus yang disebut Root dan node lainnya
terbagi menjadi himpunan-himpunan yang saling tak berhubungan satu sama
lainnya (disebut subtree).
Dalam tree terdapat jenis-jenis tree yang memiliki sifat khusus,
diantaranya adalah binary tree.
Binary Tree adalah Suatu tree dengan syarat bahwa tiap node (simpul)
hanya boleh memiliki maksimal dua subtree dan kedua subtree tersebut
harus terpisah. Tiap node dalam binary tree hanya boleh memiliki paling
banyak dua child (anak simpul), Secara khusus anaknya dinamakan kiri dan
kanan.
Binary Tree merupakan himpunan vertex-vertex yang terdiri dari 2
subtree (dengan disjoint) yaitu subtree kiri dan subtree kanan. Setiap vertex
dalam binary tree mempunyai derajat keluar max = 2.
Contoh :
(1)

(2)

(3)
A

Derajat keluar = 2

A adalah subtree kanan

A adalah subtree kiri

(4)

(5)
A

Bukan Binary Tree tapi


General Tree karena bukan

Bukan Binary Tree tapi General Tree


karena mempunyai derajat keluar > 2.

Sebuah pohon biner adalah grafik asiklis yang terhubung dimana


setiap tingkatan dari sudut tidak lebih dari 3. Ini dapat ditunjukan bahwa
dalam pohon biner manapun, terdapat persis dua atau lebih simpul dengan
tingkat satu daripada yang terdapat dengan tingkat tiga, tetapi bisa terdapat
angka apa saja dari simpul dengan tingkat dua. Sebuah pohon biner berakar
merupakan sebuah grafik yang mempunyai satu dari sudutnya dengan tingkat
tidak lebih dari dua sebagai akar.
Dengan akar yang dipilih, setiap sudut akan memiliki ayah khusus, dan
diatas dua anak; bagaimanapun juga, sejauh ini terdapat keterbatasan
informasi untuk membedakan antara anak kiri atau kanan. Jika kita
membuang keperluan yg tak terkoneksi, membolehkan bermacam koneksi
dalam komponen di gafik, kita memanggil struktur sebuah hutan.
Sebuah jalan lain untuk mendefinisikan pohon biner melalui definisi rekursif
pada grafik langsung. Sebuah pohon biner dapat berarti:

Sebuah sudut tunggal.

Sebuah graf yang dibentuk dengan mengambil dua pohon biner,


menambahkan sebuah sudut, dan menambahkan sebuah panah
langsung dari sudut yang baru ke \ akar daris setiap pohon biner.
Pohon biner dapat dikonstruksi dari bahasa pemrograman primitif

dalam berbagai cara. Dalam bahasa yang menggunakan records dan


referensi, pohon biner secara khas dikonstruksi dengan mengambil sebuah

struktur simpul pohon yang memuat beberapa data dan referensi ke anak kiri
dan anak kanan.
Kadang-kadang itu juga memuat sebuah referensi ke ayahnya yang
khas. JikA sebuah simpul mempunyai kurang dari dua anak, beberapa
penunjuk anak dapat diatur kedalam nilai nol khusus, atau ke sebuah simpul
sentinel.
Pohon biner dapat juga disimpan sebagai struktur data implisit dalam
array, dan jika pohon tersebut merupakan sebuah pohon biner lengkap,
metode ini tidak boros tempat. Dalam penyusunan yang rapat ini, jika sebuah
simpul memiliki indeks i, anaknya dapat ditemukan pada indeks ke-2i+1 dan
2i+2, meskipun ayahnya (jika ada) ditemukan pada indeks lantai((i-1)/2)
(asumsikan akarnya memiliki indeks kosong). Metode ini menguntungkan dari
banyak penyimpanan yang rapat dan memiliki referensi lokal yang lebih baik,
tersitimewa selama sebuah preorder traversal. Bagaimanapun juga, ini terlalu
mahal untuk perkembangannya dan boros tempat sebanding dengan 2h - n
untuk sebuah pohon dengan tinggi h dengan nsimpul.
Ini juga tidak menentukan susunan anak, tetapi memperbaiki akar
tertentu.

Pada Binary Tree terdapat yang namanya simpul (node). Node pada binary
tree maksimum berjumlah 2n-1 dan jumlah maksimum pada setiap tingkat
adalah 2n

A
Tingkat ke-0, jumlah max=2
Tingkat ke-1, jumlah max=2

Tingkat ke-2, jumlah max=2


D

Penghitungan jumlah node dalam tree dilakukan dengan cara


mengunjungi setiap node, dimulai dari root ke subtree kiri, kemudian ke
subtree kanan dan

masing-masing node dicatat jumlahnya, dan terakhir

jumlah node yang ada di subtree kiri dijumlahkan dengan jumlah node yang
ada di subtree kanan ditambah 1 yaitu node root.
Node root dalam sebuah tree adalah suatu node yang memiliki hiarki
tertinggi dan dapat juga memiliki node-node anak. Semua node dapat
ditelusuri dari node root tersebut. Node root adalah node khusus yang tercipta
pertama kalinya. Node-node lain di bawah node root saling terhubung satu
sama lain dan disebut subtree. Contoh penggunaan struktur pohon adalah
pada silsilah keluarga, hasil pertandingan yang berbentuk turnamen, struktur
organisasi dari sebuah perusahaan

10

B. Jenis-Jenis Binary Tree


Pada binary tree terdapat tiga jenis atau bentuk binary tree, diantaranya
yaitu:
1. Full Binary Tree yaitu semua node atau simpul (kecuali leaf) pasti
memiliki 2 anak dan tiap subtree memiliki panjang path yag sama.
A

2. Complete Binary Tree yaitu pada dasarnya mirip dengan full binary
tree, tapi tiap subtree boleh memiliki panjang path yang berbeda dan
tiap node ((kecuali left ) memiliki 2 anak.
A

3. Skewed Binary Tree yaitu binary tree yang semua nodenya (kecuali
leaf) hanya memiliki satu anak.
D

11

C. Operasi-Operasi pada Binary Tree


Pada binary terdapat beberapa operator yang digunakan di dalamnya,
diantaranya adalah:
1. Create, berguna untuk membentuk sebuah tree baru yang kosong.
pohon = NULL;
2. Search adalah tree yang terurut dimana aturannya Semua data
dibagian kiri sub-tree dari node t selalu lebih kecil dari data dalam node
t itu sendiri dan semua data dibagian kanan sub-tree dari node t selalu
lebih besar atau sama dengan data dalam node t.
3. Clear, berguna untuk menghapus semua elemen tree.
pohon = NULL;
4. Empty, berguna untuk mengetahui apakah tree kosong atau tidak
int isEmpty(Tree *pohon){
if(pohon == NULL) return 1;
else return 0;}
5. Insert, digunakan untuk menambah node ke dalam Tree secara
rekursif. Jika data yang akan dimasukkan lebih besar daripada elemen
root, maka akan diletakkan di node sebelah kanan, sebaliknya jika
lebih kecil maka akan diletakkan di node sebelah kiri.

Untuk data

pertama akan menjadi elemen root.


6. Find, digunakan untuk mencari node di dalam Tree secara rekursif
sampai node tersebut ditemukan dengan menggunakan variable
bantuan ketemu. Syaratnya adalah tree tidak boleh kosong.
7. Traverse yaitu operasi kunjungan terhadap node-node dalam pohon
dimana masing-masing node akan dikunjungi sekali.
8. Count, digunakan untuk menghitung jumlah node dalam Tree
9. Height, digunakan untuk mengetahui kedalaman sebuah Tree
10. Find Min dan Find Max, digunakan untuk mencari nilai terkecil dan
terbesar pada Tree
11. Child, digunakan untuk

mengetahui anak dari sebuah node (jika

punya)

12

Pada operator-operator yang bekerja pada binary tree terdapat


beberapa operator yang memilki pendefenisian secara khusus, diataranya
yaitu search, create, insert, transverse dan delete yang akan dibahas dalm
makalah ini.
a. Binary Search Tree
Binary Search Tree adalah tree yang terurut (ordered Binary
Tree). Aturan yang harus dipenuhi untuk membangun sebuah BST
adalah sebagai berikut:
1. Semua data dibagian kiri sub-tree dari node t selalu lebih kecil dari

data dalam node t itu sendiri.


2. Semua data dibagian kanan sub-tree dari node t selalu lebih besar

atau sama dengan data dalam node t.


Suatu binary search tree dari himpunan N record (N1, N2, N3 . .
. Nn)

adalah suatu Binary Tree yang setiap vertex-nya (sebut Ri)

ditempati oleh Ni untuk i=1,2,3 ... N. Vertex-vertex dari Binary Tree tsb.
diatur sedemikian rupa sehingga untuk setiap Ri harus memenuhi
syarat sbb :
1.

Jika Rj = left (Ri) maka Nj< Ni

2.

Jika Rj = right (Ri) maka Nj> Ni

Contoh :
Diketahui key dari 7 record (K, M, L, N, P, O, Q)
Binary Search Tree dari 7 key diatas dapat dibentuk :

13

b. Traversal Dalam Binary Tree


Traversal dalam binary tree adalah proses menelusuri suatu
Binary Tree sehingga sedemikian rupa setiap vertex dikunjungi hanya
1 kali.3 aktivitas dalam Binary tree Transversal :

1. Visit the Root


2. Transverse the left subtree
3. Transverse the right subtree

Beberapa macam

pola

penelusuran dalam Binary Tree

Transversal:
1. Pre Order-Transversal
Pre order Transversal adalah penelusuran yang dimulai
dari semua simpul induk kemudian melajutkan penelusuran
pada anak simpul yang dimulai dari anak simpul kiri
kemudian anak simpul kanan.
1

7
6

14

2. In-Order-Transversal
In order transversal adalah penelusuran dimulai dari
simpul anak disebelah kiri kemudian penelusuran dilanjutkan
pada simpul induk dan yang terakhir pada simpul anak yang
beradad di bagian kanan.
6

3. Post-Order-Transversal
Post Order Transversal adalah penelusuran dimulai
darisimpul

anak

kiri

kemudian

simpul

anak

kanan

danpenelusuran terakhir ditujukan pada simpul induk.

9
5

8
4

15

4. Level-Order-Transversal
Level Order Transversal adalah penelusuran dimulai dari
tingkat ke i dan dilanjutka pada tingkat ke ( i+1).
1
2

5
5

16

III. TEORI GRAPH


A. Definisi Graph
Suatu graph didefinisikan oleh himpunan verteks dan himpunan sisi
(edge). Verteks menyatakan entitas-entitas data dan sisi menyatakan
keterhubungan antara verteks. Biasanya untuk suatu graph G digunakan
notasi matematis.
G = (V, E)
Dimana :

G = Graph
V = Simpul atau Vertex, atau Node, atau Titik
E = Busur atau Edge, atau arc

V adalah himpunan verteks dan E himpunan sisi yang terdefinisi antara


pasangan-pasangan verteks. Sebuah sisi antara verteks x dan y ditulis {x,
y}.Suatu graph H = (V1, E1) disebut subgraph dari graph G jika V1 adalah
himpunan bagian dari V dan E1 himpunan bagian dari E.
Cara pendefinisian lain untuk graph adalah dengan menggunakan
himpunan keterhubungan langsung Vx. Pada setiap verteks x terdefinisi Vx
sebagai himpunan dari verteks-verteks yang adjacent dari x. Secara formal:
Vx = {y | (x,y) ->E}
Dalam digraph didefinisikan juga terminologi-terminologi berikut ini.
Predesesor dari suatu verteks x (ditulis Pred(x)) adalah himpunan semua
verteks yang adjacent ke x. Suksesor dari verteks x (ditulis Succ(x)) adalah
himpunan semua verteks yang adjacent dari x, yaitu adjacenct set di atas.
Struktur data yang berbentuk network/jaringan, hubungan antar
elemen adalah many-to-many. Contoh dari graph adalah informasi topologi
jaringan dan keterhubungan antar kota-kota. Keterhubungan dan jarak tidak
langsung antara dua kota sama dengan data keterhubungan langsung dari
kota-kota lainnya yang memperantarainya. Penerapan struktur data linear
atau hirarkis pada masalah graph dapat dilakukan tetapi kurang efisien.

17

Struktur data graph secara eksplisit menyatakan keterhubungan ini sehingga


pencariannya langsung (straight forward) dilakukan pada strukturnya sendiri.
1. Struktur Data Linear = keterhubungan sekuensial antara entitas data
2. Struktur Data Tree = keterhubungan hirarkis
3. Struktur Data Graph = keterhubungan tak terbatas antara entitas data.

Representasi Graph dalam Bentuk Matrik


a. Graph Tak Berarah

Graf tersebut dapat direpresentasikan dalam sebuah matrik 5x5 ,


dimana baris dan kolom di matriks tersebut menunjukan vertex yang
ada.

18

b. Graph Berarah

Dalam matrik diatas dapat kita lihat bahwa kotak yang berisi angka
satu menunjukan bahwa dalam dua vertex tersebut terdapat edge yang
menghubungkannya. Dan jika dalam kotak terdapat angka nol, maka hal
tersebut menandakan tidak ada edge yang mengubungkan secara langsung
dua vertex tersebut.
Untuk representasi dalam pemorgraman komputer, graf tersebut
dapatdigambarkan seperti dibawah ini :

19

B. Istilah Dalam Graph

1. Incident
Jika e merupakan busur dengan simpul-simpulnya adalah v dan
w yang ditulis e=(v,w), maka v dan w disebut terletak pada e, dan e
disebut incident dengan v dan w.

2. Degree
Didalam Graph ada yang disebut dengan Degree,Degree
mempuyai 3 jenis antara lain :

Degree dari suatu verteks x dalam undigraph adalah jumlah


busuryang incident dengan simpul tersebut.

Indegree dari suatu verteks x dalam digraph adalah jumlah


busuryang kepalanya incident dengan simpul tersebut, atau
jumlah busur yang masuk atau menuju simpul tersebut..

Outdegree dari suatu verteks x dalam digraph adalah jumlah


busuryang ekornya incident dengan simpul tersebut, atau
jumlah busur yang keluar atau berasal dari simpul tersebut.

3. Adjacent
Pada graph tidah berarah, 2 buah simpul disebut adjacent bila ada
busur yang menghubungkan kedua simpul tersebut. Simpul v dan w
disebut adjacent.

Pada graph berarah, simpul v disebut adjacent dengan simpul w


bila ada busur dari w ke v.

20

4. Successor dan Predecessor


Pada graph berarah, bila simpul v adjacent dengan simpul w,
maka simpul v adalah successor simpul w, dan simpul w adalah
predecessor dari simpul v.
5. Path
Sebuah path adalah serangkaian simpul-simpul berbeda yang
adjacent secara berturut-turut dari simpul satu ke simpul berikutnya.

C. Jenis - Jenis Graph


1. Directed Graph (Digraph)
Jika sisi-sisi graph hanya berlaku satu arah. Misalnya : {x,y} yaitu
arahx ke y, bukan dari y ke x, x disebut origin dan y disebut terminus.
Secaranotasi sisi digraph ditulis sebagai vektor (x, y).

Contoh Digraph G = {V, E} :


V = {A, B, C, D, E, F, G, H, I,J, K, L, M}
E = {(A,B),(A,C), (A,D), (A,F), (B,C), (B,H), (C,E), (C,G), (C,H), (C,I),
(D,E),(D,F), (D,G), (D,K), (D,L), (E,F), (G,I), (G,K), (H,I), (I,J), (I,M),
(J,K),(J,M), (L,K), (L,M)}.

21

2.

Graph Tak Berarah (Undirected Graph atau Undigraph)


Setiap sisi {x, y} berlaku pada kedua arah: baik x ke y maupun y

ke x.Secara grafis sisi pada undigraph tidak memiliki mata panah dan
secaranotasional menggunakan kurung kurawal.
Contoh Undigraph G = {V, E}
V = {A, B, C, D, E, F, G, H, I,J, K, L, M}
E = { {A,B},{A,C}, {A,D}, {A,F}, {B,C}, {B,H}, {C,E}, {C,G}, {C,H},
{C,I}, {D,E},{D,F}, {D,G}, {D,K}, {D,L}, {E,F}, {G,I}, {G,K}, {H,I},
{I,J}, {I,M}, {J,K},{J,M}, {L,K}, {L,M}}.

Khusus graph, undigraph bisa sebagai digraph (panah di kedua ujung


edgeberlawanan)Struktur data linear maupun hirarkis adalah juga graph.
Node-nodepada struktur linear ataupun hirarkis adalah verteks-verteks
22

dalampengertian graph dengan sisi-sisinya menyusun node-node tersebut


secaralinear atau hirarkis.
Struktur data linear adalah juga tree dengan pencabangan pada
setiapnode hanya satu atau tidak ada. Linear 1-way linked list (digraph), linear
2-way linked list (undigraph).

D. Konektivitas Tiap Jenis Graph

a. Konektivitas pada Undigraph

Adjacency: Dua verteks x dan y yang berlainan disebut


berhubungan langsung (adjacent) jika terdapat sisi {x, y} dalam
E.

Path: Sederetan verteks yang mana setiap verteks adjacent


dengan verteks yang tepat berada disebelahnya.

Panjang dari path: jumlah sisi yang dilalui path.

Siklus: suatu path dengan panjang lebih dari satu yang dimulai
dan berakhir pada suatu verteks yang sama.

Siklus sederhana: dalan undigraph, siklus yang terbentuk pada


tiga atau lebih verteks-verteks yang berlainan yang mana tidak
ada verteks yang dikunjungi lebih dari satu kali kecuali verteks
awal/akhir.

Dua verteks x dan y yang berbeda dalam suatu undigraph


disebut berkoneksi (connected) apabila jika terdapat path yang
menghubungkannya.

Himpunan bagian verteks S disebut terkoneksi (connected)


apabila dari setiap verteks x dalam S terdapat path ke setiap
verteks y (y bukan x) dalam S.

Suatu komponen terkoneksi (connected components) adalah


subgraph (bagian dari graph) yang berisikan satu himpunan
bagian verteks yang berkoneksi.

Suatu undigraph dapat terbagi atas beberapa komponen yang


terkoneksi; jika terdapat lebih dari satu komponen terkoneksi

23

maka tidak terdapat path dari suatu verteks dalam satu


komponen verteks di komponen lainnya.

Pohon bebas (free tree): suatu undigraph yang hanya terdapat


satu komponen terkoneksi serta tidak memiliki siklus sederhana.

b. Konektivitas pada Digraph


Terminologi di atas berlaku juga pada Digraph kecuali dalam
digraph harus dikaitkan dengan arah tertentu karena pada arah yang
sebaliknya belum tentu terdefinisi.

Adjacency ke / dari: Jika terdapat sisi (x,y) maka dalam digraph


dikatakan bahwa x "adjacent ke" y atau y "adjacent dari" x.
Demikian pula jika terdapat path dari x ke y maka belum tentu
ada path dari y ke x Jadi dalam digraph keterkoneksian
didefinisikan lebih lanjut lagi sebagai berikut.

Terkoneksi dengan kuat: Himpunan bagian verteks S dikatakan


terkoneksi dengan kuat (strongly connected) bila setiap
pasangan verteks berbeda x dan y dalam S, x berkoneksi
dengan y dan y berkoneksi dengan x (dpl., ada path dari x ke y
dan sebaliknya dari y ke x).

Terkoneksi dengan Lemah: Himpunan bagian verteks S


dikatakan terkoneksi dengan lemah (weakly connected) bila
setiap pasangan verteks berbeda x dan y dalam S, salah satu: x
berkoneksi dengan y (atau y berkoneksi dengan x) dan tidak
kebalikan arahnya (dpl., hanya terdefinisi satu path: dari x ke y
atau sebaliknya dari y ke x).

24

E. Metode Pencarian Vertex

Pencarian vertex adalah proses umum dalam graph. Terdapat 2


metodapencarian, yakni Depth First Search (DFS) dan Breadth First Search
(BFS).

a. Depth First Search (DFS)


Pencarian

dengan

secaramendalam

metode

hingga

yang

ini

dilakukan
paling

akhir

dari

node

awal

(dead-end)

atau

sampaiditemukan.Dengan kata lain, simpul cabang atau anak yang terlebih


dahulu dikunjungi.

Proses pencarian dilakukan dengan mengunjungi cabang terlebih


dahulu hingga tiba di simpul terakhir. Jika tujuan yang diinginkan belum
tercapai maka

pencarian dilanjutkan ke cabang sebelumnya, turun ke

bawah jika memang masih ada cabangnya. Begitu seterusnya hingga


diperoleh

tujuan

akhir(goal).Depth

First

Search,

memiliki

kelebihan

diantaranya adalah cepat mencapai kedalaman ruang pencarian. Jika


diketahui bahwa lintasan solusi permasalahanakan panjang maka Depth
First Search tidak akan memboroskan waktu untuk melakukan sejumlah
besar keadaan dangkal dalam permasalahan graf. Depth First Search jauh
lebih efisien untuk ruang pencarian dengan banyak cabang karena tidak
perlu

mengeksekusi semua simpul pada suatu level tertentu pada daftar

open. Selain itu, Depth First Search memerlukan memori yang relatif kecil
karena banyak node pada lintasan yang aktif saja yang Selain kelebihan,
Depth

First

Search

juga

memiliki

kelemahan

di

antaranya

adalah

25

memungkinkan tidak ditemukannya tujuan yang diharapkan dan hanya akan


mendapatkan satu solusi pada setiap pencarian.
b. Breadth First Search (BFS)
Prosedur

BreadthFirstSearch

(BFS)

merupakanpencarianyangdilakukan dengan mengunjungi tiap-tiap node


secara sistematis pada setiap level hingga keadaan tujuan (goal state)
ditemukan.Ataudengan kata lain, penulusuran

yang

dilakukan

adalah

dengan mengunjungi tiap-tiap node pada level yang sama hingga ditemukan
goal state-nya.

Implementasi algoritma BFS :

Pengimplementasian BFS dapatditelusuridengan menggunakan daftar (list),


open, dan closed,untukmenelusurigerakanpencariandi dalam ruang keadaan.
Prosedur untuk Breadth First Search dapat dituliskan sebagai berikut:

Padadiatas,state21

merupakantujuannya

(goal)sehinggabila

ditelusuri

menggunakan prosedur Breadth First Search, diperoleh:

26

1)

Open = [1]; closed = [].

2)

Open = [2, 3, 4]; closed = [1].

3)

Open = [3, 4, 5, 6]; closd = [2, 1].

4)

Open = [4, 5, 6, 7, 8]; closed = [3, 2, 1].

5)

Open = [5, 6, 7, 8, 9, 10]; closed = [4, 3, 2, 1].

6)

Open = [6, 7, 8, 9, 10, 11, 12]; closed = [5, 4, 3, 2, 1].

7)

Open = [7, 8, 9, 10, 11, 12, 13] (karena 12 telah di-open);

closed = [6, 5, 4, 3, 2, 1].


8)

Open = [8, 9, 10, 11, 12, 13, 14]; closed = [7, 6, 5, 4, 3, 2, 1].

9)

Dan seterusnya sampai state 21 diperoleh atau open = [].

Ada beberapa keuntungan menggunakan algoritma Breadth First


Search ini, diantaranya adalah tidak akan menemui jalan buntu dan jikaada
satu solusi maka Breadth First Searchakan menemukannya, dan jika ada
lebih dari satu solusi makasolusi minimum akan ditemukan.
Namun ada tiga persoalan utama berkenaan dengan Breadth First
Search ini yaitu :
1) Membutuhkan memori yang lebih besar, karena menyimpan semua
node dalam satu pohon.
2) Membutuhkan

sejumlah

besar

pekerjaan,

khususnya

jika lintasan

solusi terpendek cukup panjang, karena jumlah node yang perlu


diperiksa bertambah secara eksponensial terhadap panjang lintasan.
3)Tidak relevannya operator akan menambah jumlah node yang harus
diperiksa.

Oleh karena proses Breadth First Search mengamati node di


setiap level graf sebelum bergerak menuju ruang yang lebih dalam
maka mula-mula semua keadaan akan dicapai lewat lintasan yang
terpendek dari keadaan awal. Oleh sebab itu, proses ini menjamin
ditemukannya lintasan terpendek dari keadaan awal ke keadaan tujuan
(akhir).

Lebih

jauh

karena

mula-mula

semua

keadaan ditemukan

melalui lintasan terpendek sehingga setiap keadaan yang ditemui pada kali
kedua didapati pada sepanjang sebuah lintasan yang sama atau lebih
panjang. Kemudian, jika tidak ada kesempatan ditemukannya keadaan yang
27

identik

pada

sepanjang

lintasan

yang lebih baik maka algoritma akan

menghapusnya

F. Shortest Path
Pencarian shortest path (lintasan terpendek) adalah masalah umum
dalam suatu weighted, connected graph. Misal : Pencarian jaringan jalan raya
yangmenghubungkan kota-kota disuatu wilayah.

1. Lintasan

terpendek

yag

menghubungkan

antara

dua

kota

berlainantertentu (Single-source Single-destination Shortest Path


Problems)
2. Semua lintasan terpendek masing-masing dari suatu kota ke
setiapkota lainnya (Single-source Shortest Path problems)
3. Semua

lintasan

terpendek

masing-masing

antara

tiap

kemungkinanpasang kota yang berbeda (All-pairs Shortest Path


Problems)
Untuk memecahkan masing-masing dari masalah-masalah tersebutterdapat
sejumlah solusi.

Dalam beberapa masalah graph lain, suatu graph dapat memiliki


bobotnegatif dan kasus ini dipecahkan oleh algoritma Bellman-Ford. Yang
akandibahas di sini adalah algoritma Dijkstra yaitu mencari lintasan
terpendekdari suatu verteks asal tertentu vs ke setiap verteks lainnya.
a. Graph berbobot (weighted graph)
Apabila sisi-sisi pada graph disertai juga dengan suatu (atau beberapa)
harga yang menyatakan secara unik kondisi keterhubungan tersebut maka
graph tersebut disebut graph berbobot. Biasanya dalam masalah-masalah
graph bobot tersebut merupakan "harga" dari keterhubungan antar vertex.
Pengertian "harga" ini menggeneralisasikan banyak aspek, biaya ekonomis
dari proses/aktifitas, jarak geografis/tempuh, waktu tempuh, tingkat kesulitan,
dan lain sebagainya.

28

Dalam beberapa masalah lain bisa juga bobot tersebut memiliki


pengertian "laba" yang berarti kebalikan dari "biaya" di atas. Dalam
pembahasan

algoritma-algoritma

graph

nanti

pengertian

bobot

akan

menggunakan pengertian biaya sehingga apabila diaplikasikan pada masalah


yang

berpengertian

laba

maka

kuantitas-kuantitas

terkait

adalah

kebalikannnya. Misalnya mencari jarak tempuh minimum digantikan dengan


mencari laba maksimum.

b. Algoritma Dijkstras
Algoritma Dijkstra's :
1. Menyelesaikan problem single-source shortest-path ketika semua edge
memiliki bobot tidak negatif.
2. Algoritma greedy mirip ke algoritma Prim's.
3. Algoritma di awali pada vertex sumber s, kemudian berkembang
membentuk sebuah tree T, pada akhirnya periode semua vertex
dijangkau dari S. Vertex di tambah ke T sesuai urutan
Misalnya :
Pertama S, kemudian vertex yang tepat ke S, kemudian yang tepatberikutnya
dan seterusnya.

29

c. Dynamic Programming
Terdiri dari sederetan tahapan keputusan. Pada setiap tahapan
berlakuprinsip optimality (apapun keadaan awal dan keputusan yang
diambil,keputusan berikutnya harus memberikan hasil yang optimal dengan
melihathasil keputusan sebelumnya.
Misalnya :

Multistage Graph

Dimana:

Cost (i,j) = Min(C(j,l) + Cost(i+1,l)}

Dengan :

C(j,l) = Bobot edge j dan l


l = Elemen Vi+1 Dan <j,l> eemen E
i=stage ke-I dan j = node dalam V

Proses dimulai dari k-2, dimana k adalah banyak stage.

Perhatikan contoh untuk menentukan biaya termurah dari 1 hingga 12.


Diketahui graph dengan stage sebagai berikut :

Maka langkah-langkah yang dilakukan adalah :


K=5, sehingga dimulai dari S3
Cost(3,6) = Min{6+Cost(4,9); 5+Cost(4,10)} = Min{6+4;5+2} = 7
Cost(3,7) = Min{4+Cost(4,9); 3+Cost(4,10)} = Min{4+4;3+2} = 5
Cost(3,8) = Min{5+Cost(4,10); 6+Cost(4,11)} = Min(5+2;6+5} = 7
Cost(2,2) = Min{4+Cost(3,6);2+Cost(3,7);1+Cost(3,8)}
= Min{4+7;2+5;1+7} = 7
Cost(2,3) = Min{2+Cost(3,6); 7+Cost(3,7)} = Min(2+7; 7+5) = 9
Cost(2,4) = Min{11+Cost(3,8)} = 18

30

Cost(2,5) = Min{11+Cost(3,7); 8+Cost(3,8)} = Min(11+5;8+7} = 15


Cost(1,1) = Min{9+Cost(2,2);7+Cost(2,3);3+Cost(2,4),2+Cost(2,5)}
= Min{9+7;7+9;3+18;2+15} = 16

Shorthest Path menjadi :


1 ->3 -> 6 -> 10 -> 12 Atau 1 -> 2 -> 7 -> 10-> 12
Jika ada dua atau lebih shorthest path maka total biaya harus sama.
Shortest Path Pertama adalah :

Shortest Path Kedua adalah :

G. Minimum Spanning Tree

31

Definisi

Pohon

rentangan

atau

spanning

tree

dari

suatu

connectedgraph didefinisikan sebagai free-tree yang terbentuk dari subset


sisi-sisiserta menghubungkan setiap verteks dalam graph tersebut. Minimum
Spanning Tree (MST) adalah pohon rentangan dengan total bobot dari sisisisinyaadalah minimal. Dalam penelusuran vertex tidak diperkenankan
terbentuksiklus (cycle).

Diketahui sebuah graph tak berarah dan tak berbobot sebagai berikut :

Kemungkinan Spanning Tree :

Bila jalur (edge) mempunyai biaya (cost) maka yang dicari adalah minimum
cost spanning tree.

32

H. Algoritma Menentukan Minimum Spanning Tree (MST)


Dua algoritma populer untuk menentukan minimum spanning tree
(MST) adalah Kruskal Algorithm dan Prims Algorithm.

1. Algoritma Kruskal

Algoritma ini lebih sederhana jika dilihat dari konsepnya namunlebih


sulit dalam implementasinya. Idenya adalah mendapatkansatu demi satu sisi
mulai dari yang berbobot terkecil untukmembentuk tree, suatu sisi walaupun
berbobot kecil tidak akandiambil jika membentuk siklik dengan sisi yang
sudah termasukdalam tree. Yang menjadi masalah dalam implementasinya
adalahkeperluan

adanya

pemeriksaan

kondisi

siklik

tersebut.Salah

satupemecahaannya adalah dengan subsetting yaitu pembentukansubsetsubset yang disjoint dan secara bertahap dilakukanpenggabungan atas tiap
dua subset yang berhubungan dengan suatusisi dengan bobot terpendek.
Algoritma lengkapnya:

Tahap pertama, jika dalam V terdapat n verteks makadiinisialisasi n


buah subset yang disjoint, masing-masingberisi satu verteks, sebagai
subset-subset awal.

Tahap berikutnya, urutkan sisi-sisi dengan bobot yangterkecil hingga


terbesar.

Mulai dari sisi dengan bobot terkecil hingga terbesar lakukandalam


iterasi: jika sisi tsb. menghubungkan dua vertex dalam satu subset
(berarti membentuk siklik) maka skip sisitersebut dan periksa sisi
berikutnya jika tidak (berartimembentuk siklik) maka kedua subset dari
verteks-verteksyang bersangkutan digabungkan menjadi satu subset
yanglebih besar. Iterasi akan berlangsung hingga semua sisiterproses.

MST_KRUSKAL (G)
{ For setiap vertex v dalam V[G] Do
{ set S(v) {v} }
Inisialisasi priority queue Q yang berisi semua edge dari G,

33

gunakan bobot sebagai keys.


A { } // A berisi edge dari MST
While A lebih kecil dari pada n-1 edge Do
{ set S(v) berisi v dan S(u) berisi u }
IF S(v) != S(u) Then
{ Tambahkan edge (u, v) ke A
Merge S(v) dan S(u) menjadi satu set
}
Return A

}
2. Algoritma Prim

Algoritma dimulai dari suatu verteks awal tertentu dan bisa


ditentukanoleh

pemanggil

atau

dipilih

sembarang

oleh

algoritma.

Misalnyaverteks awal tersebut adalah v.Pada setiap iterasi terdapat kondisi di


mana himpunan vertex V terbagi dalam dua:
W yaitu himpunan verteks yang sudah dievaluasi sebagai nodedi
dalam pohon, serta (V-W) yaitu himpunan verteks yangbelum
dievaluasi.
Di awal algoritma W diinisialisasi berisi verteks awal v.Selanjutnya, di dalam
iterasinya:
Pada setiap adjacency dari tiap verteks dalam W denganverteks dalam
(V-W) dicari sisi dengan panjang minimal.setelah diperoleh, sisi
tersebut ditandai sebagai sisi yangmembentuk tree dan verteks
adjacent sisi tersebut dalam (VW)dipindahkan ke W (menjadi anggota
W).
Jika sisi tersebut tidak ada maka proses selesai.
Dari contoh di atas misalnya dilakukan pencarian mulai dariverteks A
Maka algoritmaini menghasilkan tahapan-tahapan iterasi pencarian sbb.:
MST_PRIM (G, w, v)
{ Q V[G]
for setiap u dalam Q do key [u]
key [r] 0
[r] NIl

34

while queue tidak kosong do


{ u EXTRACT_MIN (Q)
for setiap vertex v dalam Adj[u] do
{ if v ada dalam Q dan w(u, v) < key [v] then
{ [v] w(u, v)
key [v] w(u, v)
}
}
}

35

IV. Review Program Ascending & Descending


Program ini bertujuan untuk mengurutkan data integer menaik dan
menurun atau ascending and discending.
Source code :
package program_ascending_descending;
import java.util.Scanner;
import javax.swing.JOptionPane;
public class Main {
public static void main(String[] args) {
int num, i, j, temp, pil;
Scanner input = new Scanner(System.in);
System.out.println("Masukkan jumlah data integer:");
num = input.nextInt();
int array[] = new int[num];
System.out.println("Masukkan " + num + " data: ");
for (i = 0; i < num; i++) {
array[i] = input.nextInt();
}
System.out.println("Tentukan proses :" + "\n1.
Ascending\n2. Descending");
pil = input.nextInt();
if (pil == 1) {
for (i = 0; i < (num - 1); i++) {
for (j = 0; j < num - i - 1; j++) {
if (array[j] > array[j + 1]) {
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
System.out.println("Data setelah di
urutkan:");
for (i = 0; i < num; i++) {
System.out.println(array[i]);
}}}}}
else if (pil == 2) {
for (i = 0; i < (num - 1); i++) {
for (j = 0; j < num - i - 1; j++) {
if (array[j] < array[j + 1]) {
temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
System.out.println("Data setelah di
urutkan:");
for (i = 0; i < num; i++) {
System.out.println(array[i]);
}}}}} else {System.out.println("anda belum
memasukkan pilihan");}}}

36

output :

Ascending

37

IV. Review Program Double Link List


Program ini bertujuan untuk menginput, menghapus data yang sudah
tersimpan di list depan (awal), tengah, atau belakang(terakhir). Program ini
terdiri dari 3 class yaitu :
1. Class node
2. Class doubleLinkList
3. Class mainDoubleLinkList
Source code :
A. Class node
public class node{
private node next;
private node prev;
private String data;
private String nama;
private String NIM;
public node (String input){
data = input;
}
public String getData(){
return data;
}
public void setNext(node input){
next = input;
}
public node getNext(){
return next;
}
public void setPrev(node input){
prev = input;
}
public node getPrev(){
return prev;
}
}

38

B. Class doubleLinkList
public class doubleLinkList{
private node first; //menyimpan node pertama
private node last; //menyimpan node terakhir Linklist
private node temp; //variabel pembantu
private node index; //variabel pembantu
public void addFirst(String input){ //menambah nodediawal
node n = new node(input); //membuat node
if(first==null){ //kondisi linklist kosong
first=n; //mengeset n pada first dan lastlast=n;}
else{
//kondisi sama ketika berisi 1 node dan banyak node
n.setNext(first); //mengeset pointer next pada node n menuju ke first
first.setPrev(n); //mengeset pointer prev pada node first menuju ke n
first = n; //menjadikan n sebagai first}}
public void addAfterFirst(String input){ //menambah node ke setelah pertama
node n = new node(input);
if(first==null){first=n;last=n;}
else if(first==last){
first.setNext(n); //ada beberapa alternatif penulisan
n.setPrev(first);last=n;}
else{
//node dalam linklist lebih dari satu
index = first.getNext();n.setNext(index);index.setPrev(n);
first.setNext(n);n.setPrev(first);}}
public void addBeforeLast(String input){ //menambah node sebelum terakhir
implementasikan...
node n = new node(input);
if(first==null){first=n;last=n;}
else if(first==last){last.setPrev(n);n.setNext(first);first=n;}
else{
index=last.getPrev();n.setNext(last);last.setPrev(n);
index.setNext(n);n.setPrev(index);}}
public void addLast(String input){ //menambah node pada akhir
implementasikan.....
node n = new node(input);
if(first==null){first=n;last=n;}
else if(first==last){first.setNext(n);n.setPrev(first); last=first.getNext();}
else{last.setNext(n);n.setPrev(last);last=n;
}}
public String removeFirst(){
if (first==null){return null;}
else if (first == last){temp = first;first = null;last = null;return
temp.getData();}
else{temp = first;first =
first.getNext();first.getPrev().setNext(null);first.setPrev(null);return
temp.getData();}}
public String removeLast(){ //implementasikan
if(first==null){return null;}
else if(first==last){temp=first;first=null;last=null;return
temp.getData();}else{temp=last;last=temp.getPrev();temp.setPrev(null);
last=null;return temp.getData();}}
public String getFirst(){
if (first!=null){return first.getData();}
else{return null;}}
public String getLast(){if (first!=null){return last.getData();}
else{return null;} }}

39

C. Class mainDoubleLinkList
import java.util.*;
public class mainDoubleLinkList {
public static void main(String []args){
boolean kondisi = true;
doubleLinkList ojk = new doubleLinkList();
while(kondisi){
System.out.println("\nPROGRAM DOUBLE LINK LIST");
System.out.println("==============================");
System.out.println("Memilih menu");
System.out.println("1. Tambah di awal");
System.out.println("2. Tambah setelah awal");
System.out.println("3. Tambah sebelum akhir");
System.out.println("4. Tambah di akhir");
System.out.println("5. Hapus di awal");
System.out.println("6. Hapus di akhir");
System.out.println("7. Lihat awal");
System.out.println("8. Lihat akhir");
System.out.println("9. Keluar");
System.out.println("==============================");
System.out.print(">> ");
Scanner kal = new Scanner(System.in);
int menu = kal.nextInt();
System.out.println("==============================\n");
Scanner dt = new Scanner(System.in);
if(menu==1){
System.out.print("Masukan data : ");
String data1 = dt.nextLine();ojk.addFirst(data1);}
else if(menu==2){System.out.print("Masukan data : ");
String data2 = dt.nextLine();ojk.addAfterFirst(data2);}
else if(menu==3){System.out.print("Masukan data : ");
String data3 = dt.nextLine();ojk.addBeforeLast(data3);}
else if(menu==4){System.out.print("Masukan data : ");
String data4 = dt.nextLine();ojk.addLast(data4);}
else if(menu==5){
if(ojk.getFirst()!=null){ojk.removeFirst();
System.out.println("Data telah dihapus !!");}
else{System.out.println("Data kosong !!");}}
else if(menu==6){
if(ojk.getLast()!=null){ojk.removeLast();
System.out.println("Data telah dihapus !!");}
else{System.out.println("Data kosong !!");} }
else if(menu==7){
if(ojk.getFirst()==null){System.out.print("data kosong");}
else{System.out.println(ojk.getFirst());}}
else if(menu==8){if(ojk.getLast()==null){
System.out.print("data kosong");}
else{System.out.println(ojk.getLast()); } }
else if(menu==9){kondisi=false;
}}}}

40

Output :

Proses Input data

41

Proses Input data

42

Proses menghapus data awal dan akhir

43

Proses menampilkan data awal dan terakhir

44

VI.KESIMPULAN

Mengenal Binary Tree :


Tree adalah sebuah struktur linier, biasanya digunakan untuk
menggambarkan hubungan yang bersifat hirarkis antara elemenelemen yang ada. Ada beberapa istilah dalam tree ini, yang mana
masing-masing istilah mempunyai arti dalam kaitannya dengan hirarki
antar elemen dalam tree tersebut, seperti sibling, descendant dsb.
Dalam ilmu komputer, tree adalah sebuah struktur data yang secara
bentuk menyerupai sebuah pohon, yang terdiri dari serangkaian node
(simpul) yang saling berhubungan. Node-node tersebut dihubungkan
oleh sebuah vektor. Setiap node dapat memiliki 0 atau lebih node anak
(child). Sebuah node yang memiliki node anak disebut node induk
(parent). Sebuah node anak hanya memiliki satu node induk. Sesuai
konvensi ilmu komputer, tree bertumbuh ke bawah, tidak seperti pohon
di dunia nyata yang tumbuh ke atas. Dengan demikian node anak akan
digambarkan berada di bawah node induknya.

Mengenal Graph :
Terdiri dari node dan terdiri dari link (busur)
Node disebut vertex dan Link disebut edge
Informasi penting dalam graph adalah koneksi antar vertex
Pada undirected graph, tidak terdapat directions (arah), Edge dari v0
ke v1 adalah sama dengan edge dari v1 ke v0
Jika sebuah masalah dapat direpresentasikan ke dalam bentukkgraph
maka solusi dari masalah tersebut bisa dicari dengan bantuangraph
Setiap

vertex

mewakili

sebuah

kondisi

(state)

dan

edge

mewakilitransisi antar state

45

DAFTAR PUSTAKA

Undip, BFS dan DFS,


http://eprints.undip.ac.id/5202/2/BAB_I_dan_II.pdf,
Tanggal Akses : 10 November 2010
Rachmat Antonius, Struktur Data
http://lecturer.ukdw.ac.id/anton/download/TIstrukdat11.ppt
Tanggal Akses : 10 November 2010
AlpenYap, Struktur Data Hirarkis
http://alpz.files.wordpress.com/2007/12/tree-btree-graph.pdf
Tanggal Akses : 2 November 2010
Ciptarjo Imam, Pengantar Graph
http://134738.yolasite.com/resources/17782333-Struktur-Data-Graphwwwaloneareacom.pdf
Tanggal Akses : 2 November 2010

46

Anda mungkin juga menyukai