Làm thế nào để các nhà cung cấp bản đồ (như Google hoặc Yahoo! Maps) đề xuất hướng dẫn?
Ý tôi là, họ có thể có dữ liệu trong thế giới thực ở một số dạng, chắc chắn bao gồm khoảng cách nhưng cũng có thể là những thứ như tốc độ lái xe, sự hiện diện của vỉa hè, lịch trình xe lửa, v.v. Nhưng giả sử dữ liệu ở định dạng đơn giản hơn, giả sử biểu đồ có hướng rất lớn với trọng lượng cạnh phản ánh khoảng cách. Tôi muốn có thể nhanh chóng tính toán các hướng từ điểm này sang điểm khác. Đôi khi những điểm này sẽ ở gần nhau (trong một thành phố) trong khi đôi khi chúng sẽ cách xa nhau (xuyên quốc gia).
Các thuật toán đồ thị như thuật toán của Dijkstra sẽ không hoạt động vì đồ thị rất lớn. May mắn thay, các thuật toán heuristic như A * có thể sẽ hoạt động. Tuy nhiên, dữ liệu của chúng tôi rất có cấu trúc, và có lẽ một số cách tiếp cận theo tầng có thể hoạt động? (Ví dụ: lưu trữ các hướng được tính toán trước giữa các điểm "khóa" nhất định cách xa nhau, cũng như một số hướng cục bộ. Sau đó, các hướng cho hai điểm ở xa sẽ liên kết các hướng cục bộ đến một điểm chính, hướng toàn cầu đến một điểm quan trọng khác và sau đó cục bộ chỉ đường một lần nữa.)
Những thuật toán thực sự được sử dụng trong thực tế?
Tái bút Câu hỏi này được thúc đẩy bằng cách tìm ra những điều kỳ quặc trong các hướng ánh xạ trực tuyến. Trái ngược với bất đẳng thức tam giác, đôi khi Google Maps cho rằng XZ mất nhiều thời gian hơn và xa hơn so với sử dụng điểm trung gian như trong XYZ . Nhưng có lẽ hướng đi bộ của họ tối ưu hóa cho một tham số khác, quá?
PPS. Đây là một vi phạm khác về bất đẳng thức tam giác gợi ý (với tôi) rằng họ sử dụng một số cách tiếp cận theo cấp bậc: XZ so với XYZ . Cái trước dường như sử dụng Boulevard de Sebastopol nổi bật mặc dù nó hơi xa cách.
Chỉnh sửa : Cả hai ví dụ này dường như không còn hoạt động nữa, nhưng cả hai đã làm tại thời điểm của bài viết gốc.