При заданном наборе точек {(x1, y1), (x2, y2) ... (xn, yn)} найдите 2 наиболее удаленные точки.
Мой подход:
1). Вам нужна контрольная точка (xa, ya), и она будет:
xa = (x1 + x2 + ... + xn) / n
ya = (y1 + y2 + ... + yn) / n
2). Вычислить все расстояния от точки (xa, ya) до (x1, y1), (x2, y2), ... (xn, yn)
Первая «самая удаленная точка» (xb, yb) - это точка с максимальным расстоянием.
3). Вычислить все расстояния от точки (xb, yb) до (x1, y1), (x2, y2), ... (xn, yn)
Другая «самая удаленная точка» (xc, yc) - это точка с максимальным расстоянием.
Итак, вы получили свои самые отдаленные точки (xb, yb) (xc, yc) в O (n)
Например, для точек: (0,0), (1,1), (-8, 5)
1). Контрольная точка (xa, ya) = (-2,333, 2)
2). Рассчитать расстояния:
от (-2,333, 2) до (0,0): 3,073
от (-2,333, 2) до (1,1): 3,480
от (-2,333,2) до (-8,5): 6,411
Итак, первая самая дальняя точка (-8, 5)
3). Рассчитать расстояния:
от (-8, 5) до (0,0): 9,434
от (-8, 5) до (1,1): 9,849
от (-8, 5) до (-8, 5): 0
Таким образом, другой наиболее удаленный пункт (1, 1)