Saya mencoba untuk menemukan Set Independen Maksimum dari Grafik Biparite.
Saya menemukan yang berikut dalam beberapa catatan "13 Mei 1998 - University of Washington - CSE 521 - Aplikasi aliran jaringan" :
Masalah:
Mengingat bipartit grafik , menemukan set independen yang sebagai besar mungkin, di mana dan . Suatu himpunan bebas jika tidak ada tepi antara elemen himpunan.
Larutan:
Buat grafik aliran pada simpul . Untuk setiap tepi ada tepi kapasitas tak terbatas dari ke . Untuk setiap , ada tepi kapasitas unit dari ke , dan untuk setiap , ada tepi kapasitas unit dari ke .
Cari memotong kapasitas terbatas , dengan dan . Mari dan . Himpunan independen karena tidak ada tepi kapasitas tak terbatas yang melintasi potongan. Ukuran potongannya adalah. Ini, untuk membuat set independen sebesar mungkin, kami membuat potongan sekecil mungkin.
Jadi mari kita ambil ini sebagai grafik:
A - B - C
|
D - E - F
Kita dapat membagi ini menjadi grafik bipartit sebagai berikut
Kita bisa melihat dengan pencarian brute force bahwa satu-satunya maksimum Independen Set . Mari kita coba dan bekerja melalui solusi di atas:
Jadi matriks adjacency network flow yang dibangun adalah:
Di sinilah saya terjebak, pemangkasan kapasitas hingga terkecil yang saya lihat adalah yang sepele: dengan kapasitas 3.
Menggunakan potongan ini mengarah ke solusi yang salah:
Padahal kita mengharapkan ? Adakah yang bisa menemukan kesalahan saya di tempat saya bekerja?
sumber
Jawaban:
Komplemen dari set independen maksimum adalah penutup simpul minimum.
Untuk menemukan penutup simpul minimum dalam grafik bipartit, lihat teorema König .
sumber
Solusi yang diberikan jelas salah, karena Anda menunjukkan dengan contoh-balik. Perhatikan bahwa grafik U + V adalah komponen yang terhubung oleh tepi berkapasitas tak terbatas. Oleh karena itu setiap potongan yang valid harus mengandung semua A, B, C, D, E, F di sisi yang sama.
Mencoba melacak kembali dari mana solusinya datang: http://www.cs.washington.edu/education/courses/cse521/01sp/flownotes.pdf mengutip Aliran Jaringan, oleh Ahuja, Magnanti, dan Orlin untuk beberapa masalah. Buku ini tidak memiliki hak cipta dan dapat diunduh dari http://archive.org/details/networkflows00ahuj tetapi tampaknya tidak mengandung masalah dan solusi ini (mencari setiap kemunculan "bipartite").
Perhatikan bahwa paragraf penjelasan dari solusi tidak menunjukkan bahwa potongan terkecil dari grafik yang dibuatnya sesuai dengan set independen maksimum . Itu hanya menunjukkan cara untuk mendapatkan perangkat independen.
Namun, Anda dapat melihat apa yang coba dilakukan algoritma. Berikut adalah apa yang terkait dengan set independen maksimum aktual dalam hal potongannya:
Tepi kapasitas tak terbatas yang mematahkan algoritma ditekankan.
Saya tidak yakin bagaimana cara memperbaiki algoritma untuk apa yang dimaksudkan. Mungkin biaya dari tepi tanpa batas harus nol jika mundur (yaitu kemana arah dari S ke T, tetapi melintasi dari sisi-t ke sisi-s)? Tetapi apakah masih mudah untuk menemukan min-cut / max-flow dengan nonlinier ini? Juga, memikirkan cara untuk menjembatani dari solusi @Jukka Suomela ke algoritma dari pertanyaan, ada kesulitan di mana kita beralih dari pencocokan maksimum ke penutup simpul minimum: sementara menemukan pencocokan maksimum dapat dilakukan oleh aliran-max Algoritma-like, bagaimana Anda memulihkan penutup simpul minimum dari itu menggunakan algoritma seperti aliran? Seperti dijelaskan di sini, setelah pencocokan maksimum ditemukan, tepi antara U dan V menjadi diarahkan untuk menemukan penutup simpul minimum. Jadi, sekali lagi, ini tidak menunjukkan bahwa aplikasi sederhana dari min-cut / max-flow adalah semua yang diperlukan untuk menyelesaikan masalah ini.
sumber
sumber
Pemotongan harus pada aliran aktual, bukan pada kapasitas. Karena aliran dari s adalah terbatas, setiap potongan {S, T} akan terbatas. Selebihnya dijelaskan di atas.
sumber
sumber