Algorithmus zur Abdeckung der maximalen Punktzahl mit einem Kreis mit gegebenem Radius

Stellen wir uns vor, wir haben ein Flugzeug mit einigen Punkten drauf. Wir haben auch einen Kreis mit dem angegebenen Radius.

Ich brauche einen Algorithmus, der die Position des Kreises so bestimmt, dass er die maximal mögliche Anzahl von Punkten abdeckt. Natürlich gibt es viele solcher Positionen, daher sollte der Algorithmus eine davon zurückgeben.
Präzision ist nicht wichtig und der Algorithmus kann kleine Fehler machen.

Hier ist ein Beispielbild:

Eingang
  int n (n <= 50) - Anzahl der Punkte;
  float x[n] undfloat y[n] - Arrays mit den X- und Y-Koordinaten der Punkte;
  float r - Radius des Kreises.

Ausgabe
  float cx undfloat cy - Koordinaten des Kreismittelpunktes

Blitzgeschwindigkeit des Algorithmus ist nicht erforderlich, sollte aber nicht zu langsam sein (da ich einige langsame Lösungen für diese Situation kenne).

C ++ - Code wird bevorzugt, ist aber nicht obligatorisch.

Antworten auf die Frage(20)

Ihre Antwort auf die Frage