Menu
CoddyTech

Động lực

Bài học 2 trên 9 trong khóa học Thuật toán Bellman-Ford cho đồ thị của Coddy.

Bellman-Ford dựa trên một thao tác, nới lỏng: với một cạnh u -> v có trọng số w, nếu đi qua u tốn ít hơn (dist[u] + w < dist[v]), hãy cập nhật dist[v]. Lặp lại thao tác đó với mọi cạnh.

Vì sao nên học Bellman-Ford?

  • Trọng số âm: thuật toán này hoạt động trong những trường hợp Dijkstra không thể xử lý, chẳng hạn như chi phí có thể được giảm giá hoặc có thể thực hiện kinh doanh chênh lệch tỷ giá.
  • Phát hiện chu trình âm: thêm một lượt nới lỏng sẽ phát hiện các chu trình có tổng trọng số âm.
  • Đơn giản: không cần hàng đợi ưu tiên, chỉ cần liên tục nới lỏng các cạnh.

Đổi lại là tốc độ: O(V * E), chậm hơn Dijkstra với độ phức tạp O((V + E) log V).

Tự làm thử

Bài học này không có thử thách code.

quiz iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Thuật toán Bellman-Ford cho đồ thị

Tự luyện tập: Trình biên dịch C online