Questa è una domanda che mi è stata chiesta per un colloquio di lavoro qualche tempo fa. E ancora non riesco a capire una risposta sensata.Come trovare due punti più distanti?
domanda è:
si è dato insieme di punti (x, y). Trova 2 punti più lontani. Distanti l'uno dall'altro.
Ad esempio, per i punti: (0,0), (1,1), (-8, 5) - i più distanti sono: (1,1) e (-8,5) perché la distanza tra loro sono più grandi da entrambi (0,0) - (1,1) e (0,0) - (- 8,5).
L'approccio ovvio è calcolare tutte le distanze tra tutti i punti e trovare il massimo. Il problema è che è O (n^2), che lo rende proibitivo per i dataset di grandi dimensioni.
C'è un approccio con i primi punti di tracciamento che si trovano sul confine e quindi calcola le distanze per loro, sulla premessa che ci saranno meno punti sul confine che "dentro", ma è ancora costoso, e fallirà nel peggiore caso.
Ho provato a cercare sul Web, ma non ho trovato alcuna risposta ragionevole - anche se questo potrebbe essere semplicemente la mia mancanza di capacità di ricerca.
Era "qualche tempo fa" dell'ordine di un'ora? ;-) –
Se puoi eseguire l'ordinamento in O (nlogn), prova ad usarlo. –
Cosa intendi, Gabriel? Ordina per cosa? –