All-Pairs En Kısa Yol Problemini Anlayın

Tüm boşlar en kısa yol (APSP) problem, her bir çiftdeki her bir sabit grafikte en kısa mesafeyi arar.Bu, ağ tasarımı, trafik akışı optimizasyonu, sosyal ağ analizi ve lojistik için doğrudan etkilerle grafik teorisinde temel bir meydan okumadır. tek kaynak kısa yol problemlerinin aksine, APSP, her bir veritabandan diğerine hesaplama mesafe gerektirir, ki bu da düğüm sayısına göre dörtlüdür.

Ortak yaklaşımlar bu sorunu ele alıyor ama ticaretle karşı karşıya. Floyd-Warshall, dinamik bir programlama algoritması, yoğun grafikler üzerinde çalışıyor, ancak her bir ttex'ten çalıştırıldığında, negatif devreler ile ilgili olarak (V[V)) ), ancak negatif kenar ağırlıkları ile grafiklerle ilgili başarısız oluyor.

Common Algorithms Karşılaştırması

Johnson'ın algoritmasını takdir etmek için, en sık kullanılan APSP çözümleyicilerini tersine çevirmeye yardımcı olur:

  • [FONT:0]Floyd-Warshall[DÜDÜT:1) – Basit uygulamak, üç döngü üzerinden güncellemek. Olumsuz kenarlarda çalışır, ancak negatif çevrimler için pratik değildir.
  • [FONT=0)Dijkstra[[DÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜDÜŞÜNÜDÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜye Olmayanlar, Ama İLGİLİZCE olmayan ağırlıklara karşı kısıtlanırlar.
  • [FONT:0)Bellman-Ford ( ⁇ ed))[Dönemli)[Dönler))[Dönler:0)[V).2[D[DDDDDD)[Dönemli: 4)[Düzücükler, her iki alternatiften daha yavaştır.
  • [FONT=0)Johnson'un Algoritma[DÜDÜDÜDÜDÜDÜŞÜNCÜDÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜŞÜNÜye Olmayanlar, O zaman tekrarlanan Dijkstra. Bu, negatif ağırlıklarla tekrarlanan, tekrarlanan Dijkstra. (V E + V)).[FLT: 5).

Johnson'ın Algoritma Çalışması Nasıl Çalışıyor

Johnson'ın algoritması, negatif kenarları yalnızca gereksiz olmayan kenar ağırlıkları olan bir grafik haline getirir, en kısa yolların yapısını korur.Bu dönüşüm bir şekilde alginç fonksiyonuna dayanır).

Adım 1: Super Source Node

Yeni bir VeritexÖRT:0)[Dönetici: 0. Bu ekstra node, 0. En kısa yol mesafelerini değiştirmez, çünkü kullanım şekli ) maliyet olmadan uygulanabilir.

2. Adım: Bellman-Ford ile Potansiyel Hesaplama Fonksiyonlları

Bellman-Ford algoritması süper kaynaktan çalıştırın:0)[Dönetici:0)[Dönetici:2)[Döneticiler[Döneticiler[Dönler)[Döneticiler[Dönler)[Dönler: 3 ) Bu mesafe, potansiyel bir işlev olarak algılanırsa, orijinal bir grafikte negatif bir döngü bulunur ve Johnson'ın her bir doğru yolu ile doğrulanmış yollara göre doğrulanmış herhangi bir algoritma rapor eder.

3. Adım: Grafikleri Yeniden Ağırlık

Potansiyelleri kullanarak:0)h (v))[v)[tr|küresel, v)[Düzücükler, s.)[D)[0|0|x|x|x|x|x|x|x|x|)[D)[D))[D)))

[0]0)w (u, v) = w (u, v) + h (u) – h (v)).

Bu dönüşüm, her yeniden ağırlıklandırılan kenar ağırlığının, non-negative olmadığını garanti eder. kanıt üçgen eşitsizliğine dayanır: çünkü 0) ≤ h(u) + w(u, v) ( ⁇ )[Dışkanlıkta herhangi bir iki nokta arasındaki en kısa yol, arka plandaki en kısa yol kalır.

Adım 4: Dijkstra'nın Algoritmalarını Her Vertex'ten Koşuyor

Sadece gereksiz kenarlar içeren rektüzlü grafiklerle, Dijkstra'nın algoritması her bir kez her bir Veritex'ten geçiyor.Her biri diğer tüm diğer tüm diğer tüm diğer tüm noktaları hesaplamalar yapıyor.

[FONT:0] [Dönetici[Dönetici:2)[0)[Dönetici[Döntilmişler[Dönemliler, s.)

Bu son adım, bildirilen mesafelerin orijinal grafikler için doğru olmasını sağlar.

Kompleksi ve Performans Analizi

Johnson'ın algoritması, ikili bir oap önceliği ile uygulanan genel bir zaman karmaşıklığı elde eder:0)O(V E + V[D)[Düzüğün V)[Düzüğün 3. katı)[Döneticileri)[değiştir | kaynağı değiştir] [Düzüğün 6.

Bir Fibonacci kullanarak Dijkstra'nın bölümünü dördüşün:0)O(V E + V)|D)[Dörtüncü)[Dörtüncü) için [[Dörtüncü sınıflanmış, ancak bu, sabit bir şekilde depolamak için geliştirilebilir.

Pratik Uygulama Pratik Uygulama Pratik Uygulama Pratik Uygulama

Johnson'ın algoritması, grafik kenarlarının negatif maliyetler taşıyabileceği ve tüm onsuz kısa mesafeler gerekli. Real-world örnekleri şunları içerir:

  • [[0) Ağ yönlendirmesi:[Dönetici:[Dönetici:0) Internet servis sağlayıcıları ve telekomünikasyon ağları, herhangi bir iki yönlendirici arasında en ucuz yolu adapte etmek, bağlantı maliyetleri dalgalanmak veya negatif hale geldiğinde bile (örneğin, kongestion veya politika indirimleri nedeniyle).
  • [FONT:0]Urban taşımacılık planlama:[Dönetici: Mapping ve lojistik şirketleri (örneğin, Google Maps, OpenStreetMap routing motorları) birçok kökenden gelen optimizasyon çiftleri arasındaki kısa yollar hesaplayabilir. Olumsuz ağırlıklar model sübvansiyonlar veya zaman bazlı indirimler olabilir.
  • [FONT:0)Supply zinciri minimizasyona mal oldu: Çok aşamalı üretim ağlarında, bir node'den diğerine maliyetler olumsuz olabilir (örneğin, rebates). Johnson'ın algoritması tüm tedarik zincirindeki en kârlı rotaları bulur.
  • [FONT:0]Sosyal ağ analizi: [Dönetici merkezi veya ayrım merkeziyet arasındaki mesafenin tüm boş mesafeler gerektirdiğini varsayar. Olumsuz kenarlar “arkadaş-of-a-arkadaş” indirim bağlantıları veya fakir ilişkileri temsil edebilir.
  • [FONT:0]Economic giriş- ⁇ modelleri: Leontief modelleri ve akış analizleri genellikle negatif katlar içerir; Johnson'ın algoritması, bir ekonomi aracılığıyla ortaya çıkan değişikliklerin net etkisini hesaplar.

Matematiksel temeller üzerinde daha fazla okuma için, bkz.Ş.Üye Tarihin Girişi) ve Donald B. Johnson tarafından orijinal kağıt (1977) Python'da pratik bir uygulama bulunabilir:2NetworkX'in GitHub repository)[FONT][FONT][FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=FONT=TR][/FONT=TR][/FONT=TR][/FONT=TR][FONT=TR][/FONT=TRNT=S FONT=S)

Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç

Johnson'ın algoritması, Dijkstra hızıyla (en az maliyetli akış ve algoritmalı grafikler için) arasındaki (eskiden olmayan grafikler için) şık ve pratik bir çözüm olarak öne çıkıyor.Reweighting tekniğinin kendisi ile potansiyel fonksiyonların sağlam bir uygulaması - en kısa yolları tespit etmek için - en az maliyetli akış ve algoritmalar oyunu teorisi gibi alanlara kadar uzanır.

Grafiklerin hafifçe çalıştığı gerçek dünya APSP sorunuyla karşı karşıya kaldığı zaman ve negatif kenarlar içerebilir, Johnson'ın algoritması ilk dikkate alınmalıdır. Kütüphanelerde teorik garantiler ve yaygın uygulama (örneğin, 0)NetworkX[FLT]