Table of Contents
Memahami Masalah Jalan Terpendek Semua Air-Pair
Masalah alineal all-pairs shorted path (APSP) mencari jarak terpendek antara setiap pasangan vertices dalam grafik berbobot.Ini adalah tantangan mendasar dalam teori grafik dengan implikasi langsung untuk desain jaringan, optimisasi arus lalu lintas, analisis jaringan sosial, dan logistik. Tidak seperti masalah jalur terpendek sumber tunggal, memecahkan APSP membutuhkan jarak komputasi dari setiap verteks ke semua lainnya, yang skalanya secara kuadrasi dengan jumlah node.
Pompa umum mengakrabkan masalah ini tetapi perdagangan muka ⁇ offs. Floyd-Warshall, sebuah algoritma pemrograman dinamis, bekerja pada grafik padat tetapi berjalan dalam O(V]3]3] waktu dan tidak dapat menangani siklus berat negatif. Algoritma Dijkstra, ketika dijalankan dari setiap vertex, mencapai [E + V log V)] dengan tumpukan biner, tetapi gagal pada grafik negatif. Untuk grafik, Johnson bridges dengan baik dengan kombinasi metode yang tidak disetujui oleh kedua siklus negatif.
Perbandingan Algoritma Umum
Untuk menghargai algoritma Johnson, ia membantu kontras dengan pemecah APSP yang paling sering digunakan:
- [5]UGNOFLT:0]]Floyd-Warshall]] ⁇ Sederhana untuk diimplementasikan, menggunakan matriks jarak 2D, pembaruan melalui loop triple. Bekerja pada tepi negatif tetapi bukan siklus negatif. Impraktikal untuk grafik dengan ribuan vertik karena waktu kubik.
- [(1)(1)(1)(1)][(1)]Repeated Dijkstra ⁇ Menjalankan Dijkstra dari setiap verteks. Puasa pada grafik sparse (O(V E log V) menggunakan tumpukan Fibonacci), tetapi dibatasi untuk berat non-negatif.
- ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- Algoritme [Ghar Grond][GALAZ]]] ⁇ Reweights the graf sehingga semua tepi menjadi non-negatif, kemudian berlaku berulang Dijkstra. Ini menghasilkan O(V E + V]2] log V) dengan tumpukan biner, menjadikannya pilihan yang disukai untuk grafik sparse dengan berat negatif.
Karya Algoritma karya Johnson
Algoritme milik Waski Johnson dengan cerdik mengubah sebuah graf yang mengandung tepi negatif menjadi satu dengan hanya berat tepi yang tidak ⁇ negatif, melestarikan struktur jalur terpendek. Transformasi ini bergantung pada sebuah fungsi potensial berasal dari jangka tunggal Bellman ⁇ Ford. Setelah diberatkan kembali, algoritme Dijkstra dapat digunakan dari setiap node dengan aman. Algoritma terdiri dari empat langkah.
Langkah 1: Menambah Node Sumber Super
Sebuah verteks baru everex s ditambahkan ke grafik, terhubung ke setiap verteks yang ada dengan tepi berat 0. Node tambahan ini tidak mengubah jarak jalur terpendek karena setiap jalur yang menggunakan s[ dapat ditambahkan tanpa biaya.
Langkah Pustaka 2: Mengkomputasikan Fungsi Potensial dengan Bellman-Ford
Jalankan algoritma Bellman ⁇ Ford dari sumber super s. Karena s[ memiliki ujung kelas-nol ke semua vertike, algoritme menghitung jarak terpendek h(v)] dari ss ke setiap verteks v]. Jarak ini berfungsi sebagai potensial. Jika sebuah siklus negatif terdeteksi selama grafik ini dijalankan, dan Johnson melaporkan bahwa tidak ada jalan terpendek.
Langkah ke - 3: Mematasi kembali Grafiknya
AFLT menggunakan potensi h(v)]], setiap ujung (u, v) dengan berat asli w(u, v) diberatkan kembali ke:
[[GALALT:0]]w'(u, v) = w(u, v) + h(u) ⁇ h(v)
Transformasi ini menjamin bahwa setiap berat tepi yang diberatkan kembali tidak ⁇ negatif. Bukti bergantung pada ketidaksamaan segitiga: karena h(v) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
Langkah Kelelahan 4: Menjalankan Algoritma Dijkstra dari Setiap Verteks
Dengan graf yang diberatkan kembali yang hanya mengandung tepi non ⁇ negatif, algoritme Dijkstra dijalankan sekali dari setiap verteks. Setiap lari menghitung jarak terpendek ke semua vertik lain. Jarak yang dihasilkan kemudian dikonversi kembali ke berat tepi asli menggunakan rumus:
[[GALALT:0]]distoriginal(u, v)= dist[reweighted(u, v) ⁇ h(u) + h(v)
Langkah akhir ini memastikan jarak yang dilaporkan tepat untuk grafik asli.
Perbandingan dan Analisis Kinerja dan Performance
Algoritma Zapanes Zapanes mencapai kompleksitas waktu secara keseluruhan dari O(V E + V] Log V)[ ketika diimplementasikan dengan antrian prioritas timbunan biner. Garis langkah Bellman ⁇ Ford berjalan dalam O(V E), dan garis tara V[T:7]] Dijkstra berjalan setiap mengambil [[FLT8]] O(E + V)[TFLTFL:5]], dan jalan yang lebih sederhana [TFL] untuk grafik padat ([FL]]]] [TFL]]]:[T1]], jalan yang lebih mudah digunakan [T1] [T1]], [T1]]]:1]]]] [T1]]]]], jalan pintas:[T]]]]]]:[T]]]]]]]]]]]: [R]], jalan:[T1]]]]]]]]]]]]]: [R]]]]]]]]]]]]]]: [
Memanfaatkan tumpukan Fibonacci dapat mengurangi bagian Dijkstra menjadi O(V E + V2 log V)[ teramortized, meskipun dalam praktik tumpukan biner lebih sederhana dan sering cukup cepat. Jejak memori adalah O(V]2])] untuk matriks jarak, tetapi ini dapat ditingkatkan dengan menyimpan hasil secara implisit.
Aplikasi Praktis Praktis
Algoritme yang dikerjakan oleh Johnson dipekerjakan dalam domain di mana tepi graf mungkin membawa biaya negatif dan semua jarak terpendek ⁇ pair diperlukan. Contoh nyata ⁇ dunia termasuk:
- routing jaringan:[pranala][pranala nonaktif] Jaringan routing: Penyedia layanan internet dan jaringan telekomunikasi menggunakan protokol routing terdistribusi yang harus secara adaptif menghitung jalur termurah antara dua router manapun, bahkan ketika biaya link berfluktuasi atau menjadi negatif (misalnya, karena kemacetan atau diskon kebijakan).
- Perencanaan transportasi URban: Pemetaan dan perusahaan logistik (misalnya, Google Maps, mesin routing OpenStreetMap) menghitung jalan terpendek antara banyak asal ⁇ pasangan penentuan untuk optimisasi armada. Berat negatif dapat memodelkan subsidi atau waktu ⁇ dasarkan diskon.
- [[EUGNOFLT:0]]Supply chain cost minimization: Dalam jaringan produksi multi ⁇ tahap, biaya dari satu node ke node lain mungkin negatif (misalnya, rebates). Algoritma Johnson menemukan rute yang paling menguntungkan di seluruh rantai pasokan.
- Analisis jaringan sosial:]Pengukuran sentralitas kedekatan atau antara sentralitas keterikatan memerlukan semua jarak ⁇ pair. Tepi negatif dapat mewakili \"teman ⁇ of ⁇ a ⁇ teman\" link diskon atau hubungan adversarial.
- Parameter [[ZOLT:0]]Economic input ⁇ output model: Model Leontief dan penganalisis aliran sering kali melibatkan koefisien negatif; Algoritma Johnson menghitung efek bersih dari propagansi perubahan melalui ekonomi yang saling berhubungan.
Untuk pembacaan lebih lanjut pada dasar matematika, lihat Wikipedia entri rinci dan kertas asli oleh Donald B. Johnson (1977). Sebuah implementasi praktis dalam Python dapat ditemukan pada NetworkX's GitHub repositori[, yang mencakup algoritme Johnson sebagai fungsi standar. Untuk pemahaman yang lebih dalam tentang teknik pengukur ulang, CP ⁇ Algoritms menyediakan langkah yang jelas dengan ⁇ langkah tutorial ⁇ ].
Kekecualian Kesimpulan
Algoritme yang menonjol oleh Zolubriles adalah solusi yang elegan dan praktis untuk semua masalah jalur terpendek manakala berat tepi negatif hadir. Dengan menggabungkan keteguhan Bellman ⁇ Ford (untuk mendeteksi siklus negatif dan potensi komputasi) dengan kecepatan Dijkstra (untuk grafik non ⁇ negatif), ia mencapai kinerja yang sangat baik pada jaringan sparse. Teknik pengukur ulang itu sendiri adalah penerapan yang indah dari fungsi potensial ⁇ sebuah konsep yang memanjang dengan baik melampaui jalur terpendek ke daerah seperti aliran minimum ⁇ kost dan teori permainan algoritma.
Ketika dihadapi masalah APSP dunia nyata di mana grafik adalah jarang dan mungkin mengandung tepi negatif, algoritme Johnson harus menjadi pertimbangan pertama. Jaminan teoretisnya dan implementasi meluas di perpustakaan (misalnya, NetworkX, Boost Graph Library) membuatnya praktis untuk diadopsi.