У меня была та же проблема в течение некоторого времени. Решением является очевидный консенсус, данный в предыдущих постах: найти медиану (mx, my) независимо, а затем найти точку, ближайшую в данных N точках, и это место встречи. Чтобы понять, почему на самом деле это решение, сначала нужно рассмотреть расстояние.
d = сумма (| xi-x |) + сумма (| yi-y |) по всем 1 <= i <= N, </p>
, который не зависит от х и у. Следовательно, мы можем решить одномерный случай для x и y. Я пропущу объяснение, данное ^^, и, следовательно, заключу, что (mx, my) является лучшим решением , если , мы рассмотрим все возможные моменты. Более сложная задача - доказать, что мы можем перейти от (mx, my ) к ближайшему (xi, yi), так что (xi, yi) является одной из заданных точек без изменения (увеличения) расстояния. Доказательство идет:
Учтите, что мы отсортировали x-координаты (для доказательства) и
это X1<X2<...<Xn
. Также Xj<mx<X(j+1)
, где j = N/2
, теперь давайте перейдем mx
один шаг влево, то есть mx' <- mx-1
.
Отсюда d' = |X1-mx+1| + .. + |Xj-mx+1| + |X(j+1)-mx+1| + .. + |Xn-mx+1|
Мы знаем, что mx-1 увеличит значения N / 2 (для k> = j + 1 и уменьшит
для <= j), следовательно, эффект тот же. Таким образом (mx-1, my) дает то же самое
решение. Это означает, что есть пробел от <code>Xj<mx<X(j+1) и
Yj<my<Y(j+1)
где расстояние не меняется. Таким образом, мы можем найти
ближайший такой пункт, на который есть ответ.
Я проигнорировал тонкий случай четных / нечетных узлов, но я надеюсь, что математика сработает сама, когда вы поймете основное доказательство.
Это мой первый пост, помогите мне улучшить свои навыки письма.