2012-01-03 62 views
15

Tôi đang xây dựng một ứng dụng dựa trên việc tìm kiếm một "điểm gặp gỡ thuận tiện" cho một tập hợp các vị trí.Thuật toán để tìm điểm tổng khoảng cách tối thiểu từ các vị trí

Hiện tại tôi đang xác định "thuận tiện" là "giảm thiểu tổng khoảng cách đi lại". Đây là một vấn đề khác nhau từ việc tìm kiếm trọng tâm được minh họa bằng ví dụ sau (sử dụng tọa độ Descartes hơn vĩ độ và kinh độ để thuận tiện):

  • A là tại (0,0)
  • B là (0 , 0)
  • C là (0,12)

vị trí của tổng du lịch tối thiểu cho những điểm này là tại (0,0) với tổng khoảng cách đi lại của 12; centroid là tại (0,4) với tổng khoảng cách đi lại là 16 (4 + 4 + 8).

Nếu địa điểm bị giới hạn ở một trong các điểm, vấn đề có vẻ đơn giản hơn, nhưng đây không phải là hạn chế mà tôi dự định có (không giống như this otherwise similar question).

Điều tôi dường như không thể làm là tìm ra bất kỳ loại thuật toán nào để giải quyết vấn đề này - đề xuất được hoan nghênh!

+0

Ngôn ngữ nào bạn muốn triển khai giải pháp của mình? – paislee

+0

Python sẽ là lý tưởng, nhưng tôi sẽ lấy khá nhiều thứ không phải là APL/INTERCAL hoặc tương tự –

Trả lời

11

Đây là giải pháp tìm điểm giữa địa lý và sau đó lặp đi lặp lại khám phá các vị trí lân cận để điều chỉnh theo hướng tổng khoảng cách tối thiểu.

http://www.geomidpoint.com/calculation.html

Câu hỏi này cũng được khá giống với

Minimum Sum of All Travel Times

Dưới đây là một bài viết trên wikipedia vấn đề chung, bạn đang cố gắng để giải quyết:

http://en.wikipedia.org/wiki/Geometric_median

+0

Câu hỏi đó, và hầu hết các câu trả lời, liên quan đến ràng buộc "vị trí là một trong những điểm" mà tôi không muốn ; tuy nhiên giải pháp bạn liên kết có vẻ khả thi, nhờ –

+0

@KristianGlass - Kiểm tra bài viết wikipedia, nó không xem xét ràng buộc đó, và nó đề cập đến cách tiếp cận của liên kết đầu tiên như một giải pháp thường được sử dụng. – hatchet

+0

Ah, tuyệt vời, cảm ơn bạn rất nhiều –

3

Theo cách bạn đang tìm kiếm là trung tâm khối lượng của hình tam giác có trọng số bằng nhau tại các đỉnh. Điều đó sẽ trỏ đến tọa độ barycentric.

Khi đi xa hơn một tam giác có các giải pháp cho các tọa độ tổng quát barycentric và bạn có thể ưu tiên cho người bằng cách thay đổi trọng số của các đỉnh. Những gì mà vẫn không chiếm được là khoảng cách trên bản đồ thực sự (không thể đi thẳng theo bất kỳ hướng nào) nhưng nó có thể là một sự khởi đầu?

1

Một tùy chọn là định nghĩa một hàm mục tiêu (và gradient) và sử dụng một gener thư viện tối ưu hóa ic, chẳng hạn như scipy.optimize. fmin_cg sẽ là một thuật toán tốt để thử cho vấn đề của bạn. Mục tiêu của bạn sẽ là tổng khoảng cách như được xác định trong phần "Định nghĩa" của Geometric median Wikipedia page được tham chiếu bởi hatchet. Đối số cho hàm mục tiêu của bạn là y.

Các vấn đề liên quan