Hiện tôi đang nghiên cứu những con đường ngắn nhất trong đồ thị có hướng. Có nhiều thuật toán hiệu quả để tìm ra con đường ngắn nhất trong mạng, như dijkstra hoặc bellman-ford's. Nhưng nếu đồ thị là động? Bằng cách nói động tôi có nghĩa là chúng ta có thể chèn hoặc loại bỏ các đỉnh trong quá trình thực hiện chương trình. Tôi đang cố gắng tìm một thuật toán hiệu quả để cập nhật các đường dẫn ngắn nhất từ một đỉnh sang mọi đỉnh , sau khi chèn một cạnh , mà không cần phải chạy lại thuật toán đường đi ngắn nhất trong biểu đồ mới. Tôi có thể làm cái này như thế nào? Cảm ơn trước.đ
- Lưu ý: những thay đổi có thể được thực hiện sau lần lặp đầu tiên của thuật toán
- Lưu ý [2]: hai nút được đưa ra, là nguồn và đích. Tôi cần tìm con đường ngắn nhất giữa các nút này. Khi biểu đồ được cập nhật, tôi chỉ phải cập nhật , đây là con đường ngắn nhất giữa và .t π ( s , t ) s t
- Lưu ý [3]: Tôi chỉ quan tâm đến trường hợp chèn cạnh.
Một định nghĩa chính thức : Cho đồ thị . Xác định một hoạt động cập nhật như 1) một chèn của một cạnh để hoặc 2) aa xoá một cạnh từ . Mục tiêu là tìm kiếm hiệu quả chi phí của tất cả các cặp đường dẫn ngắn nhất sau một hoạt động cập nhật. Theo hiệu quả, chúng tôi có nghĩa là ít nhất là tốt hơn so với việc thực hiện thuật toán All-Pair-Shortest-Path, chẳng hạn như thuật toán Bellman-Ford, sau mỗi hoạt động cập nhật.E e E
Chỉnh sửa: Dưới đây có một phiên bản đơn giản hóa của vấn đề:
Một đồ thị có trọng số được đưa ra, bao gồm các cạnh đơn hướng và hai đỉnh quan trọng và . Một tập hợp các cạnh hai chiều của ứng viên cũng được đưa ra. Tôi phải xây dựng một cạnh để giảm thiểu khoảng cách từ đến .s t Cs t