Nein, im schlimmsten Fall kann man es nicht besser machen als .Θ ( n2)
Stellen Sie sich eine Anordnung von Punkten vor, bei denen jedes Punktepaar einen Abstand von voneinander hat. (Dies ist eine mögliche Konfiguration.) Dann können Sie nichts Besseres tun, als jede Kante zu untersuchen. Insbesondere wenn es eine Kante gibt, die Sie nicht untersucht haben, kann ein Gegner die Länge dieser Kante entweder mit 0,9 , 1,0 oder 1,1 wählen . Alle diese Auswahlmöglichkeiten stimmen mit allen anderen Beobachtungen überein, die Sie gemacht haben, und mit den Anforderungen einer Metrik (z. B. mit der Dreiecksungleichung), sodass alle drei möglich sind. Sie erfordern jedoch unterschiedliche Ausgänge. Wenn Ihr Algorithmus diese Kante nicht untersucht und dann etwas ausgibt, kann ein Gegner immer eine Länge für die nicht untersuchte Kante auswählen, die die Ausgabe Ihres Algorithmus falsch macht.10,91.01.1
Wenn Sie jedoch wissen, dass alle Punkte in (obwohl Sie nicht ihre Koordinaten erhalten), kann das Problem durch Messen der O ( ( d + 1 ) n ) -Distanzen gelöst werden , wobei keine Entartungen (keine Teilmenge von) angenommen werden d + 1 Punkte sind koplanar).RdO((d+1)n)d+1
Wählen Sie insbesondere Punkte zufällig aus. Dies sind Ankerpunkte. Aufgrund ihrer paarweisen Abstände können Sie Koordinaten für sie berechnen, die mit ihren paarweisen Abständen übereinstimmen. Berechnen Sie nun für jeden zweiten Punkt P den Abstand von P zu jedem der Ankerpunkte. Mithilfe der Triangulation und dieser Abstände können Sie die Position von P relativ zu den Ankerpunkten und damit die Koordinaten für P berechnen . Tun Sie dies für jeden Nicht-Ankerpunkt P.d+1PPPPP. Jetzt haben Sie Koordinaten für jeden Punkt und können diese Koordinaten verwenden, um den Mittelpunkt zu finden, ohne das Orakel zu bitten, Ihnen weitere paarweise Abstände zu geben. Ich weiß nicht, ob dieser letzte Schritt schneller als die -Zeit ausgeführt werden kann , aber ohne weitere paarweise Abstände.O(n2)