Tree Btree Graph

90
 STRUKTUR DATA HIRARKIS : TREE Tree merupakan salah satu struktur data yang paling penting, karena banyak aplikasi menggunakan informasi dan data yang s ecara alami memiliki struktur hirarkis berguna dalam membantu memecahkan banyak masalah algoritmis. Aplikasi pohon biner : a. sebagai repr esentasi ekspressi matematika b. apli kasi pohon bi ner dal am Huf fman Codi ng. Cara Pen ggambaran Tree : Notasi Kurung Diagram Venn Notasi Tingkat Notasi Garis

Transcript of Tree Btree Graph

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 1/90

 

STRUKTUR DATA HIRARKIS : TREE

Tree merupakan salah satu struktur data yang paling penting, karenabanyak aplikasi menggunakan informasi dan data yang secara alamimemiliki struktur hirarkis berguna dalam membantu memecahkan

banyak masalah algoritmis.

Aplikasi pohon biner : 

a. sebagai representasi ekspressi matematika 

b. aplikasi pohon biner dalam Huffman Coding.

Cara Penggambaran Tree :• Notasi Kurung

• Diagram Venn• Notasi Tingkat• Notasi Garis

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 2/90

 

Terminologi :

 – Tree (atau pohon)sejumlah node yang berhubungan secara hirarkis dimana suatunode pada suatu hirarki merupakan cabang dari node denganhirarki yang lebih tinggi dan juga memiliki cabang ke beberapanode lainnya dengan hirarki yang lebih rendah.

 – Root (atau akar)Node dengan hirarki tertinggi dinamakan root.

 – leaf (atau daun).

 – Internal node (atau node dalam)node yang bukan merupakan leaf.

 – edge (atau sisi atau cabang)menyatakan hubungan hirarkis antara kedua node yang

terhubungkan, biasanya digambarkan berarah (berupa panah)untuk menunjukkan node asal edge lebih tinggi dari node tujuandari edge.

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 3/90

 

 – Level (atau tingkat) suatu node (Kadang dimulai level 0 atau 1)Bilangan yang menunjukan hirarki dari suatu node, root memiliki

level 1, node cabang dari root memiliki level 2, node cabangberikutnya dari node adalah level 3, dan seterusnya. – Height (atau tinggi) suatu tree

Sama dengan level dengan angka terbesar (hirarki terendah) suatunode yang ada dalam tree atau bisa juga didefinisikan sebagai jumlah sisi terbanyak dari root hingga suatu leaf yang ada di tree.

 – Depth (atau kedalaman) suatu nodeJumlah sisi dari root hingga node ybs.

 – Subtree (atau subpohon)

sebagian dari tree mulai dari suatu node N melingkupi node-nodeyang berada dibawah hirarkinya sehingga dapat dipandangsebagai suatu tree juga yang mana N sebagai root dari tree ini.

 – Tree kosongSuatu tree yang tidak memiliki satu node pun.

 – Tree dengan urutanletak geometris node-node yang merupakan cabang yang samadari suatu node adalah penting; biasanya urutan dari kiri ke kanan.

 

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 4/90

- B, C, D dan E memiliki induk (parent) yang sama yaitu A, sehingga ke-4 node tersebut disebut saudara (siblings)

- Semua node di bawah suatu node induk hanya dapat diakses melaluiinduknya

- Lintasan (path) sebuah node X adalah urutan akses untukmendapatkan X yang dimulai dari Akar. Path(M) = [A – B – G – M]

- Panjang lintasan (path length) X adalah jumlah node yang harusdiakses untuk mendapatkan X; sehingga |Path(M)| = 4. Ada juga yangmenyatakan panjang lintasan sebuah node adalah jumlah garis dariakar sam ai node tersebut 

- Tinggi (height) dari sebuah pohon adalah panjang lintasan terpanjang.Tinggi pohon di bawah ini = 4

- Jika ada sebuah lintasan dari node a ke node b, maka a adalahpendahulu (ancestor) dari b dan b disebut keturunan (descendent) dari

a- Kedalaman (depth) dari sebuah node adalah panjang lintasan dari

akar ke node tersebut. Depth (G) = 3

 

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 5/90

Karakteristik :a. Terdapat 1 node yang unik, yang tidak memiliki predecessor, yang

disebut dengan root (akar)b. Terdapat satu atau beberapa node yang tidak memiliki successor yang

disebut dengan leaf (daun)c. Setiap node kecuali root pasti memiliki satu predecessord. Setiap node kecuali leaf pasti memiliki 1 atau lebih successor

 

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 6/90

Contoh :Root

Node/Vertex/SimpulEdge/ Link

A

B

ED

C

Leaf (daun)

F JIG H

OMLK N

 

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 7/90

BINARY TREEKarakteristik : Maksimum child adalah 2 (Left Child dan Right Child)

Complete Binary Tree :Bila semua node kecuali Leaf memiliki 0 atau 2 child. Subtree pada Heap

Tree dapat memiliki path length yang berbeda

Skewed Binary Tree (Miring) :Bila semua node, kecuali Leaf memiliki hanya 1 child

Full Binary Tree :Bila semua node kecuali Leaf memiliki 2 Child dan semua subtree harusmemiliki path yang sama

Representasi :- Ekspresi MM dengan Binary Tree- Huffman Code

 

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 8/90

Ekspressi Matematika (EM) didefenisikan sebagai berikut:(1). Variabel dan Bilangan adalah EM

(2). Jika E, E1 dan E2 adalah EM maka – E, + E dan (E) adalah EME1 + E2, E1 – E2, E1 * E2, E1 / E2, E1 div E2, E1 mod E2 dan

E1^E2 juga adalah EMContoh :

4 adalah EMX adalah EM4 + X adalah EM2 + 4 * 3 adalah EM 

(2 + 4) * 3 adalah EM((3 + 2) * (5 – 2)) / (2 + 3) adalah EM dan seterusnyaContoh:Diketahui: Ekspressi Matematika ((2 + 3) * (5 – 2) + 5) * (5 + 3 * 2)Ditanya: Gambarkan pohon ekspressi dengan cara Bootom UpPenyelesaian:Ekspressi tersebut terbagi dua menjadi E1 dan E2 oleh operator *; sehingga

ekspressi tersebut dapat ditulis sebagai (E1) * (E2) dimana E1 = ((2 + 3)* (5 – 2) + 5) dan E2 = (5 + 3 * 2).

Kemudian gambarkan pohon ekspressi untuk (E1) * (E2).

 

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 9/90

Huffman Code:

Hubungan Level dengan Jumlah Data :

LevelKe :

Jumlah data

Minimum Maksimum

1 1 1 = 20

2 1 2 = 21

=

4 1 8 = 23

5 1 16 = 24

6 1 32 = 25

… … …

L 1 2(L-1)

 

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 10/90

TRAVERSAL BINARY TREE- Operasi penelusuran node-node dalam binary tree

- Traversal dibagi 3, yaitu :a. Preorderb. Inorderc. Postorder

- Algoritma :Procedure Preorder (n : BST);Begin

BeginWrite(n^.Info);Preorder(n^.Kiri);Preorder(n^.Kanan);

End;End;

 

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 11/90

Procedure Inorder (n : BST);Begin

If (n<> NIL) ThenBegin

Inorder(n^.Kiri);Write(n^.Info);

Inorder(n^.Kanan);End;

End;

Procedure Postorder (n : BST);Begin

If (n<> NIL) ThenBegin

Postorder(n^.Kiri);Postorder(n^.Kanan);Write(n^.Info);

End;

End;

 

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 12/90

Contoh :

B

B B

B BB

B BB B

BB

 

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 13/90

Implementasi Binary Tree :a. Array

b. Linked List

Implementasi BT pada array :- Indeks pada array menyatakan nomor kode- Node root mempunyai indeks array = 1- Leftchild suatu node dengan nomor p adalah (2p)- Rightchild suatu node dengan nomor p adalah (2p+1)- Parent dari suatu node dengan nomor p adalah (p div 2)

Implementasi Binary Tree dengan Linked ListUses crt;Type

Pointer =^Cell;

Cell = RecordKiri : Pointer;Info : Char; (* boleh diganti dg integer / tipe data lain *)Kanan : Pointer;

End;

BST = Pointer;

 

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 14/90

Implementasi Binary Search Tree :

Ketentuan :a. Semua left child harus lebih kecil dari parentb. Semua right child harus lebih besar dari parent

Keuntungan : Pencarian node target menjadi lebih efisien dan cepat

Operasi-Operasi Standar BST :-

- Mencek apakah BST kosong- Mencari Tree Minimum- Mencari Tree Maksimum- Memasukkan data baru ke dalam BST- Mencari elemen tertentu dalam BST- Menghapus data tertentu dari dalam BST- Menampilkan semua elemen dalam BST

 

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 15/90

a. Mengosongkan BST (Makenull)Procedure Makenul (T: BST);Begin

T := Nil;End;

b. Memeriksa Apakah BST KosongFunction Empty(T : BST) : Boolean;Be in

Empty := (T = Nil)End;

  

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 16/90

c. Pencarian Tree Minimum

Function TREE_MINIMUM (T : BST ) : BST;Begin

If (Not Empty (T)) Then

BeginWhile (T^.Kiri <> NIL) doBegin

= ^.

End;return T;

End;End;

  

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 17/90

d. Pencarian Tree Maksimum

Function TREE_MAKSIMUM(T : BST ) : BST;Begin

If (Not Empty (T)) Then

BeginWhile (T^.Kanan <> NIL) doBegin

= ^.

End;return T;

End;End;

 

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 18/90

Operasi Insert :- Pencarian lokasi untuk node yang akan diinsert selalu dimulai dari root- Jika node yang diinsert lebih kecil dari root , maka insert di daun pada left

subtree- Jika node yang diinsert lebih besar dari root , maka insert di daun pada

right subtree

  

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 19/90

e. Memasukkan data baru ke dalam BST

Procedure Insert(x : TipeData; Var T : BST);Begin

If (T = Nil) Then (* Jika ditemukan T yang nil *)Begin

New(T);(* ciptakan node baru ditunjuk oleh T *)T^.Kiri := Nil; (* Set pointer kiri = nil *)T^.Info := x; (* Isi data pada node = x *)

^ * *. = =

EndElse (If x = T^.Data) Then (* x sudah ada dalam T *)

Writeln(‘Error : data tersebut sudah ada *)Else (If x < T^.Data) Then

Insert(x, T^.Ki) (*jika x < data yg ditunjuk T, maka sisipkan x ke kiri*)Else (* x > data yang ditunuk T sisipkan x ke kanan *)

Insert(x, T^.Ka)End;

 

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 20/90

f. Mencari elemen tertentu dalam BST

Function Search (x: TipeData, T : BST) : Boolean;Begin

If (T = Nil) Then

Search := FalseElse If (x = T^.Info) Then

Search := True (* x ditemukan *)^.

Search := Search(x, T^.Kiri) (*cari x ke kiri *)Else (*x > T^.Info *)

Search:= Search(x, T^.Kanan) (* cari secara rekursif ke kanan *)End;

 

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 21/90

Operasi DeleteKetentuan Delete :- Jika yang didelete adalah leaf maka tidak perlu dilakukan modifikasi

terhadap lokasi- Jika yang didelete adalah node yang hanya memiliki satu anak, maka

anak tersebut langsung menggantikan posisi dari parent-nya

- Jika yang didelete adalah node dengan 2 anak (2 subtree), maka nodeyang diambil menggantikan node yang dihapus adalah :a. Berasal dari left subtree yang diambil adalah node yang paling

b. Berasal dari right subtree yang diambil adalah node yangpaling kiri (nilai terkecil)

  

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 22/90

g. Menghapus data tertentu dari dalam BST

Procedure Delete (x : TipeData; Var T : BST);Var

Bantu : Pointer;Begin

If (T = Nil) ThenWriteln(‘Error : ‘, x, ‘ tidak ditemukan ‘)Else If (x < T^.Info) Then

Delete(x, T^.Kiri) (* rekursif ke kiri *)^.  

Delete(x, T^.Kanan) (*rekursif ke kanan *)Else (*x ditemukan *)If (T^.Kiri = Nil And T^.Kanan = Nil) Then (*Kasus x adalah daun *)Begin

Bantu := T; (*Tangkap node dengan pointer Bantu *)T := Nil; (*potong T yang tadinya menunjuk node berisi x *)Dispose(Bantu) (*deallocate Bantu atau lepaskan node *)

End

  

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 23/90

Else If (T^.Kiri = Nil) Then (*x berada pada node dimana kirinya nil *)Begin

Bantu := T;T := T^.Kanan; (* Set T = pointer kanannya *)Bantu^.Kanan := Nil; (*putuskan hubungan node dgn kanannya *)Dispose (Bantu); (*lepaskan node berisi x *)

EndElse If (T^.Kanan = Nil) Then (*x berada dinode dimana kanannya nil *)Begin

Bantu := T;= ^ * = *.  

Bantu^.Kiri := Nil; (*putuskan hubungan node dengan kirinya *)Dispose (Bantu); (* lepaskan node yang berisi x *)EndElse (* pointer kiri dan kanan T tidak kosong *)

T^.Info := DeleteMin(T^.Kanan) 

End;

  

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 24/90

Fungsi Untuk Mendukung Operasi Delete :Function DeleteMin (Var A : BST) : TipeData;

VarBantu : Pointer;

BeginIf (T^.Kiri = Nil) Then (*ditemukan data terkecil *)

BeginBantu := T ; (* tangkap node yang berisi data terkecil *)DeleteMin := T^.Info; (*Ambil&simpan data terkecil *)

^ * *= . =

Bantu^.Kanan := Nil; (*lepas hubungan node tsb dgn anaknya *)Dispose (Bantu); (*lepaskan node yang berisi data terkecil *)

EndElse

DeleteMin := DeleteMin(T^.Ki); (*rekursif ke kiri *)End;

 

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 25/90

h. Menampilkan semua elemen dalam BST

Procedure Tampil(T);Var Pilih : Integer;Begin

Clrscr;

Writeln(‘1. Tampil Secara Preorder’);Writeln(‘2. Tampil Secara Inorder’);Writeln(‘3. Tampil Secara Postorder’);Writeln;

‘ ‘

If (Pilih = 1) ThenPreorder(T)

Else If (Pilih = 2) ThenInorder (T)

ElsePostorder(T);Readln

End;

 

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 26/90

AVL TREE

Definisi : BST yang mempunyai ketentuan bahwa maksperbedaan tinggi antara subtree kiri dan kanan adalah satu

Height-Balanced Tree :

- BST adalah Height Balanced p-tree yang artinya maksimumperbedaan height antara subtree kiri dan kanan adalah p- AVL Tree adalah height balanced 1-tree yang berarti

adalah satua. TallLeft bila subtree kiri lebih panjang dari subtree kanan(simbol -)b. TallRight bila subtree kanan lebih panjang dari subtree kiri(simbol +)c. Balance bila Subtree kiri dan kanan mempunyai heightsama, simbolnya 0

 

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 27/90

Search Path :

Path pencarian lokasi untuk dilakukan operasi insert dimulaidari Root

Pivot Point :- Adanya node pada search path yang balancenya TallLeft

(tanda -) atau TallRight (tanda +) dan terletak paling dekatden an node an baru

- Contoh : Jika diinsert node baru dengan nilai 5, maka pivotpointnya di node 25

Operasi Insert :- Kasus-1Tidak ada pivot point dan setiap node adalah balance, makabisa langsung diinsert sama seperti BST

 

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 28/90

- Kasus 2

Jika ada PP tetapi subtree yang akan ditambahkan nodebaru memiliki height yang lebih kecil, maka bisa langsung diinsert

- Kasus 3

Jika ada PP dan subtree yang akan ditambahkan node barumemiliki height yang lebih besar, maka tree harus digeneratesupaya tetap menghasilkan AVL Tree

Regenerate :- Single Rotation

a. Single Left Rotation

b. Single Right Rotation- Double Rotationa. Double Left Rotationb. Double Right Rotation

 

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 29/90

Algoritma Single Right Rotation :Function SRR (R : Node) : Node;Begin

Node P := R^.Left;R^.Left := P^.Right;

P^.Right := R;SRR := P;End;

Algoritma Single Left Rotation :Function SLR (R : Node) : Node;Begin

Node P := R^.Right;R^.Right := P^.Left;P^.Left := R;SLR := P;

End;

  

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 30/90

Algoritma Double Right Rotation :Function DRR (R : Node) : Node;Begin

Node P := R^.Left;Node Q := P^.Right;

R^.Left := Q^.Right;P^.Right := Q^.Left;Q^.Right := R;

^ =.

DRR := Q;End;

  

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 31/90

Algoritma Double Left Rotation :Function DLR (R : Node) : Node;Begin

Node P := R^.Right;Node Q := P^.Left;

R^.Right := Q^.Left;P^.Left := Q^.Right;Q^.Left := R;

^ =.

DLR := Q;End;

 

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 32/90

HEAP TREE :Definisi :- Heap adalah Tree yang memenuhi persamaan :

R [ I ] < R [ 2 * I ] d a n R [ I ] < R [ 2 * I + 1 ]

- Heap disebut juga Complete Binary Tree- Minimum Heap : Jika nilai parentnya selalu lebih kecil dari pada keduachildrennya

-

childrennya

 

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 33/90

Algoritma :Procedure Heapify(A:T; I : Integer);

BeginL := 2*I; R := 2*I+1;If (L<=Heap_Size[A] And A[L] > A[I]) Then besar := LElse besar := I;

If (R<=Heap_Size[A] And A[R] > A[besar]) Then besar := R;If (besar <> I) ThenBegin

Swap(A[I], A[besar]);Heapify(A, besar);

End;End;

Procedure Bentuk_Heap(A : T);

Begin Heap_Size[A] = Length[A];For I:=Length[A]/2 DownTo 1 Do

Heapify(A, I);End;

  

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 34/90

Algoritma Heap Sort :

Procedure Heap_Sort(A : T);Begin

Bentuk_Heap(A);

For I:= Length[A] Downto 2 DoBegin

,

Heap_Size[A] := Heap_Size[A] -1;Heapify(A,1);

End;

End;

 

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 35/90

B-Tree :- Definisi : Tree yang setiap nodenya dapat berisi lebih dari pada satu

elemen- Jumlah elemen dalam sebuah node tergantung kepada order dari B-Tree

tersebut- Jumlah minimum elemen dalam setiap node (kecuali root) adalah d, dan

 jumlah max adalah 2d, dimana d adalah order. Untuk Root, jumlahminimum elemen 1, dan jumlah maksimum adalah 2d

- Jumlah minimum children dari suatu node dalam B-Tree adalah 0, dan-

 

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 36/90

Operasi dalam B-Tree :

- InsertJika node belum penuh (jumlah elemen < 2d), maka elemenbisa langsung di-insertContoh : d = 2

Insert (25)23 30 35 23 25 30 35

Jika node sudah penuh, maka perlu dilakukan node splitLangkah Node Split :- Split node menjadi 2

- Letakkan d elemen terkecil di node kiri- Letakkan d elemen terbesar di node kanan- Letakkan elemen tengah ke node parentnya

  

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 37/90

Contoh : Insert(20)

Delete :- Jika target node yang akan dihapus berisi elemen lebih dari

d, maka target elemen bisa langsung dihapus tanpa perlu

14 25 30 35

14 20 30 35

25

- Jika target node yang akan dihapus berisi d node,penghapusan langsung akan menyebabkan underflow

- Regenerate dilakukan dengan meminjam elemen yang

berada di node kiri atau dikanan (yang memiliki elemen lebihdari d). Parent/ Separator akan berubah

 

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 38/90

- Jika node dikiri atau dikanan yang akan dilakukanpeminjaman ternyata mempunyai elemen kurang dari d,yang mana jika dilakukan peminjaman, node tersebut akanterjadi underflow

- Regenerate akan dilakukan dengan menggabungkan node

yang akan dihapus dengan node dikiri/kanan

 

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 39/90

Struktur Data Graph :Pendahuluan :1. Graph : struktur data yang berbentuk network/jaringan, hubungan

antar elemen adalah many-to-many2. Struktur Data Linear = keterhubungan sekuensial antara entitas data3. Struktur Data Tree = keterhubungan hirarkis4. Struktur Data Graph = keterhubungan tak terbatas antara entitas data.

Contoh graph : Informasi topologi jaringan dan keterhubungan antarkota-kota

 . e er u ungan an ara a angsung an ara ua o a = a a

keterhubungan langsung dari kota-kota lainnya yangmemperantarainya.6. Penerapan struktur data linear atau hirarkis pada masalah graph dapat

dilakukan tetapi kurang efisien. Struktur data graph secara eksplisitmenyatakan keterhubungan ini sehingga pencariannya langsung

(straightforward) dilakukan pada strukturnya sendiri.

 

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 40/90

Masalah-masalah Graph

Masalah path minimum (Shortest 

 path problem)

mencari route dengan jarak terpendek dalam suatu

 jaringan transportasi.

Masalah aliran maksimum

(maximum flow problem)

menghitung volume aliran BBM dari suatu reservoir ke

suatu titik tujuan melalui jaringan pipa.

Masalah pencarian dalam graph(graph searching problem)

mencari langkah-langkah terbaik dalam programpermainan catur komputer.

Masalah pengurutan topologis

(topological ordering problem)

menentukan urutan pengambilan mata-mata kuliah yang

saling berkaitan dalam hubungan prasyarat (prerequisite).

Masalah jaringan tugas (Task 

 Network Problem)

membuat penjadwalan pengerjaan suatu proyek yang

memungkinkan waktu penyelesaian tersingkat.

Masalah pencarian pohon rentang

minimum ( Minimum Spanning

Tree Problem)

mencari rentangan kabel listrik yang totalnya adalah

minimal untuk menghubungkan sejumlah kota.

Travelling Salesperson Problem

tukang pos mencari lintasan terpendek melalui semua

alamat penerima pos tanpa harus mendatangi suatu

tempat lebih dari satu kali.

Four-color problemdalam menggambar peta, memberikan warna yang

berbeda pada setiap propinsi yang saling bersebelahan.

 

G h di i d i hi k ( d ) d hi i i ( d )

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 41/90

Graph terdiri dari himpunan verteks (node) dan himpunan sisi (edge, arc).Verteks menyatakan entitas-entitas data dan sisi menyatakan

keterhubungan antara verteks.Notasi matematis graph G adalah :

G=(V ,E )

Sebuah sisi antara verteks x dan y ditulis {x , y }.Subgraph : graph yang merupakan suatu subset (bagian) graph yang

connected Graph H = (V1, E1) disebut subgraph dari graph G jika V1 adalah himpunan

bagian dari V dan E1 himpunan bagian dari E .

Jenis Graph :a. Directed Graph (Digraph) : jika sisi-sisi graph hanya berlaku satu arah.

Misalnya : {x,y} yaitu arah x ke y, bukan dari y ke x ; x disebut origindan y  disebut terminus. Secara notasi sisi digraph ditulis sebagaivektor (x , y ).

 

C t h Di h G {V E}

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 42/90

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)}.

 

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 43/90

A B

C

F

H

E

IM

G

K L

J

 

b Graph Tak Berarah (undirected graph atau undigraph): setiap sisi {x y}

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 44/90

b. 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 secara notasionalmenggunakan 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-node pada

struktur linear ataupun hirarkis adalah verteks-verteks dalampengertian graph dengan sisi-sisinya menyusun node-node tersebut

secara linear atau hirarkis.Struktur data linear adalah juga tree dengan pencabangan pada setiap node

hanya satu atau tidak ada.Linear 1-way linked list (digraph), linear 2-way linked list (undigraph).

 

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 45/90

A B

C

F

H

E

IM

G

K L

J

 

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 46/90

A B

C

F

H

E

IM

G

K L

J

 

Konektivitas pada Undigraph

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 47/90

Konektivitas pada Undigraph

• Adjacency: Dua verteks x dan y yang berlainan disebut

terhubung langsung (adjacent) jika ada sisi {x , y } dalam E.• Path : Urutan dari kumpulan node-node, dimana tiap node

dengan node berikutnya dihubungkan dengan Edge• Simple Path : Jika node dalam path tsb hanya muncul 1 kali

• Panjang dari path: jumlah sisi yang dilalui path.• Siklus (cycle) : suatu path dengan panjang lebih dari satu,

dimana vertex awal dan akhir sama.• Siklus sederhana: dalam undigraph, siklus yang terbentuk dari

tiga atau lebih verteks yang berlainan, dimana tidak ada vertexmuncul lebih satu kali kecuali verteks awal/akhir.

• Dua verteks x dan y yang berbeda dalam suatu undigraphdisebut berkoneksi (connected) apabila ada path penghubung.

• Suatu komponen terkoneksi (connected components) adalahsubgraph (bagian dari graph) yang berisikan satu himpunanbagian verteks yang berkoneksi.

 

Konektivitas pada Digraph

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 48/90

Konektivitas pada DigraphTerminologi pada Undigrap berlaku, kecuali dalam digraph harus dikaitkan

dengan arah tertentu karena pada arah yang sebaliknya belum tentuterdefinisi.

Adjacency ke/dari : Jika ada sisi (x ,y ) maka pada digraph dikatakan bahwax "adjacent ke" y atau y "adjacent dari" x . Demikian pula jika terdapatpath dari x ke y maka belum tentu ada path dari y ke x. Jadi dalamdigraph keterkoneksian didefinisikan lebih lanjut lagi sebagai berikut.

- Terkoneksi Kuat : Bila setiap pasangan verteks berbeda x dan y 

dalam S x berkoneksi den an dan berkoneksi den an x  

- Terkoneksi Lemah : Bila setiap pasangan verteks berbeda x dan y dalam S, salah satu: x berkoneksi dengan y (atau y berkoneksidengan x ) dan tidak kebalikan arahnya (hanya terdefinisi satu path:dari x ke y atau sebaliknya dari y ke x ).

 

Graph berbobot (weighted graph)

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 49/90

Graph berbobot (weighted graph)

Graph dengan sisi mempunyai Bobot/ Biaya. “Biaya" ini bisa mewakili

banyak aspek: biaya ekonomi suatu aktifitas, jarak geografis/tempuh, waktutempuh, tingkat kesulitan, dan lain sebagainya.

Contoh :

Graph ini merupakan Undirected Weighted Graph. Order dari verteks A = 4,verteks B = 3, dst. Adjacentcy list dari D adalah = {A, E, F, G, K, L}.

 epresen as rap

Representasi Matriks Keterhubungan Langsung (Adjacency Matrix)

Matriks digunakan untuk himpunan adjacency setiap verteks. Baris berisivertex asal adjacency, sedangkan kolom berisi vertex tujuan adjacency.Bila sisi graph tidak mempunyai bobot, maka [x, y] adjacency disimbolkan

dengan 1 dan 0 bila tidak adjacency.Bila sisi graph mempunyai bobot, maka [x, y] adjacency disimbolkan denganbobot sisi tersebut, dan bila tidak disimbolka ∞.

 

Direpresentasikan dalam matriks sbb.

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 50/90

Dari\KeA B C D E F G H I J K L M

A - 1 1 1 0 1 0 0 0 0 0 0 0

B 1 - 1 0 0 0 0 1 0 0 0 0 0

C 1 1 - 0 1 0 1 1 1 0 0 0 0

D 1 0 0 - 1 1 1 0 0 0 1 1 0

E 0 0 1 1 - 1 0 0 0 0 0 0 0

F 1 0 0 1 1 - 0 0 0 0 0 0 0

G 0 0 1 1 0 0 - 0 1 0 1 0 0

H 0 1 1 0 0 0 0 - 1 0 0 0 0I 0 0 1 0 0 0 1 1 - 1 0 0 1

J 0 0 0 0 0 0 0 0 1 - 1 0 1

K 0 0 0 1 0 0 1 0 0 1 - 1 0

L 0 0 0 1 0 0 0 0 0 0 1 - 1

M 0 0 0 0 0 0 0 0 1 1 0 1 -

 

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 51/90

A B

C

F

H

E

IM

34 4543 18

3531 25

33 15 3516 2222 21

19

G

K L

J

39 19 25 15

13 27 13

19

10

 

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 52/90

Dari\Ke A B C D E F G H I J K L M

A - 24 43 33 ∞ 31 ∞ ∞ ∞ ∞ ∞ ∞ ∞

B 24 - 18 ∞ ∞ ∞ ∞ 45 ∞ ∞ ∞ ∞ ∞

C 43 18 - ∞ 16 ∞ 22 35 15 ∞ ∞ ∞ ∞

D 33 ∞ ∞ - 19 22 39 ∞ ∞ ∞ 13 27 ∞

E ∞ ∞ 16 19 - 15 ∞ ∞ ∞ ∞ ∞ ∞ ∞

F 31 ∞ ∞ 22 15 - ∞ ∞ ∞ ∞ ∞ ∞ ∞

G ∞ ∞ 22 39 ∞ ∞ - ∞ 21 ∞ 13 ∞ ∞

H ∞ 45 35 ∞ ∞ ∞ ∞ - 25 ∞ ∞ ∞ ∞

I ∞ ∞ 15 ∞ ∞ ∞ 21 25 - 19 ∞ ∞ 35

J ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ 19 - 10 ∞ 15

K ∞ ∞ ∞ 13 ∞ ∞ 13 ∞ ∞ 10 - 19 ∞

L ∞ ∞ ∞ 27 ∞ ∞ ∞ ∞ ∞ ∞ 19 - 25

M ∞ ∞ ∞ ∞ ∞ ∞ ∞ ∞ 35 15 ∞ 25 -

 

Adjacency List : ???

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 53/90

Perhatikan deklarasi berikut :

TypePointer = ^Simpul;Simpul = Record

Elemen : TipeData; (* tipe data menurut pilihan kita *)

Next : PointerEnd;

Var X : Array [1..N] Of Pointer;

 

Algoritma-algoritma Pencarian

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 54/90

Algoritma algoritma PencarianPencarian vertex adalah proses umum dalam graph.

Terdapat 2 metoda pencarian:Depth First Search (DFS): pada setiap pencabangan, penelusuranverteks-verteks yang belum dikunjungi dilakukan secara lengkappada pencabangan pertama, kemudian selengkapnya pada

pencabangan kedua, dan seterusnya secara rekursif.

Breadth First Search (BFS): pada setiap pencabanganpenelusuran verteks-verteks yang belum dikunjungi dilakukanpada verteks-verteks adjacent, kemudian berturut-turut

selengkapnya pada masing-masing pencabangan dari setiapverteks adjacent tersebut secara rekursif.

 

Algoritma Depth First Search :

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 55/90

g pa. Algoritma diawali pada vertex S dalam G

b. Kemudian algoritma menelusuri graph dengan suatu insiden edge (u ,v ) ke current vertex u .

c. Jika edge (u , v ) menunjuk ke suatu vertex v yang siap untukdikunjungi, maka kita ikuti jalur mundur ke current vertex u. Jika pada

sisi lain, edge (u, v ) menunjuk ke vertex v yang tidak dikunjungi,maka kita pergi ke v dan v menjadi current vertex.d. Kita proses ini hingga kita mencapai sasaran akhir.e. Pada titik ini, kita mulai jalur mundur. Proses ini berakhir ketika jalur

mundur menunjuk balik ke awal vertex.

 

void graph()

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 56/90

{ for semua node u do

{ colour[u]=white;p[u]=NULL;

}

time = 0;

for semua node u do

if colour[u] == white then

DFS(u);

}

 

{ visit(u); time = time + 1;d[u] = time;colour[u] = grey;

for semua node v adjacent ke u do

{ if colour[v] == white then

{ p[v] = u; DFS(u); }

}time = time + 1; f[u] = time;

colour[u] = black;

}

 

Algoritma Breadth First Search :

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 57/90

g

BFS diawali dengan vertex yang diberikan, yang mana di level 0. Dalamstage pertama, kita kunjungi semua vertex di level 1. Stage kedua, kitakunjungi semua vertex di level 2. Disini vertex baru, yang mana adjacentke vertex level 1, dan seterusnya. Penelusuran BFS berakhir ketika setiapvertex selesai ditemui.

Implementasi algoritma BFS

Algoritma BFS menjadi kurang straightforward jika dinyatakan secarare urs . a se a nya mp ementas an secara nonre urs engan

memanfaatkan queue sebagai struktur data pendukung

 

void BFS(){ Q Q ()

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 58/90

{ Queue q = new Queue();Vertex v, w, t;for (setiap vertex v dalam G)

v.Status = false;for (setiap vertex v dalam G){ if (v.Status == false)

{ v.Status = true; q.Enqueue(v);while (EmptyQueue(Q) == false){ w = q.Dequeue();

visit(w);

{ if (t.Status == false){ t.Status = true;q.Enqueue(t);

}}

}}}

}

 

Contoh :

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 59/90

Perhatikan graph berikut dimana penelusuran diawali pada vertex s.

Input : Graph G dan vertex.Output : Edge dilabeli sebagai jelajah dan edge yang dilewati

sesuai komponen terhubung.

Langkah-1:

Theimagecannot bedisplayed.Your computer may nothaveenough memory to open theimage,or theimagemay havebeen corrupted.Restartyour computer,and then open thefileagain.If thered x stillappears,you may haveto deletetheimageand then insertitagain.

 

Langkah-2 :

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 60/90

Theimagecannot bedisplayed.Yo ur computer may nothaveenough memory to open theimage,or theimagemay havebeen corrupted.Restartyour computer,and then open thefileagain.If thered x stillappears,you may haveto deletetheimageand then insertitagain.

Langkah-3 :Theimagecannot bedisplayed.Yo ur computer may nothaveenough memory to open theimage,or theimagemay havebeen corrupted.Restartyour computer,and then open thefileagain.If thered x stillappears,you may haveto deletetheimageand then insertitagain.

 

Langkah-4:Theimagecannot bedisplayed.Your computer may nothaveenough memory to open theimage,or theimagemay havebeen corrupted.Restartyour computer,and then open thefileagain.If thered x stillappears,you may haveto deletetheimageand then insertitagain.

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 61/90

Langkah-5:Theimagecannot bedisplayed.Yo ur computer may nothaveenough memory to open theimage,or theimagemay havebeen corrupted.Restartyour computer,and then open thefileagain.If thered x stillappears,you may haveto deletetheimageand then insertitagain.

 

Langkah-6:

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 62/90

Theimagecannot bedisplayed.Your computer may nothaveenough memory to open theimage,or theimagemay havebeen corrupted.Restartyour computer,and then open thefileagain.If thered x stillappears,you may haveto deletetheimageand then insertitagain.

Langkah-7:Theimagecannot bedisplayed.Your computer may nothaveenough memory to open theimage,or theimagemay havebeen corrupted.Restartyour computer,and then open thefileagain.If thered x stillappears,you may haveto deletetheimageand then insertitagain.

 

Masalah Pencarian Lintasan Terpendek

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 63/90

Pencarian shortest path (lintasan terpendek) adalah masalah umum dalam

suatu weighted, connected graph. Misal : Pencarian jaringan jalan rayayang menghubungkan kota-kota disuatu wilayah

• Lintasan terpendek yag menghubungkan antara dua kotaberlainan tertentu (Single-source Single-destination Shortest

Path Problems)• Semua lintasan terpendek masing-masing dari suatu kota ke

setiap kota lainnya (Single-source Shortest Path problems)• emua ntasan terpen e mas ng-mas ng antara t ap

kemungkinan pasang kota yang berbeda (All-pairs Shortest PathProblems)

 

Untuk memecahkan masing-masing dari masalah-masalah tersebutterdapat sejumlah solusi

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 64/90

terdapat sejumlah solusi.

• Algoritma Dijkstra untuk Single-source Shortest Path• Algoritma Floyd-Warshall untuk masalah All-pairs ShortestPath

• Algoritma Johnson untuk masalah All-pairs Shortest Pathpada sparse graph

Dalam beberapa masalah graph lain, suatu graph dapat memiliki bobotnegatif dan kasus ini dipecahkan oleh algoritma Bellman-Ford.Yang akan dibahas di sini adalah algoritma Dijkstra yaitu mencari lintasanerpen e ar sua u ver e s asa er en u vs e se ap ver e s a nnya.

 

Algoritma Dijkstra

Al it Dijk t '

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 65/90

Algoritma Dijkstra's :

a. Menyelesaikan problem single-source shortest-path ketika semuaedge memiliki bobot tidak negatif.

b. Algoritma greedy mirip ke algoritma Prim's.c. Algoritma di awali pada vertex sumber s, kemudian berkembang

membentuk sebuah tree T, pada akhirnya periode semua vertexdijangkau dari S. Vertex di tambah ke T sesuai urutan.

Misalnya : pertama S, kemudian vertex yang tepat ke S, kemudian yangtepat er utnya an seterusnya.

 

DIJKSTRA (G, w, s)

{ INITIALIZE SINGLE-SOURCE (G s)

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 66/90

{ INITIALIZE SINGLE SOURCE (G, s)

S ← { }Initialize priority queue QQ ← V[G]while priority queue Q is not empty do

u  ← EXTRACT_MIN(Q)S ← S È {u } // Lakukan relaxation untuk setia vertex v ad acent ke u for setiap vertex v dalam Adj[u] do

Relax (u , v , w )}

Relax (u, v , w){ If d[u] + w(u, v ) < d[v ] thend[v ] = d[u] + w[u, v ]

}

 

Step1. Diberikan inisial graph G=(V, E). Semua node-node mempunyaibiaya tak terhingga, kecuali node sumber s, dengan biaya 0.

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 67/90

y gg , , g yTheimagecannot bedisplayed.Your computer may nothaveenough memory to open theimage,or theimagemay havebeen corrupted.Restartyour computer,and then open thefileagain.If thered x stillappears,you may haveto deletetheimageand then insertitagain.

 

Step 2. Pertama, lakukan pemilihan node, yang mana tepat ke node sumberS. Kita inisialisasi d[S] ke 0. Tambahkan itu ke S. Relaksasi semua node

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 68/90

adjacent dari sumber S. Update predecessor (lihat panah merah dalamdiagram di bawah) untuk semua node yang di-update.Theimagecannot bedisplayed.Yo ur computer may nothaveenough memory to open theimage,or theimagemay havebeen corrupted.Restartyour computer,and then open thefileagain.If thered x stillappears,you may haveto deletetheimageand then insertitagain.

 

Step 3. Pilih node paling tepat ke x. Relaksasi semua node adjacent kevertex x. Update predecessor untuk node u, v dan y (kembali, perhatikan

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 69/90

panah merah dalam diagram berikut).Theimagecannot bedisplayed.Yo ur computer may nothaveenough memory to open theimage,or theimagemay havebeen corrupted.Restartyour computer,and then open thefileagain.If thered x stillappears,you may haveto deletetheimageand then insertitagain.

 

Step 4. Sekarang, node y adalah node tepat, sehingga di tambahkan ke S.Relaksasi node v dan periksa predecessor yang dimiliki (perhatikan panah

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 70/90

merah!).Theimagecannot bedisplayed.Yo ur computer may nothaveenough memory to open theimage,or theimagemay havebeen corrupted.Restartyour computer,and then open thefileagain.If thered x stillappears,you may haveto deletetheimageand then insertitagain.

 

Step 5. Sekarang kita memiliki node u yang tepat. Pilih node ini dan periksabahwa itu merupakan tetangga dari node v.

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 71/90

Theimagecannot bedisplayed.Your computer may nothaveenough memory to open theimage,or theimagemay havebeen corrupted.Restartyour computer,and then open thefileagain.If thered x stillappears,you may haveto deletetheimageand then insertitagain.

 

Step 6. Akhirnya, tambahan node v. Daftar predecessor sekarangmendefinisikan shortest path dari setiap node ke node asal, s.

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 72/90

Theimagecannot bedisplayed.Yo ur computer may nothaveenough memory to open theimage,or theimagemay havebeen corrupted.Restartyour computer,and then open thefileagain.If thered x stillappears,you may haveto deletetheimageand then insertitagain.

 

Dynamic Programming :

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 73/90

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 GraphDimana : Cost (i,j) = Min(C(j,l) + Cost(i+1,l)}Den an :C(j,l) = Bobot edge j dan l

l = Elemen Vi+1 Dan <j,l> eemen Ei=stage ke-I dan j = node dalam VProses 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 :S1 S2 S3 S4 S5

 

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 74/90

4

9 1 2 2 6

5 4 47 733

22

66 99

3 3 25 5

112 11 6

855

44

88 1111

 

Maka langkah-langkah yang dilakukan adalah :K=5, sehingga dimulai dari S3

 

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 75/90

Cost(3,6) = Min{6+Cost(4,9); 5+Cost(4,10)} = Min{6+4;5+2} = 7Cost(3,7) = Min{4+Cost(4,9); 3+Cost(4,10)} = Min{4+4;3+2} = 5Cost(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,4) = Min{11+Cost(3,8)} = 18Cost(2,5) = Min{11+Cost(3,7); 8+Cost(3,8)} = Min(11+5;8+7} = 15Cost(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

Jadi : 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 :

 

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 76/90

4

9 1 2 2 6

5 4 47 733

22

66 99

3 3 25 5

112 11 6

855

44

88 1111

 

Shortest Path Kedua adalah :

 

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 77/90

4

9 1 2 2 6

5 4 47 733

22

66 99

3 3 25 5

112 11 6

855

44

88 1111

 

Struktur Data graf: representasi & algoritma-algoritma

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 78/90

Masalah Pencarian Pohon Rentangan Minimum

Definisi Pohon rentangan atau spanning tree dari suatu connected graphdidefinisikan sebagai free-tree yang terbentuk dari subset sisi-sisi sertamenghubungkan setiap verteks dalam graph tersebut. Pohon rentangan

Minimum (MST) adalah pohon rentangan dengan total bobot dari sisi-sisinya adalah minimal. Dalam penelusuran vertex tidak diperkenankanterbentuk siklus (cycle)

Diketahui sebuah graph tak berarah dan tak berbobot sebagai berikut :

 

Kemungkinan Spanning Tree :

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 79/90

 

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

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 80/90

Dua algoritma populer untuk menentukan minimum spanning tree (MST) :a. Kruskal Algorithmb. Prim’s Algorithm

Algoritma Kruskal :Algoritma ini lebih sederhana jika dilihat dari konsepnya namun lebih sulit

dalam im lementasin a. Iden a adalah menda atkan satu demi satusisi mulai dari yang berbobot terkecil untuk membentuk tree; suatu

sisi walaupun berbobot kecil tidak akan diambil jika membentuk siklikdengan sisi yang sudah termasuk dalam tree.

Yang menjadi masalah dalam implementasinya adalah keperluan adanyapemeriksaan kondisi siklik tersebut.

 

Salah satu pemecahaannya adalah dengan subsetting yaitu pembentukansubset-subset yang disjoint dan secara bertahap dilakukan penggabungan

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 81/90

atas tiap dua subset yang berhubungan dengan suatu sisi dengan bobotterpendek. Algoritma lengkapnya:Tahap pertama, jika dalam V terdapat n verteks maka diinisialisasin buah subset yang disjoint, masing-masing berisi satu verteks,sebagai subset-subset awal.Tahap berikutnya, urutkan sisi-sisi dengan bobot yang terkecilhingga terbesar.

dalam iterasi: jika sisi tsb. menghubungkan dua verteks dalam satu subset(berarti membentuk siklik) maka skip sisi tersebut dan periksasisi berikutnya jika tidak (berarti membentuk siklik) maka kedua subset dari

verteks-verteks yang bersangkutan digabungkan menjadi satusubset yang lebih besar.Iterasi akan berlangsung hingga semua sisi terproses.

 

MST_KRUSKAL (G)

{ For setiap vertex v dalam V[G] Do

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 82/90

{ set S(v ) ← {v } }Inisialisasi priority queue Q yang berisi semua edge dari G, gunakanbobot 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

}

 

Contoh : Diktahui sebuah graph sebagai berikut :Step 1. Dalam graph, Edge(g, h) adalah terpendek. Setiap vertex g atau

 

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 83/90

vertex h dapat menjadi representatif. Misal, pilih vertex g secara bebas :Theimagecannot bedisplayed.Your computer may nothaveenough memory to open theimage,or theimagemay havebeen corrupted.Restartyour computer,and then open thefileagain.If thered x stillappears,you may haveto deletetheimageand then insertitagain.

Step 2. edge (c, i) menciptakan dua tree. Pilih vertex c sebagai

representasi untuk dua treeTheimagecannot bedisplayed.Your computer may nothaveenough memory to open theimage,or theimagemay havebeen corrupted.Restartyour computer,and then open thefileagain.If thered x stillappears,you may haveto deletetheimageand then insertitagain.

 

Step 3. Edge (g, g) adalah edge terpendek berikutnya. Tambahkan edgeini dan pilih vertex g sebagai representatif :

Theimagecannot bedisplayed.Yo ur computer may nothaveenough memory to open theimage,or theimagemay havebeen corrupted.Restartyour computer,and then open thefileagain.If thered x stillappears,you may haveto deletetheimageand then insertitagain.

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 84/90

Step 4. Edge (a, b) menciptakan tiga tree.Theimagecannot bedisplayed.Your computer may nothaveenough memory to open theimage,or theimagemay havebeen corrupted.Restartyour computer,and then open thefileagain.If thered x stillappears,you may haveto deletetheimageand then insertitagain.

 

Step 5. Tambahkan edge (c, f) dan merge dua tree. Vertex c terpilihsebagai representatif.

Theimagecannot bedisplayed.Yo ur computer may nothaveenough memory to open theimage,or theimagemay havebeen corrupted.Restartyour computer,and then open thefileagain.If thered x stillappears,you may haveto deletetheimageand then insertitagain.

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 85/90

Step 6. Edge (g, i) adalah yang paling minimum berikutnya, tetapi jika kita

tambahkan edge ini, sebuah cycle akan tercipta. Vertex c adalahrepresentasi dari keduanya.Theimagecannot bedisplayed.Yo ur computer may nothaveenough memory to open theimage,or theimagemay havebeen corrupted.Restartyour computer,and then open thefileagain.If thered x stillappears,you may haveto deletetheimageand then insertitagain.

 

Step 7. Sebagai alternatif, tambahkan edge (c, d).Theimagecannot bedisplayed.Your computer may nothaveenough memory to open theimage,or theimagemay havebeen corrupted.Restartyour computer,and then open thefileagain.If thered x stillappears,you may haveto deletetheimageand then insertitagain.

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 86/90

Step 8. Jika kita tambahkan edge (h, i), maka edge(h, i) akan membuatsebuah cycle.

Theimagecannot bedisplayed.Your computer may nothaveenough memory to open theimage,or theimagemay havebeen corrupted.Restartyour computer,and then open thefileagain.If thered x stillappears,you may haveto deletetheimageand then insertitagain.

 

Step 9. Sebagai alternatif penambahan edge (h, i), tambahkan edge (a, h).Theimagecannot bedisplayed.Yo ur computer may nothaveenough memory to open theimage,or theimagemay havebeen corrupted.Restartyour computer,and then open thefileagain.If thered x stillappears,you may haveto deletetheimageand then insertitagain.

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 87/90

 

Step 10. Kembali, jika kita tambahkan edge (b, c), akan menciptakansebuah cycle. Tambahkan edge (d, e) sebagai alternatif untuk

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 88/90

menyempurnakan spanning tree. Dalam spanning tree ini, semua treedigabung dan vertex c adalah sebuah representatif tunggal.Theimagecannot bedisplayed.Yo ur computer may nothaveenough memory to open theimage,or theimagemay havebeen corrupted.Restartyour computer,and then open thefileagain.If thered x stillappears,you may haveto deletetheimageand then insertitagain.

 

Algoritma Prim

Algoritma dimulai dari suatu verteks awal tertentu: bisa ditentukan oleh

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 89/90

pemanggil atau dipilih sebarang oleh algoritma. Misalnya verteks awaltersebut adalah v.Pada setiap iterasi terdapat kondisi di mana himpunan verteks V terbagidua dalam:

W yaitu himpunan verteks yang sudah dievaluasi sebagai node didalam pohon, serta (V-W) yaitu himpunan verteks yang belumdievaluasi.

awa a gor tma n s a sas er s verte s awa 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 yang

membentuk tree dan verteks adjacent sisi tersebut dalam (V-W) dipindahkan ke W (menjadi anggota W).Jika sisi tersebut tidak ada maka proses selesai.

 

Dari contoh di atas misalnya dilakukan pencarian mulai dari verteks A(ingat tidak harus selalu dari verteks A!). Maka algoritma ini

h ilk h h i i i bb

5/11/2018 Tree Btree Graph - slidepdf.com

http://slidepdf.com/reader/full/tree-btree-graph 90/90

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 ] ← NIlwhile queue tidak kosong do

_ 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 )}

}}

}