2011-08-23 26 views
5

Tôi gặp phải vấn đề này trong đó có một số nhà trên lưới 2 chiều (tọa độ của chúng) và chúng tôi phải tìm nhà nào có thể được sử dụng làm điểm họp khoảng cách mà mọi người đi du lịch giảm thiểu. Giả sử rằng khoảng cách dọc theo trục x hoặc y sẽ mất 1 đơn vị và khoảng cách đến các hàng xóm đường chéo mất (nói) 1,2 đơn vị.Đi du lịch xa nhất - điểm gặp gỡ chung

Tôi thực sự không thể nghĩ ra thuật toán tối ưu hóa tốt cho việc này.

P.S: Không phải là bài tập về nhà. Và tôi chỉ tìm kiếm một thuật toán (không phải mã) và nếu có thể, bằng chứng của nó.

P.S # 2: Tôi không tìm kiếm giải pháp Xả. Tin hay không, điều đó đã tấn công tôi :)

+2

Đây là vấn đề giảm thiểu trên miền Số nguyên. Bằng chứng thường không nhỏ ... –

Trả lời

3

Điều này có lẽ thực sự không hiệu quả, nhưng lặp qua tất cả các ngôi nhà, sau đó lặp qua tất cả các ngôi nhà khác. (lồng nhau cho các vòng lặp) Sử dụng distance formula để tìm khoảng cách giữa 2 ngôi nhà. Sau đó, bạn có khoảng cách giữa mỗi ngôi nhà. Một cách nhanh chóng và dễ dàng để tìm nhà nào là khoảng cách gần nhất là thêm khoảng cách đi bộ của mọi người với nhau cho ngôi nhà đã cho. Ngôi nhà có khoảng cách đi bộ ít nhất là khu vực họp của sự lựa chọn.

0

Vâng, bạn có thể bạo lực. Đi từng ngôi nhà và tính toán khoảng cách với nhau. Tổng cộng khoảng cách lên cho mỗi ngôi nhà riêng lẻ. Sau đó, chỉ cần lấy ngôi nhà có số tiền thấp nhất.

3

Chỉ số khoảng cách của bạn là lạ. Bạn mong muốn di chuyển trên đường chéo phải mất ít nhất sqrt (2) ~ = 1,41 lần khoảng cách di chuyển dọc theo hướng thành phần, bởi vì đó là cách xa hơn nếu đi theo đường thẳng dọc theo đường chéo theo định lý Pythagore .

Nếu bạn nhấn mạnh vào khoảng cách manhattan (không cho phép đường chéo), thì bạn muốn chọn ngôi nhà gần trung vị (x) + trung vị nhất của ngôi nhà.

Hãy xem trường hợp 1D, bạn có một loạt điểm trên một đường và bạn muốn chọn điểm gặp mặt. Đối với sự cụ thể/đơn giản, giả sử có 5 ngôi nhà, không có bản sao nào.

Hãy xem xét điều gì xảy ra khi điểm gặp gỡ trôi ra khỏi trung vị sang phải. Đối với mỗi đơn vị đi cho đến khi bạn vượt qua ngôi nhà thứ 4 từ trái sang phải, 3 người phải thực hiện thêm một bước ở bên phải, và 2 người phải đi một bước bên trái, vì vậy chi phí tăng thêm 1. Một khi bạn vượt qua ngôi nhà thứ 4, sau đó 4 người phải thực hiện một bước bổ sung ở bên phải và một người phải thực hiện một bước nhỏ hơn bên trái, vì vậy chi phí tăng lên 3. Một đối số giống nhau giữ khi bạn di chuyển địa điểm họp tới bên trái từ trung vị. Di chuyển ra khỏi trung bình luôn làm tăng chi phí.

Đối số tổng quát cho bất kỳ số lượng người nào, có hoặc không có nhà trùng lặp và thậm chí là số lượng thứ nguyên tùy ý, miễn là bạn không được phép sử dụng đường chéo.

+0

Tôi thẳng thắn nghĩ rằng số liệu khoảng cách không phải là một vấn đề (nó chỉ thay đổi công thức khoảng cách). Tuy nhiên, giải pháp của bạn về trung bình là những gì tôi nghĩ ban đầu (thậm chí bao gồm cả di chuyển chéo). Tuy nhiên, tôi không thể chứng minh điều đó là đúng. – Hari

+0

Lưới không cần phải là hình vuông – Benjamin

+0

Chắc chắn, nhưng ở đây lưới là loại hình vuông (di chuyển đơn vị tính bằng x chi phí 1, di chuyển đơn vị trong chi phí y 1), vì vậy tôi nghĩ rằng tự nhiên là di chuyển theo đường chéo sẽ có chi phí ít nhất sqrt (1^2 + 1^2) = sqrt (2). Tất nhiên, nó có thể là các hướng x và y thực ra là những đường đi nguệch ngoạc, nhưng nó vẫn có vẻ kỳ lạ và không tự nhiên. –

7

Như đã được chỉ ra, trong trường hợp khoảng cách Manhattan, trung vị sẽ đưa ra giải pháp. Đây là một kết luận rõ ràng từ thực tế nổi tiếng rằng trung bình giảm thiểu trung bình của độ lệch tuyệt đối:

E|X-c| >= E|X-median(X)| cho bất kỳ hằng số c.

Và ở đây bạn có thể tìm thấy một ví dụ về bằng chứng cho trường hợp rời rạc:
https://stats.stackexchange.com/questions/7307/mean-and-median-properties/7315#7315

+4

tức là 5 nhà -8, 2 -7, 2 -3, -7 -2, -9 0, 0 Lực lượng vũ phu cho số tiền tối thiểu cho Manhattan d: > -3, -7 sum = 40 > -7, 2 = 39 - min > -8, 2 = 42 > 0, 0 = 40 > -2, -9 = 47 Nếu chúng ta có Mạnh. d. sau đó centroid là trung bình (-3, 0) với số tiền nhỏ 33. Nhưng chúng ta cần tìm một ngôi nhà cụ thể. Brute forcemin sum là 39 cho ngôi nhà (-7, 2) nhưng nó không phải là gần nhất với trung bình (khoảng cách m. 6). Gần nhất là nhà (0, 0) với m. d. chỉ 3 nhưng số tiền tối thiểu là 40. Vậy cách trung bình giúp chúng ta tìm nhà bằng số tiền tối thiểu? – Pavel

3

Tôi đã được nghe trộm bởi cùng một vấn đề trong một thời gian bây giờ. Các giải pháp là sự đồng thuận rõ ràng được đưa ra trong các bài viết trước đó: tìm trung bình (mx, của tôi) một cách độc lập và sau đó tìm điểm gần nhất trong N điểm nhất định và đó là nơi gặp gỡ. Để xem tại sao đây thực sự là giải pháp đầu tiên bạn nên xem xét khoảng cách.

d = sum (| xi-x |) + sum (| yi-y |) trên tất cả 1 < = i < = N,

đó là độc lập trong x và y. Do đó chúng ta có thể giải quyết trường hợp 1-D cho x và y. Tôi sẽ bỏ qua lời giải thích cho ^^ và do đó kết luận rằng (mx, my) là giải pháp tốt nhất nếu chúng tôi xem xét tất cả các điểm có thể.Các thách thức lớn hơn là chứng minh rằng chúng ta có thể di chuyển từ (mx, my) đến gần nhất (xi, yi) sao cho (xi, yi) là một trong những điểm đã cho, w/o thay đổi (tăng) khoảng cách. Bằng chứng đi:

Hãy xem xét rằng chúng tôi đã sắp xếp tọa độ x (vì lợi ích cho bằng chứng) và rằng X1<X2<...<Xn. Ngoài ra Xj<mx<X(j+1) nơi j = N/2, bây giờ, hãy di chuyển mx một bước sang trái, đó là mx' <- mx-1. Do đó d' = |X1-mx+1| + .. + |Xj-mx+1| + |X(j+1)-mx+1| + .. + |Xn-mx+1| Chúng tôi biết rằng mx-1 sẽ tăng N/2 giá trị (cho k> = j + 1 và giảm cho < = j) do đó hiệu ứng là như nhau. Do đó (mx-1, my) đưa ra cùng một giải pháp . Điều đó có nghĩa là có một không gian từ Xj<mx<X(j+1)Yj<my<Y(j+1) nơi khoảng cách không thay đổi. Vì vậy, chúng ta có thể tìm thấy điểm gần nhất như vậy mà là câu trả lời.

Tôi đã bỏ qua trường hợp tinh tế của các nút lẻ/lẻ, nhưng tôi hy vọng toán học sẽ tự hoạt động khi bạn nhận ra bằng chứng cơ bản.

Đây là bài đăng đầu tiên của tôi, giúp tôi cải thiện kỹ năng viết của mình.

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