Ford-Fulkerson dapat menemukan aliran yang jarang dalam waktu linier dalam ukuran aliran dan jumlah node jika tepi memiliki kapasitas unit.
Bagaimana saya bisa menggunakan aliran st sparse untuk menemukan st min-cut dalam waktu sebanding dengan ukuran aliran dan jumlah node saya, untuk kasus max-flow volume rendah / volume rendah?
graph-algorithms
max-flow
max-flow-min-cut
Elliot JJ
sumber
sumber
Jawaban:
Jika Anda tidak menggunakan alur per se, tetapi gunakan algoritma Ford-Fulkerson (atau versi tertentu, seperti Edmonds-Karp), Anda bisa mendapatkan max-flow dan min-cut secara langsung sebagai hasilnya. Saat mencari jalur pembesaran, Anda melakukan traversal, di mana Anda menggunakan beberapa bentuk antrian dari simpul yang belum dikunjungi (dalam versi Edmonds-Karp, Anda menggunakan BFS, yang berarti antrian FIFO). Dalam iterasi terakhir, Anda tidak dapat mencapai dari (bagaimanapun, ini adalah kriteria terminasi). Pada titik ini, himpunan node yang Anda capai membentuk bagian- dari potongan, sedangkan node yang Anda tidak mencapai membentuk bagian- .t s s t
Node daun dari pohon traversal Anda membentuk "pinggiran" dari -part, sedangkan node dalam antrian traversal Anda membentuk pinggiran -part, dan apa yang Anda inginkan adalah himpunan tepi dari pinggiran ke pinggiran Ini juga dapat dengan mudah dipertahankan selama traversal: Cukup tambahkan tepi pada potongan ketika diperiksa, dan mengarah ke simpul yang belum dikunjungi, dan menghapusnya jika dilintasi (sehingga targetnya menjadi dikunjungi). Kemudian, setelah Ford-Fulkerson selesai, Anda akan memiliki min-cut Anda (atau, lebih tepatnya, salah satunya) di sana. Waktu berjalan akan (asimtotik) identik dengan Ford-Fulkerson (atau Edmonds-Karp atau versi apa pun yang Anda gunakan), yang akan memberi Anda apa yang Anda cari.s t s t
sumber
Apakah ada referensi cepat untuk definisi aliran jarang?
Dalam kasus umum, memiliki max-flow cukup mudah untuk menentukan min-cut, melalui teorema max-flow, min-cut. Tepi-tepi yang sepenuhnya jenuh membentuk set cut, jadi dengan memilih satu simpul untuk setiap tepi tersebut, seseorang dapat membentuk min-cut. Sepele, ini adalah O (m) dalam kasus terburuk, dan juga jika seseorang membuat waktu berjalan keluaran-sensitif, maka jumlah tepi dalam aliran atau bahkan lebih baik, jumlah tepi jenuh dalam aliran, selalu merupakan bagian atas terikat pada waktu berjalan dari algoritma untuk menemukan min-cut dari max-flow. Jadi jika Anda memiliki modifikasi yang menemukan aliran ses dalam waktu linier dalam ukuran aliran, menemukan potongan minimum tidak akan mengubah runtime algoritma secara asimptotik.
sumber