Lewati ke konten utama
Gambar logo

Subbab 2.7 Pencocokan pada Graf Bipartit

Selidiki!
Untuk suatu graf bipartit, pencocokan adalah subhimpunan sisi sedemikian sehingga setiap simpul bersisian dengan tepat satu sisi dalam subhimpunan tersebut. Tujuan kegiatan ini adalah menemukan beberapa kriteria yang menentukan kapan suatu graf bipartit memiliki pencocokan.
Apakah graf berikut memuat suatu pencocokan? Jika ya, temukan salah satunya.
Graf bipartit dengan 12 simpul yang terbagi menjadi dua himpunan beranggotakan enam simpul. Jika simpul-simpul bawah dinamai a0 sampai a5 dan simpul-simpul atas dinamai b0 sampai b5, dari kiri ke kanan, graf tersebut memiliki sisi-sisi berikut: (a0,b0), (a0,b1), (a0,b5), (a1,b0), (a1,b3), (a2,b1), (a2,b2), (a2,b3), (a3,b0), (a3,b5), (a4,b2), (a4,b3), (a4,b4), (a4,b5), (a5,b4).
Tidak semua graf bipartit memiliki pencocokan. Gambarlah sebanyak mungkin contoh graf bipartit yang berbeda secara mendasar dan TIDAK memiliki pencocokan. Tujuan Anda adalah menemukan semua kemungkinan penghalang bagi keberadaan pencocokan sempurna pada suatu graf. Tuliskan syarat-syarat yang perlu agar suatu graf memiliki pencocokan (yakni, isilah bagian kosong berikut: Jika suatu graf memiliki pencocokan, maka ). Selanjutnya, tanyakan apakah syarat-syarat tersebut juga cukup (apakah benar bahwa jika , maka graf tersebut memiliki pencocokan?).
Kita mengakhiri bab ini dengan satu contoh tambahan masalah teori graf untuk menggambarkan keragaman dan keluasan bidang tersebut.
Misalkan Anda memiliki graf bipartit \(G\text{.}\) Graf ini terdiri atas dua himpunan simpul \(A\) dan \(B\text{,}\) dengan sejumlah sisi yang menghubungkan beberapa simpul dalam \(A\) dengan beberapa simpul dalam \(B\) (dan, tentu saja, tidak ada sisi di antara dua simpul yang keduanya berada dalam \(A\) atau keduanya berada dalam \(B\)). Pencocokan dari \(A\) adalah subhimpunan sisi sedemikian sehingga setiap simpul \(A\) bersisian dengan tepat satu sisi dalam subhimpunan itu, dan tidak ada simpul dalam \(B\) yang bersisian dengan lebih dari satu sisi dalam subhimpunan tersebut. Dalam penerapannya, kita akan mengasumsikan bahwa \(|A| = |B|\) (kedua himpunan memiliki jumlah simpul yang sama), sehingga setiap simpul pada graf bersisian dengan tepat satu sisi dalam pencocokan.
 11 
Apa yang kita sebut pencocokan kadang-kadang disebut pencocokan sempurna atau pencocokan lengkap. Istilah tersebut digunakan karena pencocokan yang tidak sempurna juga menarik untuk dipelajari. Kita akan menyebutnya pencocokan parsial.
Sedikit konteks dapat mempermudah pemahaman. Anggap simpul-simpul dalam \(A\) merepresentasikan mahasiswa dalam suatu kelas, dan simpul-simpul dalam \(B\) merepresentasikan topik presentasi. Kita menempatkan sisi dari simpul \(a \in A\) ke simpul \(b \in B\) jika mahasiswa \(a\) ingin mempresentasikan topik \(b\text{.}\) Tentu saja, beberapa mahasiswa ingin mempresentasikan lebih dari satu topik, sehingga simpul mereka akan berderajat lebih dari 1. Sebagai pengajar, Anda ingin memberikan satu topik tersendiri kepada setiap mahasiswa. Jadi, Anda ingin menemukan pencocokan dari \(A\text{:}\) Anda memilih suatu subhimpunan sisi sedemikian sehingga setiap mahasiswa dipasangkan dengan tepat satu topik, dan tidak ada topik yang dipasangkan dengan dua mahasiswa.
 12 
Dahulu, contoh baku untuk pencocokan adalah masalah perkawinan, dengan \(A\) terdiri atas para lelaki di suatu kota, \(B\) terdiri atas para perempuan, dan suatu sisi merepresentasikan perkawinan yang disetujui kedua pihak. Pencocokan kemudian merepresentasikan cara para tetua kota menikahkan semua orang di kota tersebut, tanpa memperbolehkan poligami. Demi kepekaan politis, kita memilih konteks yang lebih progresif.
Pertanyaannya adalah: kapan suatu graf bipartit memuat pencocokan dari \(A\text{?}\) Untuk mulai menjawab pertanyaan ini, perhatikan hal-hal yang dapat menghalangi suatu graf memuat pencocokan. Pengamatan ini belum tentu memberi kita syarat yang menjamin bahwa graf memang memiliki pencocokan, tetapi setidaknya merupakan titik awal.
Salah satu alasan \(G\) tidak dapat memiliki pencocokan ialah adanya simpul dalam \(A\) yang tidak bertetangga dengan simpul mana pun dalam \(B\) (sehingga berderajat 0). Apa lagi yang dapat menghalanginya? Bagaimana jika dua mahasiswa sama-sama hanya menyukai satu topik yang sama? Setelah topik tersebut diberikan kepada mahasiswa pertama, tidak ada lagi topik yang disukai mahasiswa kedua, sehingga keadaannya sama saja seolah-olah mahasiswa kedua berderajat 0. Atau, bagaimana jika tiga mahasiswa hanya menyukai dua topik di antara mereka? Sekali lagi, setelah satu mahasiswa diberi suatu topik, keadaan ini berkurang menjadi kasus sebelumnya, yaitu dua mahasiswa hanya menyukai satu topik. Penalaran ini dapat diteruskan untuk semakin banyak mahasiswa.
Sekarang seharusnya jelas bahwa jika terdapat sekelompok \(n\) mahasiswa yang secara bersama-sama menyukai paling banyak \(n-1\) topik, maka pencocokan mustahil dibentuk. Pernyataan ini berlaku untuk setiap nilai \(n\) dan setiap kelompok yang terdiri atas \(n\) mahasiswa.
Untuk menyatakannya dalam bahasa teori graf, misalkan Anda memiliki himpunan simpul \(S \subseteq A\text{.}\) Definisikan \(N(S)\) sebagai himpunan semua tetangga dari simpul-simpul dalam \(S\text{.}\) Dengan kata lain, \(N(S)\) memuat semua simpul (dalam \(B\)) yang bertetangga dengan sedikitnya satu simpul dalam \(S\text{.}\) (Dalam graf mahasiswa/topik, \(N(S)\) adalah himpunan topik yang disukai mahasiswa-mahasiswa dalam \(S\text{.}\)) Pembahasan di atas dapat diringkas sebagai berikut.

Syarat Pencocokan.

Jika graf bipartit \(G = \{A, B\}\) memiliki pencocokan dari \(A\text{,}\) maka
\begin{equation*} |N(S)| \ge |S| \end{equation*}
untuk semua \(S \subseteq A\text{.}\)
Apakah konversnya benar? Misalkan \(G\) memenuhi syarat pencocokan \(|N(S)| \ge |S|\) untuk semua \(S \subseteq A\) (setiap himpunan simpul memiliki tetangga yang jumlahnya paling sedikit sama dengan jumlah simpul dalam himpunan tersebut). Apakah ini berarti bahwa suatu pencocokan ada? Ternyata, ya. Syarat perlu yang jelas tersebut juga merupakan syarat cukup.
 13 
Hal semacam ini sering terjadi dalam teori graf. Jika contoh-contoh penyangkal yang jelas dapat dihindari, kita sering memperoleh hasil yang diinginkan.
Teorema ini pertama kali dibuktikan oleh Philip Hall pada 1935.
 14 
Terdapat pula versi tak hingga dari teorema ini, yang dibuktikan oleh Marshall Hall, Jr. Kesamaan nama mereka hanyalah kebetulan; kedua Hall tersebut tidak memiliki hubungan keluarga.
Terdapat cukup banyak pembuktian yang berbeda untuk teorema ini – pencarian singkat di internet dapat menjadi titik awal.
Selain penerapannya pada masalah perkawinan dan topik presentasi mahasiswa, pencocokan memiliki berbagai macam penerapan. Kita mengakhiri pembahasan dengan salah satu contohnya.

Contoh 2.7.2.

Misalkan Anda membagikan 52 kartu remi standar ke dalam 13 tumpukan yang masing-masing terdiri atas 4 kartu. Buktikan bahwa Anda selalu dapat memilih satu kartu dari setiap tumpukan sehingga memperoleh masing-masing satu dari 13 nilai kartu: As, 2, 3, …, 10, Jack, Queen, dan King.
Penyelesaian.
Menyelesaikan masalah ini secara langsung akan sulit, tetapi syarat pencocokan dapat membantu. Bentuklah graf \(G\) dengan 13 simpul dalam himpunan \(A\text{,}\) yang masing-masing merepresentasikan salah satu dari 13 nilai kartu, dan 13 simpul dalam himpunan \(B\text{,}\) yang masing-masing merepresentasikan salah satu dari 13 tumpukan. Gambarlah sisi di antara simpul \(a \in A\) dan simpul \(b \in B\) jika kartu bernilai \(a\) terdapat dalam tumpukan \(b\text{.}\) Perhatikan bahwa kita hanya mencari pencocokan dari \(A\text{;}\) setiap nilai harus ditemukan tepat satu kali di antara tumpukan-tumpukan tersebut.
Kita akan memperoleh pencocokan jika syarat pencocokan terpenuhi. Untuk sembarang himpunan nilai kartu (suatu himpunan \(S \subseteq A\)), kita harus menunjukkan bahwa \(|N(S)| \ge |S|\text{.}\) Artinya, banyak tumpukan yang memuat nilai-nilai tersebut sedikitnya sama dengan banyak nilai yang berbeda. Bagaimana jika tidak demikian? Misalkan \(|S| = k\text{.}\) Jika \(|N(S)| \lt k\text{,}\) maka dalam tumpukan-tumpukan tersebut terdapat kurang dari \(4k\) kartu (karena setiap tumpukan memuat 4 kartu). Akan tetapi, terdapat \(4k\) kartu yang memiliki \(k\) nilai berbeda tersebut, sehingga sedikitnya satu dari kartu-kartu ini harus berada dalam tumpukan lain, suatu kontradiksi. Jadi, syarat pencocokan terpenuhi, sehingga terdapat pencocokan seperti yang diperlukan.

Latihan Latihan

1.

Temukan suatu pencocokan pada setiap graf bipartit berikut atau jelaskan mengapa tidak terdapat pencocokan.
Sebuah graf bipartit dengan enam simpul yang terbagi ke dalam dua himpunan beranggotakan tiga simpul. Jika simpul-simpul atas dinamai a, b, c dan simpul-simpul bawah dinamai 1, 2, 3 (dari kiri ke kanan), graf tersebut memiliki sisi-sisi berikut: (a,1), (a,2), (b,1), (b,3), (c,1), (c,3).
Sebuah graf bipartit dengan delapan simpul yang terbagi ke dalam dua himpunan beranggotakan empat simpul. Jika simpul-simpul atas dinamai a, b, c, d dan simpul-simpul bawah dinamai 1, 2, 3, 4 (dari kiri ke kanan), graf tersebut memiliki sisi-sisi berikut: (a,1), (a,3), (a,4), (b,2), (c,1), (c,2), (c,3), (c,4), (d,2).
Sebuah graf bipartit dengan sepuluh simpul yang terbagi ke dalam dua himpunan beranggotakan lima simpul. Jika simpul-simpul atas dinamai a, b, c, d, e dan simpul-simpul bawah dinamai 1, 2, 3, 4, 5 (dari kiri ke kanan), graf tersebut memiliki sisi-sisi berikut: (a,1), (a,2), (a,3), (b,1), (b,3), (c,2), (c,4), (d,3), (d,5), (e,3), (e,4), (e,5).

2.

Graf bipartit yang tidak memiliki pencocokan mungkin masih memiliki pencocokan parsial. Istilah ini berarti suatu himpunan sisi sedemikian sehingga tidak ada simpul yang bersisian dengan lebih dari satu sisi (tetapi mungkin tidak bersisian dengan sisi mana pun). Setiap graf bipartit (dengan setidaknya satu sisi) memiliki pencocokan parsial, sehingga kita dapat mencari pencocokan parsial maksimum dalam suatu graf.
“Teman” Anda menyatakan bahwa ia telah menemukan pencocokan parsial maksimum untuk graf berikut (pencocokannya ditampilkan dengan garis tebal). Ia menjelaskan bahwa tidak ada sisi lain yang dapat ditambahkan karena semua sisi yang tidak digunakan dalam pencocokan parsialnya bersisian dengan simpul yang telah dicocokkan. Apakah pernyataannya benar?
Sebuah graf bipartit dengan sepuluh simpul yang terbagi ke dalam dua himpunan beranggotakan lima simpul. Namai simpul-simpul atas a, b, c, d, e dan simpul-simpul bawah 1, 2, 3, 4, 5. Graf tersebut memiliki sisi-sisi berikut: a-1, a-3, b-1, b-2, c-1, c-2, c-4, d-5, e-4, dan e-5. Di antaranya, sisi a-1, b-2, c-4, dan e-5 ditampilkan dengan garis tebal.

3.

Salah satu cara untuk memeriksa apakah suatu pencocokan parsial sudah maksimum adalah dengan membentuk lintasan berselang-seling. Lintasan ini merupakan urutan sisi-sisi yang bertetangga, yang secara bergantian terdiri atas sisi dalam pencocokan dan sisi di luar pencocokan (tidak ada sisi yang boleh digunakan lebih dari satu kali). Jika sebuah lintasan berselang-seling berawal dan berakhir dengan sisi yang tidak berada dalam pencocokan, lintasan itu disebut lintasan augmentasi.
  1. Temukan lintasan berselang-seling terpanjang yang mungkin untuk pencocokan parsial pada graf teman Anda. Apakah lintasan tersebut merupakan lintasan augmentasi? Bagaimana lintasan ini membantu Anda menemukan pencocokan yang lebih besar?
    Sebuah graf bipartit dengan sepuluh simpul yang terbagi ke dalam dua himpunan beranggotakan lima simpul. Namai simpul-simpul atas a, b, c, d, e dan simpul-simpul bawah 1, 2, 3, 4, 5. Graf tersebut memiliki sisi-sisi berikut: a-1, a-3, b-1, b-2, c-1, c-2, c-4, d-5, e-4, dan e-5. Di antaranya, sisi a-1, b-2, c-4, dan e-5 ditampilkan dengan garis tebal.
  2. Temukan lintasan berselang-seling terpanjang yang mungkin untuk pencocokan parsial berikut. Apakah terdapat lintasan augmentasi? Apakah pencocokan parsial tersebut merupakan pencocokan parsial maksimum dalam graf ini?
    Sebuah graf bipartit dengan 12 simpul yang terbagi ke dalam dua himpunan beranggotakan enam simpul. Namai simpul-simpul atas a sampai f dan simpul-simpul bawah 1 sampai 6. Graf tersebut memiliki sisi-sisi berikut: a-2, a-3, b-1, b-3, c-1, c-2, c-4, c-5, d-3, d-5, e-3, e-4, e-5, e-6, f-5, dan f-6. Di antaranya, sisi a-3, b-1, c-2, e-4, dan f-5 ditampilkan dengan garis tebal.

4.

Dua keluarga terkaya di Westeros memutuskan menjalin persekutuan melalui pernikahan. Keluarga pertama memiliki 10 putra dan keluarga kedua memiliki 10 putri. Usia anak-anak dalam kedua keluarga tersebut saling bersesuaian. Untuk menghindari ketidakpatutan, kedua keluarga menetapkan bahwa setiap anak harus menikah dengan seseorang yang seusia, atau dengan seseorang yang satu tingkat lebih muda atau lebih tua. Graf yang merepresentasikan pernikahan yang dapat diterima adalah sebagai berikut:
Sebuah graf bipartit dengan 20 simpul yang terbagi ke dalam dua himpunan beranggotakan sepuluh simpul. Setiap simpul pada baris atas bertetangga dengan simpul yang tepat berada di bawahnya, serta dengan simpul bawah yang berjarak satu posisi ke kiri atau ke kanan.
Pertanyaannya adalah: berapa banyak susunan pernikahan berbeda yang dapat diterima untuk menikahkan seluruh 20 anak tersebut?
  1. Berapa banyak susunan pernikahan yang mungkin jika disyaratkan bahwa tepat 6 putra menikahi putri yang tidak seusia dengannya?
  2. Dapatkah Anda menggeneralisasi jawaban sebelumnya untuk memperoleh jumlah seluruh susunan pernikahan?
  3. Bagaimana Anda mengetahui bahwa jawaban Anda benar? Cobalah menghitung dengan cara lain. Perhatikan ukuran keluarga yang lebih kecil dan peroleh suatu barisan.
  4. Dapatkah Anda memberikan relasi rekurensi yang sesuai dengan masalah ini?

5.

Suatu himpunan simpul \(A \subseteq V\) disebut penutup simpul jika setiap sisi graf bersisian dengan suatu simpul dalam penutup tersebut (jadi, penutup simpul menutupi sisi-sisi). Karena \(V\) sendiri merupakan penutup simpul, setiap graf memiliki penutup simpul. Pertanyaan yang menarik adalah bagaimana menemukan penutup simpul minimum, yaitu penutup yang menggunakan sesedikit mungkin simpul.
  1. Misalkan Anda memiliki suatu pencocokan pada sebuah graf. Bagaimana pencocokan itu dapat digunakan untuk memperoleh penutup simpul minimum? Apakah metode Anda selalu berhasil?
  2. Misalkan Anda memiliki penutup simpul minimum untuk suatu graf. Bagaimana penutup tersebut dapat digunakan untuk memperoleh pencocokan parsial? Apakah metode Anda selalu berhasil?
  3. Apakah hubungan antara ukuran penutup simpul minimum dan ukuran pencocokan parsial maksimum dalam suatu graf?

6.

Dalam banyak penerapan pencocokan, penggunaan graf bipartit merupakan pilihan yang wajar. Namun, Anda mungkin bertanya-tanya apakah terdapat cara untuk menemukan pencocokan pada graf secara umum.
  1. Untuk nilai \(n\) manakah graf lengkap \(K_n\) memiliki pencocokan?
  2. Buktikan bahwa jika suatu graf memiliki pencocokan, maka \(\card{V}\) genap.
  3. Apakah konversnya benar? Dengan kata lain, apakah semua graf dengan \(\card{V}\) genap memiliki pencocokan?
  4. Bagaimana jika kita juga mensyaratkan kondisi pencocokan? Buktikan atau bantah: Jika suatu graf dengan jumlah simpul genap memenuhi \(\card{N(S)} \ge \card{S}\) untuk semua \(S \subseteq V\text{,}\) maka graf tersebut memiliki pencocokan.