GRAF
Graf 1
atau dapat ditulis dengan notasi G = (V,E).
Simpul pada graf dapat dinomori dengan huruf seperti v,
w, .. atau dengan bilangan asli 1, 2, ... atau gabungan
keduanya.
Jika e adalah sisi yang menghubungkan simpul v i dengan
simpul vj, maka e dapat ditulis sebagai e = (vi, vj).
Secara geometri gaf digambarkan sebagai
sekumpulan simpul di dalam bidang dua dimensi yang
dihubungkan dengan sekumpulan garis (sisi). Gambar 1
menunjukan dua buah graf G 1 dan G2.
Graf 2
Pada G2, sisi e1 = (1,2) dan sisi e2 = (1,2) dinamakan sisi-
ganda (multiple edges atau paralell edges) karena kedua sisi
ini menghubungi dua buah simpul yang sama, yaitu simpul
1 dan simpul 2. Sisi e5 = (3,3) dinamakan gelang atau
kalang (loop) karena simpul awal dan simpul akhirnya sama.
Graf yang tidak mengandung gelang dan sisi-ganda
dinamakan graf sederhana (simple graph). Garf G1 adalah
graf sederhana sedangkan G2 bukan. Graf yang
mengandung sisi-ganda dinamakan bahu-graf (multi-graph).
Jumlah simpul pada graf disebut kardinalitas graf dan
dinyatakan dengan n = |V| dan jumlah sisi dinyatakan
dengan m = |E| . Pada graf G 1 memunyai n = 4 dan m = 5,
sedangkan G2 mempunyai n =3 dan m =5. Jika n berhingga
jumlahnya, maka grafnya disebut graf terbatas. Graf dengan
n tidak berhingga disebut graf tidak berhingga. Graf pada
Gambar 2 adalah contoh graf tidak berhingga. Dalam buku
ini yang akan dibahas graf berhingga jadi istilah graf berarti
graf berhingga.
Graf 3
Definisi graf menyatakan bahwa V tidak boleh kosong,
sedangkan E boleh kosong. Jadi sebuah graf dimungkinkan
tidak mempunyai sisi tetapi simpulnya harus ada. Graf yang
himpunan sisinya merupakan himpunan kosong disebut graf
kosong (null graph atau empty graph) dan ditulis sebagai N n,
untuk n adalah jumlah simpul. Pada Gambar 3 menunjukkan
graf N4.
Graf 4
Graf yang sisinya tidak mempunyai orientasi arah. Pada
graf tidak berarah, urutan simpul yang dihubungkan oleh
sisi tidak diperhatikan. Jadi (v j, vk) = (vk, vj) adalah sisi
yang sama. Gambar 1 adalah graf tidak berarah.
Graf 5
Dua buah simpul dikatakan bertentangga bila
keduanya terhubung. Secara formal dinyatakan:
V1 bertetangga dengan v2 jika ve € E sehingga e = (v1, v2)
Pada Gambar 1(a), simpul 1 bertetangga dengan simpul 2
dan simpul 3, tetapi tidak bertetangga dengan simpul 4.
Bersisian (incidency)
Untuk sembarang sisi e = (vj, vk) dikatakan
e bersisian dengan simpul vj atau
e bersisian dengan simpul vk
Pada Gambar 1(a), sisi (2,3) bersisian dengan simpul 2 dan
simpul 3, tetapi sisi(1,2) tidak bersisian dengan simpul 4.
Gelang (self-loop)
Gelang atau kalang adalah sisi (u,v) yang bersisian terhadap
simpul yang sama, dengan kata lain u = v, sisi (3,3) atau e 5
pada Gambar 1(b) adalah gelang.
Graf 6
Gambar 5. Simpul 4 adalah simpul terpencil
Derajad
Derajad suatu simpul adalah jumlah sisi yang bersisian
dengan simpul tersebut. Dilambangkan: d(v)
Pada Gambar 1 (a)
d(1) = d(4) = 2
d(2) = d(3) = 3
Simpul terpencil adalah simpul dengan d(v) = 0.
Simpul yang mempunyai gelang dihitung mempunyai dua
buah sisi yang bersisian dengannya sehingga graf pada
Gambar 1(b) d(3) = 4.
Simpul yang berderajad satu disebut anting-anting (pendant
vertex).
Pada graf berarah, pengertian derajad dibedakan menjadi
dua macam:
Din(vi) = derajad masuk = jumlah sisi yang masuk ke simpul
vi
Dout(vi) = derajad keluar = jumlah sisi yang keluar dari
simpul vi
sehingga
d(vi) = Din(vi) + Dout(vi)
Pada Gambar 4:
din(1) = 1; dout(1) = 1
din(2) = 1; dout(2) = 3
din(3) = 1; dout(3) = 1
din(4) = 2; dout(4) = 0
Graf 7
Lemma : jumlah derajad simpul pada suatu graf adalah
genap, yaitu dua kali jumlah sisi pada graf tersebut.
Lemma ini dikenal dengan Lemma jabat tangan
(handshaking Lemma). Layaknya orang berjabat tangan,
maka jumlah tangan yang berjabatan adalah genap dan
jumlah tangan yang berjabatan adalah dua kali jumlah
jabatan tangan yang terjadi.
Jumlah derajad seluruh simpul pada graf Gambar 1(a)
d(1) + d(2) + d(3) + d(4) = 2 + 3 + 3 +2 = 10 = 2 x jumlah
sisi = 2 x 5
jumlah derajad seluruh simpul pada graf Gambar 1(b)
d(1) + d(2) + d(3) = 3 + 3 + 4 = 10 = 2 x jumlah sisi = 2 x 5
Dari lemma di atas adalahdapat diturunkan teorema berikut:
Teorema : Untuk sembarang graf G, jumlah simpul yang
berderajad ganjil selalu genap.
Lintasan (path)
Lintasan dari simpul vp ke vq dalam G adalah rangkaian
simpul vp, vi1, vi2, .., vim, vq sehingga (vp, vi1), (vi1, vi2), .., (vim, vq)
adalah sisi-sisi dalam graf. Pada Gambar 1(a) lintasan
1,2,4,3 adalah lintasan dengan runtunan sisi (1,2), (2,4),
(4,3).
Lintasan sederhana adalah lintasan dengan semua simpul
yang berbeda kecuali mungkin simpul pertama dan simpul
akhir.
Pada Gambar 1(a)
Lintasan 1, 2, 4, 3 adalah lintasan sederhana.
Graf 8
Lintasan 1, 2, 4, 3, 2 bukan lintasan sederhana.
Panjang lintasan adalah jumlah sisi dalam lintasan tersebut.
Lintasan 1, 2, 4, 3 pada Gambar 1(a)memiliki panjang 3.
Siklus (cycle) atau Sirkuit (circuit)
Siklus atau sirkuit adalah lintasan sederhana dengan simpul
pertama sama dengan simpul terakhir.
Pada Gambar 1(a) 1, 2, 3, 1 adalah sirkuit. Panjang sirkuit
adalah jumlah sisi dalam sirkuit tersebut. Lintasan 1, 2, 3, 1
pada Gambar 1(a) memiliki panjang 3.
Keterhubungan (connected)
Dua buah simpul v1 dan simpul v2 disebut terhubung jika
terdapat lintasan dari v 1 ke v2. Graf tak berarah G disebut
terhubung jika untuk setiap pasang simpul v i dan vj dalam
himpunan V terdapat lintasan dari v i ke vj (yang juga harus
berarti ada lintsan dari vj ke vi). Jika tidak, maka G
disebutgraf tidak terhubung. Sebagai perjanjian setiap
simpul terhubung dengan dirinya sendiri. Jadi graf yang
hanya terdiri atas satu simpul saja (tidak ada sisi) juga
dikatakan graf terhubung. Kedua graf pada Gambar 1 adalah
graf terhubung. Graf pada Gambar 6 merupakan contoh
graf yang tidak terhubung.
Graf 9
Gambar 6. Graf tidak terhubung
Graf berarah G dikatakan terhubung jika graf tidak
berarahnya terhubung (graf tidak berarahnya diperoleh
dengan menghilangkan arahnya).
Dua simpul, u dan v, pada graf berarah G disebut terhubung
kuat jika terdapat lintasan berarah dari u ke v dan juga
lintasan berarah dari v ke u. Pada Gambar 4 simpul 1 dan
simpul 2 terhubung kuat.
Jika u dan v tidak terhubung kuat tetapi terhubung pada graf
tidak berarahnya, maka u dan v dikatakan terhubung lemah.
Pada Gambar 4 simpul 1 dan 3 terhubung lemah.
Graf berarah G disebut terhubung kuat apabila untuk setiap
pasang simpulsembarang u dan v di G, terdapat lintasan
dari simpul u ke simpul v, demikian juga dari simpul v ke
simpul u. Kalau tidak, G disebut graf terhubung lemah. Graf
pada Gambar 7 adalah graf terhubung kuat sedangkan
Gambar 4 adalah graf terhubung lemah.
Graf 10
Gambar 7. Graf berarah terhubung kuat
Pohon (tree)
Pohon adalah graf terhubung yang tidak mempunyai sirkuit.
Graf pada Gambar 8 adalah pohon.
Gambar 8. Pohon
Graf 11
G2 = (V2, E2) sedemikian sehingga E2 = E – E 1dan V2 adalah
himpunan simpul yang angota-anggota E2 bersisian
dengannya (Gambar 9(c)).
Graf 12
Gambar 11. Graf G yang mempunyai 2 buah
komponen terhubung kuat
Subgraf Rentang (Spanning Subgraph)
Subgraf G’ = (V’,E’) dari G dikatakan subgraf rentang jika
V’=V (yaitu G’ mengandung semua simpul dari G). Pada
Gambar 12 G’ adalah sugraf rentang dari G, tetapi G” bukan
subgraf rentang dari G.
Graf 13
berkoresponden di G2 harus bersisian dengan simpul u’ dan
v’ yang di G2 (Gambar 13).
Graf 14
Gambar 14. Dua buah graf yang tidak isomorfik
Graf 15
Gambar 16. Graf teratur berderjad 3
Graf 16
Pada Gambar 18 merupakan contoh persoalan utilitas:
terdapat tiga buah rumah (H1, H2, dan H3) masing-masing
dihubungkan tiga buah utilitas: air (W), gas (G)dan listrik (E).
Gambar 19. (a) Graf planar, dan (b) Graf tidak planar
Graf 17
menyatakan jarak antara dua buah kota., biaya perjalanan
antara dua buah kota, waktu tempuh pesan (message) dari
sebuah simpul komunikasi ke simpul komunikasi lain (dalam
jaringan komputer), ongkos produksi, dll. Gambar 20
menunjukkan contoh graf berarah yang berbobot.
Graf 18
Lintasan Euler pada graf Gambar 21(d):
a,c,f,e,c,b,d,e,a,d,f,b,a
Gambar 21. (a) dan (b) Graf yang mempunyai lintasan Euler (graf semi-Euler)
(c) dan (d) Graf yang mempunyai sirkuit Euler (graf Euler)
(e) Graf yang tidak memiliki lintasan dan sirkuit Euler
Graf 19
Teorema: graf tidak berarah G adalah graf Euler (memiliki
sirkuit Euler) jika dan hanya jika setiap simpul berderajad
genap.
Dengan menggunakan teorema yang terakhir ini jelaslah
masalah jembatan Kőnigsberg tidak memiliki sirkuit Euler
karena semua simpul berderajad ganjil.
Untuk membuat graf G yang mempunyai lintasan Euler,
harus memenuhi kondisi :
1. Graf terhubung
2. Graf tidak memiliki simpul derajad ganjil sama sekali
atau memiliki dua buah simpul berderajad ganjil.
Gambar 22 merupakan graf G yang memenuhi kedua kondisi
tersebut (mempunyai lintasan Euler).
Untuk membuat graf G yang mempunyai sirkuit Euler, harus
memenuhi kondisi :
1. Graf terhubung
2. Semua simpul pada graf berderajad genap.
Graf 20
Teorema: Graf berarah G memiliki sirkuit Euler jika dan
hanya jika Gterhubung dan setiap simpul memiliki derajad-
masuk dan derajad-keluar sama. G memiliki lintasan Euler
jika dan hanya jika G terhubung dan setiap simpul memiliki
derajad-masuk dan derajad-keluar sama kecuali dua simpul,
yang pertama memiliki derajad-keluar satu lebih besar dari
derajad-masuk, dan yang kedua memiliki derajad-masuk
satu lebih besar dari derajad-keluar.
Contoh terapan sirkuit Euler adalah persoalan tukang pos.
Seorang tukang pos pekerjaannya mengantarkan surat. Oleh
karena itu, ia harus melalui semua jalan yang ada pada
daerah tertentu dan kembali ke tempat awal. Pada Gambar
23 slah satu sirkuit Euler yang dilalui oleh tukang pos adalah
A,
Graf 21
tertutup itu dinamakan sirkuit Hamilton. Jadi sirkuit Hamilton
adalah sirkuit yang melalui tiap simpul tepat satu kali,
kecuali simpul asal (sekaligus simpul akhir) yang dilalui dua
kali. Graf yang memiliki sirkuit Hamilton dinamakan graf
Hamilton, sedangkan graf yang hanya memiliki lintasan
Hamilton disebut graf semi-Hamilton (Gambar 24).
Graf 22
2. Graf berarah yang terhubung kuat adalah graf lengkap
dan graf Hamilton.
3. Syarat cukup (bukan syarat perlu) supaya graf sederhana
Gdengan n (≥ 3) buah simpul adalah graf Hamilton
adalah bila derajad tiap simpul paling sedikit n/2 (yaitu
d(v) ≥ n/2) untuk setiap simpul v digraf G).
4. Dalam graf lengkap G dengan n buah simpul (n ≥ 3),
terdapat (n-1)/2 buah sirkuit Hamilton.
5. Dalam graf lengkap G dengan n buah simpul (n ≥ 3 dan n
ganjil), terdapat (n-1)/2 buah sirkuit Hamilton yang saling
lepas (tidak ada sisi beririsan). Jika n genap dan n ≥ 4,
maka terdapat (n-2)/2 buah sirkuit Hamilton yang saling
lepas.
Catatan:
1. Setiap lintasan Hamilton pada graf dengan n buah simpul
terdiri dari n-1 buah sisi.
2. Setiap sirkuit Hamilton pada graf dengan n buah simpul
terdiri dari n buah sisi.
Graf 23
ketetanggaan G adalah matrik dua dimensi yang
berukuran n x n. Bila matriks tersebut dinamakan A,
maka:
A[i,j) = 1, jika simpul i bertetangga dengan simpul j.
A[i,j) = 0, jika simpul i tidak bertetangga dengan
simpul j.
Deklarasi :
const n = ........ {jumlah simpul graf G}
type graf = array[1..n, 1..n] of integer {atau
boolean}
A : graf
Graf 24
Untuk graf berbobot, A[i,j] berisi bobot tiap sisi yang
menghubungkan simpul i dengan simpul j. Matriks
ketetanggaan untuk graf berbobot pada Gambar 20.
1 2 3 4
1 ∞ 8 9 5
1
2 ∞ ∞ ∞
0
3 9 6 ∞ ∞
4 ∞ ∞ ∞ ∞
Tanda “∞” menyatakan bahwa tidak ada sisi dari simpul i ke
simpul j atau dari simpul i ke simpul i itu sendiri.
2. Senarai Ketetanggaan (adjacency list)
Dengan representasi ini, n baris matriks ketetanggaan
disajikan sebagai n buah senarai berkait. Elemen-elemen
pada senarai i menyatakan simpul-simpul yang bertetangga
dengan simpul i.
Deklarasi :
const n = ........ {jumlah simpul graf G}
type elemen_senarai = pointer to elemen
type elemen : <simpul: integer,
Lalu : elemen_senarai >
Kepala_senarai: array[1..n] of integer elemen_senarai
Graf 25
Gambar 25 (a) senarai ketetanggaan untuk graf pada Gambar 1(a)
(b) senarai ketetanggaan untuk graf pada Gambar 4
Selain dengan larik, alamat kepala senarai dapat juga
dinyatakan dalam senarai berkait (Gambar 26), dengan
deklarasi adalah:
Deklarasi :
const n = ........ {jumlah simpul graf G}
type elemen_senarai = pointer to elemen
type elemen : <simpul: integer,
Lalu1 : elemen_senarai>
type Kepala_senarai = pointer to kepala
type kepala : <awal : elemen_senarai,
Lalu2 : kepala_senarai>
Graf 26
Gambar 26. Variasi lain senarai ketetanggaan
untuk graf pada Gambar 2(a)
Graf 27
Gambar 27. Senarai ketetanggaan balikan
untuk graf berarah pada Gambar 4
3. Senarai Ortogonal
Representasi dengan senarai ortogonal sama seperti
representasi matriks jarang (sparse matrix). Dengan
representasi ini, terdapat senarai dummy-baris dan senarai
dummy-kolom. Elemen senarai dummy-baris menyimpan
alamat elemen pertama baris, sedangkan elemen senarai
dummy-kolom menyimpan alamat elemen pertama senarai
kolom.
Graf 28
Deklarasi :
const n = ........ {jumlah simpul graf}
type elemen_senarai = pointer to elemen
type elemen : <simpul_i: integer,
simpul_j: integer,
Lalu_kolom : elemen_senarai
Lalu_baris : elemen_senarai >
Senarai_ortogonal = elemen_senarai
Graf 29
menentukan apakah suatu graf terhubung atau tidak. Jika
graf tidak terhubung, berapa buah komponennya dan
sebagainya.
Terdapat dua macam skema penelusuran graf, yaitu:
1. Pencarian mendalam (depth first search - DFS)
2. Pencarian melebar (breadth first search – BFS)
Pencarian Mendalam (DFS)
Misalkan penelusuran dimulai dari simpul v, simpul
berikutnya yang dikunjungi adalah simpul w yang
bertetangga dengan simpul v, lalu pencarian mendalam
dimulai lagi secara rekursif dari simpul w. Ketika sampai
simpul u sedemikian sehingga semua simpul yang
bertetangga dengannya telah dikunjungi, pencarian dirunut-
balik ke simpul terakhir yang dikunjungi sebelumnya dan
mempunyai simpul w yang belum dikunjungi. Pencarian
mendalam dimulai lagi dari w. Pencarian berakhir bila tidak
ada lagi simpul yang belum dikunjungi yang dapat dicapai
dari simpul yang telah dikunjungi.
Sebagai contoh, misalnya graf yang dikunjungi adalah graf
G pada Gambar 29(a), bila kunjungan dimulai dari simpul 1.
Maka urutan simpul yang dikunjungi secara DFS adalah :
1, 2, 4, 8, 5, 6, 3, 7
Bila graf diubah sedikit menjagi graf pada Gambar 29(b),
maka urutan simpul yang dikunjungi (mulai dari simpul 1)
adalah :
1, 2, 3, 6, 8, 4, 5, 7
Graf 30
Gambar 29(a) graf G dan (b) Graf G setelah ditambah
sisi(2,3)
Graf 31