GRAPH
• Graph adalahkumpulan dari simpul
dan busur yang secara matematis
dinyatakan sebagai :
G = (V, E)
Dimana
G = Graph
V = Simpul atau Vertex, atau Node, atau Titik
E = Busur atau Edge, atau arc
3.
Contoh graph :
B
AC
D E
Undirected
graph
vertex
edge
e1 e3
e4
e7
e5
e2
e6
v1
v2
v4 v5
v3
V terdiri dari v1, v2, …, v5
E terdiri dari e1, e2, … , e7
4.
• Sebuah graphmungkin
hanya terdiri dari satu
simpul
• Sebuah graph belum tentu
semua simpulnya
terhubung dengan busur
• Sebuah graph mungkin
mempunyai simpul yang tak
terhubung dengan simpul
yang lain
• Sebuah graph mungkin
semua simpulnya saling
berhubungan
5.
Graph Berarah danGraph Tak Berarah :
B
A C
D E
B
A C
D E
Directed
graph
Undirected
graph
e1 e3
e4
e7
e5
e2
e6
v1
v2
v4 v5
v3
v1
v2
v3
v5
v4
e1
e2
e3
e4
e5
e6
e7
e8 e9
e10
Dapat dilihat dari bentuk busur yang artinya urutan
penyebutan pasangan 2 simpul.
6.
• Graph takberarah (undirected graph
atau non-directed graph) :
• Urutan simpul dalam sebuah busur tidak
dipentingkan. Mis busur e1 dapat disebut
busur AB atau BA
• Graph berarah (directed graph) :
• Urutan simpul mempunyai arti. Mis busur AB
adalah e1 sedangkan busur BA adalah e8.
7.
• Graph Berbobot(Weighted Graph)
• Jika setiap busur mempunyai nilai yang
menyatakan hubungan antara 2 buah
simpul, maka busur tersebut dinyatakan
memiliki bobot.
• Bobot sebuah busur dapat menyatakan
panjang sebuah jalan dari 2 buah titik,
jumlah rata-rata kendaraan perhari yang
melalui sebuah jalan, dll.
8.
Graph Berbobot :
B
AC
D E
B
A C
D E
Directed
graph
Undirected
graph
5 3
12
6
8
4
3
v1
v2
v4 v5
v3
v1
v2
v3
v5
v4
5
e2
3
12
8
3
6
4 7
10
Panjang busur (atau bobot) mungkin tidak digambarkan secara
panjang yang proposional dengan bobotnya. Misal bobot 5
digambarkan lebih panjang dari 7.
9.
Istilah pada graph
Incident
Jikae 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.
Degree (derajat), indegree dan outdegree
Degree sebuah simpul adalah jumlah busur
yang incident dengan simpul tersebut.
10.
Indegree sebuah simpulpada graph
berarah adalah jumlah busur yang
kepalanya incident dengan simpul
tersebut, atau jumlah busur yang “masuk”
atau menuju simpul tersebut.
Outdegree sebuah simpul pada graph
berarah adalah jumlah busur yang
ekornya incident dengan simpul tersebut,
atau jumlah busur yang “keluar” atau
berasal dari simpul tersebut.
11.
3. Adjacent
Pada graphtidah 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.
w
e
v
v
e w
12.
4. Successor danPredecessor
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 yang berbeda, yang adjacent secara
berturut-turut dari simpul satu ke simpul
berikutnya.
1
4
3
2
4
2
4
2
4
2
1
3
1
3
1
3
13.
Representasi Graph dalam
bentukmatrix
• Adjacency Matrix Graph tak berarah
B
A C
D E
Graph
0 1 0 1 0
1 0 1 0 1
0 1 0 1 1
1 0 1 0 1
0 1 1 1 0
A B
A
0
B
C
1 2 4
3
C D E
D
E
0
1
2
4
3
Urut abjad
Degree simpul : 3
14.
Representasi Graph dalam
bentukmatrix
• Adjacency Matrix Graph berarah
Graph
0 1 0 1 0
1 0 1 0 1
0 1 0 1 1
0 0 1 0 1
0 0 0 0 0
A B
A
0
B
C
1 2 4
3
C D E
D
E
0
1
2
4
3
B
A C
D E
ke
dari
out
in
15.
• Adjency Listgraph tak berarah
• Digambarkan sebagai sebuah simpul
yang memiliki 2 pointer.
• Simpul vertex : Simpul edge :
Representasi Graph dalam
bentuk Linked List
info info
Menunjuk ke simpul
vertex berikutnya,
dalam untaian simpul
yang ada.
Menunjuk ke simpul
edge pertama Menunjuk ke
simpul edge
berikutnya, bila
masih ada.
Menunjuk ke simpul
vertex tujuan yang
berhubungan dengan
simpul vertex asal.
left right left right
16.
• Define structuntuk sebuah simpul yang
dapat digunakan sebagai vertex
maupun edge.
typedef struct tipeS {
tipeS *Left;
int INFO;
tipeS *Right;
};
tipeS *FIRST, *PVertex, *PEdge;
17.
Contoh : untukvertex A, memiliki 2
edge yang terhubung yaitu e1 dan e2.
A
C
D
B
E
e2
Graph
e1
B
A C
D E
e1
e3
e4
e7
e5
e2
e6
Urut abjad
18.
Gambar di atasdapat disusun dengan
lebih sederhana, sbb :
A
C
D
B
E
D
A
B
A
B
C E
D E
C
C D
B
A C
D E
Graph
B
E
Graph berarah dan
berbobot
B
AC
D E
5
3
2
14
12
6
7
12
0 5 0 2 0
6 0 3 0 0
0 0 0 0 9
0 0 12 0 7
0 14 0 0 0
A
A
0
B
C
1 2 4
3
D
E
0
1
2
4
3
B C D E
Perhatikan pemilihan nilai 0.
21.
Penyelesaian kasus Graph
halamansebelumnya :
• Define simpul untuk vertex dan edge
• Mengidentifikasi Simpul pertama
sebagai vertex yang pertama
• Tambahkan vertex sisanya
• Tambahkan edge pada masing-masing
vertex yang telah terbentuk
• Tampilkan representasi graph berikut
bobotnya
Bina Nusantara
GRAPH vsTREE
• Sebuah Graph memiliki ciri berbeda dengan Tree
• Dalam Graph, edge bebas menghubungkan node-node mana pun.
• Dalam Tree, satu node hanya boleh terhubung ke satu parent dan beberapa
child, tidak boleh ke beberapa parent.
• Dalam sebuah Graph bisa dirunut jalur edge yang membentuk jalur putaran
dari 1 node kembali ke node semula; ini tidak boleh terjadi dalam Tree
[buku utama, bab 6.5]
28.
Bina Nusantara
SPANNING TREE
•Spanning Tree adalah sebuah Tree yang dibuat dari
sebuah Graph dengan menghilangkan beberapa
edge-nya. Tree ini harus mengandung semua node
yang dimiliki Graph.
[buku utama, ilustrasi 6.3]
29.
Bina Nusantara
MINIMUM SPANNINGTREE
• Jika Weighted Graph diubah menjadi
Spanning Tree, tiap kombinasi Tree yang
dapat dibuat memiliki total weight yang
berbeda-beda.
• Problem Minimum Spanning Tree (MST)
berusaha mencari Tree seperti apa yang
bisa dibuat dari sebuah Weighted Graph
dengan total weight seminimal mungkin.
30.
Bina Nusantara
MST DENGANMETODE
GREEDY
• Algoritma Prim-Dijkstra
• Ditemukan oleh Robert C. Prim di tahun
1957 dan oleh Edsger Dijkstra di tahun
1959.
• Algoritma Kruskal
• Ditemukan oleh Joseph Kruskal di tahun
1956.
31.
Bina Nusantara
ALGORITMA PRIM-
DIJKSTRA
•Langkah-langkah algoritma Prim-Dijkstra :
1. Tentukan node awal, asumsikan semua edge berwarna hitam
2. Dari semua edge yang terhubung ke node awal tersebut, pilih edge
dengan bobot terkecil
3. Tandai edge yang dipilih dengan warna hijau
4. Apabila ada edge yang kedua node-nya sudah terkena jalur hijau,
tandai edge tersebut dengan warna merah (karena jika dipilih akan
membentuk jalur putaran Ă melanggar syarat tree)
5. Tentukan node-node yang berada di jalur hijau sebagai node aktif
6. Bandingkan semua edge yang terhubung ke node aktif (hanya edge
hitam), pilih yang bobotnya terkecil
7. Tandai edge yang dipilih dengan warna hijau
8. Ulangi dari langkah ke-4 hingga semua node terlewati jalur hijau
9. Ketika semua node telah dilewati jalur hijau, maka jalur hijau yang
terbentuk adalah MST yang dicari
32.
Bina Nusantara
ALGORITMA KRUSKAL
•Langkah-langkah algoritma Kruskal :
1. Asumsikan semua edge berwarna hitam
2. Bandingkan bobot semua edge hitam, pilih edge dengan
bobot terkecil
3. Tandai edge yang dipilih dengan warna hijau
4. Apabila ada edge yang kedua node-nya sudah terkena jalur
hijau, tandai edge tersebut dengan warna merah (karena jika
dipilih akan membentuk jalur putaran Ă melanggar syarat tree)
5. Ulangi dari langkah ke-2 hingga semua node terlewati jalur
hijau
6. Ketika semua node telah dilewati jalur hijau, maka jalur hijau
yang terbentuk adalah MST yang dicari
33.
Bina Nusantara
CONTOH PROBLEMMST
• Pelajari langkah-langkah algoritma pada :
• bab 6.5.1 (algoritma Prim-Dijkstra)
• bab 6.5.2 (algoritma Kruskal)
34.
Bina Nusantara
SHORTEST PATH
•Dalam sebuah Graph yang setiap edge yang memiliki weight (bobot), jarak
terpendek (shortest path) antara 2 node dapat dicari dengan Metode Greedy
• Misal kita hendak mencari jalur terpendek (shortest path) dari node A ke
node F, bagaimana cara menghitungnya dengan Metode Greedy?
[buku utama, bab 6.7]
35.
Bina Nusantara
METODE GREEDY
SHORTESTPATH
• Langkah-langkah Metode Greedy
1.Berangkat dari node awal
2.Pilih edge yang memiliki bobot terkecil
dari node tersebut
3.Maju ke node yang dituju
4.Ulangi dari langkah ke-2 hingga mencapai
node tujuan
Bina Nusantara
SOLUSI OPTIMAL?
•Benarkah solusi yang didaptkan dari Metode Greedy untuk Shortest Path problem
adalah benar-benar solusi terbaik?
• Coba bandingkan solusi berikut :
• Metode Greedy menghasilkan solusi yang cukup baik, tapi bukan yang paling baik
• Diskusikan mengapa bisa begitu?
38.
Bina Nusantara
LATIHAN
• BuatlahMinimum Spanning Tree menggunakan
algoritma Prim-Dijkstra dan algoritma Kruskal
• Carilah Shortest Path dari node A ke node F dengan
Metode Greedy!
• Diskusikan mengapa kadang Metode Greedy gagal
menghasilkan solusi terbaik!