BAB 3
MATCHING PADA GRAF BIPARTIT
Diberikan sebuah graf G dan kita akan mencari berapa banyak sisi bebas
(independent edge) dalam G, yaitu sisi-sisi G yang tidak saling bertetangga satu
dengan yang lain. Apakah sisi bebas ini memuat semua simpul dalam G? Syarat
apa yang harus dipenuhi oleh G agar kondisi tersebut terpenuhi? Pada bab ini kita
akan membahas matching pada graf G, khususnya graf bipartit karena matching
pada graf bipartit mempunyai banyak aplikasi. Salah satunya adalah untuk
menyelesaikan masalah penugasan. Akan dibahas pula bagaimana mencari
matching dengan ukuran maksimum pada graf G.
A. GRAF BIPARTIT
Suatu graph G = (V,E) disebut graf bipartit (bipartite graph) jika himpunan
simpul V pada G dapat dipartisi menjadi dua himpunan V1 dan V2 sedemikian
sehingga setiap sisi di G menghubungkan sebuah simpul di V1 dan sebuah simpul
di V2. Dengan kata lain tidak ada sisi yang menghubungkan dua buah simpul pada
partisi yang sama. Misal |𝑉1 | = 𝑚, |𝑉2 | = 𝑛, dan setiap simpul di V1 bertetangga
dengan setiap simpul di V2, maka graf tersebut dinamakan graf bipartit lengkap
(complete bipartite graph), ditulis Km,n. Graf bipartit lengkap K1,n disebut graf
bintang (star graph).
Jadi sebuah graf bipartit mempunyai sifat bahwa setiap titiknya dapat
diberi warna putih atau hitam sedemikian sehingga simpu-simpul yang
bertetangga mempunyai warna yang berbeda. Jelas bahwa semua pohon adalah
graf bipartit. Untuk menjelaskan sifat tersebut, pilih sebuah simpul, kemudian beri
warna putih. Simpul yang terpilih pertama ini biasanya disebut akar (root).
Warnai semua simpul yang bertetangga dengan warna hitam. Warnai simpul yang
bertetangga dengan simpul warna hitam dengan warna putih, lanjutkan proses ini
sampai semua simpul diberi warna. Simpul-simpul yang berwarna sama berada
Matching pada graph bipartit 34
pada partisi yang sama dalam graf bipartit. Perhatikan bahwa pohon pada gambar
3.1 adalah graf bipartit. Banyaknya simpul pada setiap partisinya masing-masing
adalah 6 dan 7 simpul.
Graf pada gambar 3.1 adalah nearly equitable. Lintasan dengan panjang n, ditulis
Pn, adalah equitable jika n genap dan nearly equitable untuk n ganjil. Untuk n
genap, sikel Cn adalah graf bipartit yang equitable. Sedangkan untuk n ganjil, Cn
bukan graf bipartit.
Bagaimana cara menentukan sebuah graf bipartit atau bukan. Algoritma
berikut ini memberikan prosedur yang sederhana untuk menentukan apakah
sebuah graf adalah graf bipartit atau bukan.
Algoritma 3.1
Misal label a dan b adalah dua label yang berbeda dari suatu graf G.
1. Ambil sembarang simpul, beri label a.
2. Beri label semua simpul yang bertetangga dengan a dengan label b.
3. Jika masih ada simpul yang belum mempunyai label dan simpul tersebut
bertetangga dengan suatu simpul v yang sudah mempunyai label, beri label
simpul tersebut dengan label yang berbeda dengan label v.
Teori Graph 35
4. Ulangi langkah 3 sampai tidak ada simpul yang tidak mempunyai label
bertetangga dengan simpul yang berlabel.
5. Jika masih terdapat simpul yang belum mempunyai label (kemungkinan
simpul ini berada pada komponen lain), pilih sembarang simpul, beri label a
dan ulangi langkah 3.
6. Cek semua label simpul. Jika semua simpul yang bertetangga mempunyai
label yang berbeda maka G graf bipartit, kemudian himpunan V1 sebagai
himpunan semua simpul dengan label a dan V2 sebagai himpunan semua
simpul berlabel b. Jika ada simpul yang bertetangga mempunyai label yang
sama, maka G bukan graf bipartit.
c d k l
n
e f m
g h o p
i j q
G H
Graph G pada gambar 1.5 adalah bukan graf bipartit karena himpunan simpul
pada G tidak dapat dipartisi menjadi V1 dan V2 sedemikian sehingga tidak ada sisi
yang menghubungkan dua buah simpul pada partisi yang sama. Graf H adalah
graf bipartit dengan partisi simpul H adalah V1 = {k,p,m,q} dan V2 = {l,n,o}.
Selain dengan cara melabeli simpul, ada cara lain untuk memeriksa sebuah
graf biparti atau tidak, yaitu dengan mencari sikel-sikel pada graf tersebut. Jika
suatu graf memuat sikel ganjil, maka graf tersebut bukan graf bipartit.
Selengkapnya, disajikan dalam teorema berikut.
Teorema 3.1
Suatu graf G = (V,E) adalah bipartit jika hanya jika G tidak memuat sikel dengan
panjang ganjil.
Matching pada graph bipartit 36
Bukti:
Misal G bipartit. Misal x1x2x3. . .xt x1 adalah sikel di G. Dimisalkan pula
bahwa V1 dan V2 adalah partisi simpul G. Kita asumsikan bahwa x1 ∈ V1, maka
x2 ∈ V2, x3 ∈ V1 dan seterusnya xi ∈ V1 jika hanya jika i ganjil. Karena xt ∈ V2,
maka t genap.
Sebaliknya, Misal G tidak memuat sikel dengan panjang ganjil.
Asumsikan G terhubung. Ambil sebuah simpul x ∈ V(G) dan set V1 = {y | d(x,y)
ganjil}, V2 = V \ V1. Karena G tidak memuat sikel dengan panjang ganjil, maka
tidak ada simpul sisi di G yang menghubungkan 2 simpul pada partisi yang sama.
Jadi G graph bipartit. □
a
A
b
B
c
C
d
D
e
Gambar 3.3
sebuah matching disebut maksimum jika ukurannya tidak dapat diperbesar lagi
dengan cara menambah sisi.
Teknik yang paling penting untuk mencari matching maksimum adalah
berdasar sebuah konsep yang disebut augmenting path. Pandang sebuah matching
M pada suatu graph G. Sebuah M-alternating path di G adalah sebuah lintasan di
G yang sisi-sisinya berganti-ganti antara sisi di M dan bukan sisi M. Simpul v
disebut M-matched oleh matching M jika v bersisian dengan salah satu sisi M.
Jika tidak v disebut M-unmatched. Sebuah M-augmenting path adalah sebuah
M-alternating path yang menghubungkan dua M-unmatched simpul. Catat bahwa
M-augmenting path tidak selalu menggunakan semua sisi M. Untuk matching
pada gambar 3.4. (a), c, e, f, g adalah sebuah M-augmenting path. Jadi
M-augmenting path selalu berawal dan berakhir pada sisi yang bukan anggota M.
c dc c c
d
b e b e
a f a f
h g h g
(a) (b)
Teorema 3.2
Sebuah matching M pada suatu graf G adalah maksimum jika hanya jika G tidak
memuat M-augmenting path.
Teori Graph 39
Bukti:
Misal M adalah matching maksimum di G. Akan ditunjukan G tidak
memuat M-augmenting path. Andaikan G memuat M-augmenting path P yang
menghubungkan simpul u dan v di G. Maka panjang P adalah ganjil dengan
paling sedikit satu sisi di P bukan anggota M. Misal MP adalah himpunan sisi-sisi
P yang ada di M dan M’P adalah himpunan sisi-sisi P yang tidak ada di M.
Definisikan M’ = (M – MP) ∪ M’P , yaitu himpunan yang berisi sisi-sisi M selain
sisi MP digabung dengan sisi-sisi M’P. Jelas bahwa M’ adalah sebuah matching
pada G dan |M’| > |M|. Kontradiksi bahwa M adalah matching maksimum. Jadi, G
tidak memuat M-augmenting path.
Sebaliknya, Misal G tidak memuat M-augmenting path. Akan ditunjukan
bahwa M adalah matching maksimum. Misal M* adalah matching maksimum di
G, maka tidak ada M*-augmenting path. Pandang masing-masing komponen dari
subgraf H yang memuat semua simpul G dengan E(H) =(M – M*) ∪ (M* - M).
Maka derajat maksimum dari setiap simpul di H adalah 2. Jadi setiap komponen H
terdiri dari simpul terpencil atau sebuah lintasan dengan sisi-sisi berganti-ganti di
M atau M*, atau sikel dengan sisi berganti-ganti di M atau M*. Karena G tidak
memuat M-augmenting path maupun M*-augmenting path, maka komponen H
yang berupa lintasan mempunyai simpul awal yang bersisian dengan M dan
simpul akhir yang bersisian dengan M* atau sebaliknya. Akibatnya, lintasan di H
mempunyai panjang genap. Demikian juga sikel di H juga mempunyai panjang
genap. Ini berakibat |M| = |M*|. Jadi M adalah matching maksimum di G. □
Matching pada graf di gambar 3.4 (a) bukan matching maksimum karena
terdapat M-augmenting path, yaitu c, e, f, a, h, g. Sedang matching pada graf di
gambar 3.4 (b) adalah maksimum karena tidak terdapat M-augmenting path pada
graf tersebut. Untuk masalah berskala kecil, matching maksimum relatif mudah
untuk dicari, tetapi untuk masalah yang lebih besar, matching maksimum dicari
menggunakan algoritma pelabelan.
Sebuah matching sempurna (perfect matching) M pada graf G adalah
sebuah matching yang setiap simpul di G M-matched. Jelas bahwa hanya graf
Matching pada graph bipartit 40
Gambar 3.5. Graf bipartit equitable yang tidak memuat matching sempurna.
Pada bagian selanjutnya kita akan membahas kapan sebuah graf bipartit
memuat matching lengkap ataupun matching sempurna. Untuk suatu simpul v,
tetangga (neighborhood) v, ditulis n(v), menyatakan himpunan semua simpul
yang bertetangga dengan v. Untuk suatu himpunan simpul S pada graf G, tetangga
S adalah gabungan dari tetangga simpul-simpul di S, yaitu N(S) = ⋃𝑣∈𝑆 𝑛(𝑣).
Bukti:
Jika G memuat matching lengkap M dari X ke Y, maka pada M, setiap
simpul di X bertetangga dengan sebuah simpul yang berbeda di Y. Ini berarti,
untuk setiap S ⊆ X, |S| ≤ |N(S)|.
Selanjutnya akan kita buktikan sebaliknya. Misal G graf bipartit dengan
|S| ≤ |N(S)|, untuk setiap S ⊆ X. Akan ditunjukkan G memuat matching lengkap
dari X ke Y. Andaikan G tidak memuat matching lengkap dari X ke Y. Misal M
adalah matching maksimum di G dan v adalah simpul M-unmatched dari X.
Dimisalkan pula X* adalah himpunan simpul-simpul X yang M-matched,Y*
Teori Graph 41
Untuk |X| = |Y|, Teorema 3.3 terkenal dengan nama Teorema Perkawinan Hall
(Hall’s Marriage Theorem). Teorema ini dapat diintepretasikan sebagai berikut:
Misal terdapat himpunan wanita dan himpunan pria. Setiap subhimpunan n wanita
mengenal paling sedikit n pria. Maka kita dapat memasangkan setiap wanita
dengan tepat satu pria yang dikenalnya. Akibat berikut menjelaskan kondisi di
atas.
Selanjutnya kita akan gunakan teorema 3.3 bahwa graf bipartit teratur pasti
memuat matching sempurna. Sebelumnya, akan dijelaskan lemma berikut:
Lemma 3.1
Jika G adalah graf bipartit teratur dengan partisi simpul X dan Y, maka |X| = |Y|.
Bukti:
Misal |X| = k dan G graf bipartit teratur berderajat r, maka |E(G)| = rk. Setiap rk
sisi bersisian dengan sebuah simpul di Y. Karena G graf teratur berderajat r, setiap
Matching pada graph bipartit 42
simpul di Y bersisian dengan r sisi, sehingga diperoleh r |Y| = rk. Jadi, |Y| = k
= |X|. □
Teorema 3.4
Jika G graf bipartit teratur, maka G memuat matching sempurna.
Bukti:
Misal X dan Y adalah partisi simpul dari G. Cukup dibuktikan bahwa G
memuat matching lengkap dari X ke Y yaitu dengan menunjukkan bahwa jika
diberikan sembarang subhimpunan S pada X dengan m simpul, maka banyaknya
simpul yang bertetangga dengan S di Y paling sedikit ada m. Karena setiap simpul
di S mempunyai derajat r, maka S akan bersisian dengan rm sisi, masing-masing
sisi bersisian dengan sebuah simpul di Y. Karena setiap simpul di Y berderajat r,
maka setiap simpul di Y akan bersisian dengan r sisi yang masing-masing sisi
bersisian dengan sebuah simpul di X. Dengan demikian, tetangga S harus ada
paling sedikit m simpul. Jadi, |S| ≤ |N(S)|. □
Kebalikan dari teorema 3.4 tidak berlaku. Ini ditunjukan pada gambar 3.6, G
mempunyai matching sempurna, tetapi G bukan graf bipartit teratur.
X Y
A a
B b
C c
D d
SOAL-SOAL LATIHAN
1. Tentukan 2 maksimum matching dari graf berikut:
a f g
e b
k h
j i
d c
2. Tunjukkan bahwa subgraf dari graf bipartit G juga merupakan graf bipartit.
c d e o
f
p q
g h
s
i j r v
k
l n
m t u
G H
5. Suatu graf disebut semiregular bipartit jika semua simpul dalam partisi V1
berderajat s dan semua simpul di partisi V2 berderajat t. Buktikan bahwa jika
G adalah graf semiregular bipartit, maka graf garis G adalah graf teratur
berderajat s + t – 2.
6. Gambarkan suatu graf terhubung dengan jumlah simpul genap yang tidak
memuat matching sempurna.
Matching pada graph bipartit 44
8. Ann, Dan, Fan, Nan dan Van membuat lamaran untuk posisi pekerjaan a, b,
c, d, dan e. Ann memenui kualifikasi untuk posisi a, b, dan c. Dan untuk
posisi b, d, e. Fan untuk b dan c. Nan untuk c dan d, dan Van untuk b.
a. Gambarkan graf bipartit yang merepresentasikan masalah di atas.
b. Tentukan matching maksimumnya.
10. Jika T adalah pohon rentang dari G, maka tunjukkan bahwa suatu matching
sempurna di T juga merupakan matching sempurna di G.