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)=aw(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.

Kucing Unfun
sumber
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|Gw(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 PGPG

  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
    Pw(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 .Pw(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
Raphael
sumber
Saya belum dapat menemukan bukti bahwaadalah terkecil yang ini bekerja. Saya akan memikirkannya lagi. a=|E|a
Raphael