Berkat teorema min-cut max-flow, kami tahu bahwa kami dapat menggunakan algoritma apa pun untuk menghitung aliran maksimum dalam grafik jaringan untuk menghitung a -min-cut. Oleh karena itu, kompleksitas penghitungan potongan minimum ( s , t ) tidak lebih dari kompleksitas penghitungan aliran maksimum ( s , t ) .
Mungkinkah itu kurang? Mungkinkah ada algoritma untuk menghitung potongan minimum yang lebih cepat daripada algoritma max-flow?
Saya mencoba menemukan pengurangan untuk mengurangi masalah ) -max-flow ke masalah ( s , t ) -min-cut, tapi saya tidak dapat menemukannya. Pikiran pertama saya adalah menggunakan algoritma divide-and-menaklukkan: pertama-tama menemukan sebuah min-cut, yang memisahkan grafik menjadi dua bagian; sekarang secara rekursif temukan aliran maksimum untuk bagian kiri dan aliran maksimum untuk bagian kanan, dan gabungkan keduanya dengan semua ujung yang memotong potongan. Ini memang akan bekerja untuk menghasilkan aliran maksimum, tetapi waktu berjalan terburuk mungkin sebanyak O ( | V | ) kali lebih besar dari waktu berjalan dari algoritma min-cut. Apakah ada pengurangan yang lebih baik?
Saya menyadari teorema min-cut max-flow menunjukkan bahwa kompleksitas menghitung nilai max-flow sama dengan kompleksitas menghitung kapasitas min-cut, tetapi bukan itu yang saya tanyakan. Saya bertanya tentang masalah menemukan aliran maksimum dan menemukan pemotongan minimum (secara eksplisit).
Ini sangat terkait dengan Hitung aliran maksimum dari pemotongan minimum , kecuali: (1) Saya bersedia mengizinkan pengurangan Cook (pengurangan Turing), bukan hanya pengurangan Karp (banyak-satu reduksi), dan (2) mungkin dengan diberikan kita dapat menemukan beberapa grafik G ′ sedemikian sehingga min-cut G ′ membuatnya mudah untuk menghitung aliran maksimum G , yang merupakan sesuatu yang berada di luar ruang lingkup untuk pertanyaan lainnya.
Jawaban:
Berikut adalah pendekatan yang mungkin:
sumber