Dijkstra mendukung solusi dengan jumlah tepi terkecil jika beberapa jalur memiliki bobot yang sama


9

Anda dapat memodifikasi grafik apa pun sehingga Dijkstra's menemukan solusinya dengan jumlah tepi minimal sebagai berikut:G

Lipat gandakan setiap bobot tepi dengan angka a , lalu tambahkan 1 ke bobot untuk menghukum setiap tepi tambahan dalam solusi, yaitu

w′(u,v)=a∗w(u,v)+1

Ini tidak bekerja untuk semua nilai a ; a perlu setidaknya x agar ini berfungsi. Jika a bukan angka minimum ini, itu mungkin tidak memilih jalur terpendek. Bagaimana cara menemukan nilai minimum ini x ?

Ps. Ini dilakukan secara rekreasional, saya sudah selesai mengerjakan PR.


Jika dua jalur memiliki bobot yang sama, jalur dengan tepi paling sedikit harus dipilih. Maaf. Saya melihat bahwa saya tidak menjelaskannya.
— The Unfun Cat

1
Anda juga bisa melakukannya dengan menambahkan ke semua bobot tepi, di mana , m = berat tepi minimum, e = jumlah tepi di jalur terpendek (atau bahkan keseluruhan, jika Anda tidak tahu jalur terpendek panjangnya) . ϵϵ<m/e
— BlueRaja - Danny Pflughoeft

1
Berita gembira yang menarik, terima kasih. Harus melihatnya.
— The Unfun Cat

Jawaban:


5

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)+1a=|E|+εε≥0

Lema
Misalkan jalan di dengan biaya , yaitu . Kemudian, memiliki biayadalam , yaitu.PGCw(P)=CPaC+|P|G′w′(P)=aC+|P|

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′ PG′PG

  1. P bukan jalur terpendek di . Lalu, ada jalur dengan . Sebagai , ini berarti juga dengan lemma with di atas. Ini bertentangan dengan yang dipilih sebagai jalur terpendek dalam .G
    P′w(P′)<w(P)|P|,|P′|≤|E|≤aw′(P′)<w′(P)PG′
  2. P adalah jalur terpendek tetapi ada jalur terpendek dengan tepi lebih sedikit.
    Lalu, ada jalan terpendek lain - yaitu - dengan. Ini menyiratkan bahwa oleh lemma di atas, yang sekali lagi bertentangan bahwa adalah jalur terpendek dalam .P′w(P)=w(P′)|P′|<|P|w′(P′)<w′(P)PG′

Karena kedua kasus telah menyebabkan kontradiksi, memang jalur terpendek dengan tepi paling sedikit dalam .PG


Itu mencakup setengah dari proposisi. Bagaimana, yaitu dengan ?a<|E|a=|E|−εε∈(0,|E|)


  1. Sebenarnya, kami juga membutuhkan atau semua beban di adalah bilangan bulat. Kalau tidak, tidak menyebabkan bobot dalam setidaknyaselain. Ini bukan pembatasan, meskipun; kita selalu dapat mengukur dengan faktor konstan sehingga semua bobot bilangan bulat, dengan asumsi kita mulai dengan bobot rasional.aGw(P′)<w(P)G′|E|w

Saya belum dapat menemukan bukti bahwaadalah terkecil yang ini bekerja. Saya akan memikirkannya lagi. a=|E|a
— Raphael
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.