Şu anda yönlendirilmiş grafiklerde en kısa yolları inceliyorum. Dijkstra veya bellman-ford's gibi bir ağdaki en kısa yolu bulmak için birçok etkili algoritma vardır. Peki ya grafik dinamikse? Dinamik derken, programın çalışması sırasında köşeleri ekleyebileceğimizi veya çıkarabileceğimizi kastediyorum. Bir köşe gelen kısa yolları güncellemek için etkin bir algoritma bulmaya çalışıyorum her köşe için u bir kenar taktıktan sonra, e tekrar yeni grafikte en kısa yol algoritması çalıştırılmasına gerek olmadan,. Bunu nasıl yapabilirim? Şimdiden teşekkürler.
- Not: Değişiklikler algoritmanın ilk yinelemesinden sonra yapılabilir.
- Not: [2]: iki düğüm verilir, , kaynak ve t hedef. Bu düğümler arasındaki en kısa yolu bulmam gerekiyor. Grafik güncellendiğinde sadece s ve t arasındaki en kısa yol olan π ( s , t ) ' yi güncellemem gerekiyor .
- Not [3]: Sadece kenar yerleştirme durumuyla ilgileniyorum.
Resmi bir tanım : Bir grafik . Bir tanımlama güncelleştirme işlemi ) bir kenar bölgesinin bir ekleme 1 olarak e kadar ya da 2) bir kenar aa silme dan . Amaç, bir güncelleme işleminden sonra en kısa yoldaki tüm çiftlerin maliyetini verimli bir şekilde bulmaktır. Verimli bir şekilde, en azından her güncelleme işleminden sonra Bellman-Ford algoritması gibi bir All-Pairs-En Kısa Yol algoritması uygulamaktan daha iyisi kastediyoruz.e e
Düzenleme: Aşağıda sorunun basitleştirilmiş bir sürümü var:
Ağırlıklı bir grafiktir iki kritik noktalar tek yönlü kenarlarının oluşan verilir ves ve . Ayrıca , bir çift yönlü kenar aday kümesi C de verilmiştir. Bir kenar oluşturmak zorunda ( u , v ) ∈ Cı mesafeyi en aza indirmek için s için t .