Anda di halaman 1dari 52

Catatan Kuliah (2 sks)

MX 324 Pengantar Teori Graf


(Draft Versi Desember 2008)
Oleh:
Didit Budi Nugroho, M.Si.
Program Studi Matematika
Fakultas Sains dan Matematika
Universitas Kristen Satya Wacana
DAFTAR ISI
DAFTAR GAMBAR ii
DAFTAR TABEL iii
KATA PENGANTAR iv
1 Denisi dan Konsep Fundamental 1
1.1 Denisi-denisi Dasar . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Operasi Graf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 Lintasan dan Lingkaran . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4 Lingkaran Hamilton dan Jalan Euler . . . . . . . . . . . . . . . . . . . . 9
1.5 Pohon dan Hutan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.6 Pohon dan Hutan Rentangan . . . . . . . . . . . . . . . . . . . . . . . . 12
1.7 Soal-soal untuk Bab 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2 Pohon Rentangan Minimal 17
2.1 Pengantar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2 Pohon Rentangan Minimal . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.3 Soal-soal untuk Bab 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3 Algoritma Pencarian 24
3.1 Pengantar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.2 Depth-First Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.3 Breadth-First Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.4 Masalah Lintasan Terpendek . . . . . . . . . . . . . . . . . . . . . . . . 29
3.5 Soal-soal untuk Bab 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4 Graf Berarah 33
4.1 Pengantar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.2 Jaringan dan Arus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.3 Teorema Max-Flow-Min-Cut . . . . . . . . . . . . . . . . . . . . . . . . 40
4.4 Soal-soal untuk Bab 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
DAFTAR PUSTAKA 47
i
DAFTAR GAMBAR
1.1 Graf dengan sisi ganda dan gelang. . . . . . . . . . . . . . . . . . . . . . 1
1.2 Dua graf yang isomork. . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 Suatu lintasan 1
6
di graf G. . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4 (a) Graf tidak terhubung G
1
; dan (b) graf terhubung G
2
. . . . . . . . . 9
1.5 (a) T
1
bukan pohon; (b) T
2
adalah pohon. . . . . . . . . . . . . . . . . . 10
1.6 Pohon-pohon yang tidak isomork sampai dengan enam titik. . . . . . . 10
1.7 Subpohon T
1
dan T
2
yang diperoleh dari T dengan menghapus satu sisi r. 12
1.8 (a) Graf tangga; (b) pohon rentangan; (c) hutan rentangan. . . . . . . . 13
2.1 Suatu graf terhubung berbobot dengan 6 titik dan 7 sisi. . . . . . . . . . 17
2.2 Suatu graf terhubung berbobot dengan 9 titik dan 16 sisi. . . . . . . . . 19
3.1 Suatu graf tidak terhubung dengan 7 titik dan 6 sisi. . . . . . . . . . . . 24
3.2 Suatu graf terhubung dengan 10 titik dan 11 sisi. . . . . . . . . . . . . . 26
3.3 Suatu graf berbobot dengan 8 titik dan 15 sisi. . . . . . . . . . . . . . . 30
4.1 Graf berarah dengan 5 titik. . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.2 Suatu graf berarah tanpa sisi ganda dan loop. . . . . . . . . . . . . . . . 35
4.3 Jaringan dengan sumber a dan target akhir .. . . . . . . . . . . . . . . . 38
ii
DAFTAR TABEL
1.1 Pembentukan pohon rentangan dari graf dalam Gambar 1.8(a) menggu-
nakan Algoritma Greedy. . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.1 Pembentukan pohon rentangan minimal dari graf dalam Gambar 2.2
menggunakan Algoritma Prim. . . . . . . . . . . . . . . . . . . . . . . . 19
2.2 Pembentukan pohon rentangan minimal dari graf dalam Gambar 2.2
menggunakan Algoritma Kruskal. . . . . . . . . . . . . . . . . . . . . . . 21
3.1 Pembentukan pohon berakar (T,
1
) dari graf dalam Gambar 3.2 berdasarkan
Algoritma Depth-First Search. . . . . . . . . . . . . . . . . . . . . . . . . 26
3.2 Pembentukan pohon berakar (T,
1
) dari graf dalam Gambar 3.2 berdasarkan
Algoritma Breadth-First Search. . . . . . . . . . . . . . . . . . . . . . . . 28
3.3 Pencarian lintasan terpendek dari titik n untuk graf dalam Gambar 3.3
berdasarkan Algoritma Lintasan Terpendek Dijkstra. . . . . . . . . . . . 31
iii
KATA PENGANTAR
Naskah ini ditulis selama satu semester ketika penulis mengajar Pengantar Teori Graf
di Program Studi Matematika dan Pendidikan Matematika, Universitas Kristen Satya
Wacana, Salatiga, pada Semester I tahun 2008-2009. Catatan ini membentuk naskah
dasar untuk kuliah MX 324 Pengantar Teori Graf.
Teori Graf adalah suatu bidang dari Matematika Diskrit yang mempelajari ben-
tuk (dinamakan graf) yang terdiri dari suatu himpunan titik-titik yang dihubungkan
oleh garis (dinamakan sisi). Teori Graf dan aplikasinya tidak hanya dijumpai dalam
cabang-cabang matematika, tetapi juga dalam disiplin-disiplin ilmiah seperti teknik,
ilmu komputer, riset operasi, dan manajemen sains.
Naskah ini difokuskan pada beberapa aplikasi dari teori graf dan menyajikan al-
goritma-algoritma graf yang biasanya digunakan untuk menyelesaikan masalah dalam
aplikasi. Keseluruhan dari naskah ini berkaitan dengan algoritma graf, seperti Algo-
ritma Greedy untuk pencarian pohon, Algoritma Prim dan Kruskal untuk pencarian
pohon rentangan minimal, Algoritma Dijkstra untuk masalah lintasan terpendek, dan
terakhir adalah Algoritma Ford-Fulkerson untuk mencari arus maksimum dari suatu
jaringan.
Salatiga, Desember 2008
Didit B. Nugroho
iv
Bab 1
Denisi dan Konsep Fundamental
Tujuan Pembelajaran:
Mengetahui sifat-sifat dasar dari teori graf.
Mengetahui operasi-operasi graf.
Mengetahui tentang jalan, trail, lintasan, lingkaran, pohon, dan hutan dalam suatu graf.
Mengetahui tentang lingkaran Hamilton dan jalan Euler.
Mengaplikasikan Algoritma Greedy untuk mencari pohon rentangan dari suatu graf.
1.1 Denisi-denisi Dasar
Di [7], denisi non-formal dari graf (graph) dalam kamus Webster (1913) diberikan
seperti berikut ini.
Denisi 1.1 Graf mempunyai dua pengertian:
1. Suatu kurva atau permukaan, letak (locus) dari suatu titik dimana koordinat-
koordinatnya merupakan variabel-variabel dalam persamaan letak.
2. Suatu diagram yang melambangkan suatu sistem keterhubungan berdasarkan titik
(spot), semua dapat saling dibedakan dan beberapa dihubungkan oleh garis sejenis.
Denisi non-formal dari graf pada poin 2 adalah pengertian yang digunakan dalam
naskah ini. Secara sederhana, suatu graf merupakan suatu koleksi titik-titik (vertices),
bersama-sama dengan beberapa sisi (edges) yang menghubungkan beberapa titik terse-
but.
Gambar 1.1: Graf dengan sisi ganda dan gelang.
Sebagai contoh, graf G dalam Gambar 1.1 mempunyai titik-titik
1
,
2
,
3
,
4
,
5
,
sedangkan sisi-sisinya dinyatakan oleh c
1
=
1
,
2
, c
2
=
2
,
3
, c
3
=
3
,
4
,
1
Bab 1. Denisi dan Konsep Fundamental 2
c
4
=
1
,
4
, c
5
=
1
,
4
, c
6
=
4
,
5
, c
7
=
5
,
5
. Secara khusus, sembarang
sisi dapat dinyatakan sebagai 2-himpunan bagian dari himpunan semua titik; dengan
kata lain, suatu himpunan bagian yang terdiri dari anggota (tidak perlu berbeda)
dari himpunan semua titik. Secara formal, graf G pada himpunan \ dan 1 dapat
didenisikan seperti berikut ini.
Denisi 1.2 (formal) Suatu graf G adalah pasangan himpunan \ dan 1, dituliskan
G = (\, 1), dimana \ adalah suatu himpunan berhingga dan 1 adalah koleksi dari
2-himpunan bagian dari \ .
Anggota-anggota \ dikenal sebagai titik dan anggota-anggota dari 1 dikenal seba-
gai sisi. Jadi, dalam contoh sebelumnya dipunyai \ = \ (G) =
1
,
2
,
3
,
4
,
5
dan
1 = 1 (G) = c
1
, c
2
, c
3
, c
4
, c
5
, c
6
, c
7
. Banyaknya titik dalam graf dinamakan order
dan dituliskan sebagai [\ [, sedangkan banyaknya sisi dituliskan sebagai [1[. Suatu graf
berorder 0 dinamakan graf kosong (empty graph), dan yang berorder 1 dinamakan graf
trivial.
Denisi 1.3 Graf G
1
= (\
1
, 1
1
) adalah suatu subgraf dari G
2
= (\
2
, 1
2
) jika \
1
_ \
2
dan 1
1
_ 1
2
.
Graf berikut ini:
mempunyai subgraf antara lain
Diperhatikan kembali graf G dalam Gambar 1.1. Sisi-sisi yang mempunyai titik-
titik ujung sama, c
4
dan c
5
dinamakan sisi ganda (parallel edges atau multiple edges).
Jika suatu sisi menghubungkan titik yang sama, sisi tersebut dinamakan gelang (loop),
seperti c
7
.
Denisi 1.4 Suatu graf yang mempunyai sisi ganda dan atau gelang dinamakan multi-
graf.
Suatu graf yang tidak mempunyai sisi ganda dan gelang disebut graf sederhana
(simple graph).
Denisi 1.5 Dua titik r, j \ dikatakan bertetangga (adjacent) jika r, j 1,
dengan kata lain, jika r dan j dihubungkan oleh suatu sisi.
Bab 1. Denisi dan Konsep Fundamental 3
Denisi 1.6 Dua sisi, misalnya c
1
dan c
2
, dikatakan bertetangga jika keduanya
mempunyai suatu titik ujung yang sama, misalnya ., artinya c
1
= n, . dan c
2
=
, ..
Denisi 1.7 Untuk sembarang sisi c = r, j, sisi c dikatakan bersisian (incidency)
dengan titik r dan j. Bisa juga dikatakan bahwa titik r dan j bersisian dengan c.
Sebagai contoh, pada graf G dalam Gambar 1.1,
3
dan
2
bertetangga karena
dihubungkan oleh sisi c
2
, sedangkan
2
dan
4
tidak bertetangga karena tidak ada sisi

2
,
4
. Sisi c
2
bertetangga dengan sisi c
3
karena keduanya mempunyai titik
3
sebagai
ujung yang sama. Jika semua titik pada graf G adalah bertetangga, maka G dinamakan
graf lengkap. Suatu graf lengkap dengan : titik dituliskan sebagai 1
n
. Lima graf
lengkap pertama diberikan seperti berikut:
Denisi 1.8 Diambil G = (\, 1) adalah suatu multigraf dengan himpunan titik \ =

1
,
2
, ...,
n
dan himpunan sisi 1 = c
1
, c
2
, ..., c
p
. Matriks ketetanggaan
(adjacency matrix) dari G adalah suatu matriks /(G) = [a
ij
] berukuran : : dimana
masukan-(i, ,) diberikan oleh
a
ij
= banyaknya sisi yang menghubungkan
i
dan
j
;
dan matriks kebersisian (incidence matrix) dari G adalah suatu matriks o (G) = [:
ij
]
berukuran : j dimana masukan-(i, ,) diberikan oleh
:
ij
=

1 jika
i
bersisian dengan c
j
0 jika
i
tidak bersisian dengan c
j
.
Dicatat bahwa matriks /(G) adalah simetris, artinya /
t
= /.
Sebagai contoh, multigraf
Bab 1. Denisi dan Konsep Fundamental 4
dapat dinyatakan oleh matriks ketetanggaan dan matriks kebersisian berturut-turut:
/ =
2
6
6
6
6
4
0 2 1 0 0
2 1 0 1 0
1 0 3 0 0
0 1 0 0 0
0 0 0 0 0
3
7
7
7
7
5
, o =
2
6
6
6
6
4
1 1 0 1 0 0 0
1 1 1 0 0 0 0
0 0 0 1 1 1 1
0 0 1 0 0 0 0
0 0 0 0 0 0 0
3
7
7
7
7
5
Denisi 1.9 Derajat (degree atau valency) dari suatu titik , dituliskan c(), adalah
banyaknya sisi yang bersisian dengan titik .
Secara khusus, titik berderajat nol dikatakan terasing (isolated) dan titik berder-
ajat 1 dinamakan titik pendant. Dicatat bahwa dalam Denisi 1.9 setiap gelang pada
suatu titik berkontribusi 2 untuk c(). Sebagai contoh, pada graf dalam Gambar 1.1
dipunyai c (
3
) = 2, c (
4
) = 4, c (
5
) = 3, dan seterusnya.
Teorema 1.10 Jumlah dari semua derajat titik pada sembarang graf G = (\, 1) adalah
dua kali banyaknya sisi, artinya
X
v2V
c () = 2 [1[
dengan [1[ menyatakan banyaknya sisi.
Bukti. Hasil secara langsung mengikuti seperti berikut ini. Jika kita menjumlahkan
semua derajat titik dalam G, kita menghitung setiap sisi tepat dua kali: sekali dari
setiap ujung-ujungnya.
Akibat 1.11 Jumlah dari semua derajat titik pada sembarang graf adalah bilangan
bulat positif genap.
Bukti. Jelas.
Akibat 1.12 Banyaknya titik berderajat ganjil dalam suatu graf adalah genap.
Bukti. Diambil \
e
dan \
o
yang berturut-turut menyatakan koleksi titik-titik berdera-
jat genap dan ganjil untuk graf G. Berdasarkan Teorema 1.10 diperoleh
X
v2V
e
c () +
X
v2V
o
c () = 2 [1[ .
Untuk setiap \
e
, derajat c () adalah genap. Akibatnya
X
v2V
e
c () adalah genap.
Karena c () ganjil untuk setiap \
0
, maka [\
0
[ haruslah genap.
Sekarang diperhatikan dua graf dalam Gambar 1.2. Kedua graf tersebut pada
dasarnya adalah sama. Untuk menerima hal ini diberikan pengertian isomork (iso-
morphic) dari dua graf seperti berikut ini.
Bab 1. Denisi dan Konsep Fundamental 5
Gambar 1.2: Dua graf yang isomork.
Denisi 1.13 Dua graf G
1
= (\
1
, 1
1
) dan G
2
= (\
2
, 1
2
) dikatakan isomork, di-
tuliskan G
1
G
2
, jika terdapat suatu fungsi bijektif (1-1 dan pada) c : \
1
\
2
sedemikian sehingga untuk setiap n, \
1
berlaku n, 1
1
jika dan hanya jika
c(n) , c() 1
2
. Suatu fungsi c yang demikian dinamakan suatu isomorsma
(isomorphism).
Secara cepat, dua graf dalam Gambar 1.2 adalah isomork, dan suatu isomorsma
c diberikan oleh
c(a) =
2
, c(/) =
1
, c(c) =
3
, c(d) =
4
. (1.1)
Ini bisa ditunjukkan seperti berikut. Diambil fungsi c yang didenisikan oleh (1.1). Di
G
1
dipunyai himpunan sisi
1
1
= a, / , a, c , a, d , /, d , c, d ,
sehingga menggunakan fungsi c diperoleh sisi-sisi
c(a) , c(/) =
2
,
1
, c(a) , c(c) =
2
,
3
, c(a) , c(d) =
2
,
4
,
c(/) , c(d) =
1
,
4
, c(c) , c(d) =
3
,
4
.
Karena gabungan dari semua sisi yang diperoleh melalui c sama dengan himpunan
sisi 1
2
di G
2
, maka disimpulkan bahwa fungsi c yang didenisikan oleh (1.1) adalah
isomorsma dari G
1
ke G
2
.
1.2 Operasi Graf
Denisi 1.14 Komplemen (complement) dari suatu graf sederhana G = (\, 1) adalah
graf sederhana G =

\, 1

dimana sisi-sisi di 1 secara tepat adalah sisi-sisi yang tidak


ada di G.
Sebagai contoh, diberikan suatu graf dengan komplemennya seperti berikut:
Bab 1. Denisi dan Konsep Fundamental 6
Denisi 1.15 Diberikan graf-graf sederhana G
1
= (\
1
, 1
1
) dan G
2
= (\
2
, 1
2
) dimana
\
2
_ \
1
.
1. Jumlahan kedua graf adalah G
1
+G
2
= (\
1
' \
2
, 1
1
' 1
2
' 1) dimana 1 adalah
himpunan sisi-sisi baru yang menghubungkan setiap titik di G
1
dengan setiap titik
di G
2
.
2. Jika \
2
_ \
1
, didenisikan suatu graf beda (dierence graph) G
1
G
2
= (\
1
, 1
3
)
(graf sederhana) dimana 1
3
adalah himpunan sisi-sisi dari G
1
yang tidak ada di
G
2
.
Contoh dari selisih dan jumlahan dua graf diberikan seperti berikut:
Terdapat beberapa operasi biner antara dua graf sederhana G
1
= (\
1
, 1
1
) dan
G
2
= (\
2
, 1
2
) :
(i) Gabungan: G
1
' G
2
= (\
1
' \
2
, 1
1
' \
2
) (graf sederhana).
(ii) Irisan: G
1
G
2
= (\
1
\
2
, 1
1
\
2
) (graf sederhana).
(iii) Jumlahan ring: G
1
G
2
adalah subgraf dari G
1
' G
2
dimana himpunan sisinya
1
1
1
2
= (1
1
1
2
) ' (1
2
1
1
)
dan himpunan titiknya terdiri dari setiap titik-titik ujung dari sisi-sisi di 1
1
1
2
.
Untuk graf-graf
Bab 1. Denisi dan Konsep Fundamental 7
dipunyai
Dicatat bahwa untuk suatu bilangan asli : dan sembarang graf G dipunyai :G =
G' G' ' G
| {z }
n kali
.
1.3 Lintasan dan Lingkaran
Diambil G = (\, 1) sebagai suatu graf dengan himpunan \ =
1
,
2
, ... dan 1 =
c
1
, c
2
, ....
Denisi 1.16 Suatu jalan (walk) dalam graf G adalah suatu barisan bergantian (titik
dan sisi) tak kosong berhingga

0
, c
1
,
1
, ...,
k1
, c
k
,
k
sedemikian sehingga c
i
=
i1
,
i
1, untuk setiap i = 1, ..., /. Secara khusus,
apabila graf G adalah sederhana, jalan dapat dinyatakan sebagai suatu barisan titik-
titik

0
,
1
, ...,
k1
,
k
sedemikian sehingga
i1
,
i
1, untuk setiap i = 1, ..., /.
Dicatat bahwa suatu jalan bisa melalui sembarang titik atau sisi lebih dari satu
kali. Jika
0
=
k
, maka jalan dikatakan tertutup, jika tidak dikatakan terbuka. Untuk
graf dalam Gambar 1.1, barisan
3
, c
3
,
4
, c
4
,
1
, c
4
,
4
, c
5
,
1
, c
4
,
4
, c
6
,
5
adalah
jalan terbuka dan barisan
3
, c
2
,
2
, c
1
,
1
, c
5
,
4
, c
4
,
1
, c
5
,
4
, c
3
,
3
adalah jalan
tertutup.
Denisi 1.17 Suatu jalan adalah trail jika semua sisi-sisinya berbeda.
Suatu trail adalah tertutup jika titik-titik ujungnya sama, jika tidak maka dikatakan
terbuka. Sebagai contoh, pada graf dalam Gambar 1.1 jalan
2
, c
2
,
3
, c
3
,
4
, c
4
,
1
,
c
5
,
4
, c
6
,
5
adalah suatu trail meskipun titik
4
muncul dua kali.
Denisi 1.18 Suatu lintasan (path) adalah suatu trail dengan semua titiknya berbeda.
Denisi 1.19 Banyaknya sisi dalam lintasan dinamakan panjang lintasan.
Lintasan dengan panjang : dinotasikan dengan 1
n
. Suatu contoh untuk lintasan
diberikan dalam Gambar 1.3, dan ini dapat dituliskan sebagai 1
6
=
1
,
4
,
3
,
5
,
6
,
7
,
8
.
Bab 1. Denisi dan Konsep Fundamental 8
Gambar 1.3: Suatu lintasan 1
6
di graf G.
Denisi 1.20 Lingkaran (cycle) adalah suatu trail tertutup dengan semua titik-titik-
nya, kecuali titik-titik ujung, berbeda.
Lingkaran dinyatakan oleh barisan berputar titik-titik seperti C =
0
,
1
, ...,
k
,
0
.
Panjang suatu lingkaran adalah banyaknya sisi atau titik. Lingkaran dengan panjang
: dinotasikan dengan C
n
. Tiga lingkaran pertama diberikan seperti berikut:
Denisi 1.21 Jarak antara dua titik n dan di graf G, dinotasikan dengan d (n, ),
adalah panjang dari lintasan terpendek antara kedua titik tersebut.
Denisi 1.22 Diameter dari graf G, dinotasikan dia:(G), adalah lintasan terpan-
jang antara sembarang dua titik di G.
Pada graf G dalam Gambar 1.3, jarak antara titik
1
dan
5
adalah 2 karena lintasan
terpendeknya
1
,
4
,
5
atau
1
,
6
,
5
. Untuk diameter dari graf G yaitu dia:(G) = 7
yang bisa diperoleh dari lintasan terpanjang
1
,
4
,
2
,
3
,
5
,
6
,
7
,
8
.
Berdasarkan bahasan di atas, sifat-sifat dari lintasan dan lingkaran:
1. dalam lintasan, derajat dari setiap titik adalah 2, kecuali untuk titik-titik ujung
yang berderajat 1,
2. dalam lingkaran, derajat dari setiap titik adalah 2,
3. banyak sisi pada lintasan adalah kurang satu dari banyaknya titik, sedangkan
banyak sisi pada lingkaran sama dengan banyak titik.
Denisi 1.23 Dua titik n dan dalam graf G dikatakan terhubung jika terdapat
suatu lintasan dari n ke .
Denisi 1.24 Suatu graf tak kosong adalah terhubung jika sembarang dua titiknya
dihubungkan oleh suatu lintasan.
Bab 1. Denisi dan Konsep Fundamental 9
Gambar 1.4: (a) Graf tidak terhubung G
1
; dan (b) graf terhubung G
2
.
Dalam Gambar 1.4, graf G
1
adalah tidak terhubung karena terdapat dua titik (mi-
salnya
1
dan
7
) yang tidak dihubungkan oleh suatu lintasan. Dalam kasus ini graf
G
1
dikatakan mempunyai dua komponen, karena dapat dinyatakan
1. \ = \
1
' \
2
dimana \
1
\
2
= ? ; dan
2. 1 = 1
1
' 1
2
dimana 1
1
1
2
= ?;
untuk \
1
=
1
,
2
,
3
,
4
dan \
2
=
5
,
6
,
7
.
1.4 Lingkaran Hamilton dan Jalan Euler
Pada suatu waktu, matematikawan Hamilton dan Euler pergi berlibur. Mereka me-
ngunjungi negara dengan 7 kota (titik) yang dihubungkan oleh suatu sistem jalan (sisi)
yang digambarkan oleh graf di bawah ini.
Hamilton hanya ingin mengunjungi setiap kota sekali dan kembali ke kota awal dia
berangkat. Berbeda dengan Hamilton, Euler tertarik dalam hal melewati setiap jalan
tepat sekali dan tidak memikirkan apakah akhir perjalanannya pada kota yang berbeda
atau tidak dari kota awal dia berangkat.
Denisi 1.25 Suatu lingkaran Hamilton dalam suatu graf G = (\, 1) adalah suatu
lingkaran yang memuat semua titik di \ .
Denisi 1.26 Suatu jalan Euler dalam suatu graf G = (\, 1) adalah suatu jalan
yang menggunakan setiap sisi di 1 tepat satu kali.
Bisa diperiksa bahwa graf di atas mempunyai lingkaran Hamilton, misalnya
1
,
2
,

3
,
6
,
7
,
5
,
4
,
1
. Lebih lanjut jalan Euler tidak ditemukan pada graf tersebut.
Bab 1. Denisi dan Konsep Fundamental 10
Berikut ini diberikan teorema (tanpa bukti) untuk menentukan apakah suatu graf
mempunyai lingkaran Hamilton atau jalan Euler.
Teorema 1.27 (Dirac 1952) Setiap graf G = (\, 1) dengan titik : _ 3 dan c (G) =
minc () : \ _
:
2
mempunyai lingkaran Hamilton.
Teorema 1.28 Suatu graf terhubung adalah Euler jika dan hanya jika setiap titik
mempunyai derajat genap.
Akibat 1.29 Suatu graf terhubung adalah Euler jika dan hanya jika setiap titik mem-
punyai derajat genap atau terdapat tepat dua titik berderajat ganjil.
1.5 Pohon dan Hutan
Denisi 1.30 Suatu graf T = (\, 1) dinamakan pohon jika memenuhi kondisi berikut:
1. T adalah terhubung; dan
2. T tidak mempunyai lingkaran.
Gambar 1.5: (a) T
1
bukan pohon; (b) T
2
adalah pohon.
Dalam Gambar 1.5, graf T
1
bukan pohon karena terdapat lingkaran C
3
=
3
,
4
,
5
,
sedangkan T
2
adalah pohon berdasarkan Denisi 1.30. Lebih lanjut, pohon-pohon yang
tidak isomork sampai dengan enam titik diberikan dalam Gambar 1.6.
Gambar 1.6: Pohon-pohon yang tidak isomork sampai dengan enam titik.
Bab 1. Denisi dan Konsep Fundamental 11
Dua sifat sederhana berikut ini diperoleh berdasarkan denisi yang sudah diberikan.
Teorema 1.31 Jika graf T = (\, 1) adalah pohon dengan minimal dua titik, maka
untuk setiap pasang titik berbeda r, j \ terdapat lintasan tunggal dari r ke j.
Bukti. Diandaikan terdapat dua lintasan berbeda dari r ke j:
r =
0
,
1
,
2
, ...,
r
= j, dan
r = n
0
, n
1
, n
2
, ..., n
s
= j,
maka terdapat i N sehingga

0
= n
0
,
1
= n
1
, ...,
i
= n
i
, tapi
i+1
,= n
i+1
.
Sekarang diperhatikan titik-titik
i+1
,
i+2
, ...,
r
. Karena kedua lintasan berakhir di
j, maka terdapat nilai terkecil , i + 1, i + 2, ..., r sedemikian sehingga
j
= n
l
untuk suatu | i + 1, i + 2, ..., :.
Jadi dua lintasan tersebut memberikan suatu lingkaran

i
,
i+1
, ...,
j1
, n
l
, n
l1
, ..., n
i+1
,
i
yang kontradiksi dengan hipotesis bahwa T adalah pohon.
Teorema 1.32 Jika T = (\, 1) adalah suatu pohon dengan : titik, maka pohon mem-
punyai : 1 sisi.
Bukti. Digunakan induksi pada banyaknya titik dari T = (\, 1).
(i) Jelas bahwa hasil adalah benar untuk [\ [ = 1.
(ii) Diandaikan bahwa hasil benar untuk [\ [ _ /. Diambil T = (\, 1) dengan
[\ [ = / + 1. Jika satu sisi dari T dihapus, maka graf mempunyai dua komponen:
T
1
= (\
1
, 1
1
) dan T
2
= (\
2
, 1
2
) .
Jelas bahwa [\
1
[ _ / dan [\
2
[ _ /, sehingga dari hipotesis induksi diperoleh
[1
1
[ = [\
1
[ 1 dan [1
2
[ = [\
2
[ 1.
Dicatat bahwa [\ [ = [\
1
[ +[\
2
[ dan [1[ = [1
1
[ +[1
2
[ +1. Karena itu [1[ = [\ [ 1.
Bab 1. Denisi dan Konsep Fundamental 12
Gambar 1.7: Subpohon T
1
dan T
2
yang diperoleh dari T dengan menghapus satu sisi r.
Denisi 1.33 Suatu hutan (forest) 1 = T
1
, ..., T
N
adalah suatu himpunan dari
pohon-pohon T
k
= (\
k
, 1
k
) dimana
N
\
k=1
\
k
= ?, atau dengan kata lain komponen dari
1 adalah pohon.
Sebagai contoh, empat pohon berikut ini bersama-sama akan membentuk hutan.
1.6 Pohon dan Hutan Rentangan
Denisi 1.34 Diberikan graf terhubung G = \ (\, 1).
1. Pohon rentangan (spanning tree) dari graf G adalah suatu pohon dari G yang
memuat semua titik di G.
2. Hutan rentangan (spanning forest) dari graf G adalah suatu hutan dari G yang
memuat semua titik di G.
Diperhatikan graf yang dinyatakan oleh Gambar 1.8. Setiap graf di bagian (b) dan
(c) berturut-turut menyatakan suatu pohon dan hutan rentangan dari graf di bagian
(a). Dari contoh ini jelas bahwa pohon dan hutan rentangan dari suatu graf belum
tentu tunggal.
Teorema 1.35 Jika graf terhubung G = (\, 1) memenuhi [1[ = [\ [ 1, maka graf G
adalah pohon.
Bukti. Diambil G adalah sembarang pohon terhubung dengan : titik dan : 1 sisi.
Dimisalkan G
0
adalah suatu pohon rentangan dalam G, maka G
0
juga mempunyai :
titik dan : 1 sisi. Karena itu G
0
= G.
Pertanyaan yang lazim adalah bagaimana kita bisa mendapatkan suatu pohon
rentangan untuk sembarang graf terhubung. Untuk melakukan ini, diaplikasikan Algo-
ritma Greedy seperti di bawah ini. Algoritma Greedy membangun suatu penyelesaian
Bab 1. Denisi dan Konsep Fundamental 13
Gambar 1.8: (a) Graf tangga; (b) pohon rentangan; (c) hutan rentangan.
sebagian demi sebagian dan selalu memilih bagian berikutnya yang memberikan man-
faat segera dan paling jelas [3].
Algoritma Greedy untuk pohon rentangan.
Input: Graf terhubung G = (\, 1) dimana [\ [ = :.
Output: Pohon rentangan T dari G.
(1) Diambil sembarang titik n di \ (G) dan dimasukkan n ke \ (T).
(2) Dibentuk \ (G) \ (T). Dipilih suatu titik j \ (G) \ (T) dan j bertetangga
dengan suatu titik r \ (T). Selanjutnya dimasukkan sisi r, j ke 1 (T).
(3) Diulangi langkah (2) sebanyak (: 2) kali sampai semua titik di \ (G) termuat
dalam pohon.
Sebagai contoh, Tabel 1.1 menyajikan penyelesaian pohon rentangan dari graf dalam
Gambar 1.8(a) menggunakan Algoritma Greedy. Jadi, diperoleh suatu pohon rentangan
dari graf dalam Gambar 1.8(a) seperti berikut ini.
Bab 1. Denisi dan Konsep Fundamental 14
Tabel 1.1: Pembentukan pohon rentangan dari graf dalam Gambar 1.8(a) menggunakan
Algoritma Greedy.
sisi yang ditam-
Langkah \ (G) \ (T) j \ (T) bahkan pada T
1 n =
5

5

2
1
,
2
,
3
,
4
,
6

4

5
,
4

5
,
4

3
1
,
2
,
3
,
6

6

5
,
4
,
6

5
,
6

4
1
,
2
,
3

2

5
,
4
,
6
,
2

5
,
2

5
1
,
3

1

5
,
4
,
6
,
2
,
1

4
,
1

6
3

3

5
,
4
,
6
,
2
,
1
,
3

6
,
3

Proposisi 1.36 Algoritma Greedy selalu bisa mengkonstruksi suatu pohon rentangan.
Bukti. Perlu ditunjukkan bahwa di sembarang tingkat, suatu titik baru di \ selalu
dapat dihubungkan ke pohon parsial menggunakan suatu sisi di 1. Untuk melihat ini,
diambil o yang menyatakan himpunan titik-titik dalam pohon parsial di sembarang
tingkat. Diasumsikan bahwa o ,= ? agar selalu bisa dipilih suatu titik awal. Diandaikan
bahwa o ,= \ . Dibuktikan sebaliknya bahwa suatu titik tambahan di \ tidak bisa
dihubungkan ke pohon parsial. Karena itu tidak ada sisi di 1 mempunyai satu titik
di o dan titik lainnya di \ o. Akibatnya tidak ada lintasan dari sembarang titik di
o ke sembarang titik di \ o, yang berarti G tidak terhubung. Ini kontradiksi dengan
kenyataan bahwa G adalah terhubung.
1.7 Soal-soal untuk Bab 1
1. Gambarkan suatu graf yang dinyatakan oleh matriks ketetanggaan berikut ini.
2
6
6
6
6
6
6
6
6
6
6
6
6
6
6
4
0 0 0 0 0 1 0 0 1 1
0 0 1 0 0 0 1 0 0 0
0 1 0 0 1 0 1 0 0 0
0 0 0 0 0 0 0 1 0 0
0 0 1 0 0 0 1 0 0 0
1 0 0 0 0 0 0 0 1 1
0 1 1 0 1 0 0 0 0 0
0 0 0 1 0 0 0 0 0 0
1 0 0 0 0 1 0 0 0 0
1 0 0 0 0 1 0 0 0 0
3
7
7
7
7
7
7
7
7
7
7
7
7
7
7
5
2. Gambarkan suatu graf sederhana dengan 6 titik dan 10 sisi.
3. Konstruksi suatu graf dengan 5 titik dan 6 sisi yang tidak memuat lingkaran C
3
.
4. Berapa banyak sisi dari graf lengkap 1
n
? Berikan penjelasan.
5. Untuk setiap daftar berikut ini, tentukan apakah mungkin bahwa daftar tersebut
menyatakan derajat-derajat dari semua titik dari suatu graf sederhana. Jika ya,
gambarkan graf tersebut. Jika tidak, berikan penjelasan.
Bab 1. Denisi dan Konsep Fundamental 15
(a) 2, 2, 2, 3 (b) 2, 2, 4, 4, 4 (c) 1, 2, 2, 3, 4 (d) 1, 2, 3, 4
(e) 5, 2, 3, 2, 4 (f) 4, 4, 3, 2, 3 (g) 3, 3, 2, 3, 2 (h) 4, 4, 1, 3, 2
6. Tentukan 11 graf (sederhana) berbeda dengan 4 titik?
7. Tentukan semua graf (sederhana) berbeda dengan 5 titik dan 2 sisi? Bagaimana
dengan 3 sisi? Berapa banyak sisi maksimum pada suatu graf sederhana dengan
5 titik yang dapat dibuat?
8. Buktikan bahwa pasangan graf berikut ini adalah isomork.
9. Periksa apakah pasangan graf di bawah isomork? Jika ya, tentukan isomors-
manya.
10. Berapa banyak sisi yang dipunyai oleh komplemen dari suatu graf dengan : titik
dan : sisi?
11. Untuk setiap operasi graf di bawah ini, gambarkan graf dari hasil operasinya.
(a) 1
4
1
2
(b) C
5
+1
1
(c) 51
1
+1
2
(d) 1
3
' 1
1
(e) 1
3
' 1
1
(f) (1
3
' 1
1
) 1
3
' 1
1
(g) 1
4
' 21
2
(h) 1
4
' 21
2
(i) (1
4
' 21
2
) 1
4
' 21
2
12. Tentukan rumus untuk diameter dari graf 1
n
.
13. Untuk nilai : N yang mana sedemikian sehingga graf lengkap 1
n
mempunyai
suatu jalan Euler?
14. Berapa banyak pohon rentangan dari graf C
n
?
15. Tentukan banyaknya pohon rentangan dari setiap graf roda (wheel ) berikut ini.
Bab 1. Denisi dan Konsep Fundamental 16
16. Apakah pada graf 1
5
dan \
5
terdapat lingkaran Hamilton atau jalan Euler?
17. Pada graf 1
5
, tentukan suatu lingkaran Hamilton yang juga merupakan jalan
Euler.
18. Periksa apakah ada lingkaran Hamilton atau jalan Euler dalam graf yang dinya-
takan oleh matriks ketetanggaan berikut ini.
2
6
6
6
6
6
6
6
6
6
6
6
6
4
0 1 0 1 0 1 0 1 0
1 0 1 0 0 0 1 0 1
0 1 0 1 0 0 0 1 0
1 0 1 0 1 0 0 0 1
0 0 0 1 0 1 0 0 0
1 0 0 0 1 0 1 0 1
0 1 0 0 0 1 0 1 0
1 0 1 0 0 0 1 0 1
0 1 0 1 0 1 0 1 0
3
7
7
7
7
7
7
7
7
7
7
7
7
5
19. Gambarkan semua pohon dengan tujuh titik yang tidak isomors.
20. Aplikasikan Algoritma Greedy untuk mencari suatu pohon rentangan dari graf
terhubung berikut ini.
Bab 2
Pohon Rentangan Minimal
Tujuan Pembelajaran:
Mengetahui tentang graf berbobot.
Mengetahui tentang pohon rentangan minimal.
Mengetahui aplikasi-aplikasi dari pohon.
Mengaplikasikan Algoritma Prim dan Kruskal untuk pencarian pohon rentangan minimal.
2.1 Pengantar
Pada bab ini akan diperhatikan masalah pohon rentangan ketika sisi-sisi dari suatu graf
terhubung mempunyai bobot.
Denisi 2.1 Diandaikan bahwa G = (\, 1) adalah suatu graf. Sembarang fungsi
bertipe n : 1 N dinamakan fungsi bobot. Graf G, bersama-sama dengan fungsi
n : 1 N, dinamakan graf berbobot (weighted graph).
Gambar 2.1: Suatu graf terhubung berbobot dengan 6 titik dan 7 sisi.
Sebagai contoh, diperhatikan graf berbobot dalam Gambar 2.1. Graf mempunyai
fungsi bobot n : 1 N, dimana
1 =
1
,
2
,
1
,
4
,
2
,
3
,
2
,
5
,
3
,
6
,
4
,
5
,
5
,
6

dan
n(
1
,
2
) = 3, n(
1
,
4
) = 2, n(
2
,
3
) = 5, n(
2
,
5
) = 1,
n(
3
,
6
) = 4, n(
4
,
5
) = 6, n(
5
,
6
) = 7.
17
Bab 2. Pohon Rentangan Minimal 18
Denisi 2.2 Diandaikan bahwa G = (\, 1), bersama-sama dengan fungsi n : 1 N,
membentuk suatu graf berbobot. Lebih lanjut diandaikan bahwa G adalah terhubung dan
T adalah suatu pohon rentangan dari G. Nilai
n(T) =
X
e2T
n(c) ,
jumlahan bobot dari sisi-sisi di T, dinamakan bobot dari pohon rentangan T.
2.2 Pohon Rentangan Minimal
Secara jelas, untuk sembarang pohon rentangan T dari G dipunyai n(T) N. Jelas
juga bahwa hanya terdapat berhingga pohon rentangan T dari G. Karena itu pasti
ada satu pohon rentangan T dimana nilai n(T) adalah terkecil diantara semua pohon
rentangan dari G.
Denisi 2.3 Diandaikan bahwa G = (\, 1) adalah terhubung dan bersama-sama de-
ngan fungsi n : 1 N membentuk suatu graf berbobot. Suatu pohon rentangan T dari
G, untuk yang mana bobot n(T) adalah terkecil diantara semua pohon rentangan dari
G, dinamakan suatu pohon rentangan minimal (minimal spanning tree) dari G.
Dicatat bahwa pohon rentangan minimal dari suatu graf terhubung berbobot mung-
kin tidak tunggal. Diperhatikan, sebagai contoh, suatu graf terhubung dimana semua
sisinya mempunyai bobot sama, maka jelas bahwa setiap pohon rentangan adalah mi-
nimal.
Sekarang pertanyaannya adalah bagaimana membangun suatu pohon rentangan
minimal dari sembarang graf terhubung berbobot. Jawaban diperoleh dengan memo-
dikasi Algoritma Greedy di Subbab 1.6. Dalam hal ini ada dua algoritma, yaitu
Algoritma Prim dan Algoritma Kruskal.
Menurut [12], Algoritma Prim ditemukan pada tahun 1930 oleh matematikawan
Vojtech Jarnk (1887 1970) dan kemudian secara terpisah oleh ilmuwan komputer
Robert C. Prim pada tahun 1957 dan ditemukan kembali oleh Dijkstra pada tahun
1959. Karena itu algoritma ini sering dinamakan Algoritma DJP atau Algoritma Jarnk.
Algoritma Prim membentuk suatu pohon rentangan minimal dengan cara mengambil
satu sisi pada setiap langkah pembentukan. Ketentuannya adalah bahwa satu sisi
yang diambil harus bersisian dengan suatu titik di pohon pada langkah sebelumnya,
memiliki bobot minimal, dan tidak membentuk lingkaran di pohon. Berikut ini adalah
algoritmanya.
Algoritma Prim untuk suatu pohon rentangan minimal.
Input: Graf terhubung G = (\, 1) dengan [\ [ = :, dan dilengkapi fungsi bobot
n : 1 N.
Output: Pohon rentangan minimal T dari G.
(1) Dibuat T dengan mengambil satu sisi di 1 (G) yang berbobot mimimal.
(2) Dipilih satu sisi n, 1 (G) 1 (T) yang bersisian dengan suatu titik di 1 (T),
memiliki bobot minimal, dan tidak membentuk lingkaran di T. Selanjutnya di-
masukkan n, ke dalam 1 (T).
Bab 2. Pohon Rentangan Minimal 19
(3) Diulangi langkah (2) sebanyak (: 3) kali sampai semua titik di \ (G) termuat
dalam pohon.
Gambar 2.2: Suatu graf terhubung berbobot dengan 9 titik dan 16 sisi.
Tabel 2.1: Pembentukan pohon rentangan minimal dari graf dalam Gambar 2.2 menggu-
nakan Algoritma Prim.
Sisi n, yang Bobot
Langkah ditambahkan pada 1 (T) n(n, ) \ (T)
1
1
,
2
1
1
,
2

2
1
,
4
1
1
,
2
,
4

3
2
,
3
1
1
,
2
,
3
,
4

4
3
,
5
1
1
,
2
,
3
,
4
,
5

5
5
,
7
1
1
,
2
,
3
,
4
,
5
,
7

6
7
,
8
1
1
,
2
,
3
,
4
,
5
,
7
,
8

7
8
,
6
1
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8

8
6
,
9
2
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9

Sebagai contoh, diperhatikan graf terhubung berbobot dalam Gambar 2.2. Pemben-
tukan pohon rentangan minimal menggunakan Algoritma Prim disajikan dalam Tabel
2.1, dengan pohon rentangan minimalnya seperti di bawah ini.
Proposisi 2.4 Algoritma Prim selalu bisa mengkonstruksi suatu pohon rentangan min-
imal.
Bab 2. Pohon Rentangan Minimal 20
Bukti. Diandaikan bahwa T adalah suatu pohon rentangan dari G yang dibangun
oleh algoritma Prim. Akan ditunjukkan bahwa n(T) _ n(l) untuk sembarang pohon
rentangan l dari G. Diandaikan bahwa sisi-sisi dari T dalam urutan konstruksi adalah
c
1
, c
2
, ..., c
n1
, dimana [\ [ = :. Jika l = T, maka jelas bahwa hasil adalah benar dan
bukti selesai. Sekarang, tanpa kehilangan keumuman, diandaikan bahwa l ,= T, yang
berarti T memuat suatu sisi yang tidak ada di l. Diandaikan bahwa
c
1
, c
2
, ..., c
k1
l dan c
k
, l.
Dinotasikan o adalah himpunan titik-titik dari pohon parsial yang membentuk sisi-
sisi c
1
, c
2
, ..., c
k1
, dan diambil c
k
= r, j, dimana r o dan j \ o. Karena l
adalah suatu pohon rentangan dari G, berarti terdapat suatu lintasan di l dari r ke
j yang pasti memuat suatu sisi c dengan satu titik di o dan titik lainnya di \ o.
Dalam pandangan algoritma haruslah dipunyai n(c
k
) _ n(c), jika tidak maka sisi c
akan dipilih lebih dulu daripada c
k
dalam konstruksi dari T berdasarkan algoritma.
Sekarang dihapus sisi c dari l dan diganti dengan c
k
. Selanjutnya diperoleh suatu
pohon rentangan baru l
1
dari G, dimana
n(l
1
) = n(l) n(c) +n(c
k
) _ n(l) .
Lebih jauh,
c
1
, c
2
, ..., c
k1
, c
k
l
1
.
Jika l
1
,= T, maka proses di atas diulang dan diperoleh suatu barisan dari pohon
rentangan l
1
, l
2
, ... dari G, yang masing-masing memuat suatu bagian dari barisan
c
1
, c
2
, ..., c
n1
dan lebih panjang daripada yang mendahului. Karena itu proses pasti
berhenti dengan suatu pohon rentangan l
m
= T. Secara jelas
n(l) _ n(l
1
) _ n(l
2
) _ _ n(l
m
) = T
seperti yang diinginkan.
Algoritma kedua, yaitu Algoritma Kruskal, pertama kali muncul pada tahun 1956
dalam sebuah tulisan yang ditulis oleh Joseph Kruskal [5]. Algoritma ini membangun
suatu pohon rentangan minimal dimana pada setiap langkah pembentukan mungkin
tidak terbentuk pohon tetapi hutan. Berikut ini adalah algoritmanya.
Algoritma Kruskal untuk suatu pohon rentangan minimal.
Input: Graf terhubung G = (\, 1) dengan [\ [ = :, dan dilengkapi fungsi bobot
n : 1 N.
Output: Pohon rentangan minimal T dari G.
(1) Dibuat T dengan mengambil satu sisi di 1 (G) yang berbobot mimimal.
(2) Dipilih satu sisi n, 1 (G) 1 (T) yang memiliki bobot minimal dan tidak
membentuk lingkaran di T. Selanjutnya dimasukkan n, ke dalam 1 (T).
(3) Diulangi langkah (2) sebanyak (: 3) kali sampai semua titik di \ (G) termuat
dalam pohon.
Bab 2. Pohon Rentangan Minimal 21
Tabel 2.2: Pembentukan pohon rentangan minimal dari graf dalam Gambar 2.2 menggu-
nakan Algoritma Kruskal.
Sisi n, yang Bobot
Langkah ditambahkan pada 1 (T) n(n, ) \ (T)
1
1
,
2
1
1
,
2

2
3
,
5
1
1
,
2
,
3
,
5

3
2
,
4
1
1
,
2
,
3
,
4
,
5

4
2
,
3
1
1
,
2
,
3
,
4
,
5

5
4
,
7
1
1
,
2
,
3
,
4
,
5
,
7

6
7
,
8
1
1
,
2
,
3
,
4
,
5
,
7
,
8

7
8
,
6
1
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8

8
6
,
9
2
1
,
2
,
3
,
4
,
5
,
6
,
7
,
8
,
9

Diperhatikan kembali graf dalam Gambar 2.2. Pohon rentangan minimalnya dapat
dibentuk menggunakan Algoritma Kruskal seperti pada Tabel 2.2 dengan hasil akhirnya
seperti di bawah ini.
Dicatat bahwa pohon rentangan minimal yang diperoleh dari dua algoritma di atas
adalah tidak identik, tetapi bobot minimal dari kedua pohon rentangan yang dihasilkan
adalah sama.
Proposisi 2.5 Algoritma Kruskal selalu bisa mengkonstruksi suatu pohon rentangan
minimal.
Bukti. Diandaikan bahwa T adalah suatu pohon rentangan dari G yang dibangun oleh
algoritma Kruskal, dan sisi-sisi dari T dalam urutan konstruksi adalah c
1
, c
2
, ..., c
n1
,
dimana [\ [ = :. Diambil l adalah sembarang pohon rentangan minimal dari G.
Jika l = T, maka jelas bahwa hasil adalah benar dan bukti selesai. Sekarang, tanpa
kehilangan keumuman, diandaikan bahwa l ,= T, yang berarti T memuat suatu sisi
yang tidak ada di l. Diandaikan bahwa
c
1
, c
2
, ..., c
k1
l dan c
k
, l.
Ditambahkan suatu sisi c
k
ke l, maka ini akan menghasilkan suatu lingkaran. Jika
dihapus suatu sisi berbeda c , T dari lingkaran tersebut, maka akan diperoleh kembali
suatu pohon rentangan l
1
. Dalam pandangan algoritma haruslah dipunyai n(c
k
) _
Bab 2. Pohon Rentangan Minimal 22
n(c), jika tidak maka sisi c akan dipilih lebih dulu daripada c
k
dalam konstruksi dari
T berdasarkan algoritma. Ini berarti bahwa pohon rentangan baru l
1
memenuhi
n(l
1
) = n(l) n(c) +n(c
k
) _ n(l) .
Karena l adalah suatu pohon rentangan minimal dari G, maka n(l
1
) = n(l), se-
hingga l
1
juga merupakan suatu pohon rentangan minimal dari G. Lebih jauh,
c
1
, c
2
, ..., c
k1
, c
k
l
1
.
Jika l
1
,= T, maka proses di atas diulang dan diperoleh suatu barisan dari pohon
rentangan minimal l
1
, l
2
, ... dari G, yang masing-masing memuat suatu bagian dari
barisan c
1
, c
2
, ..., c
n1
dan lebih panjang daripada yang mendahului. Karena itu proses
pasti berhenti dengan suatu pohon rentangan l
m
= T.
2.3 Soal-soal untuk Bab 2
1. Aplikasikan algoritma Prim untuk mencari suatu pohon rentangan minimal dari
graf berbobot berikut ini.
2. Aplikasikan algoritma Kruskal untuk mencari suatu pohon rentangan minimal
dari graf berbobot dalam Soal 1.
3. Aplikasikan algoritma Prim untuk mencari suatu pohon rentangan minimal dari
graf berbobot berikut ini.
4. Aplikasikan algoritma Kruskal untuk mencari suatu pohon rentangan minimal
dari graf berbobot dalam Soal 3.
Bab 2. Pohon Rentangan Minimal 23
5. Aplikasikan algoritma Prim untuk mencari suatu pohon rentangan minimal dari
graf berbobot berikut ini.
6. Aplikasikan algoritma Kruskal untuk mencari suatu pohon rentangan minimal
dari graf berbobot dalam Soal 5.
7. Aplikasikan algoritma Prim untuk mencari suatu pohon rentangan minimal dari
graf berbobot berikut ini.
8. Aplikasikan algoritma Kruskal untuk mencari suatu pohon rentangan minimal
dari graf berbobot dalam Soal 7.
Bab 3
Algoritma Pencarian
Tujuan Pembelajaran:
Mengaplikasikan strategi-strategi pencarian pohon dari satu titik khusus untuk graf terhubung.
Mengaplikasikan Algoritma Dijkstra untuk memecahkan masalah lintasan terpendek.
3.1 Pengantar
Dalam banyak kejadian kita ingin mengunjungi setiap titik tepat satu kali dalam suatu
urutan yang khusus. Proses mengunjungi titik-titik dari suatu pohon dalam suatu
urutan khusus dinamakan dinamakan pencarian (searching) atau melakukan suatu
pencarian pohon. Seringkali proses ini dinamakan pelintasan (traversal ). Dalam bab
ini diberikan strategi-strategi dalam mencari suatu lintasan dari satu titik tertentu ke
titik-titik lainnya untuk suatu graf terhubung dan graf terhubung berbobot.
3.2 Depth-First Search
Gambar 3.1: Suatu graf tidak terhubung dengan 7 titik dan 6 sisi.
Diperhatikan graf yang direpresentasikan dalam Gambar 3.1. Diandaikan bahwa
ingin dicari semua titik n di graf sedemikian sehingga ada suatu lintasan dari titik
1
ke titik n. Ini bisa didapatkan seperti berikut ini.
(1) Dimulai dari titik
1
, bergerak ke suatu titik tetangga
2
dan dengan segera
bergerak ke titik tetangga
3
. Dari sini disimpulkan bahwa ada suatu lintasan
dari titik
1
ke titik
2
atau
3
. Dalam kasus ini
1
dinamakan orang tua (parent)
dari
2
atau sebaliknya
2
adalah anak (child) dari
1
, sedangkan
2
dinamakan
orang tua (parent) dari
3
24
Bab 3. Algoritma Pencarian 25
(2) Karena tidak ada titik tetangga baru dari titik
3
, maka kembali ke titik
2
.
Karena tidak ada tetanga baru dari titik
2
, maka kembali ke titik
1
.
(3) Dimulai dari titik
1
lagi, bergerak ke titik tetangga
5
dan segera bergerak ke
titik tetangga
4
. Dari sini disimpulkan bahwa ada suatu lintasan dari titik
1
ke
titik
2
,
3
,
4
, atau
5
.
(4) Karena tidak ada titik tetangga baru dari titik
4
, maka kembali ke titik
5
.
(5) Dimulai dari titik
5
dan bergerak ke titik tetangga
6
. Dari sini disimpulkan
bahwa ada suatu lintasan dari titik
1
ke titik
2
,
3
,
4
,
5
atau
6
.
(6) Karena tidak ada titik tetangga baru dari titik
6
, maka kembali ke titik
5
.
Karena tidak ada titik tetangga baru dari titik
5
, maka kembali ke titik
1
.
Karena tidak ada titik tetangga baru dari titik
1
, maka proses berhenti. Disim-
pulkan bahwa ada suatu lintasan dari titik
1
ke titik
2
,
3
,
4
,
5
atau
6
.
Dicatat bahwa hasil dari proses di atas adalah suatu pohon rentangan dari graf
yang direpresentasikan oleh graf di bawah ini.
Proses di atas merupakan suatu contoh dari strategi yang dikenal sebagai Depth-First
Search, yang dapat dipandang sebagai suatu metode pertumbuhan-pohon khusus (spe-
cial tree-growing method). Diaplikasikan dari suatu titik n di suatu graf G, proses
tersebut akan memberikan suatu pohon rentangan dari komponen graf G yang memuat
titik n. Dalam hal ini titik n tersebut biasanya dinamakan akar dari pohon rentangan.
Algoritma Depth-First Search.
Input: Graf terhubung G = (\, 1), \ =
1
,
2
, ...,
n
.
Output: Pohon rentangan berakar (T, n) untuk G, dengan n \ (G).
(1) Ditetapkan titik n sebagai .
(2) Dipilih
i
, dengan i adalah indeks terkecil, sedemikian sehingga ,
i
\ dan
i
belum pernah dipilih sebelumnya. Jika tidak ditemukan
i
, lanjut ke langkah (3).
Jika
i
ada, dimasukkan sisi ,
i
ke T dan ditetapkan
i
sebagai , selanjutnya
kembali ke langkah (2).
(3) Jika = n, maka proses berhenti dan pohon T adalah suatu pohon rentangan
berakar n. Tetapi jika ,= n, maka mundur dari ke orang tuanya, misalnya n,
selanjutnya tetapkan n sebagai dan kembali ke langkah (2).
Bab 3. Algoritma Pencarian 26
Gambar 3.2: Suatu graf terhubung dengan 10 titik dan 11 sisi.
Tabel 3.1: Pembentukan pohon berakar (T,
1
) dari graf dalam Gambar 3.2 berdasarkan
Algoritma Depth-First Search.
Titik sebagai Tetangga dari Titik
i
sebagai Sisi yang ditam-
Langkah orang tua di \ (G) \ (T) anak dari bahkan pada 1 (T)
1
1

2

2

1
,
2

2
2

3
,
5

3

2
,
3

3
3

4
2

5

5

2
,
5

5
5

4
,
6
,
7

4

5
,
4

6
4

7

7

4
,
7

7
7

6
,
9

6

7
,
6

8
6

9
7

9

9

7
,
9

10
9

8
,
10

8

9
,
8

11
8

12
9

10

10

9
,
10

Sebagai contoh, Algoritma Depth-First Search untuk mencari pohon berakar


1
dari graf yang dinyatakan dalam Gambar 3.2 adalah seperti dalam Tabel 3.1. Proses
tersebut menghasilkan pohon rentangan di bawah ini.
Bab 3. Algoritma Pencarian 27
3.3 Breadth-First Search
Diperhatikan kembali graf dalam Gambar 3.1. Diandaikan lagi bahwa kita ingin men-
cari semua titik n sedemikian sehingga ada suatu lintasan dari titik
1
ke titik n. Kita
bisa mendapatkannya seperti berikut ini.
(1) Dimulai dari titik
1
, dan berjalan ke semua titik baru yang bertetangga dengan

1
, yaitu
2
,
5
, dan
6
.
(2) Berikutnya dimulai dari
2
, dan berjalan ke semua titik baru yang bertetangga
dengan
2
, yaitu hanya
3
.
(3) Berikutnya dimulai dari
5
, dan berjalan ke semua titik baru yang bertetangga
dengan
5
, yaitu hanya
4
.
(4) Berikutnya dimulai dari
6
, dan berjalan ke semua titik baru yang bertetangga
dengan
6
, yaitu tidak ada.
(5) Berikutnya dimulai dari
3
, dan berjalan ke semua titik baru yang bertetangga
dengan
3
, yaitu tidak ada.
(6) Berikutnya dimulai dari
4
, dan berjalan ke semua titik baru yang bertetangga
dengan
4
, yaitu tidak ada.
(7) Karena titik
4
merupakan titik terakhir dalam daftar
1
,
2
,
5
,
6
,
3
,
4
(dalam
urutan pencapaian), maka proses berhenti.
Dicatat bahwa hasil dari proses di atas adalah suatu pohon rentangan dari graf
yang direpresentasikan oleh garf di bawah ini.
Proses di atas merupakan suatu contoh dari strategi yang dikenal sebagai Breadth-
First Search, yang dapat dipandang sebagai suatu metode pertumbuhan-pohon khusus.
Diaplikasikan dari suatu titik n di graf G, strategi tersebut juga akan memberikan suatu
pohon rentangan dari komponen graf G yang memuat titik n.
Algoritma Breadth-First Search.
Input: Graf terhubung G = (\, 1), \ =
1
,
2
, ...,
n
.
Output: Pohon rentangan berakar (T, n) untuk G, dengan n \ (G).
(1) Dimulai dengan barisan titik Q = n \ .
(2) Jika Q adalah barisan kosong, maka proses berhenti. Tetapi jika Q bukan barisan
kosong, maka dihapus titik terdepan dari Q, misalnya , dan selanjutnya ke
langkah (3).
Bab 3. Algoritma Pencarian 28
(3) Jika terdapat titik n bertetangga dengan dan n belum pernah masuk barisan,
maka masukkan semua sisi , n ke T, tambahkan semua titik n ke bagian akhir
dari Q, dan kembali ke langkah (2). Jika tidak ada titik yang bertetangga dengan
yang belum pernah masuk barisan, maka kembali ke langkah (2).
Tabel 3.2: Pembentukan pohon berakar (T,
1
) dari graf dalam Gambar 3.2 berdasarkan
Algoritma Breadth-First Search.
(titik terdepan n (tetangga Sisi yang ditam-
Langkah dari Q) dan tidak di \ (T)) Q bahkan pada 1 (T)
1
1

2
1

2

2

1
,
2

3
2

3
,
5

3
,
5

2
,
3
,
2
,
5

4
3

5

5
5

4
,
6
,
7

4
,
6
,
7

5
,
4
,
5
,
6
,
5
,
7

6
4

6
,
7

7
6

7

8
7

9

9

7
,
9

9
9

8
,
10

8
,
10

9
,
8
,
9
,
10

10
8

10

11
10

Sebagai contoh, akan digunakan Algoritma Breadth-First Search untuk mencari
pohon rentangan dari graf dalam Gambar 3.2. Dimulai dari titik
1
, dan dalam kasus
ini digunakan ketentuan bahwa ketika kita mempunyai suatu pilihan dari titik-titik
maka kita mengambil titik yang mempunyai penomoran lebih rendah. Proses pencarian
disajikan dalam Tabel 3.2 dan pohon rentangan yang dihasilkan adalah seperti di bawah
ini.
Dicatat bahwa pohon rentangan yang diperoleh dari dua algoritma di atas adalah
tidak identik, meskipun digunakan ketentuan yang sama dengan memperhatikan pilihan
pertama titik-titik dengan penomoran yang lebih rendah.
Bab 3. Algoritma Pencarian 29
3.4 Masalah Lintasan Terpendek
Diperhatikan suatu graf terhubung G = (\, 1), dengan fungsi bobot n : 1 N.
Untuk sembarang pasangan titik berbeda r, j \ dan untuk sembarang lintasan

0
(= r) ,
1
, ...,
r
(= j)
dari r ke j, diperhatikan nilai dari
r
X
i=1
n(
i1
,
i
) , (3.1)
yaitu jumlahan dari bobot-bobot sisi yang membentuk lintasan. Kita tertarik untuk
dalam meminimalkan nilai dari (3.1) atas semua lintasan dari r ke j.
Diperhatikan bahwa jika kita memikirkan bobot dari suatu sisi sebagai panjang,
maka kita mencoba mencari suatu lintasan terpendek dari r ke j. Algoritma yang di-
gunakan untuk menyelesaikan masalah tersebut adalah variasi dari Algoritma Breadth-
First Search. Untuk memahami ide pokok dari algoritma yang akan digunakan, diper-
hatikan analogi berikut ini.
Diperhatikan tiga kota , 1, dan C. Diandaikan bahwa informasi berikut ini
mengenai waktu perjalanan antara kota-kota tersebut:
1 1C C
r j _ .
Informasi tersebut dapat direpresentasikan dengan gambar berikut ini.
Jelas bahwa waktu perjalanan antara dan C tidak bisa melebih min., r +j.
Sekarang diandaikan bahwa n adalah suatu titik di graf terhubung berbobot G =
(\, 1). Untuk setiap titik r \ , diandaikan bahwa lintasan terpendek dari n ke r
tidak melebihi | (r). Jika diambil j sebagai suatu titik di graf, dan j sebagai suatu titik
yang bertetangga dengan j, maka jelas bahwa lintasan terpendek dari n ke j tidak
melebihi
min| (j) , | (j) +n(j, j) . (3.2)
Hal ini diilustrasikan oleh gambar di bawah ini.
Bab 3. Algoritma Pencarian 30
Oleh karena itu kita dapat mengganti informasi | (j) dengan minimum (3.2).
Berikut ini diberikan Algoritma Dijkstra untuk memecahkan masalah lintasan ter-
pendek untuk suatu graf terhubung berbobot. Algoritma Dijkstra pertama kali muncul
pada tahun 1959 dalam sebuah tulisan yang ditulis oleh Edsger Dijkstra [12].
Algoritma Lintasan Terpendek Dijkstra.
Input: Graf terhubung G = (\, 1) yang dilengkapi suatu fungsi bobot n : 1 N.
Suatu titik khusus n \ (G).
Output: Panjang semua lintasan terpendek dari n ke titik-titik lain: | : \ (G) n
N.
(1) Diambil | (n) = 0, dan dituliskan | (r) = untuk setiap titik r \ dan r ,= n.
Selanjutnya dimasukkan n ke \ (T).
(2) Diperhatikan semua titik j \ (G) \ (T) dan bertetangga dengan n. Diganti
nilai dari | (j) dengan min| (j), | (n) + n(n, j). Diamati pada nilai baru
dari | (j) untuk setiap titik j \ (G) \ (T), dan dipilih suatu titik dimana
| () _ | (j) untuk semua titik j. Selanjutnya ditambahkan sisi yang muncul
untuk nilai baru dari | () ke 1 (T).
(3) Jika \ (T) = \ (G), maka proses berhenti. Lintasan tunggal dari n ke sembarang
titik r ,= n menyatakan lintasan terpendek dari n ke r. Jika \ (T) ,= \ (G), maka
ditetapkan = n dan kembali ke langkah (2).
Gambar 3.3: Suatu graf berbobot dengan 8 titik dan 15 sisi.
Sebagai contoh, diperhatikan diperhatikan graf berbobot dalam Gambar 3.3. Di-
misalkan titik awalnya adalah n, maka dipunyai proses Dijkstra seperti dalam Tabel
3.3. Nilai-nilai | () menyatakan panjang lintasan terpendek dari n ke titik yang
diperhatikan. Dari proses ini juga diperoleh pohon rentangan seperti di bawah ini.
Berikut ini diberikan contoh penghitungan untuk langkah 2 dan 3.
Bab 3. Algoritma Pencarian 31
Tabel 3.3: Pencarian lintasan terpendek dari titik n untuk graf dalam Gambar 3.3
berdasarkan Algoritma Lintasan Terpendek Dijkstra.
Langkah | (n) | (a) | (/) | (c) | (d) | (c) | ()) | (q) | () sisi baru
1 0 n 0
2 2 3 1 c 1 n, c
3 2 3 3 2 a 2 n, a
4 3 6 3 2 ) 2 c, )
5 3 6 3 4 / 3 c, /
6 4 3 4 c 3 c, c
7 4 4 d 4 /, d
8 4 q 4 c, q
pada langkah 2: Diperhatikan tetangga dari n, yaitu a, /, dan c. Dihitung nilai
baru untuk:
| (a) : min| (a) , | (n) +n(n, a) = min, 0 + 2 = 2,
| (/) : min| (/) , | (n) +n(n, /) = min, 0 + 3 = 3,
| (c) : min| (c) , | (n) +n(n, c) = min, 0 + 1 = 1.
Diperoleh titik c dimana | (c) _ | (a) , | (/).
pada langkah 3: Diperhatikan tetangga dari c selain n, yaitu /, c, dan ). Dihitung
nilai baru untuk:
| (/) : min| (/) , | (c) +n(c, /) = min3, 1 + 2 = 3,
| (c) : min| (c) , | (c) +n(c, c) = min, 1 + 2 = 3,
| ()) : min| ()) , | (c) +n(c, )) = min, 1 + 1 = 2.
Diperoleh titik ) dimana | ()) _ | (a) , | (/) , | (c).
3.5 Soal-soal untuk Bab 3
1. Aplikasikan Algoritma Depth-First Search untuk graf pada Soal 1 dalam Bab 1.
2. Diperhatikan graf G yang didenisikan oleh matriks ketetanggaan berikut ini.
2
6
6
6
6
6
6
6
6
6
6
4
0 1 0 1 0 0 0 1
1 0 1 1 1 0 0 0
0 1 0 1 0 0 1 0
1 1 1 0 0 0 0 0
0 1 0 0 0 0 0 0
0 0 0 0 0 0 1 0
0 0 1 0 0 1 0 1
1 0 0 0 0 0 1 0
3
7
7
7
7
7
7
7
7
7
7
5
Bab 3. Algoritma Pencarian 32
Aplikasikan Algoritma Depth-First Search, dimulai dengan titik
7
dan meng-
gunakan kesepakatan bahwa ketika dipunyai suatu pilihan dari titik-titik maka
dipilih titik dengan penomoran lebih rendah.
3. Aplikasikan Algoritma Breadth-First Search untuk graf pada Soal 1 dalam Bab
1.
4. Diperhatikan graf G yang didenisikan oleh matriks ketetanggaan berikut ini.
2
6
6
6
6
6
6
6
6
6
6
6
6
4
0 0 0 0 1 0 0 0 1
0 0 0 1 0 0 1 1 0
0 0 0 0 1 1 0 0 1
0 1 0 0 0 0 1 1 0
1 0 1 0 0 1 0 0 0
0 0 1 0 1 0 0 0 1
0 1 0 1 0 0 0 0 0
0 1 0 1 0 0 0 0 0
1 0 1 0 0 1 0 0 0
3
7
7
7
7
7
7
7
7
7
7
7
7
5
Aplikasikan Algoritma Breadth-First Search, dimulai dengan titik
1
dan meng-
gunakan kesepakatan bahwa ketika dipunyai suatu pilihan dari titik-titik maka
dipilih titik dengan penomoran lebih rendah.
5. Untuk setiap graf berbobot berikut ini, cari lintasan terpendek dari titik a ke
sembarang titik r ,= a, dengan mengaplikasikan Algoritma Lintasan Terpendek
Dijkstra.
Bab 4
Graf Berarah
Tujuan Pembelajaran:
Mengetahui tentang graf berarah.
Mengetahui representasi matriks dari suatu graf berarah.
Mengetahui tentang jaringan dan arus.
Mengaplikasikan Algoritma Ford-Fulkerson untuk mencari arus maksimum dalam suatu jaringan.
4.1 Pengantar
Suatu graf berarah secara sederhana adalah suatu koleksi dari titik-titik, bersama-
sama dengan beberapa busur yang menghubungkan beberapa titik. Dicatat bahwa
busur mempunyai arah, sehingga (n, ) ,= (, n) kecuali n = . Sebagai contoh, graf
dalam Gambar 4.1 mempunyai titik-titik
1
,
2
,
3
,
4
,
5
, sedangkan busur-busurnya
dinyatakan oleh (
1
,
2
), (
1
,
3
), (
4
,
5
), (
5
,
5
).
Gambar 4.1: Graf berarah dengan 5 titik.
Selanjutnya, denisi formal dari graf berarah diberikut seperti di bawah ini.
Denisi 4.1 Suatu graf berarah (directed graph atau disingkat digraph) 1 adalah
suatu pasangan (\, 1), dimana \ adalah suatu himpunan berhingga dan 1 adalah suatu
himpunan bagian dari hasil kali kartesius \ \ . Elemen-elemen dari \ dikenal sebagai
titik dan elemen-elemen dari 1 dikenal sebagai busur (arc).
Jadi, pada graf berarah 1 = (\, 1) elemen-elemen dari 1 adalah pasangan-pasangan
terurut: busur dari titik n ke titik dituliskan seperti (n, ) dan pasangan (, n) adalah
33
Bab 4. Graf Berarah 34
busur dalam arah sebaliknya. Untuk busur (n, ), titik n adalah titik awal (initial ver-
tex) dan titik adalah titik akhir (terminal vertex). Selain itu dikatakan juga busur
bersisian luar dari n dan bersisian dalam ke . Dicatat bahwa suatu graf berarah
mungkin mempunyai beberapa sisi diantara dua titik r, j. Jika sisi-sisi tersebut mem-
punyai arah yang sama (katakan dari r ke j), sisi-sisi tersebut dikatakan paralel.
Selanjutnya denisi dari jalan, lintasan, dan lingkaran diberikan dengan cara seperti
berikut.
Denisi 4.2 Suatu jalan berarah dalam graf berarah 1 = (\, 1) adalah suatu barisan
titik-titik

0
,
1
, ...,
k
\
sedemikian sehingga (
i1
,
i
) 1, untuk setiap i = 1, ..., /. Jika semua titiknya
berbeda, maka jalan berarah tersebut dinamakan suatu lintasan berarah. Di sisi lain,
jika semua titiknya berbeda kecuali bahwa
0
=
k
, maka jalan berarah tersebut dina-
makan suatu lingkaran berarah.
Denisi 4.3 Suatu titik dalam graf berarah 1 = (\, 1) dikatakan dapat dijangkau
dari suatu titik n jika terdapat suatu jalan berarah dari n ke .
Dicatat bahwa suatu titik mungkin tidak dapat dijangkau dari dirinya sendiri. Se-
bagai contoh, dalam Gambar 4.1 titik
2
dan
3
dapat dijangkau dari titik
1
, sedangkan
titik
5
dapat dijangkau dari titik
4
dan
5
.
Denisi 4.4 Diambil 1 = (\, 1) adalah suatu graf berarah, dimana \ =
1
,
2
, ...,

n
dan 1 = c
1
, c
2
, ..., c
p
. Matriks ketetanggaan dari graf berarah 1 adalah
suatu matriks / = [a
ij
] berukuran : :, dimana masukan-(i, ,) diberikan oleh
a
ij
= banyaknya busur (
i
,
j
) .
Matriks keterjangkauan dari graf berarah 1 adalah suatu matriks = [r
ij
] beruku-
ran : :, dimana masukan-(i, ,) diberikan oleh
r
ij
=

1 jika
j
dapat dijangkau dari
i
0 jika
j
tidak dapat dijangkau dari
i
.
Matriks kebersisian dari graf berarah 1 tanpa loop adalah suatu matriks o = [:
ij
]
berukuran : j dimana
:
ij
=
8
<
:
1 jika
i
adalah titik awal dari c
j
1 jika
i
adalah titik akhir dari c
j
0 untuk lainnya
.
Bab 4. Graf Berarah 35
Sebagai contoh, diperhatikan kedua graf berarah di bawah ini.
Dari kedua graf diperoleh
/(G
1
) =
2
6
6
4
0 1 0 0
1 0 0 0
0 0 0 0
2 1 0 1
3
7
7
5
, (G
1
) =
2
6
6
4
1 1 0 0
1 1 0 0
0 0 0 0
0 1 0 1
3
7
7
5
,
o (G
2
) =
2
6
6
4
1 1 1 1 0
1 1 0 0 1
0 0 0 0 0
0 0 1 1 1
3
7
7
5
.
Gambar 4.2: Suatu graf berarah tanpa sisi ganda dan loop.
Keterjangkauan dalam graf berarah sederhana (tanpa sisi ganda dan loop) dapat
ditentukan oleh breadth-rst search dengan cara seperti berikut ini. Diperhatikan graf
berarah dalam Gambar 4.2. Dimulai dengan titik
1
. Pertama kali dicari semua titik
sedemikian sehingga (
1
, ) 1. Titik-titik tersebut adalah
2
dan
4
, sehingga
dipunyai daftar
2
,
4
. Di sini dipunyai informasi bahwa titik
2
dan
4
dapat dijangkau
dari titik
1
. Titik
1
tidak dimasukkan dalam daftar karena
1
tidak dapat dijangkau
dari dirinya sendiri. Selanjutnya dicari semua titik sedemikian sehingga (
2
, ) 1.
Titik-titik tersebut adalah
3
dan
5
, sehingga dipunyai daftar
2
,
4
,
3
,
5
. Berikutnya
dicari semua titik sedemikian sehingga (
4
, ) 1. Titik tersebut hanyalah titik
5
,
sehingga tetap dipunyai daftar
2
,
4
,
3
,
5
. Berikutnya dicari semua titik sedemikian
sehingga (
3
, ) 1. Titik tersebut hanyalah
6
, sehingga dipunyai daftar
2
,
4
,
3
,

5
,
6
. Berikutnya dicari semua titik sedemikian sehingga (
5
, ) 1. Titik-titik
tersebut adalah
2
dan
6
, sehingga tetap dipunyai daftar
2
,
4
,
3
,
5
,
6
. Berikutnya
dicari semua titik sedemikian sehingga (
6
, ) 1. Titik tersebut hanyalah
5
,
sehingga tetap dipunyai daftar
2
,
4
,
3
,
5
,
6
dan proses berhenti. Disimpulkan
bahwa titik-titik
2
,
4
,
3
,
5
,
6
dapat dicapai dari titik
1
, tetapi titik
1
tidak dapat
Bab 4. Graf Berarah 36
dijangkau dari dirinya sendiri. Metode diulang dengan awalan dari setiap titik lain
yang berbeda.
Metode yang lebih baik diberikan oleh Stephen Warshall (1935 2006) dan dikenal
sebagai Algoritma Warshall. Sebelum dinyatakan algoritma tersebut, diperhatikan ide
pokok dari algoritma. Diandaikan bahwa
i
,
j
,
k
adalah tiga titik dari suatu graf
berarah. Jika diketahui bahwa
j
dapat dijangkau dari
i
dan
k
dapat dijangkau dari

j
, maka
k
dapat dijangkau dari
i
.
Diambil \ =
1
,
2
, ...,
n
. Diandaikan bahwa Q = [
ij
] adalah matriks berukuran
: :, dimana masukan-(i, ,) didenisikan oleh

ij
=

1 jika sudah diperlihatkan
j
dapat dijangkau dari
i
0 jika belum diketahui
j
dapat dijangkau dari
i
.
Diambil suatu titik
j
.
(1) Diperiksa baris ke-, dari Q. Jika sudah diperlihatkan
k
dapat dijangkau dari

j
, maka
jk
= 1. Jika belum diketahui apakah
k
dapat dijangkau dari
j
, maka

jk
= 0.
(2) Diperiksa kolom ke-, dari Q. Jika sudah diperlihatkan
j
dapat dijangkau dari

i
, maka
ij
= 1. Jika belum diketahui apakah
j
dapat dijangkau dari
i
, maka

ij
= 0.
(3) Akibatnya, jika
ij
= 1 dan
jk
= 1, maka
j
dapat dijangkau dari
i
dan
k
dapat
dijangkau dari
j
. Karena itu telah diperlihatkan bahwa
k
dapat dijangkau dari

i
. Jadi, nilai dari
ik
dapat diganti oleh 1.
(4) Dilakukan beberapa manipulasi tersebut secara serempak, maka pada pokoknya
ini sedang "menjumlahkan" baris ke-, dari Q ke baris ke-i dari Q dimana
ij
=
1. Di sini, penjumlahan mempunyai arti penjumlahan Boole; dengan kata lain
0 + 0 = 0 dan 1 + 0 = 0 + 1 = 1 + 1 = 1. Untuk memahami penjumlahan
ini, diandaikan bahwa
ik
= 1, maka penggantian
ik
oleh
ik
+
jk
(hasil dari
jumlahan baris ke-, ke baris ke-i) tidak akan mengubah nilai 1. Di sisi lain, jika

ik
= 0, maka
ik
diganti oleh
ik
+
jk
=
jk
. Ini akan mempunyai nilai 1 jika

jk
= 1, yaitu telah diperlihatkan bahwa
k
dapat dijangkau dari
j
. Tetapi
karena
ij
= 1, yaitu telah diperlihatkan bahwa
j
dapat dijangkau dari
i
, ini
membenarkan penggantian dari
ik
= 0 oleh
ik
+
jk
= 1.
Algoritma Warshall.
Input: Graf berarah sederhana 1 = (\, 1), dimana [\ [ = :.
Output: Matriks keterjangkauan untuk 1.
(1) Diambil Q
0
= /.
(2) Diperhatikan masukan-masukan dalam Q
0
. Baris pertama dari Q
0
dijumlahkan
dengan setiap baris dari Q
0
yang mempunyai masukan 1 pada kolom pertama.
Diperoleh matriks baru Q
1
.
Bab 4. Graf Berarah 37
(3) Diperhatikan masukan-masukan dalam Q
1
. Baris kedua dari Q
1
dijumlahkan
dengan setiap baris dari Q
1
yang mempunyai masukan 1 pada kolom kedua.
Diperoleh matriks baru Q
2
.
(4) Untuk setiap , = 3, 4, ..., :, diperhatikan masukan-masukan pada Q
j1
. Baris ke-
, dari Q
j1
dijumlahkan dengan setiap baris dari Q
j1
yang mempunyai masukan
1 pada kolom ke-,. Diperoleh matriks baru Q
j
.
(5) Dituliskan = Q
n
.
Sebagai contoh, diperhatikan kembali graf dalam Gambar 4.2, dimana dipunyai
/ =
2
6
6
6
6
6
6
4
0 1 0 1 0 0
0 0 1 0 1 0
0 0 0 0 0 1
0 0 0 0 1 0
0 1 0 0 0 1
0 0 0 0 1 0
3
7
7
7
7
7
7
5
.
Dituliskan Q
0
= /. Karena tidak ada baris yang mempunyai masukan 1 pada kolom
pertama dari Q
0
, disimpulkan bahwa Q
1
= Q
0
= /. Berikutnya dijumlahkan baris
dua dengan setiap baris satu dan lima untuk memperoleh
Q
2
=
2
6
6
6
6
6
6
4
0 1 1 1 1 0
0 0 1 0 1 0
0 0 0 0 0 1
0 0 0 0 1 0
0 1 1 0 1 1
0 0 0 0 1 0
3
7
7
7
7
7
7
5
.
Berikutnya dijumlahkan baris tiga dengan setiap baris satu, dua, dan lima untuk mem-
peroleh
Q
3
=
2
6
6
6
6
6
6
4
0 1 1 1 1 1
0 0 1 0 1 1
0 0 0 0 0 1
0 0 0 0 1 0
0 1 1 0 1 1
0 0 0 0 1 0
3
7
7
7
7
7
7
5
.
Berikutnya dijumlahkan baris empat dengan baris satu untuk memperoleh Q
4
= Q
3
.
Berikutnya dijumlahkan baris lima dengan setiap baris satu, dua, empat, lima, dan
enam untuk memperoleh
Q
5
=
2
6
6
6
6
6
6
4
0 1 1 1 1 1
0 1 1 0 1 1
0 0 0 0 0 1
0 1 1 0 1 1
0 1 1 0 1 1
0 1 1 0 1 1
3
7
7
7
7
7
7
5
.
Bab 4. Graf Berarah 38
Terakhir dijumlahkan baris enam dengan setiap baris lainnya untuk memperoleh
Q
6
=
2
6
6
6
6
6
6
4
0 1 1 1 1 1
0 1 1 0 1 1
0 1 1 0 1 1
0 1 1 0 1 1
0 1 1 0 1 1
0 1 1 0 1 1
3
7
7
7
7
7
7
5
= .
4.2 Jaringan dan Arus
Sekarang dibayangkan suatu graf berarah dan busur dianggap sebagai pipa, dimana
beberapa komoditas (air, lalu-lintas, dan lain-lain) akan mengalir sepanjang pipa terse-
but . Terdapat bobot yang akan disertakan pada setiap busur, untuk diinterpretasikan
sebagai kapasitas, yang memberikan batasan-batasan untuk ukuran komoditas yang
dapat mengalir sepanjang pipa. Di sini juga dipunyai suatu sumber a dan suatu target
akhir .; atau dengan kata lain, semua busur yang memuat a diarahkan dari a dan
semua busur yang memuat . diarahkan ke ..
Denisi 4.5 Suatu jaringan (network) adalah suatu digraf 1 = (\, 1) yang dileng-
kapi dengan suatu fungsi kapasitas c : 1 N, suatu titik sumber a \ dan suatu
titik target akhir . \ .
Sebagai contoh, Gambar 4.3 dapat diinterpretasikan sebagai suatu jaringan dengan
titik a sebagai sumber dan titik . sebagai target akhir.
Gambar 4.3: Jaringan dengan sumber a dan target akhir ..
Sekarang diandaikan bahwa suatu komoditas sedang mengalir sepanjang busur dari
suatu jaringan. Untuk setiap (r, j) 1, diambil ) (r, j) menyatakan ukuran yang
mengalir sepanjang busur (r, j). Digunakan kesepakatan, dengan pengecualian titik
sumber a dan titik target akhir ., bahwa ukuran yang mengalir ke titik sama dengan
ukuran yang keluar dari titik . Selain itu, ukuran yang mengalir sepanjang sembarang
busur tidak bisa melebihi kapasitas dari busur.
Denisi 4.6 Suatu arus (ow) dari suatu titik sumber a ke suatu titik target akhir .
dalam suatu jaringan 1 = (\, 1) adalah suatu fungsi ) : 1 N'0 yang memenuhi
dua kondisi:
Bab 4. Graf Berarah 39
(F1) (Pengawetan) Untuk setiap titik ,= a, ., dipunyai 1 () = O(), dimana arus
masuk 1 () dan arus keluar O() di titik didenisikan oleh
1 () =
X
(x;v)2E
) (r, ) dan O() =
X
(v;y)2E
) (, j) .
(F2) (Batasan) Untuk setiap (r, j) 1, dipunyai ) (r, ) _ c (r, ).
Dicatat bahwa di sini fungsi ) mempunyai batasan pada nilai-nilai bilangan bulat
tak negatif. Tetapi secara umum, fungsi kapasitas c atau fungsi arus ) tidak perlu
dibatasi pada bilangan-bilangan bulat. Batasan yang dibuat di sini untuk mengabaikan
kesulitan tentang eksistensi dari penyelesaian optimal.
Berikut ini diberikan suatu proposisi tanpa bukti.
Proposisi 4.7 Pada sembarang jaringan dengan titik sumber a dan titik target akhir
., pasti dipunyai O(a) = 1 (.).
Denisi 4.8 Nilai O(a) = 1 (.) dari suatu jaringan dinamakan nilai dari arus ), dan
dinotasikan dengan 1 ()).
Diperhatikan suatu jaringan 1 = (\, 1) dengan titik sumber a dan titik target
akhir .. Himpunan titik \ dipartisi menjadi suatu gabungan terpisah o'T sedemikian
sehingga a o dan . T, maka arus dari o ke T, dalam pandangan (F1), sama dengan
arus dari a ke .. Dengan kata lain, dipunyai
1 ()) =
X
x2S; y2T
(x;y)2E
) (r, j)
X
x2T; y2S
(x;y)2E
) (r, j) .
Secara jelas, kedua jumlahan pada ruas kanan adalah tak negatif. Ini berakibat bahwa
1 ()) _
X
x2S; y2T
(x;y)2E
) (r, j) _
X
x2T; y2S
(x;y)2E
) (r, j) , (4.1)
dalam pandangan (F2).
Denisi 4.9 Diberikan \ = o ' T, dimana o dan T terpisah serta a o dan . T.
Dalam kasus ini, (o, T) dinamakan suatu potongan (cut) dari jaringan 1 = (\, 1).
Nilai
c (o, T) =
X
x2S; y2T
(x;y)2E
c (r, j)
dinamakan kapasitas dari potongan (o, T).
Bab 4. Graf Berarah 40
Dari (F2) dan (4.1) diperoleh proposisi berikut ini.
Proposisi 4.10 Jika 1 = (\, 1) adalah suatu jaringan dengan fungsi kapasitas c :
1 N, maka untuk setiap arus ) : N ' 0 dan setiap potongan (o, T)
dipunyai
1 ()) _ c (o, T) .
Diandaikan bahwa )
0
adalah suatu arus dimana 1 ()
0
) _ 1 ()) untuk setiap arus
), dan juga (o
0
, T
0
) adalah suatu potongan sedemikian sehingga c (o
0
, T
0
) _ c (o, T)
untuk setiap potongan (o, T). Secara jelas dipunyai 1 ()
0
) _ c (o
0
, T
0
). Dengan kata
lain, arus maksimum tidak pernah melebihi potongan minimum.
4.3 Teorema Max-Flow-Min-Cut
Pada bagian ini akan dinyatakan suatu algoritma praktis yang akan memungkinkan kita
untuk menaikkan nilai dari suatu arus dalam suatu jaringan yang diberikan, dimana
ditetapkan bahwa arus belum mencapai nilai maksimum.
Akan digunakan notasi berikut ini. Diandaikan (r, j) 1, c (r, j) = c dan
) (r, j) = ,, maka informasi ini digambarkan seperti:
(4.2)
Dicatat bahwa selalu berlaku c _ ,.
Denisi 4.11 Dalam notasi pada Gambar (4.2), dapat dilakukan pelabelan maju dari
titik r ke titik j jika , < c, yaitu ) (r, j) < c (r, j).
Denisi 4.12 Dalam notasi pada Gambar (4.2), dapat dilakukan pelabelan mundur
dari titik j ke titik r jika , 0, yaitu ) (r, j) 0.
Denisi 4.13 Diketahui bahwa barisan titik-titik

0
(= a) ,
1
, ...,
k
(= .) (4.3)
memenuhi sifat bahwa untuk setiap i = 1, 2, ..., / dapat dilabelkan maju atau mundur
dari
i1
ke
i
. Dalam kasus ini, barisan titik-titik (4.3) dinamakan lintasan arus-
tambahan (ow-augmenting path).
Sekarang diperhatikan dua contoh berikut ini. Contoh pertama, diperhatikan lin-
tasan arus-tambahan yang diberikan dalam gambar berikut (dicatat bahwa keseluruhan
jaringan tidak ditunjukkan):
Bab 4. Graf Berarah 41
Di sini, pelabelannya adalah maju dimanapun. Dicatat bahwa busur (a, /), (/, c), (c, )),
(), .) mempunyai kapasitas berturut-turut 9, 8, 4, 3, dimana arus-arus sepanjang busur
berturut-turut adalah 7, 5, 0, 1. Karena itu arus sepanjang setiap busur dapat di-
naikkan 2 = min97, 85, 40, 31 tanpa melanggar (F2). Selanjutnya dipunyai
kondisi seperti berikut:
Jadi, arus dari a ke . telah dinaikkan 2.
Contoh kedua, diperhatikan lintasan arus-tambahan yang diberikan dalam gambar
berikut:
Di sini, pelabelannya adalah maju dimanapun, kecuali bahwa titik q dilabelkan mundur
dari c. Sekarang dicatat bahwa 2 = min9 7, 8 5, 2, 10 8. Jika arus sepanjang
setiap busur (a, /), (/, c), (q, .) dinaikkan 2 dan arus sepanjang busur (q, c) diturunkan
2, maka dipunyai kondisi:
Dicatat bahwa jumlahan arus dari / dan q ke c tetap tidak berubah, dan jumlahan arus
dari q ke c dan . juga tetap tidak berubah. Jadi, arus dari a ke . telah dinaikkan 2.
Algoritma Arus-Tambahan. Diperhatikan suatu lintasan arus-tambahan bertipe
(4.3). Untuk setiap i = 1, ..., /, dituliskan
c
i
=

c (
i1
,
i
) ) (
i1
,
i
) , jika (
i1
,
i
) 1 (pelabelan maju)
) (
i
,
i1
) , jika (
i
,
i1
) 1 (pelabelan mundur)
,
dan diambil
c = minc
1
, ..., c
k
.
Dinaikkan arus sepanjang sembarang busur berbentuk (
i1
,
i
) (pelabelan maju) sebe-
sar c dan diturunkan arus sepanjang sembarang busur berbentuk (
i
,
i1
) (pelabelan
mundur) sebesar c.
Denisi 4.14 Diketahui bahwa barisan titik-titik

0
(= a) ,
1
, ...,
k
(4.4)
memenuhi sifat bahwa untuk setiap i = 1, 2, ..., / dapat dilabelkan maju atau mundur
dari
i1
ke
i
. Dalam kasus ini, barisan titik-titik (4.4) dinamakan suatu lintasan
arus-tambahan tak lengkap (incomplete ow-augmenting path).
Jadi, pada lintasan arus-tambahan tak lengkap, titik akhir tidak perlu titik target
akhir .. Selanjutnya akan dibuktikan suatu hasil penting seperti berikut ini.
Bab 4. Graf Berarah 42
Proposisi 4.15 Pada sembarang jaringan dengan titik sumber a dan titik target akhir
., nilai maksimum untuk suatu arus dari a ke . adalah sama dengan nilai minimum
untuk suatu potongan dari jaringan.
Bukti. Diperhatikan suatu jaringan 1 = (\, 1) dengan fungsi kapasitas c : 1 N.
Diambil ) : 1 N ' 0 sebagai suatu arus maksimum. Diambil
o = r \ : r = a atau
terdapat suatu lintasan arus-tambahan tak lengkap dari a ke r ,
dan T = \ o. Secara jelas . T karena jika tidak maka akan terdapat suatu lintasan
arus-tambahan dari a ke . dan mengakibatkan arus ) dapat dinaikkan, yang kontradiksi
dengan kenyataan bahwa ) adalah suatu arus maksimum. Diandaikan bahwa (r, j) 1
dengan r o dan j T, maka terdapat suatu lintasan arus-tambahan tak lengkap dari
a ke r. Jika c (r, j) ) (r, j), maka dapat dilabelkan maju dari r ke j, sehingga akan
terdapat suatu lintasan arus-tambahan tak lengkap dari a ke j, kontradiksi dengan
kenyataan bahwa j , o. Karena itu haruslah c (r, j) = ) (r, j) untuk setiap (r, j)
1 dengan r o dan j T. Di sisi lain, jika r T dan j o, maka terdapat
suatu lintasan arus-tambahan tak lengkap dari a ke j. Jika ) (r, j) 0, maka dapat
dilabelkan mundur dari j ke r, sehingga akan terdapat suatu lintasan arus-tambahan
tak lengkap dari a ke r, kontradiksi dengan kenyataan bahwa r , o. Karena itu
haruslah ) (r, j) = 0 untuk setiap (r, j) 1 dengan r T dan j o. Akibatnya
1 ()) =
X
x2S; y2T
(x;y)2E
) (r, j)
X
x2T; y2S
(x;y)2E
) (r, j) =
X
x2S; y2T
(x;y)2E
c (r, j) = c (o, T) .
Untuk sembarang potongan lain (o
0
, T
0
), dari Proposisi 4.10 diperoleh
c

o
0
, T
0

_ 1 ()) = c (o, T) .
Karena itu (o, T) adalah suatu potongan minimum.
Suatu algoritma untuk memaksimumkan arus dalam suatu jaringan diberikan oleh
Lester Randolph Ford, Jr. (matematikawan Amerika) dan Delbert Ray Fulkerson (1924
1976) yang diperkenalkan pada pertengahan tahun 1956: dimulai dengan arus nol,
secara berulang ditambahkan arus sepanjang lintasan a . dalam graf sisa, sampai
tidak ada lintasan tersebut. Algoritma mereka dikenal dengan nama Algoritma Ford-
Fulkerson.
Algoritma Ford-Fulkerson.
Input: Suatu jaringan 1 = (\, 1) dengan fungsi kapasitas c : 1 N, titik sumber
a dan titik target akhir ..
Ouput: Arus maksimum untuk jaringan 1.
(1) (Inisialisasi) Diambil ) sebagai suatu arus sibel awal (contoh, ) (c) = 0 untuk
setiap c 1 dalam suatu jaringan tanpa arus).
(2) (Arus tambahan) Jika tidak ada lintasan arus-tambahan dari a ke . pada
jaringan sisa, maka proses berhenti dan nyatakan suatu arus maksimum O(a) =
Bab 4. Graf Berarah 43
X
(a;y)2E
) (a, j). Jika terdapat lintasan arus-tambahan 1, aplikasikan Algoritma
Arus Tambahan pada 1 dan selanjutnya kembali ke langkah (2).
Sebagai contoh, diinginkan untuk mencari arus maksimum dan potongan minimum
dari jaringan dalam Gambar 4.3.
(L1) Dimulai dengan suatu arus ) : 1 N'0 yang didenisikan oleh ) (r, j) = 0
untuk setiap (r, j) 1, maka dipunyai keadaan berikut:
Berdasarkan pengamatan, dipunyai lintasan arus-tambahan:
Arus dari a ke . dapat dinaikkan sebesar c = min120, 90, 140, 80 = 8,
sehingga dipunyai keadaan:
(L2) Berdasarkan pengamatan lagi, dipunyai lintasan arus-tambahan:
Arus dari a ke . dapat dinaikkan sebesar c = min10 0, 1 0, 7 0 = 1,
Bab 4. Graf Berarah 44
sehingga dipunyai keadaan:
(L3) Berdasarkan pengamatan lagi, dipunyai lintasan arus-tambahan:
Arus dari a ke . dapat dinaikkan sebesar c = min10 1, 8, 8 0, 7 1 = 6,
sehingga dipunyai keadaan:
Karena tidak ditemukan lagi lintasan arus-tambahan, maka proses berhenti dan
diperoleh arus maksimum untuk jaringan yaitu
O(a) = ) (a, /) +) (a, d) = 8 + 7 = 15.
Selanjutnya, untuk mencari suatu potongan minimum dikonstruksi suatu pohon
dari lintasan arus-tambahan tak lengkap. Ini bisa dalam bentuk
Pohon tersebut tidak mencapai titik target akhir .. Karena itu dapat diambil suatu
potongan minimum (o, T), dimana o = a, /, c, d, c dan T = ., dengan kapasitas
potongan
c (o, T) = c (c, .) +c (c, .) = 7 + 8 = 15.
Bab 4. Graf Berarah 45
4.4 Soal-soal untuk Bab 4
1. Diberikan graf berarah yang dinyatakan oleh matriks ketetanggaan berikut ini.
/ =
2
6
6
6
6
6
6
4
0 0 0 1 1 0
1 0 0 0 0 0
0 1 0 0 0 0
0 1 1 0 1 0
0 0 0 0 0 1
1 0 0 0 0 0
3
7
7
7
7
7
7
5
a) Cari suatu lintasan berarah dari titik
3
ke titik
6
.
b) Cari suatu lingkaran berarah yang dimulai dan diakhiri di titik
4
.
c) Aplikasikan algoritma Warshall untuk mencari matriks keterjangkauan dari
graf berarah.
2. Diberikan graf berarah yang dinyatakan oleh matriks ketetanggaan berikut ini.
/ =
2
6
6
6
6
6
6
6
6
6
6
4
0 1 1 0 0 0 0 0
1 0 0 1 0 0 0 0
0 0 0 0 1 0 0 0
0 0 0 0 0 1 0 1
0 0 0 1 0 1 0 0
0 0 0 0 1 0 0 0
0 0 0 0 0 1 0 1
0 0 0 1 0 0 0 0
3
7
7
7
7
7
7
7
7
7
7
5
a) Apakah ada suatu lintasan berarah dari titik
3
ke titik
2
?
b) Cari suatu lingkaran berarah dari graf berarah.
c) Aplikasikan algoritma Warshall untuk mencari matriks keterjangkauan dari
graf berarah.
3. Diberikan suatu digraf yang dinyatakan oleh matriks ketetanggaan berikut ini.
/ =
2
6
6
6
6
6
6
6
6
6
6
4
0 1 0 1 0 0 0 0
0 0 0 1 0 0 0 0
1 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0
0 0 0 0 0 1 0 0
0 0 0 0 0 0 1 1
0 0 0 0 1 0 0 0
0 0 0 0 0 0 1 0
3
7
7
7
7
7
7
7
7
7
7
5
a) Apakah ada suatu lintasan berarah dari titik
1
ke titik
8
?
b) Cari semua lingkaran berarah pada graf berarah yang dimulai dari titik
1
.
c) Aplikasikan algoritma Warshall untuk mencari matriks keterjangkauan dari
graf berarah.
Bab 4. Graf Berarah 46
4. Diperhatikan suatu jaringan 1 = (\, 1) yang digambarkan oleh graf berikut ini.
a) Suatu arus ) : 1 N ' 0 didenisikan oleh ) (a, /) = ) (/, c) = ) (c, .) =
3 dan ) (r, j) = 0 untuk sembarang busur (r, j) 1(a, /), (/, c), (c, .).
Berapakah nilai 1 ()) dari arus tersebut?
b) Caris suatu arus maksimum dari jaringan, dimulai dengan arus pada bagian
a).
c) Cari suatu potongan minimum yang berkorespondensi.
5. Diperhatikan suatu jaringan 1 = (\, 1) yang digambarkan oleh graf berikut ini.
a) Suatu arus ) : 1 N ' 0 didenisikan oleh ) (a, i) = ) (i, ,) = ) (,, q) =
) (q, /) = ) (/, /) = ) (/, .) = 5 dan ) (r, j) = 0 untuk sembarang busur
(r, j) 1(a, i), (i, ,), (,, q), (q, /), (/, /), (/, .). Berapakah nilai 1 ())
dari arus tersebut?
b) Caris arus maksimum dari jaringan, dimulai dengan arus pada bagian a).
c) Cari suatu potongan minimum yang berkorespondensi.
6. Cari arus maksimum dan potongan yang berkorespondensi dari jaringan berikut
ini.
DAFTAR PUSTAKA
[1] Bondy, J. A., dan Murty, U. S. R. (1982). Graph Theory with Applications. Elsevier
Science Publishing Co., Inc., New York.
[2] Chen, W.W.L. (2008). Discrete Mathematics. Naskah, Bab 17 20, Macquarie
University.
[3] Dasgupta, S., C.H. Papadimitriou, dan U.V. Vazirani (2006). Algorithms. Naskah,
Bab 4 dan Bab 5, University of California.
[4] Diestel, R. (2005). Graph Theory. Springer-Verlag, New York (Electronic Edition).
[5] English Wikipedia, Ensiklopedia Bebas. http://en.wikipedia.org/wiki/. Tanggal ak-
ses: 13 Oktober 2008 pukul 09.42.
[6] Hartseld, N. dan G. Ringel (1990). Pearls In Graph Theory. Academic Press, San
Diego.
[7] Haxhimusa, Y.I.I. (2006). The Structurally Optimal Dual Graph Pyramid and its
Application in Image Partitioning. Tesis PhD, Bab 2, Vienna University of Tech-
nology.
[8] Kumpulan Bahan Kuliah, Kuis dan Ujian, Makalah Matematika Diskrit.
http://www.informatika.org/~rinaldi/Matdis/2008-2009/strukdis08-09.htm.
Tanggal akses: 13 Oktober 2008 pukul 09.30.
[9] Munir, R. (2003). Matematika Diskrit. Bandung. Informatika.
[10] Ruohonen, K. (2006). Graph Theory. Naskah, Tampere University of Technology.
[11] West, D. B. (1996). An Introduction to Graph Theory. Prentice-Hall.
[12] Wikipedia Bahasa Indonesia, Ensiklopedia Bebas. http://id.wikipedia.org/wiki/.
Tanggal akses: 13 Oktober 2008 pukul 13.10.
47

Anda mungkin juga menyukai