Dada a lista de 2d pontos, encontre o ponto mais próximo de todos os outros pontos
Input: list of 2d points (x,y) where x and y are integers.
Distance: distance is defined as the Manhattan distance.
ie:
def dist(p1,p2)
return abs(p1.x-p2.x) + abs(p1.y - p2.y)
O que é um algoritmo eficiente para encontrar o ponto mais próximo de todos os outros pontos.
Eu só consigo pensar em uma solução de força bruta O (n ^ 2):
minDist=inf
bestPoint = null
for p1 in points:
dist = 0
for p2 in points:
dist+=distance(p1,p2)
minDist = min(dist,minDist)
bestPoint = argmin(p1, bestPoint)
basicamente, olhe para cada par de pontos.