Tôi có một loạt tọa độ đồ thị và tôi cần tìm đường đi một chiều ngắn nhất thông qua tất cả các nút đó. Tôi không có điểm bắt đầu/kết thúc xác định trước nhưng mỗi điểm chỉ được chạm một lần và trở về nguồn gốc tối ưu là KHÔNG bắt buộc.Đường dẫn một chiều ngắn nhất thông qua nhiều nút
Tôi đã thử một vài phương pháp tiếp cận TSP, nhưng tất cả đều dường như dựa trên việc quay trở lại nguồn gốc ở cuối cho kết quả không hiệu quả khủng khiếp trong trường hợp này.
Ví dụ
1, 13
3, 0
3, 7
2, 21
2, 11
3, 12
1, 19
3, 6
sẽ giải quyết thành
3, 0
3, 6
3, 7
3, 12
2, 11
1, 13
1, 19
2, 21
Ghi chú:
Có, tôi đã cố gắng tìm kiếm chức năng, có một câu hỏi cơ bản giống hệt nhau Algorithm: shortest path between all points tuy nhiên câu trả lời thực sự duy nhất là một TSP, mà một lần nữa, mạch kín là không hiệu quả cho việc này.
Nó không cần phải chính xác 100%, tôi đã có một phương pháp hoán vị nhưng quá chậm, tôi cần phải xử lý ít nhất ~ 25-30 điểm, giải quyết với một xấp xỉ tốt làm việc cho tôi
Cảm ơn trước.
Chỉnh sửa để làm rõ, TSP có xu hướng giải quyết như trong img # 1, kết quả mong muốn của tôi là img # 2
img 3 là ví dụ trên được giải quyết thông qua một TSP và img # 4 là mong muốn (x coords chuyển trở lại - .5 cho tầm nhìn)
Couple hơn cho tốt biện pháp # 1 = TSP, # 2 = ý muốn
về cơ bản tôi muốn ngắn nhất chuỗi kết nối n điểm, sử dụng bất kỳ điểm bắt đầu và điểm kết thúc nào là hiệu quả nhất
Điều này liên quan đến PHP như thế nào? Bạn có mã để hiển thị không, ví dụ: cấu trúc đại diện cho các nút và đồ thị? – rik
Vâng, tôi đoán nó không liên quan trực tiếp đến php khác hơn là tôi thích một giải pháp php như ngôn ngữ tôi muốn nó kết thúc (giả sử php có thể xử lý việc xử lý trong thời gian hợp lý), nhưng một thuật toán hoặc một số nhận xét phong nha mã bằng một ngôn ngữ chính (C++, java, ruby, vv) sẽ đủ –
Mẫu trong đồ họa của bạn nói rằng bạn không muốn đường dẫn _changing directions_. Làm thế nào về việc làm cho chi phí lớn hơn của các liên kết với (x2, y2) <(x1, y1)? Nó sẽ thiên vị tiêu chuẩn TSP thuật toán đối với các giải pháp bắt đầu gần phía trên bên trái, và kết thúc gần phía dưới bên phải. – Apalala