Tôi có một biểu đồ với khoảng một tỷ đỉnh, mỗi đỉnh được kết nối với khoảng 100 đỉnh khác một cách ngẫu nhiên.
Tôi muốn tìm độ dài của con đường ngắn nhất giữa hai điểm. Tôi không quan tâm đến con đường thực tế được sử dụng.
Ghi chú:
- Đôi khi các cạnh sẽ bị cắt đứt hoặc thêm vào. Điều này xảy ra ít hơn khoảng 500 lần so với tra cứu. Bạn cũng có thể xử lý các thay đổi cạnh nếu bạn cho phép bạn có hiệu suất tốt hơn.
- Tôi có thể xử lý trước biểu đồ.
- Nếu phải mất hơn 6 bước, bạn có thể quay lại với vô cùng.
- Có thể chấp nhận sai 0,01% thời gian, nhưng chỉ khi trả lại một độ dài quá dài.
- Tất cả các cạnh có chiều dài là 1.
- Tất cả các cạnh là hai chiều.
Tôi đang tìm kiếm một thuật toán. Psuedocode, mô tả tiếng Anh và mã thực tế đều tuyệt vời.
Tôi có thể sử dụng A *, nhưng điều đó dường như được tối ưu hóa cho tìm đường.
Tôi đã nghĩ về việc sử dụng thuật toán của Dijkstra , nhưng nó có một bước yêu cầu thiết lập thuộc tính tìm đường đi ngắn nhất của mọi đỉnh thành vô cực
(Nếu bạn đang tự hỏi về trường hợp sử dụng, thì đó là Cuộc thi C Underhanded.)