Mengingat grafik diarahkan dan dua simpul . Sepasang jalur sederhana dari ke adalah edge disjoint jika mereka tidak berbagi edge.
Menggunakan aliran maks, mudah untuk memutuskan apakah ada sepasang jalur disjoint ujung dari ke . Sekarang, apakah ada algoritma waktu tunda polinomial untuk menghitung semua pasangan jalur disjoint tepi dari ke ?
Jawaban:
Saya percaya jawaban Artem Kaznatcheev benar, tetapi tidak memberikan ruang polinomial. Jadi, inilah pendekatan berbeda yang seharusnya bekerja sedikit lebih baik dalam hal itu.
Dengan menggunakan aliran maks, mungkin untuk menyelesaikan masalah yang sedikit lebih umum: temukan sepasang jalur penjaluran tepi dari beberapa dua simpul {s1, s2} ke beberapa simpul lain {t1, t2}, tetapi tanpa mengendalikan sumber simpul mana yang terhubung ke titik tujuan.
Misalkan kita memiliki grafik G dan simpul s1, s2, t1, t2 yang ingin kita daftarkan semua pasangan jalur. Temukan satu pasangan jalur P1, P2, dan biarkan e = (s1, v) menjadi tepi pertama di salah satu jalur tersebut. Kemudian kita dapat membagi ruang masalah menjadi dua sub-masalah: pasangan jalur yang menggunakan e sama dengan jalur dari {v, s2} ke {t1, t2} di G-s1, dan pasangan jalur yang tidak menggunakan e sama dengan jalur dari {s1, s2} ke {t1, t2} di Ge. Berulang di kedua subproblem ini, dan (untuk menghindari duplikasi) hanya melaporkan jalan ketika Anda berada di bagian bawah rekursi.
sumber
Ini adalah pertama kalinya saya membaca tentang algoritma penundaan polinomial, jadi saya tidak 100% yakin dengan jawaban saya, tapi saya pikir sesuatu seperti berikut ini akan berfungsi.
Pilih beberapa konvensi untuk mewakili jalur yang memiliki total pemesanan alami didefinisikan di atasnya. (Salah satu contoh akan hanya untuk daftar simpul dari jalur dan memesan secara leksikografis). Pilih struktur data in-place yang mendukung pencarian logaritmik dan masukkan (katakan pohon merah-hitam). Biarkan menjadi grafik Anda< D G
Tentukan algoritma :F
(di sini berarti referensi ke datastructure inplace )∗D D
Jika tidak di .(P,Q) D
2.1. Masukkan ke (dan hasilkan jika Anda mengira akan keluar saat algoritma berjalan).(P,Q) D
2.2. Untuk setiap tepi jalankanuv∈E(P∪Q) F(s,t,G−{uv},∗D)
sumber
sumber