Anda dapat memodifikasi grafik apa pun sehingga Dijkstra's menemukan solusinya dengan jumlah tepi minimal sebagai berikut:
Lipat gandakan setiap bobot tepi dengan angka , lalu tambahkan ke bobot untuk menghukum setiap tepi tambahan dalam solusi, yaitu
Ini tidak bekerja untuk semua nilai ; perlu setidaknya agar ini berfungsi. Jika bukan angka minimum ini, itu mungkin tidak memilih jalur terpendek. Bagaimana cara menemukan nilai minimum ini ?
Ps. Ini dilakukan secara rekreasional, saya sudah selesai mengerjakan PR.
algorithms
graph-theory
shortest-path
Kucing Unfun
sumber
sumber
Jawaban:
Diberikan grafik , kami mendefinisikan dengan mana untuk beberapa seperti yang diusulkan dalam komentar pertanyaan.G=(V,E,w) G′=(V,E,w′) w′(e)=aw(e)+1 a=|E|+ε ε≥0
Lemma mengikuti langsung dari definisi .w′
Panggil hasil Dijkstra pada , yang merupakan jalur terpendek di . Asumsikan bukanlah jalur terpendek dengan tepi paling sedikit (antara semua jalur terpendek) di . Ini bisa terjadi dalam satu dari dua cara.G′ P G′ P G
Lalu, ada jalan terpendek lain - yaitu - dengan. Ini menyiratkan bahwa oleh lemma di atas, yang sekali lagi bertentangan bahwa adalah jalur terpendek dalam .
Karena kedua kasus telah menyebabkan kontradiksi, memang jalur terpendek dengan tepi paling sedikit dalam .P G
Itu mencakup setengah dari proposisi. Bagaimana, yaitu dengan ?a<|E| a=|E|−ε ε∈(0,|E|)
sumber