Saya sedang melakukan latihan pemrograman yang dinamis dan menemukan algoritma Floyd-Warshall. Tampaknya ia menemukan semua-pasangan jalur terpendek untuk grafik yang dapat memiliki tepi bobot negatif, tetapi tidak ada siklus negatif.
Jadi, saya bertanya-tanya apa arti dunia nyata dari tepi bobot negatif? Penjelasan bahasa Inggris yang sederhana akan sangat membantu.
algorithms
graph-theory
c2h5oh
sumber
sumber
Jawaban:
Saeed Amiri telah memberikan contoh yang sangat baik dalam komentar: bobot pada sisi dapat mewakili apa pun di dunia nyata, misalnya, jumlah uang yang akan ditransfer dari satu akun ke akun lain. Jumlahnya bisa positif atau negatif. Misalnya, jika Anda ingin beralih dari ke b dalam grafik Anda sambil kehilangan uang seminimal mungkin (jalur terpendek), maka Anda dapat mempertimbangkan bobot negatif. Untuk lebih lanjut, lihat bab buku ini .Sebuah b
Selain itu, ada banyak lagi aplikasi. Bobot negatif tergantung pada apa yang Anda modelkan. Sebagai contoh, perhatikan grafik ini
Kimia: Bobot dapat digunakan untuk mewakili panas yang dihasilkan selama reaksi kimia. (Mode: senyawa, ujung : jika senyawa v dapat diperoleh ("dikurangi secara kimia") dari u . Dalam grafik ini: Anda menghasilkan 4 kJ untuk mengonversi s - a dan 2 kJ untuk mengonversi a ke t . Anda perlu 5 kJ untuk mendapatkan kembali s dari t .ekamu v v kamu 4 s - a 2 Sebuah t 5 s t
Kehidupan Nyata: Pikirkan seorang pengemudi, yang dibayar untuk mengusir atasannya dari ke t tetapi ia membayar antara a dan b (katakanlah bepergian antara rumah dan tempat kerjanya).s t Sebuah b
Game: Misalkan Anda bermain gunting kertas batu untuk uang. Node: batu, kertas, gunting. Tepi: hubungan apa pun (klik). Bobot: taruhan. Dalam grafik ini: (lupakan tentang ), di sini, s beat a , a beat be dan t beats s , dan masing-masing menang 4,2, -5.b s Sebuah Sebuah t t s
sumber
Saya bukan orang kimia tetapi saya pikir contoh ini akan berguna untuk membantu Anda berpikir tentang prosesor, teori jaringan dan hal-hal terkait ..
Pertimbangkan perilaku simulasi grafik dari molekul dalam reaksi kimia yaitu jalur mana yang dapat diambil selama reaksi dan bobot mewakili energi yang diserap atau dilepaskan dalam transisi, jadi jika kita ingin energi keluar dari reaksi, kita mewakili energi yang dilepaskan dengan + ve berat dan diserap energi dengan -ve.
sumber
Tepi negatif hanyalah tepi yang memiliki bobot negatif. Bisa dalam konteks apa pun yang berkaitan dengan grafik dan apa yang dimaksud tepi. Sebagai contoh, CD tepi pada grafik di atas adalah tepi negatif. Floyd-Warshall bekerja dengan meminimalkan bobot di antara setiap pasangan grafik, jika memungkinkan. Jadi, untuk bobot negatif Anda cukup melakukan perhitungan seperti yang Anda lakukan untuk bobot positif.
Masalah muncul ketika ada siklus negatif. Lihatlah grafik di atas. Dan tanyakan pada diri Anda pertanyaan - apa jalan terpendek antara A dan E? Anda mungkin pada awalnya merasa seakan-akan ABCE harganya 6 (2 + 1 + 3). Tetapi sebenarnya, dengan melihat lebih dalam, Anda akan mengamati siklus negatif, yaitu BCD. Berat BCD adalah 1 + (- 4) +2 = (-1). Sambil melintasi dari A ke E, saya bisa terus bersepeda di dalam BCD untuk mengurangi biaya saya sebesar 1 setiap kali. Seperti, jalur A (BCD) BCE biaya 5 (2 + (- 1) + 1 + 3). Mengulangi siklus kali tak terbatas akan terus mengurangi biaya sebesar 1 setiap kali. Saya bisa mencapai jalur terpendek negatif tak terbatas antara A dan E.
Masalahnya jelas untuk setiap siklus negatif dalam grafik. Oleh karena itu, setiap kali siklus negatif hadir, bobot minimum tidak ditentukan atau infinity negatif, sehingga Floyd-Warshall tidak dapat bekerja dalam kasus seperti itu.
Sebagai tambahan, Anda mungkin ingin melihat pada Algoritma Bellman-Ford yang mendeteksi apakah grafik memiliki siklus negatif atau tidak dan mengembalikan jalur terpendek antara dua node.
sumber
Sebagai contoh, bayangkan sebuah jaringan logistik di mana bobot w (i, j) dari edge ij adalah biaya untuk berpindah dari vertex i ke vertex j. Jika Anda membuat perjanjian bisnis dengan perusahaan lain untuk mengangkut produk mereka, w (i, j) akan lebih menguntungkan daripada biaya, sehingga Anda dapat mengartikan bobot ini sebagai biaya negatif.
sumber
Kemacetan lalu lintas di peta:
Salah satu contoh dunia nyata lain dari mengaitkan bobot ke tepian dapat berupa bobot yang mewakili kondisi lalu lintas di peta (lebih negatif, lebih tidak menguntungkan) - kita kemudian dapat menggunakan representasi ini untuk menghitung jarak optimal.
Kita benar-benar dapat menggunakan metafora "bobot" untuk mewakili sesuatu yang bernilai positif / negatif antara dua titik dalam grafik
sumber