Untuk masalah aliran maksimum , tampaknya ada sejumlah algoritma yang sangat canggih, dengan setidaknya satu dikembangkan baru-baru ini tahun lalu. Max Orlin mengalir dalam waktu O (mn) atau lebih baik memberikan algoritma yang berjalan dalam O (VE).
Di sisi lain, algoritma yang paling sering saya lihat diimplementasikan adalah (Saya tidak mengklaim telah melakukan pencarian lengkap; ini hanya dari pengamatan biasa):
- Edmonds-Karp: ,
- Push-relabel: atau menggunakan pilihan vertex FIFO,
- Algoritma Dinic: .
Apakah algoritma dengan waktu berjalan asimptotik yang lebih baik tidak praktis untuk ukuran masalah di dunia nyata? Juga, saya melihat "Dynamic Trees" terlibat dalam beberapa algoritma; apakah ini pernah digunakan dalam praktek?
Catatan: pertanyaan ini awalnya ditanyakan pada stack overflow, di sini , tapi saya diberitahu akan lebih cocok di sini.
EDIT : Saya mengajukan pertanyaan terkait pada cs.stackexchange , khususnya tentang algoritme yang menggunakan pohon dinamis (alias pohon potongan tautan), yang mungkin menarik bagi orang yang mengikuti pertanyaan ini.
sumber
Jawaban:
Saya adalah salah satu penulis makalah yang ditautkan di atas.
Hanya ingin menyebutkan bahwa kami menggunakan `` state-of-the-art '' untuk mengartikan algoritme (dengan implementasi yang tersedia untuk umum) yang berkinerja baik pada instance aliran-max yang muncul dalam visi komputer.
Saya juga ingin menambahkan bahwa dalam konteks yang sempit (namun praktis), seringkali algoritma yang berkinerja baik adalah yang dengan jaminan teoritis yang buruk. Misalnya, ref [5] dari makalah kami (algoritma Boykov-Kolmogorov) banyak digunakan dalam komunitas visi komputer, tetapi tidak memiliki batas runtime polytime yang kuat.
Akhirnya, jika ada yang tertarik, data dari eksperimen kami tersedia di sini: http://ttic.uchicago.edu/~dbatra/research/mfcomp/index.html
Kode juga akan segera tersedia.
sumber
ada beberapa cara untuk menjawab pertanyaan ini tetapi belum tentu jawaban konsensus. umumnya algoritma yang telah diterapkan dan dirilis untuk distribusi publik adalah "praktis". namun, beberapa algoritme yang telah dirancang tetapi belum diimplementasikan mungkin praktis tetapi "juri sudah keluar" untuk berbicara. **
strategi yang baik untuk tujuan praktis adalah mencari survei. juga bagi mereka yang tertarik pada algoritma praktis, tolok ukur terhadap data dunia nyata dapat menjadi pedoman yang sangat baik untuk perilaku "dunia nyata" yang mereka harapkan.
survei pembandingan bisa mencukupi tetapi akan keliru di sisi algoritma yang layak. ini adalah, analisis empiris baru-baru ini menyeluruh dari 14 algoritma aliran "state-of-the-art" yang diperbandingkan secara empiris versus contoh pemrosesan penglihatan, di mana aliran max memiliki banyak aplikasi. "state of the art" diambil untuk merujuk ke algoritma "diimplementasikan".
[1] MaxFlow Revisited: Perbandingan Empiris Algoritma Maxflow untuk Masalah Penglihatan Padat oleh Verma dan Batra, 2012
** beberapa algoritma teoretis berada dalam kategori yang semakin meningkat di komunitas TCS yang secara informal disebut sebagai "galactic" tetapi sayangnya, penulis TCS saat ini tidak secara langsung melabeli algoritma mereka sendiri dalam kategori ini, dan tidak ada kriteria yang dipublikasikan atau diterima secara umum untuk Algoritma "galactic", meskipun ada referensi di blog .
kepraktisan dalam pengertian ini mungkin merupakan dimensi baru yang muncul untuk studi teoritis. idealnya akan ada survei algoritma aliran maks khusus pada sumbu / kriteria "praktis" ini, tetapi kemungkinan itu tidak ada pada saat penulisan. ini adalah konsep yang lebih baru diakui / diakui dalam TCS yang belum diformalkan secara menyeluruh (tidak seperti misalnya penerimaan luas algoritma P sebagai "efisien").
sumber
Anda mungkin tertarik dalam Aliran Maksimum dengan Penambahan Pertama-Luas dengan Pencarian Pertama oleh Goldberg, Hed, Kaplan, Tarjan, dan Werneck
http://research.microsoft.com/pubs/150437/ibfs-proc.pdf http://www.cs.tau.ac.il/~sagihed/ibfs/
sumber