Eine algorithmische Frage.Kann man in subquadratischer Zeit den Punkt finden, der allen Punkten am nächsten ist?
Input:
- eine Liste von Datenpunkten
X
- Eine metrische Funktion für die Datenpunkte
dist(x,y)
, die O (1) Zeit zu bewerten und gehorcht der Dreiecksungleichung
Ist dauert es ein Algorithmus, der einen Vektor von Datenpunkten Y
zurückgeben kann, so dass Y[i]
der nächstgelegene Punkt in X
zu X[i]
in subquadratischer Zeit ist?
Offensichtlich ist dies in O (n^2) möglich, weil Sie einfach jeden Punkt direkt überprüfen können. Ich frage mich, ob es vielleicht möglich ist, die Dreiecksungleichheit zu nutzen, um dies zu verbessern. Ich wäre auch an Näherungsalgorithmen mit nachweisbaren Schranken interessiert (d. H. Etwas wie Y[i]
ist nicht mehr als (1 + log (n)) mal der Abstand von X[i]
als Minimum).
Zur Verdeutlichung: 'Y [i]' sollte der Punkt sein, der am nächsten zu 'X [i]' ist, der nicht 'X [i]' selbst ist. Andernfalls wäre 'Y = X 'die perfekte Lösung: p – Lagerbaer